Ошибка при вызове метода контекста

Ошибка при вызове метода контекста (Connect): Произошла исключительная ситуация (V83.COMConnector.1): Версия компоненты ‘comcntr’ отличается от версии корневого модуля ‘core83’

Часто бывает, что при настроенной синхронизации после обновления платформы появляется ошибка «Произошла исключительная ситуация (V83.COMConnector.1): Версия компоненты ‘comcntr’ отличается от версии корневого модуля ‘core83′». Так происходит потому, что автоматически не зарегистрировалась компонента comcntr.dll из-за проблем с правами пользователя на компьютере.

Решить данную проблему можно двумя способами.

Способ №1.

Переустановить платформу под правами Администратора или под пользователем, у которого есть такие права.

Способ №2.

Если не получилось как в способе №1, то можно вручную зарегистрировать самому эту компоненту.

Перед этим нам необходимо изменить Параметры контроль учетной записи.

Для Windows 7 нам необходимо зайти в Пуск затем в Панель управления.

Для Windows 10 нам необходимо в левом нижнем углу панели задач в строке поиска набрать Панель управления и перейти по открывшейся ссылке.

В правом верхнем углу Панели управления выбрать Просмотр-Мелкие значки и затем в списке перейти в Учетные записи пользователей.

Там выбрать Изменить параметры контроля учетных записей.


Затем поставить ползунок в самом нижнем положении.

И перезапустить компьютер.

После перезагрузки необходимо:

Для Windows 7 надо перейти в Пуск, затем в строке поиска ввести cmd.exe,нам покажет что найдена Командная строка и, щелкнув по ней правой клавишей мыши, выбрать «Запуск от имени администратора».

Для Windows 10 нам необходимо в левом нижнем углу панели задач в строке поиска набрать Командная панель или cmd.exe и, щелкнув по ней правой клавишей мыши, выбрать «Запуск от имени администратора».

У нас откроется Командная строка, где нам необходимо ввести команду:

1.Для платформы x86

2.Для платформы х64

Затем нажать клавишу Enter.

Если все сделали правильно, то увидите вот такое окно.

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

Полный текст ошибки

