Как исправить ошибку «Метод объекта не обнаружен (Свойство)» при переходе с 1С:Бухгалтерии 2.0 на 3.0?

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

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

ОбщийМодуль.УчетНДФЛКлиентСервер.Модуль(42)}: Метод объекта не обнаружен (Свойство)

Код, на котором происходит сбой, выглядит следующим образом:


Если ИмяПоляСправки <> Неопределено И ДанныеСправки <> Неопределено И ДанныеСправки.Свойство(ИмяПоляСправки) Тогда
    ДанныеСправки[ИмяПоляСправки] = Значение;
КонецЕсли;

Разберем причины возникновения этой проблемы и проанализируем проверенные способы ее решения.

Выясняем причину возникновения ошибки

Проблема зарегистрирована фирмой «1С» под кодом 30152256. Ошибка возникает в процессе выполнения обработчиков обновления информационной базы при переходе с редакции 2.0, если в исходной базе присутствуют документы Справка 2-НДФЛ для передачи в ИФНС (с 2015 года).

С технической точки зрения в функцию СправкиНДФЛУстановитьЗначениеПоляИтоговПоСтавке в качестве параметра ДанныеСправки передается объект типа Соответствие или иной тип данных, у которого отсутствует метод Свойство() (данный метод предназначен исключительно для объектов типа Структура). Попытка обращения к несуществующему методу приводит к остановке работы алгоритма обновления.

Способ 1. Обновление на исправленный релиз (3.0.47 или выше)

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

  1. Проверим текущий релиз конфигурации редакции 2.0 (например, 2.0.66.6 или более новый).
  2. Скачаем релиз редакции 3.0 не ниже 3.0.47 (или 3.0.46.16 при наличии соответствующих исправлений).
  3. Убедимся, что используемая версия платформы 1С:Предприятие 8.3 соответствует требованиям выбранного релиза.
  4. Выполним обновление стандартным образом. Ошибка с документами 2-НДФЛ в релизах начиная с 3.0.47 выходить больше не будет.

Способ 2. Проверка ролей и прав пользователя 1С

Немаловажным фактором при миграции между редакциями является наличие специализированных прав у пользователя, под которым запускается процедура конвертации данных.

Разберем по шагам порядок настройки прав:

  1. Откроем информационную базу в режиме Конфигуратор.
  2. Перейдем в меню Администрирование — Пользователи.
  3. Выберем учетную запись, под которой выполняется переход, и откроем ее свойства.
  4. На закладке Прочие найдем и установим флаг напротив роли Администратор системы (для перехода на ред. 3.0).
  5. Сохраним изменения и повторно запустим сеанс в режиме «Предприятие».

Способ 3. Использование специального дистрибутива перехода

Частой ошибкой при переходе с 2.0 на 3.0 является применение обычного файла обновления 1cv8.cfu вместо специального дистрибутива конвертации.

Рассмотрим разницу:

  1. При обновлении через обычный файл cfu выполняются стандартные обработчики обновления, которые не всегда корректно преобразуют структуру старых документов.
  2. Для правильного перехода на портале 1С необходимо скачивать архив с наименованием «Дистрибутив обновления для перехода с редакции 2.0». В нем содержится специализированный файл с именем вида 1cv8_20.cfu.
  3. В конфигураторе при выборе файла обновления укажем путь именно к этому файлу.

Способ 4. Корректировка кода модуля (для базовых или доработанных баз)

Если необходимо срочно завершить переход на текущем релизе без ожидания скачивания новых дистрибутивов, можно временно скорректировать процедуру в общем модуле УчетНДФЛКлиентСервер.

Проанализируем изменения в коде процедуры СправкиНДФЛУстановитьЗначениеПоляИтоговПоСтавке:

В проблемном релизе 3.0.46 исходный код выглядит так:


Процедура СправкиНДФЛУстановитьЗначениеПоляИтоговПоСтавке(ДанныеСправки, Ставка, ИмяПоля, Значение) Экспорт
    ИмяПоляСправки = УчетНДФЛКлиентСервер.СправкиНДФЛИмяПоляИтоговПоСтавке(ИмяПоля, Ставка);
    Если ИмяПоляСправки <> Неопределено И ДанныеСправки <> Неопределено И ДанныеСправки.Свойство(ИмяПоляСправки) Тогда
        ДанныеСправки[ИмяПоляСправки] = Значение;
    КонецЕсли;
КонецПроцедуры

Чтобы избежать ошибки обращения к методу Свойство(), временно изменим условие (уберем вызов метода или добавим проверку типа):


Процедура СправкиНДФЛУстановитьЗначениеПоляИтоговПоСтавке(ДанныеСправки, Ставка, ИмяПоля, Значение) Экспорт
    ИмяПоляСправки = УчетНДФЛКлиентСервер.СправкиНДФЛИмяПоляИтоговПоСтавке(ИмяПоля, Ставка);
    Если ИмяПоляСправки <> Неопределено И ДанныеСправки <> Неопределено Тогда
        ДанныеСправки[ИмяПоляСправки] = Значение;
    КонецЕсли;
КонецПроцедуры

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

Рекомендации по подготовке базы к переходу

Чтобы исключить сопутствующие сбои (например, сообщение «Конфигурация базы данных не соответствует сохраненной конфигурации» или ошибки реструктуризации), рекомендуется выполнить следующие действия:

  1. Создать резервную копию: выгрузить информационную базу в файл .dt перед началом любых манипуляций.
  2. Провести тестирование и исправление: в режиме Конфигуратор запустить процедуру Администрирование — Тестирование и исправление с включенными флагами проверки ссылочной и логической целостности.
  3. Очистить кэш платформы: перед первым запуском обновленной базы в режиме «Предприятие» удалить временные файлы платформы из папок AppData\Local\1C\1Cv83 и AppData\Roaming\1C\1Cv83.
← На главную