![]() |
|
два ресурса по двум измерениям из регистра сведений при автозаполнении? - 1С | ☑ | ||
---|---|---|---|---|
0
Awesome1992
10.04.17
✎
16:32
|
Учусь 1С написал две процедуры
&НаКлиенте Процедура ВРемонтНоменклатураПриИзменении(Элемент) СтрокаТабличнойЧасти = Элементы.ВРемонт.ТекущиеДанные; Если ЗначениеЗаполнено(СтрокаТабличнойЧасти.Номенклатура) И ЗначениеЗаполнено(СтрокаТабличнойЧасти.Контрагент) Тогда СтрокаТабличнойЧасти.СрокПоставки = ПодстановкаЦены.РасчетСрока(Объект.Дата,СтрокаТабличнойЧасти.Контрагент); СтрокаТабличнойЧасти.Цена = ПодстановкаЦены.РасчетЦены(Объект.Дата,СтрокаТабличнойЧасти.Номенклатура); Иначе КонецЕсли КонецПроцедуры &НаКлиенте Процедура ВРемонтКоличествоПриИзменении(Элемент) СтрокаТабличнойЧасти = Элементы.ВРемонт.ТекущиеДанные; Расчеты.РасчетСуммы(СтрокаТабличнойЧасти); КонецПроцедуры и две функции Функция РасчетЦены(АктуальнаяДата,ЭлементНоменклатуры) Экспорт Отбор = Новый Структура("Номенклатура",ЭлементНоменклатуры); ЗначенияРесурсов=РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата,Отбор); Возврат ЗначенияРесурсов.Цена; КонецФункции Функция РасчетСрока(АктуальнаяДата,ЭлементКонтрагенты) Экспорт Отбор = Новый Структура("Контрагент",ЭлементКонтрагенты); ЗначенияРесурсов=РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата,Отбор); Возврат ЗначенияРесурсов.СрокПоставки; КонецФункции но значения связаны попарно(номенклатура-цена, котрагент-сроки), но между собой нет (контрагент-цена, номенклатура сроки). Подскажите пожалуйста как решить данную проблему? |
|||
1
RomanYS
10.04.17
✎
16:42
|
Проблемы нет.
При изменении контрагента пересчитывайте только срок. При изменении номенклатуры обновляйте цену. При изменении цены/суммы/количество делайте пересчеты. Разные элементы - разные события и обработчики, не мешайте всё в одну кучу. |
|||
2
Awesome1992
10.04.17
✎
16:52
|
Дела в том что у каждого контрагента на определенную номенклатуру свой срок и своя цена, при изменении контрагента могут измениться оба ресурса.
|
|||
3
dezss
10.04.17
✎
16:59
|
(2) Тогда у РС цены должно быть еще и измерение по контрагентам, иначе цена не может поменяться.
|
|||
4
dezss
10.04.17
✎
17:00
|
(2) тьфу....так у тебя так и есть...
ну в чем тогда проблема, делай отбор и по контрагенту и по номенклатуре |
|||
5
Buster007
10.04.17
✎
17:02
|
Отбор = Новый Структура("Номенклатура, Контрагент",Номенклатура, Контрагент);
ЗначенияРесурсов=РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата,Отбор); |
|||
6
Awesome1992
10.04.17
✎
17:03
|
там и так два измерения контрагенты и номенклатура, и два ресурса цена и срок исполнения
|
|||
7
dezss
10.04.17
✎
17:03
|
Функция РасчетСрокаИЦены(АктуальнаяДата,ЭлементКонтрагенты) Экспорт
Отбор = Новый Структура("Контрагент,Номенклатура",ЭлементКонтрагенты,ЭлементНоменклатуры); ЗначенияРесурсов=РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата,Отбор); Возврат ЗначенияРесурсов.СрокПоставки; КонецФункции |
|||
8
dezss
10.04.17
✎
17:04
|
(7) тьфу...
Возврат ЗначенияРесурсов.СрокПоставки; поменять на Возврат ЗначенияРесурсов; |
|||
9
Awesome1992
10.04.17
✎
17:13
|
но тога же в функцию надо передавать сразу и ЭлементКонтрагенты,ЭлементНоменклатуры
|
|||
10
Awesome1992
10.04.17
✎
17:18
|
не пойму немного как процедуру в таком случае переписать
|
|||
11
Awesome1992
10.04.17
✎
17:20
|
тут же для каждой значения отдельный параметр передавать приходится
СтрокаТабличнойЧасти.СрокПоставки = ПодстановкаЦены.РасчетСрока(Объект.Дата,СтрокаТабличнойЧасти.Контрагент) |
|||
12
Awesome1992
10.04.17
✎
17:21
|
а если 3 параметра передавать, то как тогда?
СтрокаТабличнойЧасти.??? = ПодстановкаЦены.РасчетСрокаИЦены(Объект.Дата,СтрокаТабличнойЧасти.Контрагент,СтрокаТабличнойЧасти.Номенклатура); |
|||
13
Buster007
10.04.17
✎
17:26
|
(12) ЗначенияПараметров = ПодстановкаЦены.РасчетСрокаИЦены(Объект.Дата,СтрокаТабличнойЧасти.Контрагент,СтрокаТабличнойЧасти.Номенклатура);
СтрокаТабличнойЧасти.Срок = ЗначенияПараметров.Срок; СтрокаТабличнойЧасти.Цена = ЗначенияПараметров.Цена; |
|||
14
Awesome1992
10.04.17
✎
17:31
|
Что то совсем перестало работать
Функция РасчетСрокаИЦены(АктуальнаяДата,ЭлементКонтрагенты,ЭлементНоменклатуры) Экспорт Отбор = Новый Структура("Контрагент,Номенклатура",ЭлементКонтрагенты,ЭлементНоменклатуры); ЗначенияРесурсов=РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата,Отбор); Возврат ЗначенияРесурсов КонецФункции &НаКлиенте Процедура ВРемонтКонтрагентПриИзменении(Элемент) СтрокаТабличнойЧасти = Элементы.ВРемонт.ТекущиеДанные; ЗначенияПараметров = ПодстановкаЦены.РасчетСрокаИЦены(Объект.Дата,СтрокаТабличнойЧасти.Контрагент,СтрокаТабличнойЧасти.Номенклатура); СтрокаТабличнойЧасти.СрокПоставки = ЗначенияПараметров.Срок; СтрокаТабличнойЧасти.Цена = ЗначенияПараметров.Цена; КонецПроцедуры |
|||
15
Buster007
10.04.17
✎
17:34
|
(14) у нас тут экстрасенс в отпуске, не подскажешь что пишет?
|
|||
16
Awesome1992
10.04.17
✎
17:36
|
на ошибки не ругается, подставлять перестал. Выручайте пожалуйста...
|
|||
17
Buster007
10.04.17
✎
17:38
|
(16) возвращение пустого значения и "подставлять перестал" не равны.
Значит у тебя там такие данные. |
|||
18
Awesome1992
10.04.17
✎
20:11
|
странно, до этого вставлял значения. Надо было отъехать, позже пройдусь дебагом. А так сами функция и процедура написаны правильно?
|
|||
19
dezss
11.04.17
✎
11:35
|
(18) Вроде правильно.
Но тебе надо проверить, есть ли у тебя в РС есть для этого контрагента и этой номенклатуры срок и цена. |
|||
20
Awesome1992
11.04.17
✎
14:24
|
Блин, метод не был выбран для элемента)) Спасибо вам всем большое!!!))))))))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |