Рассмотрим на простом примере.
Вам нужно обновлять номенклатуру на сайте. Если в 1С изменили номенклатуру, то на сайте она должна обновиться — наименование,код,артикул и пр. Соответственно, выгружать нужно только изменившуюся номенклатуру, все 100500 позиций выгружать нет смысла.
Сделать это можно многими способами, особенно, если конфигурация доступна к изменению. Я предлагаю способ для конфигурации на поддержке, без изменения конфигурации. Это будет выгрузка xml файлика с данными, который ваша cms будет читать и обрабатывать.
В каждой типовой есть план обмена Полный. В его составе все основные объекты конфигурации, его и возьмем.
Добавляем в план обмена узлы ВсяВыгрузка и ТекущаяВыгрузка. Не страшно, если Полный план обмена уже используется или будет использоваться — обеспечьте уникальность кодов добавляемых узлов.
Для нашего примера вся редактируемая номенклатура будет регистрироваться для этих узлов. Отлично. Выгрузку будем делать в файл, и настроим принимающую сторону так, чтобы она удаляла файл после его загрузки. Ниже поясню, зачем это надо.
Создаем настройку обмена для узла ВсяВыгрузка. (При необходимости создаем настройку выполнения обмена — с расписанием обмена и пр). В настройке обмена ставим галку «Обмен по правилам обмена», загружаем правила. В правилах нет ничего, ни ПВД, ни ПКО, только в процедуре ПередВыгрузкойДанных Отказ ставим в ложь и пишем код, который формирует файл выгрузки. Т.е. создаем xml файл программно, данные берем с таблиц регистраци изменений. При этом — если в папке выгрузки есть файл(с предыдущей выгрузки = > еще не загружен в сторонную программу), узел таблицы регистрации = ВсяВыгрузка. Если файла нет — узел = ТекущаяВыгрузка.
При этом, после выгрузки, для обоих случаев очищаем регистрацию ТекущейВыгрузки, а для второго случая(файла нет) — удаляем регистрацию узла ВсяВыгрузка.
Итого имеем «ответ» от принимающей стороны — удаление файла выгрузки. И выгружаем соответственно только те изменения, которые не были прочтены принимающей сторонней программой. И, если, обмен у нас настроен по расписанию, выгружается каждую ночь, а принимающая сторона по каким-то причинам уже неделю не может принять файл — то к концу недели в выгрузке будет вся номенклатура, измененная за неделю, «накапливаясь» текущами изменения за каждый день. И после прочтения сторонней программой этого файла недельных данных, следующая выгрузка будет только за текущий день.
Можно дописать, чтобы принимающая сторона выгружала какой-то файлик в ответ, и при выгрузке(в 1С) его считывать и что-то с ним делать. Но это по желанию.
Плюсы такой реализации — не изменяется конфигурация, данные к выгрузке не теряются, даже если принимающая сторона их не загрузила, выгружаются только измененные данные, никакой избыточности. Также имеются все плюшки типовых настроек обмена 1С — расписание обмена, различные настройки выгрузки. По сравнению с обработкой универ обмена XML, или какими-то внешними обработками — это большой плюс.
Данный функционал с успехом реализован в БП 2.0, с выгрузкой поступлений в стороннюю программу
оригинально 😀
отличное решение, спасибо огромное!
Понравились приемчики, вроде простые — но до них еще нужно догадаться!
Отличный способ.
Спасибо! Возьму на вооружение.