Как перенести доп. сведение к документу в 1С КД2?

База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как перенести доп. сведение к документу в 1С КД2?

Просмотр 1 ветки ответов
  • Автор
    Записи
    • #38734
      Фото аватараOdineski
      Участник

        КД2 как перенести дополнительные сведения к документу

      • #38735
        bot_avaOdin — Одинэсник
        Участник

          В КД2 дополнительные сведения к документу нужно переносить не как реквизиты самого документа, а как записи регистра сведений, в котором БСП хранит дополнительные сведения.

          Обычно запись содержит:

          Точные названия регистра и его полей зависят от конфигурации. Чаще всего используются регистры с названиями:

          Сначала нужно определить, где именно хранятся ваши данные.

          ## 1. Проверьте, что переносится

          В 1С есть два разных механизма.

          ### Дополнительные сведения

          Открываются обычно отдельной командой или через меню:

          Они хранятся отдельно от объекта и обычно доступны даже пользователям, которые не редактируют сам документ.

          ### Дополнительные реквизиты

          Отображаются непосредственно в форме документа в группе дополнительных реквизитов. Они считаются частью объекта.

          Для КД2 оба варианта обычно необходимо переносить через соответствующие регистры сведений.

          ## 2. Найдите регистр в конфигурации

          В конфигураторе источника откройте объект документа и посмотрите, какие регистры используют ссылку на этот документ.

          Можно также найти регистры по измерению типа:

          Проверьте записи регистра в режиме 1С:Предприятие. У записи должны быть примерно такие значения:

          Нужно проверить:

          1. имя регистра;
          2. какие поля являются измерениями;
          3. где хранится ссылка на документ;
          4. где хранится свойство;
          5. где хранится значение;
          6. тип значения.

          Особенно важно проверить тип поля Значение. Оно часто бывает составного типа и может содержать:

          ## 3. Настройте перенос самого документа

          В КД2 сначала должно быть создано и настроено ПКО для документа.

          Например:

          Документ должен переноситься раньше, чем записи регистра дополнительных сведений. Иначе при загрузке регистра система не сможет определить ссылку на документ-приемник.

          Также должны быть настроены ПКО для:

          — свойства дополнительного сведения;
          — значения, если оно является ссылкой;
          — владельца свойства, если используется подчиненный справочник;
          — других ссылочных значений.

          Например, если дополнительное сведение имеет значение СправочникСсылка.LES_Лесосеки, для справочника LES_Лесосеки также нужно настроить ПКО.

          ## 4. Создайте ПКО для регистра сведений

          В КД2 создайте правило конвертации объекта для регистра сведений, в котором хранятся дополнительные сведения.

          Например:

          В настройке ПКО укажите соответствие полей:

          Пример логики соответствия:

          Если поле Объект является составным или имеет тип ТипОбъекта, необходимо настроить преобразование ссылки через ПКО документа.

          ## 5. Создайте ПОД для регистра

          После создания ПКО создайте правило обработки данных.

          В КД2 обычно нужно указать:

          Для отбора лучше выгружать только записи, относящиеся к нужным документам. Не следует без отбора переносить весь регистр дополнительных сведений, особенно если в базе много объектов.

          Пример запроса для отбора записей по документам:

          В КД2 запрос задается в настройках правила обработки данных или в обработчике выгрузки, в зависимости от реализации конкретной версии конфигурации.

          ## 6. Настройте перенос ссылки на документ

          Главное поле регистра, которое нужно правильно обработать, это Объект.

          При переносе записи:

          КД2 должна найти соответствующий документ в приемнике по ПКО документа.

          Если конфигурации источника и приемника разные, настройте:

          В обработчике значения поля Объект иногда используется получение ссылки на объект-приемник. В конкретных конфигурациях код может выглядеть по-разному, но смысл такой:

          Не следует передавать GUID документа строкой, если в приемнике требуется настоящая ссылка.

          ## 7. Настройте перенос свойства

          Поле Свойство обычно является ссылкой на элемент справочника дополнительных реквизитов и сведений.

          Для него нужно создать отдельное ПКО, например:

          или настроить передачу свойства по коду, наименованию либо уникальному идентификатору.

          Рекомендуемый вариант:

          Если свойство уже есть в обеих базах и имеет одинаковый уникальный идентификатор, можно использовать стандартное сопоставление по GUID.

          Если свойства были созданы вручную отдельно в каждой базе, их GUID могут отличаться. Тогда сопоставление по GUID не сработает. В таком случае нужно настроить поиск:

          или:

          Но поиск по наименованию менее надежен, потому что наименования могут повторяться или изменяться.

          ## 8. Настройте поле «Значение»

          Поле Значение требует особого внимания.

          ### Если значение строковое

          Настройте обычное соответствие:

          ### Если значение числовое

          Также используется прямое соответствие, но проверьте:

          — разрядность;
          — точность;
          — пустое значение;
          — нулевое значение.

          ### Если значение является датой или булевым значением

          Проверьте, что тип значения в источнике и приемнике одинаковый.

          ### Если значение является ссылкой

          Например:

          то необходимо создать ПКО для соответствующего справочника и передавать значение через это ПКО.

          Иначе в приемнике может появиться:

          — пустая ссылка;
          — строковое представление ссылки;
          — ошибка преобразования типа;
          — ссылка на несуществующий объект.

          ## 9. Ограничьте выгрузку только нужными документами

          Если переносится конкретный набор документов, лучше использовать отбор по документам или по периоду.

          Например:

          В КД2 параметры и способ передачи отбора зависят от используемого правила обработки данных. Если в запросе используются параметры, их нужно задать в настройках правила.

          ## 10. Если стандартный перенос регистра не срабатывает

          В некоторых конфигурациях регистр дополнительных сведений не предназначен для прямого обмена через КД2. Например:

          — регистр не включен в план обмена;
          — у регистра нет удобного ПКО;
          — значение хранится в специальном формате;
          — объект имеет составной тип;
          — данные формируются БСП специальными процедурами;
          — в источнике и приемнике отличаются структуры дополнительных сведений.

          В этом случае можно переносить сведения из ПКО документа.

          ### На стороне источника

          В обработчике Перед выгрузкой документа получить записи дополнительных сведений и добавить их в структуру выгружаемых данных.

          Примерная логика:

          Название объекта Источник, ДанныеXDTO и точное место обработчика зависят от структуры правил КД2.

          ### На стороне приемника

          В обработчике загрузки документа получить переданную таблицу и записать сведения в регистр.

          Примерная логика:

          Но при таком варианте нужно учитывать существующие записи. Если документ загружается повторно, могут появиться дубли.

          Перед записью обычно удаляют старые записи по документу:

          Такой код удаляет записи регистра по установленному отбору, после чего новые сведения записываются заново. Применять его нужно осторожно, если в приемнике есть сведения, которые не должны заменяться обменом.

          ## Рекомендуемый порядок настройки

          Для обычного случая порядок такой:

          1. Создать ПКО документа.
          2. Создать ПКО свойства дополнительного сведения.
          3. Создать ПКО справочников и документов, которые могут находиться в поле Значение.
          4. Создать ПКО регистра дополнительных сведений.
          5. Создать ПОД регистра.
          6. Ограничить выгрузку регистра нужными документами.
          7. Настроить поле Объект через ПКО документа.
          8. Настроить поле Свойство через ПКО свойства.
          9. Настроить поле Значение с учетом его фактического типа.
          10. Выполнить тестовую выгрузку одного документа.
          11. Проверить наличие записи регистра в приемнике.
          12. Открыть документ и убедиться, что дополнительное сведение отображается в форме.

          ## Важный нюанс

          Если дополнительные сведения создавались пользователем вручную, в источнике и приемнике могут отличаться ссылки на элементы справочника свойств. Поэтому недостаточно перенести только регистр.

          Нужно переносить одновременно:

          Если передать только запись регистра, но не перенести или не сопоставить Свойство, запись может загрузиться некорректно или не будет отображаться в форме документа.

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С