+7 (995) 222-32-39
Пн-Пт 10-17

ИП Коробейников М.Г.
ИНН 183102445760
Разработка правил обмена данными 1С

Услуга

Разработка правил обмена данными 1С

Разработаем или скорректируем правила обмена данными 1С, когда стандартной синхронизации недостаточно: определим соответствия объектов и реквизитов, правила поиска существующих данных, преобразования значений и поведение при ошибках и повторной загрузке.

5 000 ₽/час

До начала разработки проверим конфигурации источника и приёмника, существующий механизм обмена, структуру данных, необходимые преобразования и контрольные примеры.

Оценить правила обмена
Разработка правил обмена данными 1С

Когда нужны собственные правила обмена данными

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

Отдельная разработка правил требуется, когда штатный обмен в целом подходит, но стандартной логики недостаточно.

Например, необходимо:

  • передавать собственные реквизиты, добавленные в конфигурацию;
  • включить в обмен собственный справочник или документ;
  • сопоставить разные структуры справочников двух систем;
  • преобразовать значения при передаче;
  • изменить правило поиска существующего объекта;
  • исключить создание дублей при загрузке;
  • передавать только часть объектов по заданному условию;
  • заполнять реквизит приёмника на основании нескольких данных источника;
  • по-разному обрабатывать один объект в зависимости от его вида или состояния;
  • адаптировать существующий обмен после доработки одной из конфигураций.
Основной принцип: сначала определяем, какой именно части стандартной логики не хватает. Не нужно переписывать весь обмен, если задача решается корректировкой одного правила, объекта или преобразования.

Чем правила обмена отличаются от настройки типовой синхронизации

Настройка типовой синхронизации

Используются уже существующие правила, поставляемые разработчиками конфигураций.

Специалист настраивает:

  • участников обмена;
  • подключение;
  • отборы;
  • дату начала;
  • первоначальное сопоставление;
  • расписание;
  • контроль результата.

Если стандартного состава данных достаточно, собственные правила разрабатывать не требуется.

Настройка типовой синхронизации между базами 1С

Разработка правил обмена

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

Например:

  • добавляется новый объект;
  • изменяется соответствие реквизитов;
  • задаётся собственный алгоритм;
  • меняется идентификация объекта;
  • добавляется условие отправки;
  • обрабатывается нестандартное значение.

То есть работа выполняется уже на уровне правил и алгоритмов конвертации, а не только пользовательских настроек обмена.

Чем правила обмена отличаются от полноценной интеграции

Правила обмена отвечают прежде всего за преобразование данных:

какой объект источника → в какой объект приёмника → с какими реквизитами и по каким условиям.

Полноценная интеграция может дополнительно включать:

  • проектирование API;
  • HTTP- или web-сервисы;
  • авторизацию;
  • очереди сообщений;
  • таймауты;
  • повторные попытки;
  • мониторинг;
  • webhook;
  • защиту сетевого взаимодействия;
  • версионирование интерфейса.

Если задача заключается в создании всего канала взаимодействия между 1С и внешней системой, используется настройка интеграции 1С с другими системами.

Если канал обмена уже существует, но данные преобразуются неправильно или требуется дополнить стандартную конвертацию, эта услуга подходит точнее.

Сначала анализируем существующий обмен

Перед изменением правил необходимо понять, как обмен работает сейчас.

Проверяем:

  • какие конфигурации участвуют;
  • какие редакции и релизы используются;
  • какой механизм обмена применяется;
  • какие объекты уже передаются;
  • какие правила работают штатно;
  • какие собственные изменения уже были внесены;
  • на каком этапе возникает требуемое отличие или ошибка.

Если существующий обмен работает для большинства данных, предпочтительно сохранить исправную типовую логику и изменить только необходимую часть.

Чем меньше необоснованных изменений в стандартном механизме, тем проще проверять обмен после обновления конфигурации и сопровождать его дальше.

Правило начинается с точного соответствия объектов

До программирования фиксируем, какой объект одной системы соответствует объекту другой.

Например:

  • справочник источника → справочник приёмника;
  • документ источника → документ другого типа;
  • справочник → регистр сведений;
  • несколько объектов источника → один объект приёмника;
  • один объект → разные объекты в зависимости от его вида.

После определения объектов составляется соответствие их реквизитов и табличных частей.

Это позволяет отделить простое копирование значения от ситуаций, где необходима отдельная логика преобразования.

Соответствие реквизитов фиксируем отдельно

После сопоставления объектов определяем, какие реквизиты источника соответствуют реквизитам приёмника.

Для каждого значимого поля необходимо понять:

  • откуда берётся исходное значение;
  • в какой реквизит оно записывается;
  • совпадают ли типы данных;
  • нужно ли преобразование;
  • обязательно ли поле;
  • что означает пустое значение;
  • можно ли изменять уже существующее значение приёмника.

Прямое соответствие возможно не всегда. Один реквизит приёмника может рассчитываться из нескольких полей источника, а отдельные исходные данные могут вообще не требоваться второй системе.

Таблица соответствий «объект → реквизит → правило преобразования» позволяет заранее увидеть неоднозначные места и проверить итоговую логику до программирования.

Одинаково названные реквизиты не всегда означают одинаковый смысл

Совпадение названия поля в двух конфигурациях ещё не гарантирует, что данные можно переносить напрямую.

Например, реквизит «Статус» в одной системе может описывать состояние заказа, а в другой — состояние согласования документа.

Перед сопоставлением необходимо учитывать:

  • назначение реквизита;
  • тип значения;
  • допустимые варианты;
  • момент заполнения;
  • влияние на дальнейшую бизнес-логику.

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

Преобразование значений

Если структуры двух систем различаются, значение источника может потребовать преобразования перед записью.

Например:

  • один статус источника соответствует другому статусу приёмника;
  • код заменяется ссылкой на объект справочника;
  • строковое значение преобразуется в перечисление;
  • дата приводится к требуемому формату;
  • несколько полей объединяются в один реквизит;
  • одно исходное значение разделяется на несколько реквизитов;
  • значение вычисляется по согласованному алгоритму.

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

Не следует скрывать сложную бизнес-логику внутри обмена без документации: в дальнейшем будет трудно понять, почему во второй системе сформировалось именно такое значение.

Справочные значения требуют отдельного сопоставления

Во многих случаях поле содержит не текст, а ссылку на справочник или перечисление.

Например:

  • организация;
  • контрагент;
  • склад;
  • подразделение;
  • договор;
  • номенклатура;
  • единица измерения;
  • вид цены;
  • статья движения денежных средств;
  • статус или перечисление.

Значение «Основной склад» нельзя просто записать как строку в ссылочный реквизит. Сначала необходимо определить соответствующий объект в базе-приёмнике.

Для таких полей отдельно задаётся правило поиска или таблица соответствий.

Правило поиска существующего объекта

Один из наиболее важных элементов обмена — понять, существует ли объект уже в принимающей системе.

Для поиска могут использоваться:

  • GUID;
  • внешний идентификатор;
  • артикул;
  • штрихкод;
  • ИНН и КПП;
  • номер документа внешней системы;
  • код;
  • таблица соответствий;
  • комбинация нескольких реквизитов.

Наименование обычно не является универсальным надёжным ключом, поскольку оно может меняться и совпадать у разных объектов.

Если правило поиска определено неверно, технически исправный обмен способен систематически создавать дубли. Поэтому идентификация объекта проектируется до массовой загрузки.

Что делать, если объект не найден

Поведение определяется отдельно для каждого типа данных.

1. Создать новый объект

Подходит, если источник действительно имеет право создавать этот справочник или документ в принимающей системе.

2. Пропустить объект

Используется, если отсутствие соответствия допустимо и не должно останавливать весь обмен.

3. Зафиксировать ошибку

Подходит, когда без соответствия невозможно корректно обработать исходные данные.

4. Передать на ручное сопоставление

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

Универсальное правило «не найдено — создать новый объект» обычно небезопасно для сложных справочников.

Несколько найденных объектов — отдельная ошибка сопоставления

Если правило поиска вернуло более одного возможного объекта, нельзя случайно выбирать первый.

Такая ситуация может означать:

  • дубли в базе;
  • слишком слабый ключ поиска;
  • неполные данные источника;
  • разную бизнес-сущность при одинаковом наименовании;
  • необходимость дополнительного условия.

До исправления причины такой объект желательно исключить из автоматической обработки и явно зафиксировать проблему.

Создание нового объекта требует заполнения обязательных данных

Если правило разрешает создавать новый объект, одного идентификатора может быть недостаточно.

Нужно определить:

  • какие реквизиты обязательны;
  • откуда брать их значения;
  • какие значения устанавливаются по умолчанию;
  • какие связанные объекты должны существовать заранее;
  • что делать, если обязательной информации нет.

Например, для новой номенклатуры могут требоваться вид номенклатуры, единица измерения и другие настройки, без которых карточка будет технически создана, но непригодна для дальнейшей работы.

Обновление существующего объекта требует отдельного правила

Если объект уже найден в базе-приёмнике, это ещё не означает, что все его реквизиты нужно автоматически заменить значениями источника.

Для каждого изменяемого поля определяем:

  • имеет ли источник право изменять этот реквизит;
  • нужно ли обновлять значение при каждом обмене;
  • следует ли сохранять локальное значение приёмника;
  • что делать, если значение источника пустое;
  • нужно ли сравнивать новое и существующее значение перед записью.

Например, внешняя система может быть источником артикула и маркетингового описания номенклатуры, но не должна изменять ставку НДС, вид номенклатуры или другие реквизиты, которые ведутся непосредственно в 1С.

Хорошее правило обмена изменяет только те данные, для которых источник действительно является ответственным. Оно не должно перезаписывать карточку целиком только потому, что объект удалось найти.

Пустое значение тоже имеет смысл

При обмене необходимо различать как минимум несколько ситуаций:

  • источник не передал реквизит вообще;
  • источник передал пустое значение;
  • источник явно требует очистить существующее значение;
  • поле необязательно и должно остаться без изменений.

Если эти случаи не разделять, обычное отсутствие поля в сообщении способно привести к непреднамеренному удалению уже заполненных данных в базе-приёмнике.

Поэтому для значимых реквизитов заранее фиксируем семантику пустого значения и поведение при обновлении существующего объекта.

Условия отправки объектов

Не каждый объект источника обязательно должен участвовать в обмене.

Правило может учитывать, например:

  • организацию;
  • вид документа;
  • статус;
  • дату;
  • подразделение;
  • склад;
  • вид номенклатуры;
  • признак активности;
  • другой согласованный реквизит или условие.

Например, во внешнюю систему могут передаваться только действующие товары определённого вида либо только проведённые документы после установленной даты.

Условия должны быть сформулированы однозначно, чтобы пользователь понимал, почему один объект был передан, а другой — нет.

Условия загрузки данных в систему-приёмник

Отбор на стороне источника и проверка на стороне приёмника решают разные задачи.

Даже если сообщение было отправлено, приёмник может дополнительно проверять:

  • существование связанных объектов;
  • обязательные реквизиты;
  • допустимость значения;
  • текущий статус объекта;
  • возможность изменения уже существующих данных;
  • соответствие бизнес-правилам принимающей конфигурации.

Если условие не выполнено, результат должен быть понятным: объект пропущен, сообщение отклонено либо требуется ручная обработка.

Молчаливое игнорирование ошибки усложняет контроль обмена и может создавать расхождения между системами.

Табличные части требуют собственного сопоставления

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

Необходимо отдельно определить правила для строк табличной части:

  • какая строка источника соответствует строке приёмника;
  • как определяется номенклатура;
  • как передаются характеристики и серии;
  • как преобразуются единицы измерения;
  • как передаются количество, цена и сумма;
  • что делать с удалённой строкой;
  • как обрабатывать повторное поступление тех же строк.

Особенно важно определить ключ строки, если документ может изменяться после первоначальной передачи.

Простое правило «очистить табличную часть и загрузить её заново» подходит не для каждого бизнес-процесса. Оно может удалить локальные данные приёмника или нарушить связи с уже обработанными строками.

Создание документа отличается от обновления документа

Первичное создание

Необходимо определить:

  • тип документа;
  • организацию;
  • контрагента;
  • дату;
  • номер или внешний идентификатор;
  • вид операции;
  • табличные части;
  • другие обязательные реквизиты.

Повторная передача

Необходимо понять:

  • как найти ранее созданный документ;
  • какие поля разрешено изменить;
  • можно ли изменять проведённый документ;
  • как обновлять строки;
  • что делать после изменения статуса;
  • когда повтор должен быть отклонён.

Правило не должно создавать новый документ при каждом повторном получении одного и того же внешнего объекта.

Проведение документов не следует включать без проверки

Создать документ в 1С и успешно провести его — разные операции.

При проведении конфигурация может:

  • проверять обязательные данные;
  • формировать движения регистров;
  • контролировать остатки;
  • рассчитывать суммы;
  • проверять доступность периода;
  • выполнять собственную бизнес-логику.

Поэтому режим обработки согласуется заранее:

  • создать документ непроведённым;
  • провести после проверки пользователем;
  • проводить автоматически, если контрольные сценарии подтверждают корректность;
  • не проводить документы определённого типа или состояния.

Автоматическое проведение не должно использоваться только ради того, чтобы обмен выглядел полностью автоматическим.

Обратное направление обмена может требовать другого правила

Если данные передаются в обе стороны, обратное преобразование не всегда является зеркальным отражением прямого.

Например:

  • заказ создаётся во внешней системе и загружается в 1С;
  • обратно из 1С передаётся только статус заказа;
  • номенклатура создаётся в 1С и выгружается наружу;
  • внешняя система возвращает только собственный идентификатор объекта.

Для каждого направления отдельно определяем:

  • состав объектов;
  • состав реквизитов;
  • источник данных;
  • правила преобразования;
  • условия отправки;
  • обработку повторов.

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

Удаление объекта требует отдельного сценария

Удаление данных в одной системе не должно автоматически означать физическое удаление соответствующего объекта в другой.

Для каждого типа данных необходимо определить, что делать, если объект больше не используется или помечен на удаление.

Возможные варианты:

  • не передавать удаление вообще;
  • установить признак неактивности;
  • пометить объект на удаление;
  • изменить статус;
  • скрыть объект из дальнейшей выгрузки;
  • передать отдельное событие об удалении;
  • оставить решение пользователю.

Физическое удаление особенно опасно для объектов, на которые уже существуют документы, движения или другие ссылки.

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

Изменение ключевого реквизита не должно создавать новый объект

Если объект сопоставляется по изменяемому реквизиту, после его изменения система может перестать находить ранее созданное соответствие.

Например, могут измениться:

  • артикул;
  • код;
  • наименование;
  • номер внешней карточки;
  • другой используемый для поиска реквизит.

Если это возможно, устойчивое соответствие лучше хранить по идентификатору, который не меняется вместе с пользовательскими реквизитами.

Если постоянного идентификатора нет, необходимо заранее определить, как будет обрабатываться изменение ключа.

Конфликт изменений между системами

Если один и тот же реквизит может изменяться в обеих системах, простого сопоставления недостаточно.

Нужно определить правило приоритета.

Например:

  • всегда принимать значение из 1С;
  • всегда принимать значение внешней системы;
  • использовать последнее изменение;
  • не изменять поле автоматически при конфликте;
  • передавать ситуацию пользователю;
  • разделить ответственность по отдельным реквизитам.

Наиболее предсказуемый вариант — заранее определить владельца каждого значимого реквизита.

Тогда обмен не пытается постоянно перезаписывать одно и то же значение в обе стороны.

Значения по умолчанию должны быть осознанными

Если источник не содержит обязательного для приёмника реквизита, иногда используется значение по умолчанию.

Например:

  • определённый склад;
  • организация;
  • вид операции;
  • единица измерения;
  • статья;
  • статус;
  • другой обязательный параметр.

Такое значение необходимо зафиксировать как часть правила обмена, а не оставлять скрытым внутри программного кода.

Также нужно определить, применяется ли значение по умолчанию всегда или только при отсутствии исходного значения.

Проверка входящих данных до записи

До создания или изменения объекта полезно проверить, что входящие данные соответствуют требованиям принимающей системы.

Проверки могут включать:

  • наличие обязательных реквизитов;
  • корректность типа значения;
  • допустимый диапазон;
  • существование связанных объектов;
  • допустимость статуса;
  • уникальность внешнего идентификатора;
  • соответствие бизнес-условиям.

Если данные заведомо некорректны, лучше отклонить их до записи и сформировать понятное сообщение, чем создавать объект, который затем потребует ручного исправления.

Ошибка одного объекта не всегда должна останавливать весь пакет

При массовом обмене необходимо определить поведение при ошибке одного элемента.

Остановить весь пакет

Подходит, если объекты тесно связаны и частичная загрузка приведёт к неконсистентному состоянию.

Продолжить обработку остальных

Подходит, если объекты независимы и ошибка одного элемента не мешает корректно обработать остальные.

В любом случае ошибочный объект должен быть идентифицируемым, чтобы его можно было исправить и повторно обработать отдельно.

Повторная загрузка должна быть предсказуемой

После исправления ошибки пользователь или регламентный механизм может повторно отправить тот же объект.

Правило должно заранее определять результат такого повтора.

Необходимо понимать:

  • как найти ранее созданный объект;
  • какие данные обновить;
  • какие локальные изменения сохранить;
  • как обработать уже созданные строки;
  • что считать успешным повтором;
  • когда повтор необходимо отклонить.
Обмен должен позволять безопасно повторить неуспешную операцию. Если каждый повтор создаёт новый объект, такой механизм трудно считать надёжным.

Ошибки обмена должны быть понятны пользователю

Сообщение «Ошибка преобразования данных» редко помогает найти причину проблемы.

Для диагностики желательно фиксировать:

  • какой объект обрабатывался;
  • его внешний идентификатор;
  • какое правило выполнялось;
  • какой реквизит вызвал проблему;
  • какое значение было получено;
  • что ожидала принимающая система.

Например, вместо общего сообщения полезнее получить результат вида:

«Заказ 45821: не найдено соответствие склада с внешним кодом MSK-03».

Такую ошибку можно локализовать и исправить без повторного анализа всего обмена.

Журнал обмена нужен для сопровождения правил

После запуска важно иметь возможность ответить на вопросы:

  • передавался ли конкретный объект;
  • когда выполнялся обмен;
  • был ли объект создан или обновлён;
  • возникла ли ошибка;
  • выполнялась ли повторная обработка;
  • какое соответствие использовалось.

Объём журналирования зависит от критичности процесса и количества данных.

Не требуется сохранять абсолютно всё содержимое каждого сообщения, если для диагностики достаточно идентификаторов, результата и текста ошибки.

Производительность правил обмена имеет значение

Корректное преобразование данных должно оставаться приемлемым по скорости при реальном объёме информационной базы.

На производительность могут влиять:

  • поиск соответствий внутри циклов;
  • повторные обращения к одним и тем же данным;
  • загрузка больших выборок без отбора;
  • сложные вычисления для каждой строки;
  • частые записи объектов;
  • избыточное журналирование;
  • неоптимальное получение связанных данных.

Правило, которое быстро работает на десяти тестовых объектах, необходимо отдельно проверять на объёме, близком к рабочему.

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

Не следует выполнять одинаковый поиск для каждой строки заново

Если в одном пакете многократно используются одни и те же связанные данные, повторный поиск может создавать ненужную нагрузку.

Например, сотни строк документов могут ссылаться на:

  • один и тот же склад;
  • одну организацию;
  • повторяющиеся единицы измерения;
  • одни и те же виды цен;
  • небольшой набор контрагентов.

В подходящих случаях соответствия можно получать заранее или повторно использовать уже найденный результат в рамках обработки пакета.

Конкретный способ зависит от архитектуры существующего обмена и объёма данных.

Правила должны учитывать порядок передачи связанных объектов

Документ или справочник может ссылаться на данные, которые ещё не существуют в принимающей системе.

Например, заказ может использовать:

  • контрагента;
  • договор;
  • склад;
  • номенклатуру;
  • характеристики;
  • единицы измерения.

Если зависимый объект поступил раньше основного, правило должно иметь определённое поведение:

  • создать необходимый объект;
  • отложить обработку;
  • зафиксировать ошибку;
  • использовать заранее согласованное соответствие.

Порядок передачи необходимо учитывать ещё при проектировании, а не исправлять случайные ошибки последовательности после запуска.

Изменение структуры конфигурации может потребовать корректировки правил

После обновления или доработки одной из участвующих систем могут измениться:

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

Если правило обращается к изменённой структуре, необходимо проверить, продолжает ли старое соответствие отражать актуальный бизнес-смысл.

Особенно важно это для собственных правил, которые были разработаны под конкретные версии и доработки конфигураций.

После обновления проверяем не только отсутствие технической ошибки

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

Поэтому контроль после обновления включает проверку:

  • создания нового объекта;
  • обновления существующего объекта;
  • поиска соответствий;
  • преобразования ключевых реквизитов;
  • табличных частей;
  • повторной передачи;
  • ошибочных данных;
  • обратного направления, если оно используется.

Если обновляется доработанная конфигурация, дополнительно может потребоваться обновление доработанной конфигурации 1С с проверкой собственных механизмов обмена.

Тестировать правила лучше на копии или отдельном контуре

Новые правила способны массово создавать и изменять данные, поэтому их нежелательно впервые проверять непосредственно на рабочей базе.

Для тестирования желательно подготовить:

  • копию или тестовую информационную базу;
  • контрольный набор объектов;
  • ожидаемый результат для каждого примера;
  • сценарии повторной загрузки;
  • сценарии с ошибочными данными;
  • способ очистки или повторного запуска теста.

Если используется копия рабочей базы, необходимо проверить, что она не подключена к реальным внешним системам и не выполняет рабочие регламентные обмены.

Контрольные примеры формируются до массового запуска

Для каждого существенного правила полезно иметь небольшой набор объектов, по которым заранее известен ожидаемый результат.

Например:

  • новый элемент справочника;
  • существующий элемент;
  • объект с изменённым реквизитом;
  • объект без соответствия;
  • объект с пустым значением;
  • документ с несколькими строками;
  • повтор ранее загруженного документа;
  • ошибочный объект.

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

Так можно проверить именно логику правила, а не ограничиваться фактом отсутствия сообщения об ошибке.

Отдельно проверяем массовый сценарий

После проверки отдельных примеров необходимо убедиться, что правило корректно работает на реальном количестве объектов.

Массовая проверка помогает обнаружить:

  • неожиданные дубли;
  • редкие варианты данных;
  • незаполненные реквизиты;
  • ошибки сопоставления;
  • неприемлемое время обработки;
  • накопление большого числа ошибок;
  • зависимость результата от порядка объектов.

Необязательно сразу запускать обмен на всей исторической базе. Объём можно увеличивать постепенно после проверки предыдущей выборки.

Первоначальная загрузка и регулярный обмен могут использовать разные условия

При первом запуске может потребоваться передать большой массив уже существующих данных, а затем обрабатывать только изменения.

Первоначальная загрузка

Может включать:

  • существующие справочники;
  • активные документы;
  • начальные соответствия;
  • исторические данные в согласованном объёме.

Регулярный обмен

Обычно обрабатывает:

  • новые объекты;
  • изменённые данные;
  • новые документы;
  • изменения статусов;
  • повтор после ошибки.

Если для первоначального переноса требуются специальные временные правила, необходимо заранее определить, останутся ли они после перехода в рабочий режим.

Разовая миграция и постоянный обмен — разные задачи

Правила преобразования могут использоваться как для регулярного обмена, так и для разового переноса данных, но требования к этим сценариям отличаются.

Разовая миграция

Основная задача — корректно перенести согласованный массив данных из одной системы в другую.

После завершения переноса временные правила могут больше не использоваться.

Постоянный обмен

Правила работают регулярно и должны учитывать:

  • повторную передачу;
  • изменения объектов;
  • ошибки;
  • обновления конфигураций;
  • последующее сопровождение.

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

Исторические данные требуют отдельного решения

При первоначальном переносе не всегда требуется загружать всю накопленную историю.

До разработки определяем:

  • с какой даты нужны документы;
  • нужны ли закрытые заказы;
  • нужно ли переносить архивные элементы справочников;
  • требуются ли старые цены;
  • нужны ли удалённые или неактивные объекты;
  • должны ли переноситься документы, уже не влияющие на текущий учёт.

Передача всей истории «на всякий случай» увеличивает объём проверки и может перенести во вторую систему устаревшие или ошибочные данные.

Объём исторических данных определяется бизнес-задачей. Чем точнее задан период и состав переноса, тем проще проверить результат.

Изменение правила не должно неожиданно переобработать старые данные

После корректировки алгоритма необходимо понимать, к каким объектам применяется новая версия правила.

Возможны разные сценарии:

  • новое правило действует только для новых изменений;
  • необходимо повторно передать отдельные объекты;
  • нужно переобработать данные начиная с определённой даты;
  • требуется полная повторная выгрузка согласованного набора;
  • исторические объекты должны остаться без изменений.

Массовый повтор старых данных после изменения правила выполняется только тогда, когда это действительно требуется.

Версию правил полезно связывать с изменением требований

Если логика обмена развивается, важно понимать, почему конкретное преобразование было добавлено или изменено.

Для существенных изменений полезно фиксировать:

  • какое требование изменилось;
  • какие объекты затронуты;
  • какие реквизиты изменились;
  • нужно ли повторно передавать старые данные;
  • какие контрольные примеры проверены;
  • с какого момента применяется новое правило.

Это особенно важно для обменов, которые дорабатываются несколькими этапами и используются в течение длительного времени.

Документируем нестандартную логику

Если правило содержит собственный алгоритм, его назначение должно быть понятно не только разработчику, который впервые написал код.

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

  • исходный объект;
  • объект приёмника;
  • условие выполнения;
  • правило поиска;
  • преобразование значений;
  • поведение при отсутствии соответствия;
  • ожидаемый результат;
  • контрольный пример.

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

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

Не каждую ошибку нужно исправлять программным правилом

Иногда причина проблемы находится не в конвертации, а в исходных данных или организации процесса.

Например:

  • одна и та же номенклатура заведена несколько раз;
  • у контрагента отсутствует обязательный идентификатор;
  • пользователи заполняют один реквизит в разных форматах;
  • справочники двух систем ведутся независимо без владельца данных;
  • документ передаётся раньше необходимых связанных объектов.

В такой ситуации сложный программный алгоритм может только скрыть проблему.

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

Ручные исключения должны быть контролируемыми

Иногда для отдельных объектов действительно требуется особое соответствие.

Например:

  • один старый код соответствует новому объекту;
  • несколько исторических значений объединяются в одно;
  • для конкретной организации используется отдельное правило;
  • ошибочное значение источника временно заменяется корректным.

Такие исключения лучше хранить и описывать так, чтобы их можно было:

  • найти;
  • проверить;
  • изменить;
  • удалить после потери актуальности.
Чем больше скрытых исключений зашито непосредственно в код, тем труднее сопровождать правила и понимать результат обмена через несколько месяцев.

Изменения лучше внедрять ограниченным объёмом

Если правило используется для большого рабочего обмена, безопаснее сначала проверить изменение на ограниченной группе данных.

Последовательность может быть такой:

1. Контрольные объекты

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

2. Ограниченная выборка

Запускаем правило на небольшой реальной группе объектов и анализируем результат.

3. Расширенная выборка

Увеличиваем объём и проверяем редкие варианты данных и производительность.

4. Рабочий режим

После успешной проверки включаем правило для согласованного полного потока.

Такой подход уменьшает риск массового создания дублей или неправильного изменения данных.

Перед рабочим запуском нужна сверка результата

После тестовой передачи необходимо проверить не только количество обработанных объектов.

Сверяем:

  • сколько объектов ожидалось передать;
  • сколько создано;
  • сколько обновлено;
  • сколько пропущено;
  • сколько завершилось ошибкой;
  • нет ли неожиданных дублей;
  • правильно ли заполнены ключевые реквизиты;
  • корректны ли табличные части;
  • сохранились ли локальные данные, которые обмен не должен изменять.

Для финансово или операционно значимых данных дополнительно согласуется предметная сверка с ответственным пользователем.

Как проходит разработка правил обмена

1. Анализируем текущий обмен

Определяем используемые конфигурации, механизм передачи, существующие правила, собственные доработки и конкретное отличие от требуемого результата.

2. Описываем объекты и направления

Фиксируем, какие справочники, документы, регистры и другие данные должны передаваться и в каком направлении.

3. Составляем соответствия

Определяем соответствия объектов, реквизитов, табличных частей, справочных значений и устойчивых идентификаторов.

4. Определяем правила преобразования

Фиксируем вычисления, значения по умолчанию, условия отправки, правила поиска и поведение при пустых или некорректных данных.

5. Определяем обработку повторов и ошибок

Задаём поведение при отсутствии соответствия, повторной загрузке, конфликтующих изменениях и ошибках отдельных объектов.

6. Реализуем необходимые изменения

Корректируем существующие правила или добавляем собственную логику только в той части, где стандартного поведения недостаточно.

7. Проверяем контрольные примеры

Тестируем новый объект, существующий объект, изменение, повтор, отсутствие соответствия и другие критичные сценарии.

8. Проверяем ограниченную выборку

Запускаем обмен на небольшом объёме реальных или приближенных к реальным данных и сверяем результат.

9. Проверяем массовую обработку

Контролируем производительность, редкие варианты данных, отсутствие дублей и корректность итоговой статистики.

10. Переводим изменения в рабочий режим

После успешной сверки включаем согласованный объём обмена и проверяем первые рабочие операции.

Когда правила обмена считаются готовыми

Работу можно считать завершённой по согласованному сценарию, когда:

  • определены объекты источника и приёмника;
  • зафиксированы соответствия ключевых реквизитов;
  • понятны правила идентификации существующих объектов;
  • новые объекты создаются только в предусмотренных случаях;
  • существующие данные обновляются по согласованным правилам;
  • пустые значения обрабатываются предсказуемо;
  • справочные значения корректно сопоставляются;
  • табличные части преобразуются согласно требованиям;
  • повторная загрузка не создаёт нежелательных дублей;
  • ошибочные данные дают понятный диагностический результат;
  • контрольные примеры дают ожидаемый результат;
  • массовая обработка проверена на согласованном объёме;
  • результат сверки принят ответственным пользователем.
Правило обмена считается рабочим не тогда, когда данные один раз технически загрузились, а когда создание, обновление, повтор и ошибочные ситуации дают заранее определённый результат.

Что не входит автоматически

Разработка правил обмена сама по себе автоматически не включает:

  • создание полноценного API для внешней системы;
  • разработку внешнего сайта, CRM, WMS или другой системы;
  • полное перепроектирование существующей интеграции;
  • исправление всех дублей и ошибок накопленных данных;
  • ручное сопоставление тысяч неоднозначных объектов;
  • миграцию всей исторической базы без согласованного объёма;
  • изменение бизнес-процессов заказчика;
  • исправление всех ранее существовавших доработок конфигурации;
  • настройку сетевой инфраструктуры, VPN и внешних серверов;
  • круглосуточный мониторинг обмена;
  • сопровождение стороннего API без отдельного соглашения.

Если такая работа необходима для достижения результата, она оценивается отдельно после обследования.

Когда вместо изменения правил лучше исправить исходные данные

Программная доработка не всегда является оптимальным решением.

Сначала имеет смысл исправить исходные данные, если проблема возникает из-за:

  • дублей справочников;
  • хаотичного заполнения идентификаторов;
  • разных правил ведения одних и тех же данных сотрудниками;
  • неактуальных карточек;
  • отсутствия обязательных реквизитов;
  • ошибочно заведённых соответствий.

Иначе новое правило может лишь автоматически переносить существующие ошибки из одной системы в другую.

Когда требуется полноценная переработка обмена

Иногда локальной корректировки правил недостаточно.

Это возможно, если:

  • существующий механизм больше не поддерживается;
  • обмен построен на устаревшей архитектуре;
  • изменился сам бизнес-процесс;
  • появилась новая внешняя система;
  • требуется другой канал передачи данных;
  • нужна очередь сообщений, мониторинг или независимая повторная обработка;
  • текущая схема не позволяет надёжно идентифицировать операции.

В такой ситуации сначала оценивается, что выгоднее: продолжать усложнять старые правила или перейти к отдельной интеграции 1С с другой системой.

Стоимость разработки правил обмена

5 000 ₽ за час работы специалиста.

Цена означает стоимость часа работы, а не фиксированную стоимость любой доработки обмена.

Трудоёмкость зависит от:

  • используемых конфигураций;
  • механизма существующего обмена;
  • количества объектов;
  • числа сопоставляемых реквизитов;
  • сложности преобразований;
  • правил идентификации объектов;
  • количества исключений;
  • двустороннего или одностороннего характера обмена;
  • необходимости изменять табличные части;
  • объёма первоначальной загрузки;
  • качества исходных данных;
  • необходимого объёма тестирования.

Если существующий обмен уже работает и требуется изменить одно локальное соответствие, задача может быть небольшой. Если необходимо перепроектировать десятки объектов и сложные алгоритмы преобразования, сначала требуется обследование.

Что потребуется для первичной оценки

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

  • какие конфигурации участвуют в обмене;
  • их редакции и релизы;
  • в каком направлении передаются данные;
  • какой механизм обмена используется сейчас;
  • что именно работает неправильно или чего не хватает;
  • какие объекты необходимо добавить или изменить;
  • есть ли собственные доработки конфигураций;
  • есть ли пример исходного объекта и ожидаемого результата;
  • на каком объёме данных работает обмен;
  • возникают ли сейчас дубли или ошибки сопоставления.

Для первичной оценки особенно полезен конкретный пример:

«В источнике заполнено так → сейчас в приёмнике получается так → требуется получить такой результат».

Не передавайте через открытую форму рабочие пароли, токены, ключи доступа и конфиденциальные выгрузки. Если для диагностики потребуется доступ или пример реальных данных, безопасный способ передачи согласуем отдельно.

Связанные задачи

В зависимости от причины проблемы могут потребоваться другие услуги:

Сначала определяется фактическая причина задачи, чтобы не разрабатывать новый механизм там, где достаточно настройки или локального изменения существующего правила.

Частые вопросы о разработке правил обмена данными 1С

Что такое правила обмена данными 1С?

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

Когда требуется разработка собственных правил обмена?

Когда штатная синхронизация в целом подходит, но стандартного состава данных или логики преобразования недостаточно. Например, нужно передавать собственный реквизит, новый объект, изменить сопоставление, добавить условие отбора или по-другому идентифицировать существующие данные.

Всегда ли нужно переписывать существующий обмен целиком?

Нет. Если основной механизм работает корректно, предпочтительно изменить только ту часть правил, которая не соответствует требованиям. Это уменьшает объём разработки и упрощает дальнейшее сопровождение.

Можно добавить в типовой обмен собственный реквизит?

Во многих случаях да. Сначала проверяется, где реквизит находится в источнике, куда он должен записываться в приёмнике, совпадают ли типы данных и требуется ли дополнительное преобразование.

Можно добавить в обмен новый справочник или документ?

Если используемый механизм обмена позволяет расширять состав передаваемых данных, можно разработать соответствующее правило. Необходимо определить объект приёмника, соответствия реквизитов, способ поиска существующего объекта и поведение при повторной загрузке.

Можно передавать данные только по определённому условию?

Да. Например, можно отбирать объекты по организации, складу, виду номенклатуры, статусу, дате или другому согласованному признаку. Условие должно быть однозначным и проверяемым.

Можно изменить только один реквизит в существующем обмене?

Да, если архитектура текущего обмена позволяет выполнить локальную корректировку. Перед изменением проверяется, не используется ли этот реквизит в других правилах и не повлияет ли новая логика на обратное направление обмена.

Как определяется, что объект уже существует во второй базе?

По заранее выбранному устойчивому идентификатору или правилу поиска. Это может быть GUID, внешний идентификатор, артикул, штрихкод, номер внешнего документа, комбинация реквизитов или таблица соответствий.

Можно искать объект по наименованию?

Технически возможно, но это обычно ненадёжный универсальный ключ. Наименование может измениться или совпадать у нескольких объектов. Если существует более устойчивый идентификатор, лучше использовать его.

Как правила обмена помогают избежать дублей?

Для этого определяется устойчивый способ поиска уже созданного объекта и поведение при повторной передаче. Если соответствие найдено, правило должно обновить существующие данные или выполнить другое согласованное действие, а не создавать новый объект каждый раз.

Что делать, если найдено несколько подходящих объектов?

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

Что делать, если соответствующий объект вообще не найден?

Это зависит от типа данных. Можно создать новый объект, зафиксировать ошибку, пропустить его, отложить обработку или передать на ручное сопоставление. Поведение определяется отдельно для разных справочников и документов.

Можно ли автоматически создавать недостающие справочники?

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

Можно преобразовать одно значение в другое?

Да. Например, внешний статус можно сопоставить со статусом 1С, строковый код — с элементом справочника, несколько реквизитов — объединить в одно значение или рассчитать значение по согласованному алгоритму.

Можно ли использовать значение по умолчанию?

Да, если принимающая система требует реквизит, которого нет в источнике. Такое значение необходимо явно согласовать и определить, применяется ли оно всегда или только при отсутствии исходных данных.

Что происходит, если источник передал пустой реквизит?

Это определяется правилом. Пустое значение может означать необходимость очистить реквизит, оставить существующее значение без изменения либо считаться ошибкой. Эти варианты желательно различать заранее.

Можно запретить внешней системе менять отдельные поля в 1С?

Да. Для каждого реквизита можно определить владельца данных. Например, внешняя система может обновлять описание товара, но не иметь права изменять ставку НДС или другой учётный реквизит, который ведётся только в 1С.

Можно настроить обмен табличными частями документов?

Да. Для строк отдельно определяются правила сопоставления номенклатуры, характеристик, единиц измерения, количества, цены и других полей. Также важно определить поведение при повторной загрузке и изменении состава строк.

Можно ли при повторной загрузке обновить существующий документ?

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

Нужно ли автоматически проводить загруженные документы?

Не обязательно. Можно создавать документы непроведёнными, проводить после проверки пользователем или выполнять автоматическое проведение после тестирования контрольных сценариев. Решение зависит от типа документа и бизнес-процесса.

Как обрабатывается удаление объекта?

Удаление проектируется отдельно. Вместо физического удаления можно передавать признак неактивности, статус, пометку удаления или вообще не синхронизировать удаление. Для учётных данных автоматическое физическое удаление часто нежелательно.

Что произойдёт, если изменится артикул или другой ключ поиска?

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

Можно ли настроить двусторонний обмен?

Да, но прямое и обратное направления проектируются отдельно. Не все реквизиты должны передаваться в обе стороны. Для каждого значимого поля желательно определить, какая система является источником.

Что делать, если один реквизит изменили одновременно в двух системах?

Нужно заранее определить правило разрешения конфликта: приоритет одной системы, ручное решение, разделение ответственности по полям или другой согласованный алгоритм. Без такого правила системы могут постоянно перезаписывать изменения друг друга.

Можно ли повторно отправить объект после ошибки?

Да. Хорошо спроектированное правило должно позволять исправить причину ошибки и повторить обработку без нежелательного создания второго объекта.

Ошибка одного объекта должна останавливать весь обмен?

Не всегда. Если объекты независимы, можно зафиксировать ошибку конкретного элемента и продолжить обработку остальных. Если данные тесно связаны и частичная загрузка недопустима, может потребоваться остановка всего пакета.

Можно сделать понятные сообщения об ошибках?

Да. Желательно фиксировать конкретный объект, идентификатор, правило и проблемный реквизит. Сообщение вида «не найден склад с внешним кодом MSK-03» значительно полезнее общего текста «ошибка преобразования».

Нужен ли журнал обмена?

Для регулярно работающего или критичного обмена он полезен. Журнал позволяет определить, передавался ли объект, когда это произошло, был ли он создан или обновлён и какая ошибка возникла.

Можно ли ускорить медленные правила обмена?

Да, после измерения фактического узкого места. Причиной могут быть повторные поиски внутри циклов, избыточные обращения к базе, большие выборки, лишние записи или сложные вычисления для каждой строки.

Почему правило работает быстро на тесте, но медленно на рабочей базе?

Небольшая тестовая выборка не показывает поведение на десятках тысяч объектов. Поэтому после проверки правильности логики отдельно тестируется массовый сценарий на объёме, близком к рабочему.

Могут ли правила перестать работать после обновления 1С?

Если обновление изменило используемые объекты, реквизиты, типы данных или бизнес-логику, собственные правила могут потребовать проверки или корректировки. Поэтому после существенного обновления рекомендуется выполнить контрольный обмен.

Нужно ли после обновления проверять только наличие технических ошибок?

Нет. Обмен может технически завершаться успешно, но формировать уже неправильный бизнес-результат. Поэтому сверяются значения реквизитов, табличные части, сопоставления, повторная загрузка и другие ключевые сценарии.

Можно тестировать правила на рабочей базе?

Для небольшого безопасного изменения это иногда возможно при согласованном контроле, но новые или массово изменяющие данные правила предпочтительно сначала проверять на копии или отдельном тестовом контуре.

Что нужно проверить в копии рабочей базы перед тестированием?

Необходимо убедиться, что тестовая база не отправляет реальные данные во внешние системы, не выполняет рабочие регламентные задания и не использует без необходимости производственные подключения и учётные данные.

Можно сначала проверить обмен только на нескольких объектах?

Да, это предпочтительный сценарий. Сначала используются контрольные примеры, затем ограниченная выборка, после чего объём постепенно увеличивается до рабочего.

Чем первоначальная загрузка отличается от регулярного обмена?

При первоначальной загрузке может потребоваться один раз передать большой массив существующих данных. В регулярном режиме обычно передаются только новые и изменённые объекты. Условия для этих этапов могут отличаться.

Обязательно ли переносить всю историю?

Нет. Необходимо определить, какой период и какие виды исторических данных действительно нужны второй системе. Передача всей истории увеличивает объём проверки и может переносить устаревшие данные без практической необходимости.

Можно использовать правила только для разовой миграции?

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

Можно ли исправить старые данные новым правилом?

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

Нужно ли документировать разработанные правила?

Для нестандартной логики это желательно. Полезно зафиксировать объекты, реквизиты, условия, идентификаторы, преобразования и контрольные примеры, особенно если обмен будет сопровождаться длительное время.

Можно ли зашить отдельное исключение для одного объекта?

Технически возможно, но такие исключения должны быть контролируемыми и понятными. Если специальных случаев становится много, лучше хранить соответствия или настройки отдельно, а не накапливать скрытые условия непосредственно в коде.

Всегда ли проблему обмена нужно решать программированием?

Нет. Иногда причина находится в дублях, отсутствии идентификаторов, неправильном заполнении справочников или неопределённом владельце данных. В таких случаях сначала разумно исправить исходные данные или бизнес-процесс.

Когда вместо правил нужна полноценная интеграция?

Если требуется создавать новый канал передачи, API, очередь сообщений, авторизацию, мониторинг, webhook или другой комплексный механизм взаимодействия, задача выходит за рамки только преобразования данных и относится к полноценной интеграции.

Когда вместо разработки правил достаточно типовой синхронизации?

Если стандартный обмен уже передаёт необходимый состав данных и требуется только корректно настроить подключения, отборы, дату начала, сопоставление и расписание, собственная разработка может быть не нужна.

Сколько стоит разработка правил обмена?

Стоимость работы специалиста — 5 000 ₽ за час. Итоговая трудоёмкость зависит от количества объектов, сложности сопоставлений и преобразований, качества исходных данных, объёма тестирования и состояния существующего обмена.

Можно заранее оценить трудоёмкость?

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

Что лучше прислать для оценки задачи?

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

Нужно ли отправлять для оценки базу целиком?

Не обязательно. Для первичного анализа часто достаточно описания задачи, примеров объектов, структуры данных и текущего результата. Если потребуется копия базы или доступ, способ передачи согласуется отдельно.

Можно выполнить разработку правил обмена удалённо?

Да. Анализ, разработка и тестирование большинства таких задач могут выполняться удалённо при наличии согласованного безопасного доступа к необходимым информационным базам и тестовым данным.

Оценить разработку правил обмена данными 1С

Укажите участвующие конфигурации 1С, направление обмена и кратко опишите, какой результат получается сейчас и какой должен получаться после изменения правил.

Если возможно, приведите один конкретный пример: исходный объект, текущий результат обмена и ожидаемый результат. Этого обычно достаточно, чтобы определить, требуется настройка штатного механизма, локальная корректировка правил или более глубокая переработка обмена.

Оценить правила обмена

Не передавайте через открытую форму рабочие пароли, токены, ключи доступа и конфиденциальные выгрузки. Если для диагностики потребуется доступ к базе или пример реальных данных, безопасный способ передачи согласуем отдельно.

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