Двусторонний HTTP-обмен между УТ 10.3 и УТ 11.5: поэтапная миграция без остановки бизнеса

16.02.26

Интеграция - Перенос данных 1C

Столкнулись с необходимостью миграции с УТ 10.3 на УТ 11, но не можете остановить бизнес-процессы на складе и в интернет-магазине? В статье — рабочее решение двустороннего обмена данными между разнотипными конфигурациями через HTTP-сервисы.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Объекты для УТ 10.3
.cf 128,75Kb
10 2 500 руб. Купить
УТ10.3. Обработка для ручной отправки данных в УТ 11
.epf 9,21Kb
9 2 500 руб. Купить
УТ11.5. расширение для обмена с УТ10.3.
.cfe 188,76Kb
9 2 500 руб. Купить
HTTP-обмен между УТ 10.3 и УТ 11.5 (общий архив с исходниками)
.zip 236,84Kb
22 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Введение

При переходе на новую платформу многие сталкиваются с проблемой: "старая" система (УТ 10.3) обросла уникальными доработками под складские и бизнес-процессы, и мгновенный перенос всего функционала в УТ 11 невозможен или слишком рискован.

Видел много материалов по обмену между идентичными конфигурациями. Однако наш случай — потребовал нестандартного подхода. Готовых правил обмена КД не нашли, а разработка и тестирование новых правил обмена в КД с нуля представлялась гораздо более трудоемкой, чем написать представленный механизм, который позволил:

  1. Запустить розницу на УТ 11.5 + РМК без остановки продаж.

  2. Сохранить управление складом и интеграцию с сайтом в доработанной УТ 10.3.

  3. Обеспечить единство НСИ и остатков в обеих системах.

Это решение — не готовая коробка, а подробный кейс с архитектурой, кодом и "граблями", который будет полезен разработчикам:

  • которым нужен рабочий пример HTTP-обмена.

  • планирующим поэтапную миграцию между разными версиями конфигураций 1С.

 

Предпосылки и постановка задачи

В торговой организации (розница + распределительный склад + интернет-магазин) исторически сложился учет на базе УТ 10.3. За годы эксплуатации конфигурация была серьезно доработана под нужды торговли и складской логистики.

Было принято решение:

  • Новую розницу разворачиваем на УТ 11.5 с использованием РМК. Отказ от УТ10.3 в розничных магазинах не предвещал проблем. 

  • Складские процессы и обмен с сайтом оставляем на проверенной временем УТ 10.3.

Ключевые требования к обмену:

  • Двусторонняя синхронизация. Данные должны передаваться в обе стороны.

  • Единая НСИ. Ввод всей нормативно-справочной информации (справочники) должен производиться в УТ 10.3 и автоматически мигрировать в УТ 11.5.

  • Актуальные остатки. Остатки товаров на складах должны быть идентичны в обеих системах.

  • Поэтапность. Возможность постепенно переносить наработанный в функционал из старой системы (УТ 10.3. ) в новую (УТ 11.5.).

 

Архитектура обмена

Обмен построен на прямой передаче данных через HTTP-сервисы. Это позволило избежать промежуточных файлов и обеспечить приемлемую скорость.

Ключевые принципы:

  1. Синхронизация по GUID. Все ссылочные объекты (справочники, документы) синхронизируются между разными информационными базами по глобальным уникальным идентификаторам (GUID). Это гарантирует, что один и тот же элемент не раздвоится.

  2. HTTP-сервисы как транспорт. В каждой из конфигураций опубликован свой HTTP-сервис (/hs/api/), который принимает данные от системы-источника.

  3. Регламентные задания. Обмен инициируется по расписанию из обеих ИБ.

  4. УТ10. была давно снята с поддержки, поэтому изменения делал непосредственно в ней (Общий модуль, План обмена, Http-Сервис, Регламентное задание).

  5. Расширение для УТ 11. Так как вмешательство в типовой код УТ 11 не предполагалось, вся логика вынесена в расширение.

 

