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