ОбщийМодуль.ДанныеЕдиныхГосРеестров.Модуль(181)}: Ошибка при вызове метода контекста (getCorporationRequisitesByNameAndAddress)
Ответ = Прокси.getCorporationRequisitesByNameAndAddress(ВходныеПараметры);
по причине:
При вызове веб-сервиса произошла ошибка. Ошибка вызова операции сервиса: { http://ws.orgregister.company1c.com/}…dAddress()
по причине:
При вызове веб-сервиса произошла ошибка. Неизвестная ошибка. Ошибка преобразования данных XDTO:
Чтение объекта типа: { http://company1c.com/orgregister/corp…on}СвОКВЭД;-
Проверка дополнительного свойства:
форма: Атрибут
имя: ПрВерсОКВЭД
по причине:
Ошибка преобразования данных XDTO:
Чтение объекта типа: { http://company1c.com/orgregister/corp…on}СвОКВЭД;-
Проверка дополнительного свойства:
форма: Атрибут
имя: ПрВерсОКВЭД
по причине:
Ошибка проверки данных XDTO:
Структура объекта не соответствует типу: { http://company1c.com/orgregister/corp…on}СвОКВЭД

Для устранения ошибки необходимо выполнить следующие действия:

Администратор сервиса в неразделенном сеансе должен открыть список регистра сведений «Кэш программных интерфейсов» (Главное меню → Все функции → Регистры сведений → Кэш программных интерфейсов). В открывшемся списке необходимо найти и удалить запись со значением в колонке Идентификатор https://api.orgregister.1c.ru/orgregister/v7?wsdl.
После этого пользователи, у которых возникала ошибка при заполнении реквизитов, должны выйти из программы и войти снова.

В платформе 1С сообщения об ошибках бывают достаточно запутаны, и без должных навыков разобраться в причинах достаточно сложно. Вот и сообщение об ошибке при вызове контекста может ввести в ступор начинающего разработчика. Однако в подавляющем большинстве случаев мы видим подобное сообщение, если разработчик допустил ошибку в своем коде. Причем речь зачастую идет не об орфографических ошибках, а о логических.

Исправляем ситуацию

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

Рассмотрим действия разработчика на примере со специально допущенной ошибкой. Мы запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора. Компилятор 1С пропускает такую процедуру, так как орфографических ошибок в написании команд мы не допустили. Однако в режиме предприятия нас ждет такое сообщение об ошибке:

Запрос = Новый Запрос; Запрос.Текст = «ВЫБРАТЬ | Номенклатура.Ссылка КАК Ссылка, | Номенклатура.ВерсияДанных КАК ВерсияДанных, | Номенклатура.ПометкаУдаления КАК ПометкаУдаления, | Номенклатура.Родитель КАК Родитель, | Номенклатура.ЭтоГруппа КАК ЭтоГруппа, | Номенклатура.Код КАК Код, | Номенклатура.Наименование КАК Наименование, | Номенклатура.Артикул КАК Артикул, | Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения, | Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры, | Номенклатура.Предопределенный КАК Предопределенный, | Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | «; РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл КонецЦикла;

Рис.1 Запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора

Приведенный текст ошибки программисту 1С скажет, что в модуле формы обработки «ЧтениеЗаписьXML на 152 строчке кода не может выполниться запрос. Причина в том, что на 17 строчке запроса нет чего-то, что ждал компилятор. Таким образом, чтобы убрать подобное сообщение, необходимо выяснить, что там должно быть и написать недостающий код.

Увидев вышеприведенный кусок кода, разработчик заметит, что в запросе есть служебное слово «ГДЕ», дающее сигнал 1С, что дальше будет условие. Но мы забыли дописать его и, естественно, система с помощью сообщения об ошибке спрашивает нас – «а где условие?». Чтобы исправить эту ситуацию необходимо либо убрать оператор «ГДЕ» из запроса, либо добавить условие.

Но ошибки могут быть не только в текстах запросов. Допустим, мы хотим выбрать всю номенклатуру и узнать, входит ли она в определенную группу. Проверка происходит с помощью метода «ПринадлежитЭлементу» и его параметра, который должен быть типа СправочникСсылка. Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной.

Запрос = Новый Запрос; Запрос.Текст = «ВЫБРАТЬ | Номенклатура.Ссылка КАК Ссылка, | Номенклатура.ВерсияДанных КАК ВерсияДанных, | Номенклатура.ПометкаУдаления КАК ПометкаУдаления, | Номенклатура.Родитель КАК Родитель, | Номенклатура.ЭтоГруппа КАК ЭтоГруппа, | Номенклатура.Код КАК Код, | Номенклатура.Наименование КАК Наименование, | Номенклатура.Артикул КАК Артикул, | Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения, | Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры, | Номенклатура.Предопределенный КАК Предопределенный, | Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | НЕ Номенклатура.ЭтоГруппа «; НужнаяГруппаЭлементов = Справочники.Номенклатура.НайтиПоНаименованию(«Мебель»); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Сообщить(ВыборкаДетальныеЗаписи.Ссылка.ПринадлежитЭлементу(«НужнаяГруппаЭлементов»)); КонецЦикла;

Рис.2 Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной

1С выдает настолько же информативное сообщение, из которого мы понимаем, что на 158 строке у 1 параметра неправильный тип. Но что же делать, если мы не знаем, какой тип должен быть? В этом нам поможет Синтакс-помощник, встроенный в платформу 1С.

Рис.3 Синтакс-помощник

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

Рис.4 Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает

Чаще всего причиной подобных ошибок выступают следующие факторы:

  1. Невнимательность;
  2. Отсутствие опыта или знаний;
  3. Несогласованность действий разработчиков друг с другом;
  4. Изменения в методах контекста в новых версиях платформы.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *