Как исправить ошибку регистра «Корректные корреспонденции счетов» при обновлении 1С:БГУ?

Программист 1С v8.3 (Обычные формы) 1C:Бухгалтерия Бухгалтерский учет
← На главную

При обновлении конфигурации «Бухгалтерия государственного учреждения» (БГУ) редакции 1.0 многие специалисты сталкиваются с критической ошибкой, прерывающей процесс. Система выдает сообщение вида: «Ошибка при выполнении обработчика обновления... запись с такими ключевыми полями существует! Корректные корреспонденции Счетов 201.11 (Регистр сведений: Корректные корреспонденции счетов бухгалтерского учета номер строки X)». Тестирование и исправление базы, а также простая очистка регистра зачастую не приносят результатов. Давайте подробно разберем причины этой проблемы и рассмотрим эффективные способы ее решения.

Проанализируем суть и системные причины ошибки

Ошибка «Запись с такими ключевыми полями существует» при записи набора данных в регистр сведений означает, что алгоритм пытается добавить две или более строк с абсолютно одинаковыми измерениями. Но откуда берутся дубли, если разработчики фирмы «1С» поставляют корректные правила обновления?

Выясним причину: проблема кроется не в самом регистре проводок, а в Едином плане счетов бухгалтерского учета (ЕПСБУ) текущей информационной базы. Процедура обновления пытается записать новые правила бухгалтерских проводок для определенных системных счетов (например, 201.11, 205.11, 205.51, 302.66). Однако в базе эти счета либо физически отсутствуют, либо система считает их недействующими из-за некорректно заполненного реквизита ДатаНачала.

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

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

  1. Пользователи вручную удалили, пометили на удаление или переподчинили группы счетов в режиме «Предприятие».
  2. Была нарушена строгая последовательность установки обновлений. Перескакивание через ключевые релизы приводит к тому, что обработчики, создающие новые счета, просто не выполняются.
  3. Произошел системный сбой платформы, из-за которого разорвалась связь между объектом базы данных и объектом метаданных (ошибка «Предопределенный элемент отсутствует в данных»).

Рассмотрим методы решения проблемы

Посмотрим на практические способы восстановления структуры плана счетов и успешного завершения обновления БГУ.

Способ 1: Корректировка реквизита «Дата начала»

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

Если проблемных счетов немного (например, один счет 302.66), мы можем написать небольшую обработку для принудительного изменения реквизита. Создадим внешнюю обработку, добавим на форму поле ввода с именем Сч и типом значения ПланСчетовСсылка.ЕПСБУ, а также кнопку «Изменить».

В модуле формы пропишем следующий код:


Процедура ИзменитьНажатие(Элемент)
    Об = Сч.ПолучитьОбъект();
    Об.ДатаНачала = '20190101'; // Устанавливаем нужную дату начала
    Об.Записать();
КонецПроцедуры

Запускаем базу в режиме «Предприятие», открываем обработку, выбираем сбойный счет и нажимаем кнопку. После этого закрываем программу и повторяем попытку обновления в Конфигураторе.

Если таких счетов много, воспользуйтесь стандартной обработкой «Универсальный подбор и обработка объектов». С ее помощью можно отобрать все счета плана счетов ЕПСБУ и массово заполнить реквизит ДатаНачала (например, установив его на 01.01.1980), чтобы исключить конфликты дат при обновлении.

Способ 2: Восстановление предопределенных данных платформенными методами

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

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


УстановитьОбновлениеПредопределенныхДанныхИнформационнойБазы(ОбновлениеПредопределенныхДанных.Авто);

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

Способ 3: Соблюдение строгой цепочки релизов

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

Рассмотрим порядок правильного обновления:

  1. Разворачиваем архивную копию базы до момента возникновения ошибки.
  2. Внимательно изучаем сопроводительный файл 1cv8upd.htm к каждому нужному нам релизу. Там указано, с каких именно версий допускается установка текущего обновления.
  3. Проводим обновление строго по разрешенной цепочке релизов.
  4. Важнейшее правило: после каждого шага обновления в Конфигураторе обязательно запускаем базу в режиме «Предприятие» и дожидаемся окончания работы всех обработчиков обновления. Именно в этот момент создаются новые элементы плана счетов!

Способ 4: Загрузка справочника корректных корреспонденций из внешнего файла

Если структура счетов восстановлена, но регистр все равно ведет себя нестабильно, можно воспользоваться механизмом ручной загрузки. Фирма «1С» регулярно поставляет актуальный справочник проводок вместе с дистрибутивами обновлений (в виде файлов с расширением .mxl).

Алгоритм действий:

  1. Очищаем проблемный регистр сведений полностью (например, с помощью обработки «Удаление данных из регистров» или небольшого скрипта, создающего пустой набор записей).
  2. Завершаем обновление конфигурации (пустой регистр не вызовет дублей, если система позволит пропустить этап его автозаполнения).
  3. Заходим в пользовательский режим БГУ.
  4. Переходим в меню «Учет и отчетность» -> «Корректные корреспонденции счетов».
  5. Нажимаем кнопку Загрузить и выбираем .mxl файл из папки с установленным обновлением.

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

← На главную