|
заполнить автоматом при создании из заказа клиента в реализации метод доставки | ☑ | ||
---|---|---|---|---|
0
mad
18.02.21
✎
16:39
|
Прошу помощи с кодом.
УТ11.4 8.3 на основании заказа клиента создается реализация. в ее дополнительные свойства из заказа надо переносить значения дополнительных свойств Дополнительное свойство в заказе - Способ доставки Дополнительное свойство в реализации - Метод доставки зашел в РеализацияТоваровУслугЛокализация в Процедура ПередЗаписью(Объект, Отказ, РежимЗаписи, РежимПроведения) Экспорт добавил // Вызывается из соответствующего обработчика документа // // Параметры: // Объект - ДокументОбъект - Обрабатываемый объект // Отказ - Булево - Признак отказа от записи. // Если в теле процедуры-обработчика установить данному параметру значение Истина, // то запись выполнена не будет и будет вызвано исключение. // РежимЗаписи - РежимЗаписиДокумента - В параметр передается текущий режим записи документа. Позволяет определить в теле процедуры режим записи. // РежимПроведения - РежимПроведенияДокумента - В данный параметр передается текущий режим проведения. // Процедура ПередЗаписью(Объект, Отказ, РежимЗаписи, РежимПроведения) Экспорт //++ Локализация Если ЗначениеЗаполнено(Объект.ЗаказКлиента) Тогда Заказ = Объект.ЗаказКлиента.ПолучитьОбъект(); //получаем значение доставки из доп.свойства заказа клиента k = УправлениеСвойствами.ЗначениеСвойства(Объект.ЗаказКлиента, Объект.СпособДоставки); //k = "проверка"; Если ЗначениеЗаполнено(k) тогда ТаблицаСвойствИЗначений = Новый ТаблицаЗначений; ТаблицаСвойствИЗначений.Колонки.Добавить("Свойство"); ТаблицаСвойствИЗначений.Колонки.Добавить("Значение"); НоваяСтрока = ТаблицаСвойствИЗначений.Добавить(); НоваяСтрока.Свойство = "Метод Доставки"; НоваяСтрока.Значение = k; УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(ДокументСсылка.РеализацияТоваровУслуг,ТаблицаСвойствИЗначений); ТаблицаСвойствИЗначений.Очистить(); КонецЕсли; //-- Локализация КонецПроцедуры Пишет что поле объекта РеализацияТоваровУслуг не найдено. я так понимаю ошибка в обоих строках (проверка на заполнение k не проходит) k = УправлениеСвойствами.ЗначениеСвойства(Объект.ЗаказКлиента, Объект.СпособДоставки); либо УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(ДокументСсылка.РеализацияТоваровУслуг,ТаблицаСвойствИЗначений); может быть есть кто поумней меня. я в общем-то впервые это всё вижу )) Спасибо! |
|||
1
lubitelxml
18.02.21
✎
17:32
|
1. Локализация не для твоих доработок была добавлена.
2. Отладчиком не умеешь пользоваться? |
|||
2
hhhh
18.02.21
✎
18:50
|
(0) что такое ДокументСсылка у тебя? Что это за хрень?
|
|||
3
mad
18.02.21
✎
18:54
|
1. Я поискал похожую проблему и нашел вот это решение. http://catalog.mista.ru/public/1092117/
Там именно задача при сохранении чтоб из Заказа заполнялись значения. И оно вроде работает. У меня точно такая же задача - надо каждый раз при сохранении документа реализации чтоб подтягивались из заказа данные. Но мне надо получать/заполнять дополнительные свойства. Если локализация - это не то, то в какую сторону мне гуглить? 2. Не умею. Но при попытке обновлении конфигурации выдается ошибка на строку УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(ДокументСсылка.РеализацияТоваровУслуг,ТаблицаСвойствИЗначений); конкретно, что не найдена переменная "ДокументСсылка." но ошибок явно 2, т.к. если включить вариант проверки "Если ЗначениеЗаполнено(k) тогда" , то становится понятно что k не заполняется. |
|||
4
hhhh
18.02.21
✎
19:07
|
(3) ну да.
k = УправлениеСвойствами.ЗначениеСвойства(Объект.ЗаказКлиента, Объект.СпособДоставки); тут по идее нужно имя свойства передать в процедуру ЗначениеСвойства, посмотрите эту функцию, какие параметры у нее на входе? |
|||
5
mad
18.02.21
✎
20:59
|
ЗначениеСвойства
Возвращает значение дополнительного свойства объекта. Синтаксис Функция ЗначениеСвойства(Объект, Свойство, КодЯзыка = "") Экспорт Параметры Объект - ЛюбаяСсылка - ссылка на объект, например, СправочникСсылка.Номенклатура, ДокументСсылка.ЗаказПокупателя, ... Свойство - ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения - ссылка на дополнительный реквизит, значение которого нужно получить. - Строка - имя дополнительного свойства. КодЯзыка - Строка - если указано, то вместо значения дополнительного свойства будет возвращено его представление на указанном языке. Возвращаемое значение Произвольный - любое значение, допустимое для свойства. Пример вызова Результат = УправлениеСвойствами.ЗначениеСвойства(Объект, Свойство, КодЯзыка) Доступность Сервер, Толстый клиент, Внешнее соединение |
|||
6
hhhh
18.02.21
✎
22:18
|
(5) Свойство - ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения - ссылка на
дополнительный реквизит, значение которого нужно получить. - Строка - имя дополнительного свойства. ну вот, передавайте имя дополнительного свойства. |
|||
7
mad
19.02.21
✎
16:23
|
да проблема в том как именно написать вот это вот "ДокументСсылка.РеализацияТоваровУслуг" года так пишешь - не работает. Видимо эту ссылку как-то надо иначе туда вставлять.
в общем ,первую часть починил вроде (получение k но не уверен что туда заполняется что нужно. но уже проходит проверку на заполнение и вылетает вторая ошибка. Уже в самом документе (не в конфигураторе) ошибка звучит так (при попытке записи документа реализации) "поле объекта не обнаружено (реализацияТоваровУслуг)" т.е. видимо ссылка на текущий документ как-то тоже иначе прописывается. строка вызывающая ошибку УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(Объект.РеализацияТоваровУслуг,ТаблицаСвойствИЗначений); конкретно проблема в первом параметре Объект.РеализацияТоваровУслуг он должен выглядеть как-то иначе на данный момент весь код выглядит так Если ЗначениеЗаполнено(Объект.ЗаказКлиента) Тогда Заказ = Объект.ЗаказКлиента.ПолучитьОбъект(); //получаем значение доставки из доп.свойства заказа клиента k = УправлениеСвойствами.ЗначениеСвойства(Объект.ЗаказКлиента,"СпособДоставки"); Если ЗначениеЗаполнено(k) тогда ТаблицаСвойствИЗначений = Новый ТаблицаЗначений; ТаблицаСвойствИЗначений.Колонки.Добавить("Свойство"); ТаблицаСвойствИЗначений.Колонки.Добавить("Значение"); НоваяСтрока = ТаблицаСвойствИЗначений.Добавить(); НоваяСтрока.Свойство = "МетодДоставки"; НоваяСтрока.Значение = k; УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(Объект.РеализацияТоваровУслуг,ТаблицаСвойствИЗначений); ТаблицаСвойствИЗначений.Очистить(); КонецЕсли; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |