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