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

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