1С:Предприятие 8.x. Типовая конфигурация "Конвертация данных", редакция 2.1 . Версия 2.1.4.1

Новое в версии:

  • Правила конвертации объектов:
    • Реализована поддержка нового типа данных "УникальныйИдентификатор".
  • Правила регистрации объектов:
    • Появилась возможность задавать режим использования правила регистрации. Теперь пользователи обмена в режиме 1С:Предприятие могут выбирать режим выгрузки объектов из трех возможных вариантов: "Выгружать всегда", "Выгружать по условию", "Выгружать при необходимости".
    • Появились три новых обработчика событий: "При обработке", "При обработке (дополнительный)" и "После обработки".
    • Создан программный интерфейс для работы с правилами регистрации объектов из тела обработчиков событий. Описание интерфейса приведено во встроенной справочной системе конфигурации: "Справка" –> "Информация об обработчиках" –> "Процедуры и функции обработчиков событий правил регистрации объектов".
    • Создан отчет по правилам регистрации объектов.
    • Описание метаданных конфигурации дополнено информацией о составе плана обмена.
  • Исправлены выявленные ошибки.

Рассмотрим новые возможности.

Правила конвертации объектов. Реализована поддержка нового типа данных "УникальныйИдентификатор".

Добавлен тип "УникальныйИдентификатор", конечно хотелось бы иметь интерфейс доступа к свойству "{УникальныйИдентификатор}", но разработчики оставили доступ к нему как и прежде - в неявном виде.

Правила регистрации объектов.

В последних версиях КД явно прослеживается тенденция к созданию универсального инструмента, используемого в распределенной ИБ. Однако все типовые конфигурации имеют обработку [ОбменДаннымиXML], которая может использовать правила обмена из КД, но в вызовах процедур и функций имеются разногласия с обработкой [УниверсальныйОбменДаннымиXML]. Например функция [ВыгрузитьПоПравилу] вызывается из функции [ВыгрузкаОбъектаВыборки], в обработке [УниверсальныйОбменДаннымиXML] в параметр [ВходящиеДанные] передается значение [ИсходящиеДанные], а в обработке [ОбменДаннымиXML] передается значение [ВходящиеДанные]. Таких несоответствий набирается довольно много, что не позволяет полноценно использовать КД при распределении ИБ, необходимо дорабатывать типовые обработки.

Появилась возможность задавать режим использования правила регистрации.

Теперь пользователи обмена в режиме 1С:Предприятие могут выбирать режим выгрузки объектов из трех возможных вариантов: "Выгружать всегда", "Выгружать по условию", "Выгружать при необходимости". Я принялся тестировать данные новшества на имеющихся у меня правилах конвертации "УАТ -> Бухгалтерия 77", но процесс не продвинулся не далее создания ПРО(Правило регистрации объектов), так как выбрать "Режим регистрации" мне так и не удалось. Узел обмена КД увидела, прочитала состав узла обмена, а вот режим задать не позволила.

Разбираясь в причинах данного коллапса, нашел функцию заполняющую список данного элемента формы:

Процедура ЗаполнитьСписокВыбораРеквизитаРежимаВыгрузки()
 
 СписокВыбора = ЭлементыФормы.РеквизитРежимаВыгрузкиОбъектовОбмена.СписокВыбора;
 
 ТекстЗапроса = "
 |ВЫБРАТЬ РАЗЛИЧНЫЕ
 | СвойстваТипы.Ссылка                КАК Свойство,
 | ПРЕДСТАВЛЕНИЕ(СвойстваТипы.Ссылка) КАК ПредставлениеСвойства
 |ИЗ
 | Справочник.Свойства.Типы КАК СвойстваТипы
 |ГДЕ
 |   СвойстваТипы.Ссылка.Владелец  = &Владелец
 | И СвойстваТипы.Тип.Наименование = &ИмяТипаРежимовВыгрузкиОбъектовОбмена
 | И СвойстваТипы.Ссылка.Вид       = ЗНАЧЕНИЕ(Перечисление.ВидыСвойств.Реквизит)
 |УПОРЯДОЧИТЬ ПО
 | СвойстваТипы.Ссылка.Наименование
 |";

 Запрос = Новый Запрос;
 Запрос.УстановитьПараметр("Владелец", ПланОбмена);
 Запрос.УстановитьПараметр("ИмяТипаРежимовВыгрузкиОбъектовОбмена", глИмяТипаРежимовВыгрузкиОбъектовОбмена());
 Запрос.Текст = ТекстЗапроса;
 
 Выборка = Запрос.Выполнить().Выбрать();
 
 Пока Выборка.Следующий() Цикл
  
  СписокВыбора.Добавить(Выборка.Свойство, Выборка.ПредставлениеСвойства);
  
 КонецЦикла;
 
КонецПроцедуры

Камнем преткновения тут оказался отбор по параметру [ИмяТипаРежимовВыгрузкиОбъектовОбмена], находим возвращающую его функцию [глИмяТипаРежимовВыгрузкиОбъектовОбмена] и шокируемся:

Функция глИмяТипаРежимовВыгрузкиОбъектовОбмена() Экспорт
 
 Возврат "ПеречислениеСсылка.РежимыВыгрузкиОбъектовОбмена";
 
КонецФункции

Такой способ задания константы говорит лишь об одном, что скоро что-то будет еще. Но когда и что, в комментариях не указано. Тем не менее попытался я поискать данное [Перечисление.РежимыВыгрузкиОбъектовОбмена] в конфигурации КД и текущих релизах типовых конфигурациях - безрезультатно. Такой объект присутствует лишь в конфигурации "Библиотека стандартных подсистем", редакция 1.1, где ПРО загружаются из отдельного файла, обработка [УниверсальныйОбменДаннымиXML] поставляемая с новой версии КД, при загрузке правил имеет следующий код:

  ИначеЕсли ИмяУзла = "ПравилаКонвертацииОбъектов" Тогда
   ЗагрузитьПравилаКонвертации(ПравилаОбмена, ЗаписьXML);
   
  ИначеЕсли ИмяУзла = "ПравилаОчисткиДанных" Тогда
   ЗагрузитьПравилаОчистки(ПравилаОбмена, ЗаписьXML)
   
  ИначеЕсли ИмяУзла = "ПравилаРегистрацииОбъектов" Тогда
   одПропустить(ПравилаОбмена); // правила регистрации объектов загружаем другой обработкой
   
  // Алгоритмы / Запросы / Обработки
  
  ИначеЕсли ИмяУзла = "Алгоритмы" Тогда
   ЗагрузитьАлгоритмы(ПравилаОбмена, ЗаписьXML);
   
  ИначеЕсли ИмяУзла = "Запросы" Тогда
   ЗагрузитьЗапросы(ПравилаОбмена, ЗаписьXML);

  ИначеЕсли ИмяУзла = "Обработки" Тогда
   ЗагрузитьОбработки(ПравилаОбмена, ЗаписьXML);

Соответственно комментарий ссылается на обработку входящую в состав БСП версии 1.1. Таким образом можно уверенно говорить, что данные новшества будут работать "из коробки" только на 8.2 с интегрированной БСП.

Появились три новых обработчика событий: "При обработке", "При обработке (дополнительный)" и "После обработки".

При обработке. Описание:

Условие возникновения события

Событие выполняется перед выполнением запроса к информационной базе для определения узлов-получателей, в момент, когда текст запроса сформирован и получены значения свойств объекта. Параметры запроса инициализированы значениями из текущей версии объекта.

Параметры:

Отказ – Булево – флаг отказа от выполнения обработчика и отказа от выполнения запроса к информационной базе для определения узлов-получателей.

Объект – объект, для которого выполняется правило регистрации. При регистрации объектов нессылочного типа в качестве объекта выступает запись набора записей.

ТекстЗапроса – Строка – текст запроса, который будет использован для определения узлов-получателей. Текст запроса должен обязательно включать ключевое слово в разделе условий: [УсловиеОтбораПоРеквизитуФлагу] – см. пример.

ПараметрыЗапроса – Структура – содержит значения свойств текущей версии объекта, которые используются в качестве параметров в запросе для определения узлов-получателей.

ИспользоватьКэш – Булево – параметр определяет включение платформенного механизма повторно используемых значений при определении узлов-получателей. Если передаваемые запросу значения в структуре ПараметрыЗапроса содержат недопустимые типы данных для платформенного механизма кэширования, то флаг следует сбросить. Значение по умолчанию – Истина.

Пример:

Пример описывает сценарий регистрации объекта, когда номенклатура в табличной части документа используется для выборки узлов-получателей. Параметр запроса НоменклатураДокумента представлен массивом элементов, поэтому платформенный механизм кэширования отключен (ИспользоватьКэш = Ложь).

ИспользоватьКэш = Ложь;

// Получаем значение параметра НоменклатураДокумента из текущей версии объекта
НоменклатураДокумента = Объект.Товары.ВыгрузитьКолонку("Номенклатура");
ПараметрыЗапроса.Вставить("НоменклатураДокумента", НоменклатураДокумента);

ТекстЗапроса = "
|ВЫБРАТЬ РАЗЛИЧНЫЕ ПланОбменаОсновнаяТаблица.Ссылка КАК Ссылка
|ИЗ
|ПланОбмена._ДемоОбменБСП_БСП КАК ПланОбменаОсновнаяТаблица
|ЛЕВОЕ СОЕДИНЕНИЕ
|ПланОбмена._ДемоОбменБСП_БСП.Номенклатура КАК _ДемоОбменБСП_БСПНоменклатура
|ПО ПланОбменаОсновнаяТаблица.Ссылка = _ДемоОбменБСП_БСПНоменклатура.Ссылка
|ГДЕ
|(ПланОбменаОсновнаяТаблица.ДатаНачалаВыгрузкиДокументов <= &СвойствоОбъекта_Дата
| И _ДемоОбменБСП_БСПНоменклатура.Номенклатура В (&СвойствоОбъекта_НоменклатураДокумента)
| )
|И НЕ ПланОбменаОсновнаяТаблица.Ссылка = &_ДемоОбменБСП_БСПЭтотУзел
|И НЕ ПланОбменаОсновнаяТаблица.ПометкаУдаления
|[УсловиеОтбораПоРеквизитуФлагу]
|";

Примечание: Пример использования обработчика представлен в демонстрационной конфигурации "Библиотека стандартных подсистем" – документ "Демо: Поступление товаров".

При обработке (дополнительный). Описание:

Условие возникновения события

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

Параметры:

Отказ – Булево – флаг отказа от выполнения обработчика и отказа от выполнения запроса к информационной базе для определения узлов-получателей.

Объект – объект, для которого выполняется правило регистрации. При регистрации объектов нессылочного типа в качестве объекта выступает запись набора записей.

ТекстЗапроса – Строка – текст запроса, который будет использован для определения узлов-получателей. Текст запроса должен обязательно включать ключевое слово в разделе условий: [УсловиеОтбораПоРеквизитуФлагу] – см. пример.

ПараметрыЗапроса – Структура – содержит значения свойств версии объекта до изменения, которые используются в качестве параметров в запросе для определения узлов-получателей.

ИспользоватьКэш – Булево – параметр определяет включение платформенного механизма повторно используемых значений при определении узлов-получателей. Если передаваемые запросу значения в структуре ПараметрыЗапроса содержат недопустимые типы данных для платформенного механизма кэширования, то флаг следует сбросить. Значение по умолчанию – Истина.

Пример:

Пример описывает сценарий регистрации объекта, когда номенклатура в табличной части документа используется для выборки узлов-получателей. Параметр запроса НоменклатураДокумента представлен массивом элементов, поэтому платформенный механизм кэширования отключен (ИспользоватьКэш = Ложь).

ИспользоватьКэш = Ложь;

// Получаем значение параметра НоменклатураДокумента из версии объекта до изменения
ТекстЗапроса = "
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| _ДемоПоступлениеТоваровТовары.Номенклатура КАК Номенклатура
|ИЗ
| Документ._ДемоПоступлениеТоваров.Товары КАК _ДемоПоступлениеТоваровТовары
|ГДЕ
| _ДемоПоступлениеТоваровТовары.Ссылка = &Ссылка
|";

Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка);
Запрос.Текст = ТекстЗапроса;

НоменклатураДокумента = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Номенклатура");
ПараметрыЗапроса.Вставить("НоменклатураДокумента", НоменклатураДокумента);

ТекстЗапроса = "
|ВЫБРАТЬ РАЗЛИЧНЫЕ ПланОбменаОсновнаяТаблица.Ссылка КАК Ссылка
|ИЗ
|ПланОбмена._ДемоОбменБСП_БСП КАК ПланОбменаОсновнаяТаблица
|ЛЕВОЕ СОЕДИНЕНИЕ
|ПланОбмена._ДемоОбменБСП_БСП.Номенклатура КАК _ДемоОбменБСП_БСПНоменклатура
|ПО ПланОбменаОсновнаяТаблица.Ссылка = _ДемоОбменБСП_БСПНоменклатура.Ссылка
|ГДЕ
|(ПланОбменаОсновнаяТаблица.ДатаНачалаВыгрузкиДокументов <= &СвойствоОбъекта_Дата
| И _ДемоОбменБСП_БСПНоменклатура.Номенклатура В (&СвойствоОбъекта_НоменклатураДокумента)
| )
|И НЕ ПланОбменаОсновнаяТаблица.Ссылка = &_ДемоОбменБСП_БСПЭтотУзел
|И НЕ ПланОбменаОсновнаяТаблица.ПометкаУдаления
|[УсловиеОтбораПоРеквизитуФлагу]
|";

Примечание: Пример использования обработчика представлен в демонстрационной конфигурации "Библиотека стандартных подсистем" – документ "Демо: Поступление товаров".

После обработки. Описание:

Условие возникновения события

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

Параметры:

Отказ – Булево – флаг отказа от выполнения правила регистрации. Отказ от выполнения правила означает, что объект не будет зарегистрирован на узлах плана обмена, для которого создано это правило.

Объект – объект, для которого выполняется правило регистрации.

ОбъектМетаданных – объект метаданных, соответствующий параметру Объект.

Получатели – Массив – список узлов-получателей, на которых будет зарегистрирован объект.

Пример 1:

Пример выводит пользователю в окно сообщений список узлов, на которых будет зарегистрирован текущий объект при записи:

Для Каждого Узел Из Получатели Цикл
    Сообщить("Объект будет зарегистрирован на узле: " + Строка(Узел));
КонецЦикла;

Пример 2:

Добавление в список узлов получателей обязательного узла для выгрузки, значение которого хранится в параметре сеанса:

Получатели.Добавить(ПараметрыСеанса.ОбязательныйУзелДляВыгрузкиДанных);

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

Создан программный интерфейс для работы с правилами регистрации объектов из тела обработчиков событий.

Процедуры и функции обработчиков событий правил регистрации объектов. Описание:


Процедура ДополнитьПолучателей(Объект, Узлы)

Описание:
Дополняет список узлов-получателей объекта переданными значениями узлов.

Параметры:
Объект (обязательный) – объект, для которого выполняется правило регистрации
Узлы (обязательный) – Массив – узлы плана обмена, которые необходимо добавить в список узлов-получателей объекта

Процедура СократитьПолучателей(Объект, Узлы)

Описание:
Вычитает из списка узлов-получателей объекта переданные значения узлов.

Параметры:
Объект (обязательный) – объект, для которого выполняется правило регистрации
Узлы (обязательный) – Массив – узлы плана обмена, которые необходимо вычесть из списка узлов-получателей объекта

Функция ОпределитьПолучателей(Объект, ИмяПланаОбмена)

Описание:
Определяет список узлов-получателей в соответствии с правилами регистрации для плана обмена

Параметры:
Объект (обязательный) – объект, для которого требуется определить список узлов-получателей.
ИмяПланаОбмена (обязательный) – Строка – имя плана обмена, как оно задано в конфигураторе, список узлов для которого необходимо получить.

Возвращаемое значение:
Тип: Массив. Список узлов-получателей в соответствии с правилами регистрации для плана обмена.

Функция СократитьМассив(Массив, МассивВычитания)

Описание:
Вычитает один массив элементов из другого массива. Возвращает результат вычитания.

Параметры:
Массив (обязательный) - массив элементов, из которого необходимо выполнить вычитание
МассивВычитания (обязательный) - массив элементов, который будет вычитаться

Возвращаемое значение:
Тип: Массив. Результат вычитания двух массивов.

Функция АвтоРегистрацияРазрешена(ОбъектМетаданных, ИмяПланаОбмена)

Описание:
Определяет признак авторегистрации объекта метаданных в составе плана обмена.

Параметры:
ОбъектМетаданных (обязательный) – объект метаданных, для которого требуется получить признак авторегистрации
ИмяПланаОбмена (обязательный) – Строка – имя плана обмена, как оно задано в конфигураторе, в состав которого входит объект метаданных

Возвращаемое значение:
Тип: Булево. Истина – объект метаданных имеет признак авторегистрации Разрешена в составе плана обмена; Ложь – объект метаданных имеет признак авторегистрации Запрещена в составе плана обмена или объект метаданных не входит в состав плана обмена.

Функция ВсеУзлыПланаОбмена(ИмяПланаОбмена)

Описание:
Возвращает список всех узлов заданного плана обмена кроме предопределенного узла.

Параметры:
ИмяПланаОбмена (обязательный) – Строка – имя плана обмена, как оно задано в конфигураторе, список узлов для которого необходимо получить.

Возвращаемое значение:
Тип: Массив. Список всех узлов заданного плана обмена.

Исправлены выявленные ошибки.

И добавленны новые =)

Комментариев нет: