Односторонний план обмена 1с
Требуется периодическая выгрузка изменений справочника номенклатуры из конфигурации на базе Розницы в конфигурацию на базе УТ. По сути требуется односторонний обмен данными. Только не все позиции номенклатуры должны уходить из Розницы в УТ, а только с определенным реквизитом типа Булево равным Истина.
В конфигурации Розницы я создал план обмена и указал в нем регистрацию только номенклатуры и сопутствующих справочников и регистров сведений (т.к. должна уходить вся карточка номенклатуры, включающая и регистры). Авторегистрацию запретил.
Далее создал в КД правила обмена (соответствие требуемых реквизитов Розницы и УТ, а также сопутствующих справочников и их реквизитов, а также регистров сведений), выгрузил эти правила.
Далее в КД создал правила регистрации для конфигурации Розница и для моего плана обмена, где указал Отказ в случае, если номенклатура не предназначена для обмена (соответствующий реквизит в ней = Ложь).
А вот что дальше?
А что просто через OLE (COM) нельзя написать выгрузку перебирая справочник Номенклатура, включая регистры, не используя план обмена?
(1) Я создал в конфигураторе план обмена, потом зашел в 1С, открыл его.
Там был текущий узел по умолчанию, оставалось его только назвать.
Далее добавил вручную узел и назвал его УТ.
Далее сделал настройку обмена данными, где как раз и указал этот узел УТ, подключение к нему через COM и всё написанное выше.
(2) А как реализовать в этом случае выгрузку лишь изменений?
Или при записи нужных объектов (номенклатура, регистры, другие справочники) возможно сделать фиксацию изменений, а затем при выгрузке можно отобрать только измененные, загрузить их в УТ и сбросить признак измененности?
Вы так имеете ввиду?
(4) ну это то можно сделать, используя тот же план обмена. Запросом можно достать из таблицы "Изменений", после отбора и загрузки - удалять регистацию) но планы обмена не для этого придумывали чтоб так делать. )
В тексте описан весь принцип, которому я придерживался в процессе организации одностороннего обмена между центральной базы УПП в которой формировался справочник "Номенклатура" и далее он должен был переезжать в базу УТ нашего филиала, этот филиал не имел у права создавать новую номенклатуру в своей базе, только через центральную базу Буду рад, если кому-нибудь будет полезна данная статья
И так в один прекрасный момент руководством была поставлена задача, создать односторонний обмен из УПП в УТ, в обмене должен был участвовать только один справочник "Номенклатура" и его основные подчиненённые справочники "Единицы измерения","Виды номенклатуры", "Классификатор единиц измерения", "Классификатор стран мира", "Ценовые группы".
В качестве транспорта решил использовать файловый ресурс, т.к. базы находятся в рамках одной сети
Настройка на стороне УПП
1. В конфигурации УПП, я просто скопировал план обмен "ОбменУправлениеПредприятиемУправлениеТорговлей" и присвоил другое имя плану обмена
2. Определил список объектов, которые будут принимать участие в обмене
3. Настроил узлы обмена на обмена в созданном нами плане обмена
4.Настроил правила конвертации между УПП и УТ (файл прикреплён)
5. Зашел в настройки обмена и добавил новую настройку обмена. Выбрал правила конвертации
6. На закладке "Обмен по правилам" указал список настроил список объектов обмена
7. Определил действия при интерактивном обмене.
8. Настроил параметры автоматического обмена. Но флажок "Использовать расписание для выполнения обмена" не выставил, т.к. у нас ещё не настроен обмен на стороне УТ
Настройка на стороне УТ
Здесь всё аналогично, но немного есть отличий
9. Также создаю план обмена, путем копирования стандартного плана обмена "ОбменУправлениеПредприятиемУправлениеТорговлей". Присваиваю ему другое имя
10. Обязательно убираю все объекты в плане обмена, т.к. в сторону УПП из УТ ни один объект не должен уйти.
11. Создаю пустые правила конвертации (в списке прикреплённых файлов имеется)
12. Далее переходим в пользовательский режим УТ, и настраиваем узлы обмена для созданного нами плана обмена
13. Далее, идём в список настроек обмена данных
14. Настраиваем обмен между УПП и УТ, незабываем выбрать пустые правила обмена
15. На закладке "Обмен данными", в настройках выгрузки у нас недолжно быть никаких объектов
16. Закладда "Интерактивный обмен", тут всё идентично тому как в УПП
17. Настраиваем автоматический обмен
На стороне УТ вроде-бы все
18. Теперь возвращаемся в УПП и включаем автоматический обмен
19. На стороне УТ тоже запускаем автоматический обмен
Теперь нам необходимо загрузить в УТ, всю номенклатуру, которая была создана ранее в УПП, до начала обмена
20. Через "Универсальный обмен в формате XML", по правилам обмена, которые мы создали ранее для стороны УПП, выгружаем весь справочник "Номенклатура", со всеми необходимыми справочниками.
21. На стороне УТ через тот-же универсальный обмен, загружаем справочник.
Итог всех этих действий обмен настроен, справочники перенесены.
В Управляющей Компании холдинга (даллее УК) возникла задача создания копий баз всех предприятий холдинга и ежедневной поддержки их в актуальном состоянии. Многие предприятия холдинга находятся на большом расстоянии от УК (порой в других регионах), имеют различное качество связи и пользуются разными конфигурациями 1С 8.1 и 8.2. Для решения этой задачи ежедневная пересылка полных копий баз не подходит, ибо предприятий много, у одних интернет плохой, у других администраторы не в состоянии наладить автоматическую высылку копии и т.д. и т.п. Для решения данной задачи подходит РИБ, но как обеспечить односторонность передачи данных и при этом не влезать в код? (Для некоторых предприятий снятие с поддержки критично). Для решения этой задачи необходим обмен с использовниаем правил обмена. Итак:
1. Создание правил обмена.
Если у вас одна из типовых конфигураций, указанных в анонсе, то возьмите правила из прикрепленных файлов, пропускайте 1й пункт и переходите ко 2му.
1.1 Для создания правил обмена используем конфигурацию конвертация данных ред.2. (Ее можно найти на любом диске ИТС либо скачать с сайта 1С). В конфигурации, которую мы распределяем, откроем файл MD81exp.epf либо MD82exp.epf, которые входят в комплект поставки конвертации данных. (Для 8.2 лежат, например, в C:\Documents and Settings\*user*\Application Data\1C\1Cv82\tmplts\1c\Conversion\2_1_5_1).
1.2 Выбираем файл, куда сохраним описание структуры метаданных, и жмем "Выгрузить".
1.3 После завершения выгрузки запускаем конфигурацию Конвертация данных и открываем "Стартовый помощник":
1.4 В появившемся окне жмем далее и выбираем пункт "Создать правила обмена с нуля" и "Далее":
1.5 В следующем окне нам предлагают выбрать конфигурации для обмена- нажимаем "Новая", и в появившемся окне выбираем наш файл из пункта 1.2 , жмем "Выполнить загрузку" :
1.6 Через некоторое время (5-10 мин.) загрузка закончится, и после нажатия "ОК" наша конфигурация появится в поле "конфигурация-источник". Выбираем ее же в поле "конфигурация-приемник" и жмем "Далее":
1.7 В появившемся окне выбираем 1й пункт и жмем "Выполнить":
1.8 Через некоторое время правила создадутся, и мы увидим следующую картину:
1.9 В списке объектов есть один, который нам передавать точно не нужно. Я говорю о регистре сведений "ГраницыЗапретаИзмененияДанных" (Его передача приведет к коллизиям, в случае изменения даты запрета редактирования, что бывает не так и редко). Снимаем с него галочку и жмем "Создать правила выгрузки":
1.10 Затем жмем кнопку "Сохранить правила", выбираем имя файла и жмем "Сохранить":
В результате мы получили файл с правилами обмена данными нашей конфигурации с идентичной конфигурацией. Этот файл мы и используем в настройке РИБ.
2. Настройка РИБ. (Я не буду расписывать создание РИБ, варианты настройки автообмена и т.д. Статьи на эту тему легко найти, опишу лишь нюансы, связанные с первоначальной задачей). Итак:
2.1 Настройка на основном узле: Переключаемся на полный интерфейс, заходим в меню "Сервис" --> "Распределенная информационная база (РИБ)" --> "Настроить узлы РИБ". Нажимаем "Добавить" и попадаем в окно:
2.2 Выбираем наименование для настроек обмена данными, ставим галочку "Обмен по правилам обмена", жмем кнопку "Загрузить правила", выбираем наш файл из пункта 1.10 и на всякий случай жмем "Проверить правила". (Не забудьте выбрать тип обмена и др. настройки).
Жмем сохранить и переходим к настройке 2го узла (Копия).
2.3 Настройка на 2м узле (на последующих узлах она идентична, если таких копий нужно несколько). Повторяем действия пунктов 2.1 и 2.2 в копии и переходим на закладку "Обмен по правилам", жмем "Загрузить настройки":
2.4 После загрузки объектов выбираем все (ctrl+A) и жмем "Изменить настройку". Меняем на "не выгружать", жмем "ОК" .
и задумался: “а можно ли действительно типовыми способами настройки синхронизации выполнить односторонний обмен ЗУП-БУХ, причем так, чтобы из ЗУП все выгружалось, а из БУХ обратно нет, даже в том случае, если какой-то документ в БУХ был изменен?”.
Причем до этого момента, я был аб солютно уверен, что нет, да и мало кому из клиентов требовалось настраивать синхронизацию подобным образом.
Самый популярный вариант = двусторонний обмен (потому что синхронизировать-то особо нечего).
В доказательство того, что синхронизировать особо нечего привожу список того, что летает туда-сюда между базами, взятый с официального сайта ИТС
Что именно синхронизируется между ЗУП и БУХ:
- регламентированная отчетность;
- ведомости на выплату зарплаты (улетают только в БУХ);
- задепонированная зарплата;
- получение и выплата займов сотрудниками;
- отражение зарплаты в бухгалтерском учете(летает в обе стороны и в ЗУП, и в БУХ)
- начисление оценочных обязательств по отпускам;
- элементы справочников, задействованные в передаваемых документах.
Перечень этот необходимо держать в голове или иметь под рукой вот эту ссылку ИТС , ибо кадровики и бухгалтера постоянно путают и требуют от вас несбыточных желаний, типа «а почему не выгрузились сотрудники в БУХу из ЗУП после настройки синхронизации?»
Ответ = А потому, что смотрим пункт № 7. Например, как только выгрузятся ведомости – то и сотрудники появятся в БУХе. Ну и так далее. (Нашел ошибку и отредактировал )
Ответ = На самом деле и сотрудники тоже не появятся, потому что они в БУХе просто не нужны, как только вы начали вести учет кадров и зарплаты в другой программе, в частности в ЗУП. Проверьте сами. Во всех ПКО,РКО,расчетно-кассовых документах, доверенностях и прочее участвуют только физики. Ну тогда и нафига нам нужны сотрудники в БУХе? Не нужны. Поэтому сотрудники и не прилетят.
Чаще всего нас волнуют только пункты № 2, № 5 и №7 (их держим в голове в первую очередь), особенно пункт №5, так как именно он после взведения флажка «отражено в учете» формирует проводки в БУХ по счетам 68,69,70(эти счета будут сто пудово) в корреспонденции со счетами 20,23,25,26 и др.(в зависимости от того, что там в БУХе намутили бухгалтера по своему учету)
Я не буду расписывать, как вообще настраивается синхронизация, так как и на ИТС и на других ресурсах полно инфы, исчерпывающей, как правильно это делать при двустороннем обмене.
Итак! Как настроить именно односторонний обмен ?
Погуглив интернеты – пришел к выводу, что существует пока 4 способа, как настроить односторонний обмен. Каждый из этих способов я испробовал на собственной шкуре сегодня.
Перечислю, что нашел и испробовал на себе:
- Удалить настройку синхронизации в БУХ, после выполнения настройки синхронизации в обеих программах.
- Установить «дата запрета загрузки» в ЗУП, после выполнения настройки синхронизации в обеих программах.
- Выгрузить в «Конвертация Данных 2» правила обмена из БУХ, изменить их, загрузить обратно
- Выполнить настройку сценариев в ЗУП и в БУХ
Методы, подсказанные вами в коментах (Буду добавлять их сюда, чтобы собрать все возможные варианты). Отдельное спасибо всем, кто не поленился и внес свой вклад в статью:
5. В БУХ отключать регистрацию объектов для обмена перед каждым обменом. (JaneP)
Рассмотрим подробнее каждый из этих пунктов:
- Удаление настройки синхронизации в БУХ
Выполнил настройку в обеих базах. После удалил в БУХе настройку. Получил в итоге вот такую ошибку
Вывод – метод херня.
Выполнил настройку в обеих базах. После установил «дату запрета загрузки» в ЗУП.
Проверил = работает, как мы хотим. Из ЗУПа все улетает. Из БУХ ничего не прилетает. Хотя стоп..Прилетает. Физики влегкую прилетают, потому что никакой даты в справочнике физлиц нет. Мда..
Вывод - Так себе метод…Но частично работает. Может кого и устроит, потому что документы не прилетают из БУХ 100%.
Выполнил настройку в обеих базах. После выгрузил из БУХни в КД2 правила обмена.
В правилах выгрузки данных во всех объектах в обработчике «Перед выгрузкой» добавил строку
Загрузил правила обратно в БУХ через настройку синхронизации. Работает
Вывод – Работает 100%. Но типовыми настройками тут и не пахнет.
А вот этот пункт я хочу рассмотреть прям очень подробно.
Я буду рассказывать так, как буд-то вы уже миллион раз настраивали типовой двусторонний обмен между БУХ и ЗУП, или хотя бы внимательно читали и пробовали руками стандартный типовой мануал вот отсюда ИТС
Дойдем в ЗУП до вот этого шага. Смотрим скрин:
Переходим в настройку синхронизации:
Переходим во вкладку «сценарии» и нажимаем «добавить»:
Выделяем строку «Получение данных» и удаляем ее. Записать и закрыть:
Должно получиться вот так:
Все 3 шага в ЗУП выполнены:
Теперь идем в БУХу настраиваем там:
Возвращаемся в мастер настройки синхронизации:
Теперь возвращаемся обратно в ЗУП и финишируем настройку «сопоставления» там:
Далее обратил внимание на важный момент, который лично мне нравится неочень.
1.Если больше не нажимаем принудительно кнопку «синхронизировать» = то все прекрасно работает по одностороннему обмену в фоновом режиме, как задумывалось:
Из ЗУП улетает, все что нужно (смотрим начало статьи)
В БУХу только прилетает, но ничего не уходит.
Вывод1 – Сценарий работает.
2. Если нажмем руками кнопку «синхронизировать» - то срабатывает двусторонний обмен.
Вывод2 – Сценарий не работает через кнопку "синхронизировать". Для второго варианта, дабы убрать шаловливые ручки бухгалтеров и кадровиков от кнопки «синхронизировать», через кнопку еще скрываем ее и будет нам счастье. Хотя все равно поломают умники)))
МОЕ Резюме всей статьи:
Сценарии по одностороннему обмену между ЗУП и БУХ работают в фоновом режиме без применения кнопки «синхронизировать» руками.
А далее вы решаете сами, какой способ использовать.
Знаете еще способы одностороннего обмена между ЗУП и БУХ? Так не поленитесь написать его в комментах или хотя бы скинуть ссылку на статью. Буду вам очень признателен.
Счастья вам и добра!
UPD 26042021 - Добавил расширение на основе коммента. Автор идеи DmitryKSL.
Расширение отменяет регистрацию любых изменений на стороне БП в автоматическом режиме.
Есть возможность делать ручную регистрацию выборочных объектов на стороне БП.
Загружаем расширение в базу БП перед настройкой синхронизации.
Ставим галку "активно", снимаем галку "безопасный режим". Перезапускаем базу, настраиваем синхронизацию.
Никакие изменения в ведомостях, отражении зп в бухучете, в карточках физиков не будут регистрироваться к обмену на стороне БП.
Расширение бесплатное. Лучшая ваша благодарность - плюсик на статью.
В этой статье поговорим о планах обмена. Зачем они нужны? И если нужны, то можно ли сделать свой, не копируя типовую реализацию? Статья предназначена в основном для разработчиков, но будет полезна всем, кто интересуется подобной темой.
Также в плане обмена есть несколько стандартных реквизитов. Например, «Номер принятого» и «Номер отправленного». Эти реквизиты удобно использовать для того, чтобы принимать только актуальную информацию, которая не была ранее принята. А теперь обо всем этом подробней и с примерами. Хоть планы обмена кому-то и кажутся чем-то страшным и необъяснимым, после прочтения статьи, думаю, все станет просто и понятно.
1. Создание и регистрация, узлы плана обмена.
Приведем пример, когда нам нужно выгружать измененные номенклатуры (для ТСД, мобильного устройства, промежуточной базы или пр.).
Ищем в дереве конфигурации ветку «Общие» -- «Планы обмена». Добавляем новый план обмена.
Назовем его «ОбменНоменклатурой_Тест». Включаем в состав нужные объекты. В этом примере справочник «Номенклатура».
//Здесь налаживаем отборы
//и сам код регистрации
Узел = ПланыОбмена.ОбменНоменклатурой_Тест.НайтиПоКоду("Тест");
ПланыОбмена.ЗарегистрироватьИзменения(Узел, Источник);
В режиме предприятия создадим новый узел плана обмена. Это, по сути, элемент плана обмена, который будет использоваться только для одного приемника. Хотя, если не требуется подтверждение о приеме данных, то с одного узла можно рассылать данные всем, но здесь мы такой вариант не рассматриваем, так как он намного проще и будет понятен по ходу статьи.
Создадим новый элемент в справочнике «Номенклатура» в 1С. Переходим снова в обработку, нажимаем кнопку «Обновить» и видим, что у нас этот объект зарегистрировался автоматически.
2. 1С Выгрузка планов обмена.
Например, создадим кнопку в списке плана обмена и назначим на нее обработчик на сервере.
Есть возможность выбирать изменения объектной моделью, вот так:
Пока ВыборкаИзменений.Следующий() Цикл
КонецЦикла;
Также есть возможность выбора изменений запросом:
В процедуре на сервере давайте откроем конструктор запроса с обработкой результата и посмотрим, как выбрать изменения. В конструкторе есть кнопка «Отображать таблицы изменений». После нажатия на эту кнопку мы увидим таблицы, в которых хранятся наши изменения.
Накладывая отбор на узел, мы можем получить изменения только по определенному приемнику, а в ссылке хранится объект, то есть ссылка на номенклатуру. Но при выборе запросом, выгруженные изменения придется помечать вручную.
В итоге процедура будет выглядеть так:
После того как мы воспользуемся кнопкой в обработке регистрации изменений для обмена данными, мы увидим, что данные помечены, как выгруженные. И в колонке «Номер отправленного» мы видим номер пакета, в котором была произведена 1С выгрузка объекта.
3. Порядок снятия с регистрации.
После этого, регистрация изменений будет снята.
Если приемник не получил данные, то при следующей выборке все данные, для которых не снята регистрация будут выгружены повторно.
В общем, повторюсь, план обмена помогает организовать обмен данными со сторонними системами. И в этой статье мы разобрали, как на самом деле просто с ним работать.
Специалист компании ООО «Кодерлайн»
Вас могут заинтересовать следующие статьи:
94 [PROP_CODE] => TAGS2 [TITLE] => Вас могут заинтересовать следующие семинары: ) --> 95 [PROP_CODE] => TAGS [TITLE] => Вас могут заинтересовать следующие вебинары: ) -->
Вас могут заинтересовать следующие вебинары:
Читайте также: