При работе в конфигурации Управление торговлей 10.3 пользователи иногда сталкиваются с ситуацией, когда при попытке создания нового контрагента система выдает критическую ошибку: Не удалось записать основной договор контрагента. Ошибка при вызове метода контекста (Записать): Не удалось записать: “Договоры контрагентов”!. Данная ошибка блокирует дальнейшую работу с карточкой контрагента, делая невозможным сохранение данных. Давайте разберем по шагам, как проанализировать эту ситуацию и устранить причины ее возникновения.
Прежде чем приступать к глубокому анализу кода, необходимо исключить очевидные факторы, которые часто приводят к подобным сбоям:
ДоговорыКонтрагентов.Журнал регистрации. Часто там содержится расширенное описание ошибки, например, указание на конкретное поле, которое не проходит проверку при записи объекта.В ходе практического анализа ситуации выяснилось, что одной из неочевидных причин возникновения данной ошибки является некорректная настройка Планов обмена, например, с 1С:Бухгалтерией. Если в конфигурации реализованы обмены, система при записи объекта проверяет правила регистрации изменений.
Порядок проверки настроек плана обмена:
План обмена, через который настроена синхронизация данных.ДоговорыКонтрагентов.Авторегистрация. Если в свойствах или в модуле плана обмена программно или через настройки состава снята возможность регистрации изменений для данного справочника, это может приводить к конфликтам при записи в транзакции.Если вышеперечисленные шаги не дали результата, необходимо использовать встроенный Отладчик. Разберем, как правильно подойти к анализу событий:
Контрагенты в процедуре ПередЗаписью или ПриЗаписи.Записать() для объекта «Договор». В УТ 10.3 часто срабатывает событие ПриЗаписи в самом справочнике ДоговорыКонтрагентов, где могут выполняться проверки на заполнение реквизитов, например, Владелец.Пример анализа вызова метода в коде:
// Пример фрагмента кода, который может вызывать ошибку записи
Попытка
ДоговорОбъект.Записать();
Исключение
// В блоке исключения важно вывести подробное сообщение об ошибке
Сообщить("Ошибка записи договора: " + ОписаниеОшибки());
КонецПопытки;
При поиске решения помните о следующих моментах:
УдалениеОбъектов без предварительного резервного копирования базы данных.1С часто существуют предопределенные элементы справочников. Попытка их удаления или некорректного изменения вызовет фатальную ошибку всей системы.Планов обмена может привести к полной остановке обмена данными. В таких случаях рекомендуем привлекать специалиста для отладки конкретных процедур обмена.Надеемся, данный разбор поможет вам локализовать проблему. Чаще всего решение кроется либо в пропущенном реквизите (Валюта, Вид договора), либо в конфликтах, возникающих из-за настроек обмена данными, которые блокируют запись объектов в транзакции.