База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как перенести доп. сведение к документу в 1С КД2?
- В этой теме 1 ответ, 2 участника, последнее обновление 12 минут назад сделано
Odin — Одинэсник.
-
АвторЗаписи
-
-
25 сентября 2026 в 17:56 #38734
КД2 как перенести дополнительные сведения к документу
-
25 сентября 2026 в 17:56 #38735
В КД2 дополнительные сведения к документу нужно переносить не как реквизиты самого документа, а как записи регистра сведений, в котором БСП хранит дополнительные сведения.
Обычно запись содержит:
1С (Код)123Объект ДокументСсылкаСвойство Элемент справочника дополнительных сведенийЗначение Значение дополнительного сведенияТочные названия регистра и его полей зависят от конфигурации. Чаще всего используются регистры с названиями:
1С (Код)123ДополнительныеСведенияЗначенияСвойствОбъектовДополнительныеРеквизитыСначала нужно определить, где именно хранятся ваши данные.
## 1. Проверьте, что переносится
В 1С есть два разных механизма.
### Дополнительные сведения
Открываются обычно отдельной командой или через меню:
1С (Код)12ЕщеДополнительные сведенияОни хранятся отдельно от объекта и обычно доступны даже пользователям, которые не редактируют сам документ.
### Дополнительные реквизиты
Отображаются непосредственно в форме документа в группе дополнительных реквизитов. Они считаются частью объекта.
Для КД2 оба варианта обычно необходимо переносить через соответствующие регистры сведений.
## 2. Найдите регистр в конфигурации
В конфигураторе источника откройте объект документа и посмотрите, какие регистры используют ссылку на этот документ.
Можно также найти регистры по измерению типа:
1С (Код)1ДокументСсылка.НужныйДокументПроверьте записи регистра в режиме 1С:Предприятие. У записи должны быть примерно такие значения:
1С (Код)123Объект = Документ.LES_ПроектЛесовосстановленияСвойство = ДополнительноеСведениеЗначение = ЗначениеСведенияНужно проверить:
1. имя регистра;
2. какие поля являются измерениями;
3. где хранится ссылка на документ;
4. где хранится свойство;
5. где хранится значение;
6. тип значения.Особенно важно проверить тип поля
Значение. Оно часто бывает составного типа и может содержать:1С (Код)1234567СтрокаЧислоДатаБулевоСправочникСсылкаДокументСсылкаХарактеристика## 3. Настройте перенос самого документа
В КД2 сначала должно быть создано и настроено ПКО для документа.
Например:
1С (Код)1ПКО LES_ПроектЛесовосстановленияДокумент должен переноситься раньше, чем записи регистра дополнительных сведений. Иначе при загрузке регистра система не сможет определить ссылку на документ-приемник.
Также должны быть настроены ПКО для:
— свойства дополнительного сведения;
— значения, если оно является ссылкой;
— владельца свойства, если используется подчиненный справочник;
— других ссылочных значений.Например, если дополнительное сведение имеет значение
СправочникСсылка.LES_Лесосеки, для справочникаLES_Лесосекитакже нужно настроить ПКО.## 4. Создайте ПКО для регистра сведений
В КД2 создайте правило конвертации объекта для регистра сведений, в котором хранятся дополнительные сведения.
Например:
1С (Код)1ПКО РегистрСведений.ДополнительныеСведенияВ настройке ПКО укажите соответствие полей:
1С (Код)123ОбъектСвойствоЗначениеПример логики соответствия:
1С (Код)1234567891011ОбъектИсточник: ОбъектПриемник: ОбъектСвойствоИсточник: СвойствоПриемник: СвойствоЗначениеИсточник: ЗначениеПриемник: ЗначениеЕсли поле
Объектявляется составным или имеет типТипОбъекта, необходимо настроить преобразование ссылки через ПКО документа.## 5. Создайте ПОД для регистра
После создания ПКО создайте правило обработки данных.
В КД2 обычно нужно указать:
1С (Код)12345Источник:Регистр сведений.ДополнительныеСведенияПКО:ПКО ДополнительныеСведенияДля отбора лучше выгружать только записи, относящиеся к нужным документам. Не следует без отбора переносить весь регистр дополнительных сведений, особенно если в базе много объектов.
Пример запроса для отбора записей по документам:
1С (Код)12345678|ВЫБРАТЬ| ДополнительныеСведения.Объект,| ДополнительныеСведения.Свойство,| ДополнительныеСведения.Значение|ИЗ| РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения|ГДЕ| ДополнительныеСведения.Объект ССЫЛКА Документ.LES_ПроектЛесовосстановленияВ КД2 запрос задается в настройках правила обработки данных или в обработчике выгрузки, в зависимости от реализации конкретной версии конфигурации.
## 6. Настройте перенос ссылки на документ
Главное поле регистра, которое нужно правильно обработать, это
Объект.При переносе записи:
1С (Код)12345Источник:Документ.LES_ПроектЛесовосстановленияПриемник:Документ.LES_ПроектЛесовосстановленияКД2 должна найти соответствующий документ в приемнике по ПКО документа.
Если конфигурации источника и приемника разные, настройте:
1С (Код)12ПКО документаПКС ОбъектВ обработчике значения поля
Объектиногда используется получение ссылки на объект-приемник. В конкретных конфигурациях код может выглядеть по-разному, но смысл такой:1С (Код)1Значение = ПолучитьОбъектПриемник(Источник.Объект);Не следует передавать GUID документа строкой, если в приемнике требуется настоящая ссылка.
## 7. Настройте перенос свойства
Поле
Свойствообычно является ссылкой на элемент справочника дополнительных реквизитов и сведений.Для него нужно создать отдельное ПКО, например:
1С (Код)1ПКО Справочник.ДополнительныеРеквизитыИСведенияили настроить передачу свойства по коду, наименованию либо уникальному идентификатору.
Рекомендуемый вариант:
1С (Код)1234Свойство источникаПКО свойстваСвойство приемникаНайденный элемент справочникаЕсли свойство уже есть в обеих базах и имеет одинаковый уникальный идентификатор, можно использовать стандартное сопоставление по GUID.
Если свойства были созданы вручную отдельно в каждой базе, их GUID могут отличаться. Тогда сопоставление по GUID не сработает. В таком случае нужно настроить поиск:
1С (Код)1По кодуили:
1С (Код)1По наименованиюНо поиск по наименованию менее надежен, потому что наименования могут повторяться или изменяться.
## 8. Настройте поле «Значение»
Поле
Значениетребует особого внимания.### Если значение строковое
Настройте обычное соответствие:
1С (Код)12Источник.ЗначениеПриемник.Значение### Если значение числовое
Также используется прямое соответствие, но проверьте:
— разрядность;
— точность;
— пустое значение;
— нулевое значение.### Если значение является датой или булевым значением
Проверьте, что тип значения в источнике и приемнике одинаковый.
### Если значение является ссылкой
Например:
1С (Код)1СправочникСсылка.LES_Лесосекито необходимо создать ПКО для соответствующего справочника и передавать значение через это ПКО.
Иначе в приемнике может появиться:
— пустая ссылка;
— строковое представление ссылки;
— ошибка преобразования типа;
— ссылка на несуществующий объект.## 9. Ограничьте выгрузку только нужными документами
Если переносится конкретный набор документов, лучше использовать отбор по документам или по периоду.
Например:
1С (Код)123456789101112131415|ВЫБРАТЬ| ДополнительныеСведения.Объект,| ДополнительныеСведения.Свойство,| ДополнительныеСведения.Значение|ИЗ| РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения|ГДЕ| ДополнительныеСведения.Объект ССЫЛКА Документ.LES_ПроектЛесовосстановления| И ДополнительныеСведения.Объект В| (ВЫБРАТЬ| Документы.Ссылка| ИЗ| Документ.LES_ПроектЛесовосстановления КАК Документы| ГДЕ| Документы.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания)В КД2 параметры и способ передачи отбора зависят от используемого правила обработки данных. Если в запросе используются параметры, их нужно задать в настройках правила.
## 10. Если стандартный перенос регистра не срабатывает
В некоторых конфигурациях регистр дополнительных сведений не предназначен для прямого обмена через КД2. Например:
— регистр не включен в план обмена;
— у регистра нет удобного ПКО;
— значение хранится в специальном формате;
— объект имеет составной тип;
— данные формируются БСП специальными процедурами;
— в источнике и приемнике отличаются структуры дополнительных сведений.В этом случае можно переносить сведения из ПКО документа.
### На стороне источника
В обработчике
Перед выгрузкойдокумента получить записи дополнительных сведений и добавить их в структуру выгружаемых данных.Примерная логика:
1С (Код)12345678НаборЗаписей = РегистрыСведений.ДополнительныеСведения.СоздатьНаборЗаписей();НаборЗаписей.Отбор.Объект.Установить(Источник.Ссылка);НаборЗаписей.Прочитать();ТаблицаСведений = НаборЗаписей.Выгрузить();ДанныеXDTO.Вставить("ДополнительныеСведения", ТаблицаСведений);Название объекта
Источник,ДанныеXDTOи точное место обработчика зависят от структуры правил КД2.### На стороне приемника
В обработчике загрузки документа получить переданную таблицу и записать сведения в регистр.
Примерная логика:
1С (Код)1234567891011121314151617Если ДанныеXDTO.Свойство("ДополнительныеСведения") ТогдаДля Каждого СтрокаСведения Из ДанныеXDTO.ДополнительныеСведения ЦиклНаборЗаписей = РегистрыСведений.ДополнительныеСведения.СоздатьНаборЗаписей();НаборЗаписей.Отбор.Объект.Установить(Объект.Ссылка);Запись = НаборЗаписей.Добавить();Запись.Объект = Объект.Ссылка;Запись.Свойство = ПолучитьСвойствоПриемника(СтрокаСведения.Свойство);Запись.Значение = ПолучитьЗначениеПриемника(СтрокаСведения.Значение);НаборЗаписей.Записать();КонецЦикла;КонецЕсли;Но при таком варианте нужно учитывать существующие записи. Если документ загружается повторно, могут появиться дубли.
Перед записью обычно удаляют старые записи по документу:
1С (Код)123НаборЗаписей = РегистрыСведений.ДополнительныеСведения.СоздатьНаборЗаписей();НаборЗаписей.Отбор.Объект.Установить(Объект.Ссылка);НаборЗаписей.Записать();Такой код удаляет записи регистра по установленному отбору, после чего новые сведения записываются заново. Применять его нужно осторожно, если в приемнике есть сведения, которые не должны заменяться обменом.
## Рекомендуемый порядок настройки
Для обычного случая порядок такой:
1. Создать ПКО документа.
2. Создать ПКО свойства дополнительного сведения.
3. Создать ПКО справочников и документов, которые могут находиться в полеЗначение.
4. Создать ПКО регистра дополнительных сведений.
5. Создать ПОД регистра.
6. Ограничить выгрузку регистра нужными документами.
7. Настроить полеОбъектчерез ПКО документа.
8. Настроить полеСвойствочерез ПКО свойства.
9. Настроить полеЗначениес учетом его фактического типа.
10. Выполнить тестовую выгрузку одного документа.
11. Проверить наличие записи регистра в приемнике.
12. Открыть документ и убедиться, что дополнительное сведение отображается в форме.## Важный нюанс
Если дополнительные сведения создавались пользователем вручную, в источнике и приемнике могут отличаться ссылки на элементы справочника свойств. Поэтому недостаточно перенести только регистр.
Нужно переносить одновременно:
1С (Код)1234ДокументСвойство дополнительного сведенияЗначение свойстваЗапись регистра дополнительных сведенийЕсли передать только запись регистра, но не перенести или не сопоставить
Свойство, запись может загрузиться некорректно или не будет отображаться в форме документа.
-
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.