Справочник "Соотношения полей карточки документа и записи справочника"

16 5

Создание одного объекта из-под другого – популярное действие в системе DIRECTUM. В данном случае рассматривается создание записи справочника из карточки документа и наоборот. При этом действии требуется переносить значения некоторых полей из одного объекта в другой. В прошлых версиях для реализации этой логики необходимо было писать свою разработку (например, модифицировать пользовательские расчеты, события, доработки событий типа карточки документа, событий типа справочника или создавать свои).

В связи с этим была поставлена цель – создать механизм настройки соотношения полей карточки документа и записи справочника.

Механизм был реализован через прикладной справочник Соотношения полей карточки документа и записи справочника, который появился в версии DIRECTUM 5.0.

Выглядит данный справочник следующим образом:

 

В одной записи справочника настраивается одно соотношение (Тип карточки документа + Тип справочника + Представление справочника), нельзя создавать несколько соотношений для одинаковых компонент. Например, если вам необходимо создать соотношения полей для какого-либо типа справочника с разными типами электронных документов, то для каждого из типов электронных документов создается своя запись в справочнике.

Рассмотрим элементы карточки:

  • *Тип карточки документа -  в этом поле указывается тип карточки электронного документа, на который будет распространяться настройка. При изменении значения в поле «*Тип карточки документа» происходит очищение всех значений поля «Реквизит документа» табличной части.

  • *Тип справочников -  указывается тип справочника, для которого производится настройка. При изменении значения в поле «*Тип справочников» происходит очищение всех значений поля «Реквизит справочника» табличной части.

  • *Представление - представление выбранного типа справочника. Можно настраивать для нескольких представлений одного справочника разные соотношения полей.

Табличная часть содержит данные о соотношении реквизитов документа с записями справочника. В ней необходимо указать какие реквизиты документа и справочника будут синхронизироваться и в каком направлении будет происходить синхронизация. Она имеет следующие поля:

  • Реквизит документа - наименование реквизита, который соответствует указанному типу карточки электронного документа.

  • Реквизит справочника - наименование реквизита, который соответствует указанному типу справочника.

  • Направление синхронизации - способ синхронизации значений при создании нового документа или записи справочника. Направление синхронизации может быть трех видов:

    • Документ – запись справочника  –  при создании записи справочника из карточки документа будут синхронизированы значения указанных реквизитов, но при создании документа из записи справочника значения реквизитов синхронизироваться не будут.

    • Запись справочника – документ  –  при создании документа из записи справочника будут синхронизированы значения указанных реквизитов, но при создании записи справочника из документа значения реквизитов синхронизироваться не будут.

    • Двусторонняя – значения реквизитов будут синхронизироваться как при создании документа из записи справочника, так и при создании карточки документа из записи справочника.

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

Для синхронизации была разработана функция CardDocumentAndReferenceRecordSynchronization(Document; RefRecord; DocInRefRecSynch). В функцию через параметры передается:

  • Document – объект IEDocument. Определяет документ, участвующий в синхронизации;
  • RefRecord – объект IReference. Определяет запись справочника, участвующая в синхронизации;
  • DocInRefRecSynch – TRUE/FALSE. Определяет направление синхронизации. Если TRUE — из карточки документа в карточку записи справочника и двусторонняя, если FALSE — из карточки записи справочника в карточку документа и двусторонняя.
Андрей Сукач

Удобный функционал, только в стандартной поставке местами настроено некорректно то, что раньше работало корректно (в частности, перенос содержания из документа во входящую РКК, а также перенос даты и регистрационного номера из РКК в прикрепляемый документ).

Ринат Гайнуллин

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

Алексей Язынин
можно настроить на уровне администрирования, без привлечения разработчиков

Я правильно понимаю, что в соответствующих ТС и ТКЭД должна обязательно вызываться функция CardDocumentAndReferenceRecordSynchronization()? Если ее нет, например, в моем новом ТКЭД, никакой админ синхронизацию из этой ТКЭД в справочник не настроит?

Михаил Тарасов

Алексей Язынин, естественно. А иначе никак. Не предусмотрено в Directume событие, которое отрабатывает во всех карточках. Другое дело, что карточки документов как правило создаются копированием...

Святослав Романов

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

Авторизуйтесь, чтобы написать комментарий