Логика работы:

  • УТ 10.3 выступает в роли мастера по НСИ. Справочники создаются и изменяются здесь, после чего отправляются в УТ 11.5.

  • УТ 10.3 - основной источник товародвижения. Приход, перемещения итд. формируется в УТ10.3. и так же отправляется в УТ 11.5.

  • УТ 11.5 выступает в роли источника розничных продаж(ОРП, возвраты, реализации, заказы клиентов, заказы на перемещение с ЦС) и отправляет их в УТ 10.3.

 

Состав обмениваемых данных

Бизнес процесс построен так, что есть возможность разделить потоки данных, чтобы избежать циклических зависимостей и корректно отражать специфику учета в каждой системе.

Из УТ 10.3 (источник НСИ и складских документов) в УТ 11.5

НСИ (Справочники):
Банки, Валюты, Виды контактной информации, Кассы, Кассы ККМ, Контрагенты, Договоры контрагентов, Виды номенклатуры, Номенклатура, Классификатор единиц измерения, Единицы измерения, Типоразмеры упаковки, Классификатор стран мира, Организации, Подразделения, Пользователи, Физические лица, Склады, Типы цен номенклатуры.

Товародвижение (Приход):

  • Поступление товаров и услуг

  • Перемещение товаров

  • Оприходование товаров

  • Возврат товаров от покупателя

Товародвижение (Расход) и Заказы:

  • Реализация товаров и услуг

  • Отчет о розничных продажах (из УТ 10, если были возвраты или продажи)

  • Кассовая смена

  • Списание товаров

  • Возврат товаров поставщику

  • Комплектация номенклатуры

  • Заказ покупателя

  • Заказ поставщику

Денежные документы и прочее:

  • Платежные поручения (входящие/исходящие)

  • Кассовые ордера (приходные/расходные)

  • Установка цен номенклатуры

  • Счета-фактуры (выданные/полученные)

  • Требование-накладная

Из УТ 11.5 (источник розничных данных) в УТ 10.3

  • Отчет о розничных продажах

  • Отчет о розничных возвратах

  • Кассовая смена

  • Заказ на перемещение

  • Заказ клиента

  • Реализация товаров и услуг (если она была оформлена в розничной базе)

Важно: Состав документов, передаваемых из УТ 11, может быть расширен. В нашем случае он диктовался потребностями складского учета в "старой" системе, количество объектов обмена продолжает наращиваться.

Детали реализации

Разработанный код не претендует на эталонную чистоту, но полностью работоспособен. Версии платформы и конфигураций, на которых текущий механизм работает сейчас: УТ 10.3.75.2 и УТ 11.5.25.85.

Для УТ 10.3:

  1. План обмена: Создан план обмена "ОбменУправлениеТорговлейУТ10_11". Для всех участвующих объектов установлена авторегистрация = Истина.

  2. HTTP-Сервис: "API" с двумя методами:

    • version — возвращает версию сервиса (используется для проверки доступности).

    • load_ut10 — точка входа для загрузки данных из УТ 11 в УТ 10.

  3. Общий модуль: "ОбщегоНазначенияОбменУТ10_УТ11" — содержит всю логику выгрузки и загрузки данных.

  4. Регламентное задание: "ОбменУТ11" — по расписанию отправляет зарегистрированные изменения в УТ 11.

  5. Внешняя обработка: "УТ10_в_УТ11_ОтправкаДанных.epf" — для тестирования и ручной отправки.

Для УТ 11.5:

  • Создано расширение с зеркально-симметричной логикой. В нем также реализованы HTTP-сервис для приема данных из УТ 10 и регламентное задание для отправки розничных данных обратно.

 

Настройка подключения

Предполагается, что веб-сервер (Apache или IIS) уже настроен, и обе базы опубликованы стандартным образом.

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

Настройка в УТ 10.3

  1. Откройте план обмена "ОбменУправлениеТорговлейУТ10_11".

  2. Центральный узел: должен иметь код UT10 (менять нельзя).

  3. Создайте или откройте периферийный узел с кодом UT11.

  4. Заполните настройки для этого узла:

    • Адрес сервера, пользователь, пароль для доступа к базе УТ 11.

    • Имя метода: /<имя_вашей_публикации_УТ11>/hs/api/load_ut10 (например, /ut11_base/hs/api/load_ut10).

    • При необходимости укажите фильтр по организации и размер пакета.

 

