При осуществлении перехода с конфигурации «Бухгалтерия предприятия» редакции 2.0 на редакцию 3.0 в момент запуска программы в режиме «Предприятие» может возникнуть критическая ошибка. В окне сообщения выводится следующий текст:
ОбщийМодуль.УчетНДФЛКлиентСервер.Модуль(42)}: Метод объекта не обнаружен (Свойство)
Код, на котором происходит сбой, выглядит следующим образом:
Если ИмяПоляСправки <> Неопределено И ДанныеСправки <> Неопределено И ДанныеСправки.Свойство(ИмяПоляСправки) Тогда
ДанныеСправки[ИмяПоляСправки] = Значение;
КонецЕсли;
Разберем причины возникновения этой проблемы и проанализируем проверенные способы ее решения.
Проблема зарегистрирована фирмой «1С» под кодом 30152256. Ошибка возникает в процессе выполнения обработчиков обновления информационной базы при переходе с редакции 2.0, если в исходной базе присутствуют документы Справка 2-НДФЛ для передачи в ИФНС (с 2015 года).
С технической точки зрения в функцию СправкиНДФЛУстановитьЗначениеПоляИтоговПоСтавке в качестве параметра ДанныеСправки передается объект типа Соответствие или иной тип данных, у которого отсутствует метод Свойство() (данный метод предназначен исключительно для объектов типа Структура). Попытка обращения к несуществующему методу приводит к остановке работы алгоритма обновления.
Самый правильный и надежный способ — проводить миграцию на релиз, в котором баг официально устранен разработчиками.
2.0.66.6 или более новый).1С:Предприятие 8.3 соответствует требованиям выбранного релиза.Немаловажным фактором при миграции между редакциями является наличие специализированных прав у пользователя, под которым запускается процедура конвертации данных.
Разберем по шагам порядок настройки прав:
Конфигуратор.Частой ошибкой при переходе с 2.0 на 3.0 является применение обычного файла обновления 1cv8.cfu вместо специального дистрибутива конвертации.
Рассмотрим разницу:
cfu выполняются стандартные обработчики обновления, которые не всегда корректно преобразуют структуру старых документов.1cv8_20.cfu.Если необходимо срочно завершить переход на текущем релизе без ожидания скачивания новых дистрибутивов, можно временно скорректировать процедуру в общем модуле УчетНДФЛКлиентСервер.
Проанализируем изменения в коде процедуры СправкиНДФЛУстановитьЗначениеПоляИтоговПоСтавке:
В проблемном релизе 3.0.46 исходный код выглядит так:
Процедура СправкиНДФЛУстановитьЗначениеПоляИтоговПоСтавке(ДанныеСправки, Ставка, ИмяПоля, Значение) Экспорт
ИмяПоляСправки = УчетНДФЛКлиентСервер.СправкиНДФЛИмяПоляИтоговПоСтавке(ИмяПоля, Ставка);
Если ИмяПоляСправки <> Неопределено И ДанныеСправки <> Неопределено И ДанныеСправки.Свойство(ИмяПоляСправки) Тогда
ДанныеСправки[ИмяПоляСправки] = Значение;
КонецЕсли;
КонецПроцедуры
Чтобы избежать ошибки обращения к методу Свойство(), временно изменим условие (уберем вызов метода или добавим проверку типа):
Процедура СправкиНДФЛУстановитьЗначениеПоляИтоговПоСтавке(ДанныеСправки, Ставка, ИмяПоля, Значение) Экспорт
ИмяПоляСправки = УчетНДФЛКлиентСервер.СправкиНДФЛИмяПоляИтоговПоСтавке(ИмяПоля, Ставка);
Если ИмяПоляСправки <> Неопределено И ДанныеСправки <> Неопределено Тогда
ДанныеСправки[ИмяПоляСправки] = Значение;
КонецЕсли;
КонецПроцедуры
После успешного завершения обновления информационной базы и запуска в режиме «Предприятие» конфигурацию следует вернуть на типовую поддержку.
Чтобы исключить сопутствующие сбои (например, сообщение «Конфигурация базы данных не соответствует сохраненной конфигурации» или ошибки реструктуризации), рекомендуется выполнить следующие действия:
.dt перед началом любых манипуляций.Конфигуратор запустить процедуру Администрирование — Тестирование и исправление с включенными флагами проверки ссылочной и логической целостности.AppData\Local\1C\1Cv83 и AppData\Roaming\1C\1Cv83.