Условия разработки и тестирования:
-платформа 8.3.9.2170, конфигурация УПП 1.3.131.1
-платформа 8.3.15.1565, самописная конфигурация для мобильной платформы без БСП
Эта обработка подходит для переноса данных между базами 1С как с различающимися, так и идентичными конфигурациями. Есть возможность задавать соответствия между именами объектов метаданных и их реквизитов в различных базах. Если соответствие не задано, считается, что они должны совпадать. Настройки соответствий можно хранить как макеты табличных документов и при необходимости без затруднений править.
Первоначальное и основное предназначение обработки – унификация обмена между приложением мобильной платформы и основной базой данных предприятия и исключение рутинных операций (т.е. выборки и записи в сообщение зарегистрированных для обмена данных) из процесса разработки. Предусмотрена возможность фильтрации реквизитов при программной работе, т.к. на стороне мобильного приложения все реквизиты справочников, имеющиеся в основной базе, как правило, не нужны и могут быть опущены.
Интерактивный режим работы в данном случае вторичен и по сути является расширением области применения. И при выгрузке, и при загрузке обязательно отмечаем типы объектов, которые планируем выгрузить или загрузить (все иные будут проигнорированы, даже если имеются в записанном сообщении). Предусмотрен как режим выгрузки только зарегистрированных для узла плана обмена, так и всех имеющихся в базе объектов. Дополнительно можно использовать отбор по периоду, который используется для «Документов» и «Задач»
При выгрузке обработка формирует для каждого типа объектов массив. Элементы массива – структуры, соответствующие объектам. Табличные части выгружаются в виде подчиненных структуре массивов, а элементы этих массивов соответствуют строкам ТЧ.
При программной работе – разработчик самостоятельно определяется как поместить эти массивы в сообщение обмена (у меня они добавляются в Структуру, а потом все это упаковывается в ХранилищеЗначений). При интерактивном режиме – создается соответствие с текстовыми ключами, соответствующими именам менеджеров объектов и значениями в виде полученных массивов с данными. Полученное соответствие упаковывается в ХранилищеЗначений, а это хранилище записывается в XML-файл с тэгом «Data».
Основное преимущество такого «формата» файла – компактный размер, особенно в сравнении с классической с XML-сериализацией. Нечитабельность данных в текстовом формате можно расценивать двояко. С одной стороны, это не позволяет потенциальному злоумышленнику без некоторого багажа знаний прочесть файл, с другой – у самого прочитать блокнотом тоже не получится.
На данный момент реализована загрузка и выгрузка только объектов, имеющих соответствующие им ссылочные типы (т.е. Документы, Справочники, Бизнес-процессы, Задачи, Планы видов характеристик, Планы видов расчета, Планы счетов, Планы обмена). Сопоставление объектов всегда выполняется по ссылке (т.е. внутреннему идентификатору базы). Ввиду специфики использования и имеющихся практических задач обкатка пройдена на справочниках и документах при использовании обработки для построения обмена с приложением мобильной платформы. Поддержку работы обработки с регистрами со временем планирую добавить, но для собственных задач пока что актуально не было.
Пример программного обращения к обработке для выгрузки данных узлу:
Обработка = Обработки.мб_ВыгрузкаЗагрузкаПоИменамРеквизитов.Создать();
мФильтрДляНоменклатуры = Новый Массив;
мФильтрДляНоменклатуры.Добавить("Артикул");
мФильтрДляНоменклатуры.Добавить("Услуга");
мНом = Обработка.ВыгрузкаПоОбъектуМетаданных("Справочники.Номенклатура", Узел,,мФильтрДляНоменклатуры, Истина);
Данные.Вставить("Номенклатура", мНом);
мВод = Обработка.ВыгрузкаПоОбъектуМетаданных("Справочники.inf_Водители", Узел,,, Истина);
Данные.Вставить("Водители", мВод);
Пример программного обращения к обработке для загрузки полученных данных:
Обработка = Обработки.ВыгрузкаЗагрузкаПоИменамРеквизитов.Создать();
СоответствиеМетаданных = Обработка.СоответствиеКонвертацииИзМакета("ОсновнаяБаза", Ложь);
СоответствиеТипов = Обработка.СоответствиеИменТипов(СоответствиеМетаданных);
Если СтруктураДанных.Свойство("Водители") Тогда
Обработка.ЗагрузитьОбъектыМетаданных("Справочники.Водители", СтруктураДанных.Водители,
СоответствиеМетаданных, СоответствиеТипов);
КонецЕсли;
Если СтруктураДанных.Свойство("Номенклатура") Тогда
Обработка.ЗагрузитьОбъектыМетаданных("Справочники.Номенклатура", СтруктураДанных.Номенклатура,
СоответствиеМетаданных, СоответствиеТипов);
КонецЕсли;
Обновленная версия от 20-02-2020 г. (опубликовано 26-02-2020 г.)
Добавлены процедуры и функции для работы с Регистрами сведений и Регистрами накопления. Улучшена работа с Планами видов характеристик.