Рис.1. Пример настройки узла обмена в УТ 10.3Рис.1. Пример настройки узла обмена в УТ 10.3

 

Настройка в УТ 11.5

  1. В расширении откройте настройки плана обмена.

  2. Центральный узел: код UT11.

  3. Периферийный узел: код UT10.

  4. Укажите параметры подключения к базе УТ 10.3:

    • Адрес, пользователь, пароль.

    • Имя метода: /<имя_вашей_публикации_УТ10>/hs/api/load_ut11.

 

Рис.2. Пример настройки узла обмена в расширении для УТ 11Рис.2. Пример настройки узла обмена в расширении для УТ 11

 

Управление обменом

Для отладки и разовых отправок можно использовать созданные обработки.

  • Ручная отправка данных из УТ 10.3. 

 

(Рис.3)

  • Ручная отправка данных из УТ 11.5. 

 

(Рис.4)

(Рис.4)

 

Особенности эксплуатации и выводы

Предложенное решение успешно эксплуатируется уже долгое время. Это позволило перевести розничные магазины с УТ10.3. на УТ11.5., не останавливая работу магазинов, основного склада и интернет-магазина.

Плюсы подхода:

  • Поэтапная миграция. Возможность постепенно переносить функционал из старой системы в новую, не создавая "большого взрыва".

  • Гибкость. Легко добавлять новые документы и справочники в обмен по мере необходимости.

  • Прозрачность. Использование HTTP-запросов упрощает мониторинг и отладку.

Минусы и ограничения:

  • Код развивался эволюционно, поэтому его чистота далека от идеала. Это скорее рабочая лошадка, чем эталонный код.

  • Требует аккуратности при доработках в обеих системах.

  • Как шаблон подойдет под другие конфигурации, адаптация выглядит не сложной.

Материалы распространяются "как есть" (AS IS). Обновления и исправления будут выкладываться по мере дальнейшей эксплуатации. Претензии из серии "зачем это нужно" не принимаются, но конструктивная критика и предложения по улучшению приветствуются.

Проверено на следующих конфигурациях и релизах:

  • Управление торговлей, редакция 10.3, релизы 10.3.75.2
  • Управление торговлей, редакция 11, релизы 11.5.25.85

Вступайте в нашу телеграмм-группу Инфостарт

HTTP HTTP-обмен УТ 10.3 УТ 11.5

См. также

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.267.x) и БП 3.0 (3.0.194.x). Правила подходят для версии ПРОФ и КОРП.

38000 руб.

15.12.2021    33401    250    64    

190

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен и синхронизацию в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

27633 руб.

12.06.2017    159464    953    317    

479

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Управление торговлей 10 Россия Управленческий учет Платные (руб)

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3 (10.3.88.x) и УТ 11.5 (11.5.25.x).

38000 руб.

23.07.2020    67207    313    94    

251

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Управление производственным предприятием Россия Платные (руб)

Регулярный обмен, выгрузка, перенос из КА 1.1, УПП 1.3, УТ 10.3 для обмена с любыми конфигурациями, поддерживающими обмен в формате EnterpriseData (КД3) - БП 3.0, ERP, КА 2, УТ 11, Розница 3, УНФ 3 и другими. Правила для старых и доработанных конфигураций не требуют синхронного обновления и совместимы с новыми и будущими конфигурациями. Обмен по расписанию, через папку, FTP, почту.

16531 руб.

18.02.2016    201962    671    543    

561

Перенос данных 1C Программист Бухгалтер 1С:Предприятие 8 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет НДФЛ ФОМС, ЕФС Платные (руб)

Обработки для быстрого перехода с конфигураций «КАМИН:Расчет заработной платы 3.0», «КАМИН:Зарплата для бизнеса 4.0» и «КАМИН:Зарплата 5.0» на конфигурацию «Зарплата и управление персоналом» версии 3.1.

