Выгрузка данных во внешнюю систему (Axapta, например), XML, структура и запрос настраиваются через СКД

Особенность именно этого экспорта в том, что большая часть структуры XML и собственно сам запрос хранятся в макете СКД для того или иного вида объекта(-ов). В данной обработке почти все (кроме первых двух оставшихся по наследству) объекты выгружаются таким способом. Основной раздел "практика программирования" — это не универсальная обработка выгрузки из любой конфигурации 1С в любую внешнюю систему, но мы работаем над этим (Maran atha!), если вы понимаете о чём я.

Основная задача — выгружать изменённые объекты во внешнюю систему. Эта внешняя система к нам подключается через веб-сервис или COM (тут это не рассматривается) и используется эта обработка. Так же обработку можно использовать в ручную для формирования XML файлов (для отладочных целей).

Правильно ли делать было через СКД — это вопрос, старшие поправят. Мне понравилось, то, что т.о. структура для каждого типа объекта задаётся в отдельном макете, запрос внешне не перегружен и содержит в основном только логику, большинство дополнительной информации выуживаю через характеристики. На сколько это оптимально по скорости и ресурсам — вопрос, нужно взвесить цену и качество что называется. Само формирование СКД занимает дополнительное время, тем более, что используются на прополую характеристики. Но зато мне показалось удобным в разработке и поддержке + мне кажется такой способ более масштабируемый, новые объекты клепались на счёлк, старые модифицировались легко. Разработка у нас идёт несколькими сотрудниками — удобно, что достаточно захватить макет, чего мне в большинстве случаев было достаточно для исправления или доработки формата выгрузки.

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

Используется 2 группировки — Группировка по Ссылке и группировка Детальные записи подчинённые. Они выгружаются в Дерево значений, в основной группировке хранятся данные для шапки, в подчинённой хранятся данные строк документов. Обработка не полностью универсальна, часто структуры (название тэгов табличной части и строк, например) прописывается прямо в коде. Поля, которые необходимы для работы, но не должны выгружаться в XML отмечаются в СКД как Свойства элементов пользовательских настроек «Недоступный». Для добавления в структуру свойств надо добавить вычисляемое поле с таким же Путём и затем добавить в настройку СКД, потом удалить из вычисляемых полей. В качестве альтернативы настройки можно формировать программно — пример в Перемещениях.

При необходимости используются функции общего модуля (см в СКД вычисляемые поля), мне пригодились эти:

//grdСКД.ВидДокумента(Документ)
Функция ВидОбъекта(Объект) Экспорт
Возврат Объект.Метаданные().Имя;
КонецФункции

//grdСКД.УникальныйИдентификатор(Ссылка)
Функция УникальныйИдентификатор(Ссылка) Экспорт
Возврат Ссылка.УникальныйИдентификатор();
КонецФункции

Функция СокрЛ4СКД(Строка) Экспорт
Возврат СокрЛ(Строка);
КонецФункции

Функция СокрП4СКД(Строка) Экспорт
Возврат СокрП(Строка);
КонецФункции

Функция СокрЛП4СКД(Строка) Экспорт
Возврат СокрЛП(Строка);
КонецФункции

3 Comments

  1. LineykaSBK

    Конфигурация = Не имеет значения…. Автор зачем обманываешь, на УПП не пошла, потом еще раз глянул внимательнее и увидел что рядом еще и Розница стоит, так как понимать, имеет значение конфигурация или нет?

    Reply
  2. kitaevay

    LineykaSBK, с вашей критикой от части согласен и добавил основной раздел «Практика программирования» (почему то забыл это сделать! — на модерации). Тэга «универсальная обработка» не было и в этом эоне боюсь не будет.

    Обработка является примером кода, а не универсальной выгрузкой из 1С во «внешнюю систему». На этот уровень предлагаю замахиваться после внедрения в платформу 1С прикладных объектов работы с искусственным интеллектом ;-).

    Хранить и настраивать значительную часть структуры XML и запроса к ИБ на уровне макетов СКД может пригодиться и в других конфигурациях. А, может, это вообще не правильно и те, кто постарше, поправят, решительно.

    Мне показалось удобным, хотя с точки зрения оптимизации по скорости и, возможно, ресурсам это не самый шустрый вариант (один большой запрос будет работать быстрее). Но мне нравится, что это всё легко масштабируемо и проще в поддержке. Вместо большого и не очень читаемого запроса остаётся только его костяк, не перегруженный реквизитами, которые можно подключить на уровне настроек.

    Т.к. разработкой занимается несколько человек и надо захватывать/освобождать объекты из хранилища — каждый объект в отдельном макете даёт гибкость в теле дополнительную. За последние 2 недели не лазил в модуль обработки вообще. А вот макеты напильником подтачивал — где то запрос, где то настройки.

    PS Эта обработка и в 1С:Розница 1.0 не сработает, т.к. используется свой регистр сведений «Коды внешних систем» и справочник «Виды кодов внешних систем». Вполне реально доработать код обработки и вместо своего регистра использовать стандартный. Повторюсь, в первую очередь это «практика программирования», а не универсальное решение для всех случаев.

    Reply
  3. kitaevay

    (1) LineykaSBK, не сразу разобрался с интерфейсом ответов тут, выше отписался.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *