База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как очистить ручные скидки при записи заказа в УНФ? › Ответ в теме: Как очистить ручные скидки при записи заказа в УНФ?
В 1С:УНФ для решения вашей задачи нужно доработать обработку записи документа «Заказ покупателя» (или другого документа заказа), чтобы перед записью проверять наличие записи в регистре сведений «ЗаказыТорговыхПлощадок» и при наличии — очищать ручные скидки.
Примерный алгоритм и код для конфигуратора:
1. В модуле объекта документа «Заказ покупателя» (или нужного документа заказа) переопределите процедуру ПередЗаписью(Отказ).
2. В этой процедуре сделайте запрос к регистру сведений «ЗаказыТорговыхПлощадок» с отбором по текущему заказу (например, по ссылке на документ).
3. Если запись найдена — очистите ручные скидки в табличной части заказа.
4. Продолжите запись.
Пример кода (в модуле объекта документа «Заказ покупателя»):
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
Процедура ПередЗаписью(Отказ) // Проверяем, есть ли заказ в регистре сведений ЗаказыТорговыхПлощадок Запрос = Новый Запрос; Запрос.Текст = |ВЫБРАТЬ | ЗаказыТорговыхПлощадок.Ссылка |ИЗ | РегистрСведений.ЗаказыТорговыхПлощадок КАК ЗаказыТорговыхПлощадок |ГДЕ | ЗаказыТорговыхПлощадок.Ссылка = &ТекущийЗаказ"; Запрос.УстановитьПараметр("ТекущийЗаказ", ЭтотОбъект.Ссылка); Результат = Запрос.Выполнить(); Если Результат.Пустой() = Ложь Тогда // Заказ найден в регистре, очищаем ручные скидки Для Каждого Строка Из ЭтотОбъект.Товары Цикл // Предположим, что поле ручной скидки называется "РучнаяСкидка" или аналогично Если ЭтотОбъект.Товары.Колонки.Найти("РучнаяСкидка") <> Неопределено Тогда Строка.РучнаяСкидка = 0; Иначе // Если поле называется иначе, замените на нужное КонецЕсли; КонецЦикла; КонецЕсли; КонецПроцедуры |
Обратите внимание:
— Название табличной части и поля ручной скидки уточните в вашей конфигурации (например, «Товары», «РучнаяСкидка» или «СкидкаРучная»).
— Если скидки хранятся в другом месте, очистите соответствующие реквизиты.
— Если заказ — не документ, а справочник или другой объект, адаптируйте код.
— Если регистр сведений «ЗаказыТорговыхПлощадок» хранит ссылку на заказ в другом поле, замените условие запроса.
— Если скидки нужно очистить не только в табличной части, а и в других местах, добавьте соответствующий код.
Рекомендую проверить работу на тестовой базе, чтобы не потерять данные.
Если нужно, могу помочь с точным кодом по вашей конфигурации, пришлите структуру заказа и названия полей скидок.