При обновлении конфигурации «Бухгалтерия государственного учреждения» (БГУ) редакции 1.0 многие специалисты сталкиваются с критической ошибкой, прерывающей процесс. Система выдает сообщение вида: «Ошибка при выполнении обработчика обновления... запись с такими ключевыми полями существует! Корректные корреспонденции Счетов 201.11 (Регистр сведений: Корректные корреспонденции счетов бухгалтерского учета номер строки X)». Тестирование и исправление базы, а также простая очистка регистра зачастую не приносят результатов. Давайте подробно разберем причины этой проблемы и рассмотрим эффективные способы ее решения.
Ошибка «Запись с такими ключевыми полями существует» при записи набора данных в регистр сведений означает, что алгоритм пытается добавить две или более строк с абсолютно одинаковыми измерениями. Но откуда берутся дубли, если разработчики фирмы «1С» поставляют корректные правила обновления?
Выясним причину: проблема кроется не в самом регистре проводок, а в Едином плане счетов бухгалтерского учета (ЕПСБУ) текущей информационной базы. Процедура обновления пытается записать новые правила бухгалтерских проводок для определенных системных счетов (например, 201.11, 205.11, 205.51, 302.66). Однако в базе эти счета либо физически отсутствуют, либо система считает их недействующими из-за некорректно заполненного реквизита ДатаНачала.
Когда алгоритм обновления обращается к несуществующему или «неактивному» счету, платформа подставляет в измерение регистра пустую ссылку. Таким образом, несколько разных проводок пытаются записаться с пустым счетом в ключевом поле. Платформа логично диагностирует дублирование ключевых полей и останавливает обновление базы.
Проблемные счета обычно являются предопределенными элементами. Их исчезновение из пользовательского режима связано со следующими факторами:
Посмотрим на практические способы восстановления структуры плана счетов и успешного завершения обновления БГУ.
Часто нужный счет в плане счетов физически присутствует, но в ходе прошлых манипуляций у него сбилась дата начала действия. В результате при обновлении система пишет, что счет с нужной датой не найден. Разберем по шагам, как это исправить программно.
Если проблемных счетов немного (например, один счет 302.66), мы можем написать небольшую обработку для принудительного изменения реквизита. Создадим внешнюю обработку, добавим на форму поле ввода с именем Сч и типом значения ПланСчетовСсылка.ЕПСБУ, а также кнопку «Изменить».
В модуле формы пропишем следующий код:
Процедура ИзменитьНажатие(Элемент)
Об = Сч.ПолучитьОбъект();
Об.ДатаНачала = '20190101'; // Устанавливаем нужную дату начала
Об.Записать();
КонецПроцедуры
Запускаем базу в режиме «Предприятие», открываем обработку, выбираем сбойный счет и нажимаем кнопку. После этого закрываем программу и повторяем попытку обновления в Конфигураторе.
Если таких счетов много, воспользуйтесь стандартной обработкой «Универсальный подбор и обработка объектов». С ее помощью можно отобрать все счета плана счетов ЕПСБУ и массово заполнить реквизит ДатаНачала (например, установив его на 01.01.1980), чтобы исключить конфликты дат при обновлении.
Если счета присутствуют в Конфигураторе (отмечены желтой точкой), но их нет в режиме Предприятия, просто создать их руками недостаточно — система не распознает их как системные элементы. В таком случае нам потребуется принудительно обновить предопределенные данные.
Откроем консоль кода или создадим простую внешнюю обработку, которую нужно выполнить перед запуском процесса обновления. Используем специальный метод платформы:
УстановитьОбновлениеПредопределенныхДанныхИнформационнойБазы(ОбновлениеПредопределенныхДанных.Авто);
После выполнения этого кода необходимо перезапустить информационную базу. Платформа проанализирует метаданные и автоматически пересоздаст отсутствующие предопределенные счета в пользовательском режиме. После этого обновление должно пройти без ошибок дублирования ключей.
Если база серьезно повреждена из-за "перепрыгивания" версий конфигурации, наиболее надежным путем будет возврат к резервной копии (которую мы всегда делаем перед началом работ).
Рассмотрим порядок правильного обновления:
1cv8upd.htm к каждому нужному нам релизу. Там указано, с каких именно версий допускается установка текущего обновления.Если структура счетов восстановлена, но регистр все равно ведет себя нестабильно, можно воспользоваться механизмом ручной загрузки. Фирма «1С» регулярно поставляет актуальный справочник проводок вместе с дистрибутивами обновлений (в виде файлов с расширением .mxl).
Алгоритм действий:
.mxl файл из папки с установленным обновлением.Применяя описанные методы, вы сможете быстро диагностировать причину ошибки в регистре корреспонденций, восстановить целостность плана счетов и успешно перевести вашу конфигурацию на новый релиз.