12200 руб.

25.09.2016    90927    412    257    

342

Зарплата Внешние источники данных Бюджетный учет Перенос данных 1C Системный администратор Программист 1С:Предприятие 8 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактическим удержаниям, НДФЛ, вычетам, страховым взносам из базы Парус 8 учреждений (далее Парус) в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (далее 1С) и начать с ней работать с любого месяца года.

122000 руб.

19.08.2020    29126    27    3    

28

Перенос данных 1C Программист 1С:Предприятие 8 1C:Бухгалтерия 1С:Бухгалтерия 3.0 1С:ERP Управление предприятием 2 1С:Зарплата и Управление Персоналом 3.x 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 11 1С:Розница 3.0 1С:Документооборот Платные (руб)

Расширение конфигурации, позволяющее выполнить обмен данными между двумя базами любой конфигурации с возможностью запуска обмена в фоне или по расписанию. Простой интерфейс и функция автоматического сопоставления реквизитов позволит выполнить простейший обмен даже обычному пользователю. Множество гибких инструментов дает возможность продвинутому пользователю или программисту как угодно манипулировать данными и настроить обмен любой сложности. Версия расширения 4.x.x теперь поддерживает не только обмен через com-компоненту, но и через предварительно опубликованный web-сервис. Также доступен глобальный каталог, в нем можно сохранить свои настройки обмена, или загрузить уже готовые, созданные другими пользователями. Есть возможность использовать планы обменов и регистрацию объектов к обмену.

24400 руб.

11.08.2022    11343    29    27    

21

Рабочее место Производство готовой продукции (работ, услуг) Перенос данных 1C Пользователь 1С:Предприятие 8 1С:Управление производственным предприятием 1С:Документооборот 1С:Комплексная автоматизация 2.х 1С:КА 1С:ДО Платные (руб)

Продукт "Интеграция с 1С:Документооборот" позволяет использовать функции программы "1С:Документооборот 8" напрямую из учетной системы (1С:УПП; 1С:КА, 1С:УТ 10.3, 1С:БГУ 1.0, 1С:ЗБУ 1.0, 1С:УПП для Казахстана и отраслевых решений, разработанных на их основе) на платформе "1С:Предприятие 8": выполнять и ставить задачи, просматривать документы, скан-копии и прочие файлы, штрих-кодировать документы отправлять письма, вести учет рабочего времени - не входя в "1С:Документооборот 8", работая в одной программе, что значительно сокращает время и делает работу более комфортной и эффективной. Продукт прошел сертификацию 1С-Совместимо

135530 руб.

11.06.2015    62331    38    20    

49
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. IvanTerentev 16 16.02.26 13:27 Сейчас в теме
предложения по улучшению приветствуются

1) На форме узла плана обмена вместо адреса ресурса лучше указывать имя публикации, а приведение к нужному формату захардкодить, т.к у пользователей часто возникают трудности с правильным заполнением хвоста "/hs/api/load_ut11/"
2) Вместо формы ручного обмена можно использовать типовую
Обработка.РегистрацияИзмененийДляОбменаДанными.Форма

3) На форму узла плана обмена можно вынести флажок использования защищенного соединения
2. DenIv 24 16.02.26 13:30 Сейчас в теме
Согласен, доработаю
3. evn-zorin 36 17.02.26 17:37 Сейчас в теме
зачем такие сложности?
есть ут 10.3, есть бп 3.0. между ними у всех обмен.
Розницу и всё связанное с маркировкой проводим в БП 3.0.
в ут 10.3 продолжаем вести управленческий учёт без остановки. ВСЁ.
4. P__Slava 26.02.26 16:58 Сейчас в теме
В файле конфигурации Объекты для УТ 10.3 в плане обмена ОбменУправлениеТорговлейУТ10_11 не заполнен состав?
5. DenIv 24 27.02.26 14:17 Сейчас в теме
(4) Объекты для УТ 10.3 - это вырезка логики из УТ10.3, в этой "вырезке" нет документов и справочников, соответственно нет возможности заполнить Состав. Эта вырезка по идее нужна, для объединения с УТ10.3, в которой уже заполнить Состав будет возможно.
6. P__Slava 27.02.26 19:35 Сейчас в теме
Спасибо, настроил обмен. Обработкой из УТ10 пересылает объекты в УТ11, УТ11 получает. А через план обмена и регламентное задание не получается, пишет:

Модуль: ОбщийМодуль.ОбщегоНазначенияОбменУТ10_УТ11.Модуль; Вид объекта: ; Ошибка: Ошибка при вызове метода контекста (УстановитьСтроку); Причина: Несоответствие типов (параметр номер '1'); Исходная строка: ЧтениеJSON.УстановитьСтроку(СтрокаJSON);; Строка №: 118; Дополнительно: Ошибка десериализации JSON:Да;

Куда можно копнуть?
7. DenIv 24 27.02.26 22:18 Сейчас в теме
(6)
десериализации

Добрый день. Нужно в отладчике посмотреть на переменную "СтрокаJSON". Если я правильно понимаю речь идет о функции:

Функция ДесериализоватьОбъектИзJSON(СтрокаJSON)	
	Данные = Неопределено;
	ИмяПроцедуры = "ДесериализоватьОбъектИзJSON";
	Попытка
		ЧтениеJSON = Новый ЧтениеJSON;
		ЧтениеJSON.УстановитьСтроку(СтрокаJSON);
		СвойстваСДатой = "Дата,ДатаВходящегоДокумента,ДатаИсправления,ДоверенностьДата,ДатаВыставления,ДатаОплаты,ДатаПоступления,ДатаОтгрузки";
		Данные = ПрочитатьJSON(ЧтениеJSON,, СвойстваСДатой, ФорматДатыJSON.ISO);
		ЧтениеJSON.Закрыть();
	Исключение   
		Комментарий = "Ошибка десериализации JSON:" + Лев(СтрокаJSON, 50);
		СформироватьСообщениеЛога(ИмяПроцедуры, Неопределено, ИнформацияОбОшибке(), Неопределено, "!", Комментарий);
	КонецПопытки;
		
	Возврат Данные;
КонецФункции
Показать


Поставьте точку останова по ошибке на строке:
Комментарий = "Ошибка десериализации JSON:" + Лев(СтрокаJSON, 50);


и кода выпадет в ошибку, посмотрите что не так с СтрокаJSON.

С десериализацией были проблемы, но только с реквизитами, типа "Дата" , посмотрите пристально на значения с датами, все реквизиты "Дата", которые встречались у меня в обмене я перечислил в в переменной: СвойстваСДатой, возможно у Вас какой-то атрибут, который не перечислен?

+ в ЖР будет зафиксирована ошибка "Ошибка десериализации JSON:", но там будет только первые 50 символов из СтрокаJSON.
8. P__Slava 04.03.26 11:52 Сейчас в теме
(7) Что-то не могу запустить отладку фоновых заданий на это старой базе. Но в ответе СтрокаJSON = "Да". И все. Можете помочь с этим?
9. DenIv 24 04.03.26 16:03 Сейчас в теме
(8) Добрый день. Логика модулей обмена построена симметрично для обеих информационных баз и заключается в следующем:

Прием данных осуществляется через HTTP-метод load_ut10 (или load_ut11 соответственно). Модуль-обработчик (например, ЗагрузитьДанныеУТ10/11) получает строку JSON от базы-отправителя.

Десериализация полученной строки JSON в структуру данных:
ДанныеДляЗагрузки = ДесериализоватьОбъектИзJSON(СтрокаJSON);


В результате переменная ДанныеДляЗагрузки содержит структуру, где:

Ключ — вид объекта метаданных (справочник, документ и т.д.);

Значение — массив объектов. Каждый элемент массива представляет собой соответствие (ключ — имя реквизита, значение — данные реквизита).

Чтобы локализовать проблему, необходимо точно определить, на каком этапе возникает ошибка.

Сценарий 1. Ошибка возникает при десериализации JSON.
Если ошибка воспроизводится в строке
ДанныеДляЗагрузки = ДесериализоватьОбъектИзJSON(СтрокаJSON);

выполните следующие шаги:

Установите точку останова непосредственно перед этой строкой в базе-приемнике.

Выполните сеанс обмена и посмотрите содержимое переменной СтрокаJSON, полученной от базы-отправителя.

Значение СтрокаJSON = "Да" является не типичным и я такой ответ не встречал. В корректной работе из базы-отправителя должна передаваться строка, содержащая сериализованные данные объектов, зарегистрированных в плане обмена.

Сценарий 2. В базу-приемник передается некорректная строка JSON.
В этом случае диагностику следует продолжить на стороне базы-отправителя:

Откройте общий модуль, отвечающий за отправку данных (например, ОбменУТХХ_УТYY — точное наименование зависит от конфигурации).

Найдите процедуру формирования и отправки пакета данных (обычно это ОтправитьИзменения() или ОтправитьПакетДанных(мИмя, МассивОтправка, УзелУТ)).

Найдите строку, где выполняется сериализация данных перед отправкой, например: СтрокаJSON = ПолучитьСтрокуJSON(ДанныеВыгрузки);.

Установите точку останова и проанализируйте, что именно записывается в переменную СтрокаJSON перед отправкой. Именно эта строка будет вставлена в тело HTTP-запроса к базе-приемнику.
Надеюсь, предложенная схема отладки поможет вам выявить причину.
10. DenIv 24 04.03.26 16:08 Сейчас в теме
(8) Добрый день. Логика модулей обмена построена симметрично для обеих информационных баз и заключается в следующем:

Прием данных осуществляется через HTTP-метод load_ut10 (или load_ut11 соответственно). Модуль-обработчик (например, ЗагрузитьДанныеУТ10/11) получает строку JSON от базы-отправителя.

Десериализация полученной строки JSON в структуру данных:
ДанныеДляЗагрузки = ДесериализоватьОбъектИзJSON(СтрокаJSON);


В результате переменная ДанныеДляЗагрузки содержит структуру, где:

Ключ — вид объекта метаданных (справочник, документ и т.д.);

Значение — массив объектов. Каждый элемент массива представляет собой соответствие (ключ — имя реквизита, значение — данные реквизита).

Чтобы локализовать проблему, необходимо точно определить, на каком этапе возникает ошибка.

Сценарий 1. Ошибка возникает при десериализации JSON.
Если ошибка воспроизводится в строке
ДанныеДляЗагрузки = ДесериализоватьОбъектИзJSON(СтрокаJSON);

выполните следующие шаги:
Установите точку останова непосредственно перед этой строкой в базе-приемнике.
Выполните сеанс обмена и посмотрите содержимое переменной СтрокаJSON, полученной от базы-отправителя.
Значение СтрокаJSON = "Да" является не типичным и я такой ответ не встречал. В корректной работе из базы-отправителя должна передаваться строка, содержащая сериализованные данные объектов, зарегистрированных в плане обмена.

Сценарий 2. В базу-приемник передается некорректная строка JSON.
В этом случае диагностику следует продолжить на стороне базы-отправителя:
Откройте общий модуль, отвечающий за отправку данных (например, ОбменУТХХ_УТYY — точное наименование зависит от конфигурации).
Найдите процедуру формирования и отправки пакета данных (обычно это ОтправитьИзменения() или
ОтправитьПакетДанных(мИмя, МассивОтправка, УзелУТ)).

Найдите строку, где выполняется сериализация данных перед отправкой, например:
СтрокаJSON = ПолучитьСтрокуJSON(ДанныеВыгрузки);.

Установите точку останова и проанализируйте, что именно записывается в переменную СтрокаJSON перед отправкой. Именно эта строка будет вставлена в тело HTTP-запроса к базе-приемнику.
Надеюсь, предложенная схема отладки поможет вам выявить причину.
13. P__Slava 02.04.26 11:46 Сейчас в теме
(10) Нашел косячек, не знаю, свой или ваш). В плане обмена в количестве объектов оставил 0 (по умолчанию), система и пыталась отправить пустой массив, в результате чего была ошибка выше.
14. DenIv 24 02.04.26 12:04 Сейчас в теме
(13) Добрый день, попробую исправить, но только не вижу что за ошибка? Согласен, проверку на наличие объектов в составе плана обмена проверку точно нужно сделать.
15. P__Slava 02.04.26 12:24 Сейчас в теме
(14)

Если КоличествоЗаПроход = 0 то в МассивОтправка не будет добавлены ссылки.

ОтветJSON = ОтправитьПакетДанных(мИмя, МассивОтправка, УзелУТ) выпадет в ошибку, потому что ответ вернется СтрокаJSON = Истина.

	КоличествоИтераций = Цел(КоличествоОбъектов / ?(КоличествоЗаПроход = 0, 1, КоличествоЗаПроход)) + 1;			
			
			Сообщение = "" + ТекущаяДата() + "; " + мИмя + "; Зарегистрировано: " + КоличествоОбъектов + " объектов ...";
			СформироватьСообщениеЛога(ИмяПроцедуры, мИмя, Неопределено, Неопределено, "i", Сообщение);
			
			
			Если КоличествоОбъектов = 0 Тогда
				Продолжить;
			КонецЕсли;
							
			Для НомерИтерации = 1 По КоличествоИтераций Цикл 
				Старт = ТекущаяДата();	
				МассивОтправка = Новый Массив;
				инд = 1;
				Для сч1 = - (МассивСсылок.Количество() - 1) По 0 Цикл			
					Если инд > КоличествоЗаПроход Тогда
						Прервать;
					КонецЕсли;	
					МассивОтправка.Добавить(МассивСсылок[-сч1]);
					МассивСсылок.Удалить(-сч1);
					инд = инд + 1;
				КонецЦикла;						
				
				ОтветJSON = ОтправитьПакетДанных(мИмя, МассивОтправка, УзелУТ);
				//обработали ответ
				Если Не ПустаяСтрока(ОтветJSON) Тогда
					ОбработатьОтветСервера(ОтветJSON, МассивОтправка, УзелУТ);
					НомерСообщения = НомерСообщения + 1;
					ОбновитьДанныеОбмена(УзелУТ, НомерСообщения);
				КонецЕсли;
Показать
16. DenIv 24 02.04.26 12:26 Сейчас в теме
(15) Принято, проверку доделаю
17. P__Slava 02.04.26 12:32 Сейчас в теме
(16) Спасибо за отличный продукт и поддержку!
11. Tarlich 93 11.03.26 11:04 Сейчас в теме
Прошу подсказать - если с 26 года хотим в 11 то лучше в коде указать что бы ошибки пользователя не было ?
в коде какие виды спр и док ВЫ реализовали (только те что на фото в УТ11)? Стараетесь дублировать все док базах ? или в УТ 11 синхронизируется рег ОстаткиТоваров(Организаций) и вам этого хватает , просто не вижу списание, оприходование, поступление ... установка цен ?
т.к заказы прилетают в УТ 10 из разных систем , возможно под наши нужды хочу допилить что бы склад в 11 добавил отгрузки марками и в 11 эдо ...
12. DenIv 24 14.03.26 10:52 Сейчас в теме
(11)
или в УТ 11 синхронизируется рег ОстаткиТоваров(Организаций) и вам этого хватает , просто не вижу списание, оприходование, поступление ... установка цен ?

Добрый день! Постараюсь ответить максимально подробно.
Вы совершенно правильно обратили внимание на ключевые моменты — состав объектов, логику синхронизации остатков. Давайте по порядку.

1. Состав объектов обмена (реализовано в продуктивном решении)
В демо-версии (вырезке) для УТ 10 состав объектов пустой, т.к. разработать расширение для УТ10 не представлялось возможным, а выкладывать целиком всю конф УТ10 то же не реально. Поэтому в исходниках 10.3 состав плана обмена пустой. Ниже привожу полный перечень того, что реально работает в "боевом" обмене и включено в составы планов обмена.

Из УТ 10.3 в УТ 11.5 (мастер-система по НСИ и складским операциям):

1. Справочники (полная синхронизация НСИ):[/B]
Банки, БанковскиеСчета, Валюты, ВидыКонтактнойИнформации, ВидыНоменклатуры, ДоговорыКонтрагентов, ЕдиницыИзмерения, Кассы, КассыККМ, КлассификаторЕдиницИзмерения, КлассификаторСтранМира, Контрагенты, Номенклатура, Организации, Подразделения, Пользователи, Склады, ТипыЦенНоменклатуры, ТипоразмерыУпаковок, ФизическиеЛица.

2. Документы (приход, расход, заказы, деньги):[/B]
ВозвратТоваровОтПокупателя, ВозвратТоваровПоставщику, ЗаказПокупателя, ЗаказПоставщику, КассоваяСмена, КомплектацияНоменклатуры, ОприходованиеТоваров, ОтчетОРозничныхПродажах (ОРП), ПеремещениеТоваров, ПоступлениеТоваровУслуг (ПТУ), ПлатежноеПоручениеВходящее/Исходящее (ППВ/ППИ), Приходный/Расходный КассовыйОрдер (ПКО/РКО), РеализацияТоваровУслуг (РТУ), СписаниеТоваров, СчетаФактуры (выданные/полученные), УстановкаЦенНоменклатуры.

3. Регистры сведений:
ШтрихКоды.

4. Планы видов характеристик:
СвойстваОбъектов.

Из УТ 11.5 в УТ 10.3 (розничные операции):

1. Документы:
ОтчетОРозничныхПродажах (ОРП), ЗаказКлиента, ЗаказПокупателя, КассоваяСмена, РеализацияТоваровУслуг (РТУ), ЗаказНаПеремещение.

Почему именно такой состав? (Про дублирование документов и остатки)
Вы совершенно верно уловили суть: мы не ставили цели дублировать все документы во всех базах.
Главный критерий включения объекта в обмен — обеспечение тождественности остатков товаров и денежных средств между системами.

На текущем этапе в УТ 11 работает только розница. Поэтому в неё из УТ 10 летят документы прихода (поступление, перемещение, оприходование), чтобы на розничных складах (в УТ 11) всегда были актуальные остатки. Обратно из УТ 11 в УТ 10 летят розничные продажи и возвраты, чтобы списать товар со склада в УТ 10.

Регистры остатков (например, ОстаткиТоваров) напрямую не синхронизируются. Их тождественность достигается именно за счет корректной и своевременной передачи всех движущих документов. Такой подход мы считаем более надежным и контролируемым.

Да, сейчас в списке нет, например, "Поступления" из УТ 11 в УТ 10 — это и не нужно, так как товар приходит на центральный склад (УТ 10). Как только в УТ 11 начнут работать другие процессы, состав документов для обратной связи будет расширен. Архитектура это позволяет.

Как добавить новый объект в обмен (инструкция по доработке)
Допилить решение под свои нужды (склад в УТ 11, маркировка, ЭДО) — задача реальная и не сверхсложная. Алгоритм действий единообразен для большинства объектов:

1. Включите объект в план обмена на источнике (галочка авторегистрации).

2. В конфигурации-источнике в общем модуле ОбщегоНазначенияОбменУТХХ_УТХХ:
- Напишите процедуру выгрузки данных по этому объекту (или используйте готовую универсальную ВыгрузитьПростойОбъект, если структура реквизитов совпадает или легко приводится).
- Добавьте вызов этой процедуры в основной алгоритм ОтправитьИзменения().

5. В конфигурации-приемнике (УТ 10) в модуле HTTP-сервиса:
- Напишите процедуру загрузки (или используйте универсальную ЗагрузитьПростойОбъект).
- Добавьте её вызов в процедуру ЗагрузитьДанныеУТХХ().

В тексте кода приведено много примеров использования универсальных процедур. Если объекты в источнике и приемнике различаются только по именам реквизитов — это самый быстрый путь.
chesnokov-a-v; Tarlich; +2 Ответить
Для отправки сообщения требуется регистрация/авторизация