Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

1C_EXCHANGE_COLLISION 1С:Предприятие и СУБД

Гайд 1С: Разрешение коллизий и кодов коллизий при двустороннем обмене данными

Обновлено: 26.08.2026 · Официальная документация ↗

При активном параллельном редактировании одних и тех же объектов в разных узлах возникают коллизии:

  • Перезапись актуальных данных старыми значениями при загрузке ответного сообщения обмена («эффект затирания»).
  • Циклический обмен одними и теми же измененными объектами между узлами (бесконечный пинг-понг изменений).
  • Отказ проведения связанных документов из-за неконсистентного состояния реквизитов шапки или табличной части.
  • Накопление неразрешенных конфликтов в подсистеме версионирования БСП.

1. Классификация стратегий разрешения коллизий

В архитектуре распределенного обмена 1С применяются три основные стратегии:

  • Приоритет главного узла (Master-Slave): изменения из главного узла всегда побеждают изменения периферийного узла.
  • Приоритет по времени (Last-Write-Wins): объект перезаписывается только в том случае, если дата модификации в сообщении позже локальной даты версии.
  • Ручное разрешение коллизий (БСП): при обнаружении одновременного редактирования создается запись в регистре сведений КонфликтыПриОбменеДанными для разбора администратором.

2. Программная обработка коллизий в коде загрузки

// Обработчик события 'ПриПолученииДанныхОтПодчиненного' в плане обмена
Процедура ПриПолученииДанныхОтПодчиненного(ЭлементДанных, ПолучениеЭлемента, ОтправкаЭлемента)
    Если ТипЗнч(ЭлементДанных) = Тип("СправочникОбъект.Номенклатура") Тогда
        ЛокальныйОбъект = ЭлементДанных.Ссылка.ПолучитьОбъект();
        Если ЛокальныйОбъект <> Неопределено Тогда
            Если ЛокальныйОбъект.ДатаМодификации > ЭлементДанных.ДатаМодификации Тогда
                // Локальная версия новее - отклоняем изменение из пакета
                ПолучениеЭлемента = ПолучениеЭлементаДанных.Игнорировать;
                // Принудительно регистрируем наш объект для отправки обратно в узел
                ПланыОбмена.ЗарегистрироватьИзменения(Узел, ЛокальныйОбъект.Ссылка);
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры
💡 Практика специалистов: Для предотвращения коллизий справочников на уровне архитектуры используйте префиксы ИБ: каждому узлу назначается уникальный двухбуквенный префикс (например, 'ЦУ', 'Ф1'), исключающий генерацию одинаковых номеров и кодов.

Частые вопросы (FAQ)

Что такое 'пинг-понг изменений' в планах обмена 1С?

Это ситуация, когда узел А регистрирует изменение объекта и отправляет в узел Б, а узел Б при загрузке перезаписывает объект и ошибочно регистрирует его на отправку обратно в узел А, зацикливая трафик.

Как отключить автоматическую регистрацию изменений при загрузке пакета?

Используйте конструкцию: ПланыОбмена.ВыбратьИзменения() с проверкой контекста загрузки или метод ОбменДанными.Загрузка = Истина перед вызовом Записать().

Где в Библиотеке Стандартных Подсистем (БСП) настраиваются правила коллизий?

В настройках конкретного узла обмена через форму 'Правила разрешения коллизий' (раздел Администрирование -> Синхронизация данных).

Как версионирование объектов помогает при анализе коллизий?

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

Полезные материалы
Рекомендуем