При автоматизации розничной сети часто возникает ситуация, когда на разных торговых точках (или в офисе и магазине) устанавливаются самостоятельные базы данных 1С:Розница, в которые можно перенести накопленные сведения, выбрав подбор решений для переноса данных в 1С:Розницу. Если при этом организация использует электронный документооборот (например, 1С-ЭДО через оператора Калуга Астрал), администраторы часто совершают ошибку: подключают одну и ту же учетную запись ЭДО (один уникальный идентификатор участника) в обеих конфигурациях.
В результате пользователи сталкиваются с проблемой: как только одна из баз выполняет сеанс обмена и загружает входящие файлы (УПД, счета-фактуры, накладные), вторая база эти документы «теряет» и больше не видит. Разберем подробно, почему так происходит, и проанализируем все технические варианты решения этой проблемы.
Каждая учетная запись ЭДО имеет уникальный буквенно-цифровой код — идентификатор абонента (ID). Когда поставщик отправляет вам электронный документ, сервер оператора ЭДО (в данном случае Калуга Астрал) помещает этот документ в транспортный ящик, привязанный к вашему ID.
Когда программа 1С:Розница инициирует обмен (вызывается регламентное задание или пользователь нажимает кнопку «Отправить и получить»), система обращается к серверу оператора и скачивает новые пакеты данных. Для сервера ЭДО этот процесс является подтверждением доставки. Файлы помечаются как «доставленные». При последующем запросе — будь то из этой же или из другой базы 1С — сервер ЭДО больше не отдает эти документы, так как считает транзакцию завершенной.
Следовательно, использовать один и тот же идентификатор ЭДО параллельно в двух независимых базах без дополнительной настройки обмена невозможно. Рассмотрим два основных способа решения этой проблемы.
---
Это наиболее надежный, прозрачный и методологически верный подход, не требующий программирования или сложной настройки синхронизации.
Законодательство и технические возможности операторов ЭДО позволяют регистрировать несколько уникальных идентификаторов ЭДО на одно юридическое лицо (один ИНН). Разберем по шагам, как это реализовать:
Для каждой базы 1С:Розница (для каждого магазина или подразделения) необходимо выпустить свой идентификатор ЭДО. В первой базе настраивается профиль с ID №1, во второй базе — профиль с ID №2. В качестве назначения или понятного имени учетной записи укажите физический адрес магазина или название торговой точки (например, «Магазин на Ленина» и «Магазин на Мира»).
Из каждой базы 1С отправьте приглашения вашим поставщикам. Поставщик в своей программе увидит, что у вашей организации (один ИНН) теперь есть два разных адреса доставки (два разных ID).
Чтобы поставщик не путал, на какой именно ID отправлять конкретную накладную, в его системе (например, в 1С:Управление торговлей или 1С:ERP) настраивается связь между вашими торговыми точками и договорами. Для каждой точки в базе поставщика создается отдельное соглашение или договор, в параметрах которого жестко прописывается соответствующий ID ЭДО покупателя. При формировании отгрузки менеджер поставщика выбирает нужную точку доставки (договор), и система автоматически отправляет УПД на правильный идентификатор.
---
Если разделение на разные идентификаторы по какой-то причине невозможно (например, поставщики отказываются работать с несколькими ID одного контрагента), придется настроить схему с одной «точкой входа» документов.
В этом случае обмен с оператором ЭДО настраивается строго в одной базе (например, в центральном офисе или в базе первого магазина). Во второй базе модуль 1С-ЭДО деактивируется. Все документы поступают в первую базу, а затем пересылаются во вторую. Рассмотрим варианты реализации такой синхронизации:
Если ваши магазины работают в рамках единой торговой сети и вам в любом случае нужна централизованная база данных для консолидации остатков и продаж, лучшим решением станет создание РИБ. В этом случае:
Если базы должны оставаться независимыми, можно настроить типовую синхронизацию данных. Настройте односторонний обмен, при котором документы поступления товаров и услуг, созданные на основании полученных УПД в первой базе, будут выгружаться во вторую базу, что удобно реализовать через программу для регулярного обмена данными между базами 1С по расписанию.
Если требуется передавать не просто учетные документы (например, Документ.ПоступлениеТоваров), а именно оригинальные файлы электронных документов (пакеты ЭДО) для их последующего подписания во второй базе, можно написать расширение конфигурации. Разберем пример реализации передачи ссылки на документ во вторую базу через HTTP-соединение:
// Пример процедуры отправки метаданных полученного пакета ЭДО во вторую базу
Процедура ОтправитьПакетВоВторуюБазу(ПакетЭДО) Экспорт
// Формируем структуру данных для передачи
ДанныеПередачи = Новый Структура;
ДанныеПередачи.Вставить("ИдентификаторДокумента", ПакетЭДО.ИдентификаторДокумента);
ДанныеПередачи.Вставить("ДатаДокумента", ПакетЭДО.Дата);
ДанныеПередачи.Вставить("КонтрагентИНН", ПакетЭДО.Контрагент.ИНН);
ДанныеПередачи.Вставить("СуммаДокумента", ПакетЭДО.СуммаДокумента);
// Преобразуем в JSON
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, ДанныеПередачи);
СтрокаJSON = ЗаписьJSON.Закрыть();
// Настраиваем HTTP-соединение со второй базой
Сервер = "192.168.1.100"; // IP-адрес или имя сервера второй базы
Порт = 8080;
Пользователь = "SyncUser";
Пароль = "StrongPassword";
HTTPСоединение = Новый HTTPСоединение(Сервер, Порт, Пользователь, Пароль);
HTTPЗапрос = Новый HTTPЗапрос("/retail_point2/hs/edo_integration/v1/receive");
HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаJSON, КодировкаТекста.UTF8);
Попытка
HTTPОтвет = HTTPСоединение.ОтправитьДляАнализа(HTTPЗапрос);
Если HTTPОтвет.КодСостояния <> 200 Тогда
ЗаписьЖурналаРегистрации("ЭДО.Синхронизация", УровеньЖурналаРегистрации.Ошибка, , ,
"Ошибка передачи пакета. Код ответа: " + HTTPОтвет.КодСостояния);
КонецЕсли;
Исключение
ЗаписьЖурналаРегистрации("ЭДО.Синхронизация", УровеньЖурналаРегистрации.Ошибка, , ,
"Не удалось установить соединение со второй базой: " + ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры
---
В процессе обсуждения данной проблемы часто возникает сопутствующий вопрос: как быть с маркировкой и системой «Честный Знак» (ГИС МТ)? Какой ЭДО указывать в качестве основного в личном кабинете, если у нас настроено несколько разных подключений?
Давайте проанализируем реальное техническое назначение настройки «Основной оператор ЭДО» в профиле ГИС МТ:
Эта настройка указывает системе «Честный Знак», на какой конкретно из ваших абонентских ящиков отправлять закрывающие документы (акты, счета-фактуры) за услуги самой системы маркировки (например, за предоставление платных кодов эмиссии).
Если вы планируете принимать или отправлять УПД с маркированным товаром без использования сторонних программ (напрямую в веб-интерфейсе «Честного Знака»), то именно его нужно обязательно отметить в профиле как «Основной оператор ЭДО». Без этой настройки функционал бесплатного «ЭДО Лайт» будет заблокирован.
Для стандартного получения маркированного товара от ваших поставщиков выбор «основного» оператора в ЛК ЧЗ не имеет значения. Коммерческие операторы (включая Калугу Астрал, Тензор, Такском и др.) интегрированы с ГИС МТ напрямую. Как только вы подписываете входящий УПД в своей программе 1С:Розница, оператор ЭДО автоматически передает сведения о кодах маркировки в «Честный Знак». Право собственности на коды перейдет к вашей организации в штатном режиме, независимо от того, какой оператор выбран «основным» в личном кабинете.
Таким образом, если вы разделяете ЭДО на два разных идентификатора в двух базах 1С для разных магазинов, вы можете выбрать любой из них в качестве основного в ЛК Честного Знака — на корректность списания и поступления маркированного товара это никак не повлияет.