Копирование дополнительных свойств и значений вместе с объектом в УФ
По теме из базы знаний
- Панель #Расширение объекта: Редактор, Права, Поиск, Сторно, Обмен
- Работа с Ворд через СОМ-Объект
- Обзор полезных методов БСП 3.1.4
- Управление сборкой. Расширение для конфигурации СППР
- Эффективное управление фоновыми заданиями и коммуникация сеансов сервера с Фоном с помощью Структуры обмена (ноу-хау) + Бонус: Альтернативный вариант через Хранилище настроек
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) egorover, если уж меняете документ, то пилить по полной.
Доп сведения - без записи не заполнить, - это факт.
Записывать, сразу при копировании - не комильфо.
Значит, надо сделать еще один реквизитик в документе, в который в случае срабатывания при копировании, записывалась бы ссылка объекта копирования.
Далее, перед записью, ставим проверку заполненности этого реквизита, и когда оператор документ приготовил и решил его записать, оно у него должно спросить - заполнять ли доп свойства или нет, ну или безусловно заполнить и очистить реквизит за собой.
Вот и все.
Доп сведения - без записи не заполнить, - это факт.
Записывать, сразу при копировании - не комильфо.
Значит, надо сделать еще один реквизитик в документе, в который в случае срабатывания при копировании, записывалась бы ссылка объекта копирования.
Далее, перед записью, ставим проверку заполненности этого реквизита, и когда оператор документ приготовил и решил его записать, оно у него должно спросить - заполнять ли доп свойства или нет, ну или безусловно заполнить и очистить реквизит за собой.
Вот и все.
(3) Все намного проще:
1. Не нужны никакие дополнительные реквизиты у документов
2. Записываться при копировании, конечно, документ не будет.
3. Создается подписка на событие ПриКопированииДокумента, в которой будет практически одна строка кода:
4. Создается подписка на событие ПриЗаписиДокумента, в которой получаем через чудесные дополнительные свойства документа тот самый объект копирования и вытаскиваем через него значения дополнительных свойств, что-то в этом роде:
1. Не нужны никакие дополнительные реквизиты у документов
2. Записываться при копировании, конечно, документ не будет.
3. Создается подписка на событие ПриКопированииДокумента, в которой будет практически одна строка кода:
Источник.ДополнительныеСвойства.Вставить("ДокументКопирования", ОбъектКопирования.Ссылка);
4. Создается подписка на событие ПриЗаписиДокумента, в которой получаем через чудесные дополнительные свойства документа тот самый объект копирования и вытаскиваем через него значения дополнительных свойств, что-то в этом роде:
ДокументКопирования = Неопределено;
Если НЕ Источник.ДополнительныеСвойства.Свойство("ДокументКопирования", ДокументКопирования) Тогда
Возврат;
КонецЕсли;
// копировать значения не всех подряд свойств
МассивСвойств = Новый Массив;
МассивСвойств.Добавить(ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("_Автомобиль"));
МассивСвойств.Добавить(ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("_Агент"));
ТЗЗначенийСвойств = ПолучитьСвойстваОбъекта(ДокументКопирования, МассивСвойств);
Если ТЗЗначенийСвойств.Количество() > 0 Тогда
НаборЗаписейСвойств = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей();
НаборЗаписейСвойств.Отбор.Объект.Установить(Источник.Ссылка);
Для каждого Строка Из ТЗЗначенийСвойств Цикл
Запись = НаборЗаписейСвойств.Добавить();
ЗаполнитьЗначенияСвойств(Запись, Строка);
Запись.Объект = Источник.Ссылка;
КонецЦикла;
НаборЗаписейСвойств.Записать(Истина);
КонецЕсли;
Источник.ДополнительныеСвойства.Удалить("ДокументКопирования");
Показать
(7)К сожалению, не работает. ПриЗаписи ДополнительныеСвойства уже не содержит ДокументКопирования. Там структура совсем с другим ключом - "РежимЗаписи" со значением "Запись". А ключ "ДокументКопирования" исчез. В момент копирования, да я его видела. В момент записи уже нет. Жаль, не работает. А так хочется научиться копировать доп.сведения при копировании
(10) У меня это рабочий код и должно работать, как описано выше. Вы в обработчике события ПриКопированииДокумента специально не записывали в структуру "ДополнительныеСвойства" как указано в п. 3:
Источник.ДополнительныеСвойства.Вставить("ДокументКопирования", ОбъектКопирования.Ссылка);
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот