Расширение: очистка доп реквизита при копировании документа
Добрый день!
Делаю расширение к 1с УНФ 1.6.13.54, платформа 8.3.12.1412.
Нужно для определенного дополнительного реквизита в Заказе покупателя поле очищать при создании документа копированием (F9).
Попробовал добавить обработчик ПриКопировании, код ниже. Так не работает, значение для допполя сохраняется из копируемого документа. Также попробовал ПриСозданииНаСервере, результат тот же.
Где может быть ошибка?
&После("ПриКопировании")
Процедура ЗаказПокупателяПриКопировании(ОбъектКопирования)
ТипНужногоМнеДопРеквизита = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Amo");
рекв = ЭтотОбъект.ДополнительныеРеквизиты.Найти(ТипНужногоМнеДопРеквизита);
рекв.Значение = "";
КонецПроцедуры
&НаСервере
Процедура ЗаказПокупателяПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
Если Параметры.Ключ.Пустая() Тогда
Свойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Amo");
Отбор = Новый Структура();
Отбор.Вставить("Свойство", Свойство);
НайденныеСтроки = Объект.ДополнительныеРеквизиты.НайтиСтроки(Отбор);
Если НайденныеСтроки.Количество() > 0 Тогда
НайденныеСтроки[0].Значение = "";
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Делаю расширение к 1с УНФ 1.6.13.54, платформа 8.3.12.1412.
Нужно для определенного дополнительного реквизита в Заказе покупателя поле очищать при создании документа копированием (F9).
Попробовал добавить обработчик ПриКопировании, код ниже. Так не работает, значение для допполя сохраняется из копируемого документа. Также попробовал ПриСозданииНаСервере, результат тот же.
Где может быть ошибка?
&После("ПриКопировании")
Процедура ЗаказПокупателяПриКопировании(ОбъектКопирования)
ТипНужногоМнеДопРеквизита = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Amo");
рекв = ЭтотОбъект.ДополнительныеРеквизиты.Найти(ТипНужногоМнеДопРеквизита);
рекв.Значение = "";
КонецПроцедуры
&НаСервере
Процедура ЗаказПокупателяПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
Если Параметры.Ключ.Пустая() Тогда
Свойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Amo");
Отбор = Новый Структура();
Отбор.Вставить("Свойство", Свойство);
НайденныеСтроки = Объект.ДополнительныеРеквизиты.НайтиСтроки(Отбор);
Если НайденныеСтроки.Количество() > 0 Тогда
НайденныеСтроки[0].Значение = "";
КонецЕсли;
КонецЕсли;
КонецПроцедуры
По теме из базы знаний
- Автоматическое резервное копирование любой клиент-серверной базы 1С в формате DT с удалением сеансов, архивацией, изменением расширения (8.3.14+, расширение)
- Очистка видов запасов
- Резервное копирование и восстановление 1С баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика
- Использование типовых возможностей 1С и их расширение. Часть 1
- Интеграция Честный Знак и 1C: обмен и синхронизация для УТ11, УНФ, КА2, ERP, Розница: Расширение для работы с СУЗ, ГИС МТ, ЦРПТ
Найденные решения
&После("ПриКопировании")
Процедура ЗаказПокупателяПриКопировании(ОбъектКопирования)
ТипНужногоМнеДопРеквизита = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Amo");
рекв = ЭтотОбъект.ДополнительныеРеквизиты.Найти(ТипНужногоМнеДопРеквизита);
ЭтотОбъект.ДополнительныеРеквизиты.Удалить(рекв);
КонецПроцедуры
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
&После("ПриКопировании")
Процедура ЗаказПокупателяПриКопировании(ОбъектКопирования)
ТипНужногоМнеДопРеквизита = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Amo");
рекв = ЭтотОбъект.ДополнительныеРеквизиты.Найти(ТипНужногоМнеДопРеквизита);
ЭтотОбъект.ДополнительныеРеквизиты.Удалить(рекв);
КонецПроцедуры
Полезная тема, от себя добавлю маленькое дополнение, если реквизит не обязательный, то он может быть не заполнен и тогда, при копировании документа, будет выходить ошибка, нужно добавить проверку:
&После("ПриКопировании")
Процедура ЗаказПокупателяПриКопировании(ОбъектКопирования)
ТипНужногоМнеДопРеквизита = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Amo");
рекв = ЭтотОбъект.ДополнительныеРеквизиты.Найти(ТипНужногоМнеДопРеквизита);
Если рекв <> Неопределено Тогда
ЭтотОбъект.ДополнительныеРеквизиты.Удалить(рекв);
КонецЕсли;
КонецПроцедуры
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот