В конфигурации «1С:Управление производственным предприятием» (УПП) механизм дополнительных свойств реализован иначе, чем в современных конфигурациях на базе БСП. Здесь свойства не являются частью самого объекта (документа или справочника), а хранятся в отдельном регистре сведений. В связи с этим при создании документа методом «Ввод на основании» автоматического копирования свойств не происходит. Рассмотрим подробно, как решить эту задачу программно и как расширить список доступных типов для новых свойств.
Прежде чем приступать к коду, проанализируем, где именно лежат данные. В УПП за это отвечают два ключевых объекта:
Объект (ссылка на документ) + Свойство (ссылка на ПВХ) = Значение.Поскольку платформа при копировании или вводе на основании работает только с реквизитами самого объекта, данные регистра остаются «за бортом». Наша задача — вручную считать их из документа-основания и записать для нового документа.
Для реализации этой логики нам потребуется внести изменения в модуль объекта того документа, который создается «на основании». Основная работа будет происходить в процедуре ОбработкаЗаполнения.
Рассмотрим пошагово алгоритм действий:
ЗначенияСвойствОбъектов, относящиеся к источнику.Проанализируем пример кода, который решает задачу переноса свойств:
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка)
// Если основание — документ нужного типа
Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ПередачаТоваров") Тогда
// Стандартное заполнение реквизитов (Контрагент, Организация и т.д.)
// ... (код заполнения реквизитов)
// Работа со свойствами
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЗначенияСвойствОбъектов.Свойство,
| ЗначенияСвойствОбъектов.Значение
|ИЗ
| РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
|ГДЕ
| ЗначенияСвойствОбъектов.Объект = &Основание";
Запрос.УстановитьПараметр("Основание", ДанныеЗаполнения);
РезультатСвойств = Запрос.Выполнить().Выгрузить();
// Сохраняем значения в ДополнительныеСвойства для последующей записи
Для Каждого СтрокаСвойство Из РезультатСвойств Цикл
ЭтотОбъект.ДополнительныеСвойства.Вставить("Свойство_" + СтрокаСвойство.Свойство.УникальныйИдентификатор(), СтрокаСвойство.Значение);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Однако просто положить данные в ДополнительныеСвойства недостаточно. Нам нужно, чтобы при записи документа эти свойства попали в регистр. Для этого в процедуре ПриЗаписи (или используя подписки на события) необходимо реализовать обход накопленных данных и создание записей в РегистрСведенийМенеджерЗаписи.ЗначенияСвойствОбъектов.
Часто возникает ситуация, когда в свойствах документа (например, при учете давальческого сырья) нужно указать не просто строку или число, а ссылку на другой объект — например, на «Договор контрагента». Выясним, почему по умолчанию этого типа может не быть в списке.
Чтобы добавить новый тип (например, справочник «Договоры»), выполним следующие действия в Конфигураторе:
СправочникСсылка.ДоговорыКонтрагентов и установить галочку.Теперь в режиме «1С:Предприятие» при создании нового элемента в Плане видов характеристик (через меню «Операции» или интерфейс управления свойствами) вы сможете выбрать тип «Договор».
Разберем важный нюанс: при выборе договора в свойстве система по умолчанию предложит весь список договоров всех контрагентов. В стандартном механизме свойств УПП нет встроенной функции «Связи параметров выбора» (как в обычных реквизитах), которая могла бы отфильтровать договоры только по конкретному контрагенту из шапки документа.
Для решения этой проблемы программисту потребуется вмешаться в работу формы свойств (обычно это общая форма ФормаРедактированияСвойств). Рассмотрим пути решения:
Выясним причину, по которой пользователи иногда не могут найти предопределенные данные в ПВХ «Свойства объектов». В УПП предопределенные элементы этого плана видов характеристик используются для классификации назначений свойств.
Например, предопределенный элемент Документ_ПередачаТоваров указывает системе, что созданное пользователем свойство «Субподрядчик» относится именно к этому типу документов. Если вы не видите нужного типа документа в списке назначений, проверьте раздел «Предопределенные» в ПВХ «Свойства объектов» в Конфигураторе. Если вашего документа там нет, его нужно добавить вручную, чтобы пользователи могли «привязывать» к нему свойства в режиме предприятия.
Проанализируем ситуацию с нагрузкой на базу данных. Использование свойств — это удобно, но ресурсозатратно:
Таким образом, мы рассмотрели полный цикл работы со свойствами в УПП: от программного копирования до настройки типов данных. Это позволяет значительно расширить аналитический потенциал системы без существенной переработки ее структуры.