gifts2017

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

Опубликовал Антон Китаев (kitaevay) в раздел Программирование - Практика программирования

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

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

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

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

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

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

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

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

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

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

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

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Обработка
.epf 44,46Kb
16.09.13
16
.epf 44,46Kb 16 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Алексей (LineykaSBK) 18.09.13 07:13
Конфигурация = Не имеет значения.... Автор зачем обманываешь, на УПП не пошла, потом еще раз глянул внимательнее и увидел что рядом еще и Розница стоит, так как понимать, имеет значение конфигурация или нет?
2. Антон Китаев (kitaevay) 18.09.13 09:36
LineykaSBK, с вашей критикой от части согласен и добавил основной раздел "Практика программирования" (почему то забыл это сделать! - на модерации). Тэга "универсальная обработка" не было и в этом эоне боюсь не будет.

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

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

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

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

PS Эта обработка и в 1С:Розница 1.0 не сработает, т.к. используется свой регистр сведений "Коды внешних систем" и справочник "Виды кодов внешних систем". Вполне реально доработать код обработки и вместо своего регистра использовать стандартный. Повторюсь, в первую очередь это "практика программирования", а не универсальное решение для всех случаев.
3. Антон Китаев (kitaevay) 18.09.13 10:47
(1) LineykaSBK, не сразу разобрался с интерфейсом ответов тут, выше отписался.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа