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

Любой программист 1С встречался с таким сообщением, как «Ошибка при вызове метода контекста (Выполнить)». Обычно эта ошибка не вызывает затруднения у опытного программиста. Почему она возникает? Рассмотрим ниже.

Как в любом языке программирования, в платформе 1С есть предопределенные методы, которые облегчают жизнь разработчикам. Но выполнение этих команд требует правильного соблюдения синтаксиса языка программирования.

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

  • Записать
  • Создать
  • Подключиться
  • Connect
  • ПроверитьВывод
  • PreviewFile1C
  • Прочитать
  • Выполнить
  • ВыполнитьПакет
  • ПрочитатьИзменения

Рассмотрим пример. Мы программно создали запрос (справочник по запросам), передав в параметры «текст» вот такой фрагмент:

Получите 267 видеоуроков по 1С бесплатно:

В конструкции «ГДЕ» мы преднамеренно ошиблись, поставив «И», но не прописав еще одно условие. Совершенно логично, что 1С не сможет справиться с таким запросом и выдаст ошибку:

<МодульСеанса(21)>: Ошибка при вызове метода контекста (Выполнить)
РезультатЗапроса = Запрос.Выполнить();
по причине:
<(13, 4)>: Синтаксическая ошибка
И >

Рассмотрим еще один пример:

Перенесем ошибочный код в обработчик «ПередЗаписью» справочника «Версии программ» и попробуем записать справочник программно. Видим ошибку:

<МодульСеанса(8)>: Ошибка при вызове метода контекста (Записать)
Выборка.ПолучитьОбъект().Записать();
по причине:
Ошибка при выполнении обработчика — ‘ПередЗаписью’
по причине:
<Справочник.ВерсииПрограмм.МодульОбъекта(20)>: Ошибка при вызове метода контекста (Выполнить)
РезультатЗапроса = Запрос.Выполнить();
по причине:
<(13, 4)>: Синтаксическая ошибка
И >

Несмотря на то, что ошибка заключается в выполнения метода «Выполнить», система ругается и на строчку кода, где вызывается программная запись объекта.

Решение проблемы

Для решения проблемы достаточно понять, в чем именно заключается ошибка. В 99% случаев проблема решается банальным чтением справки и анализом проблемы.

Для того чтобы узнать, как пользоваться тем или иным методом, достаточно установить курсор на интересующей Вас функции и нажать «Ctrl + F1». Платформа 1С выдаст Вам контекстную подсказку по требуемому методу:

Проверьте параметры, передаваемые в функцию, и правильность её использования.

Другие статьи по 1С:

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

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

Читайте также:  Формат msi как открыть

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

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

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

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

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

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

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

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

Читайте также:  Что значит sqrt в паскале

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

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

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

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

Понимание принципов функционирования метода контекста поможет избежать ошибок при работе в 1С.

Контекстные правила и методы

Любой программный продукт архитектурно состоит из модулей (module, англ.), частей. Модульные части программы 1С и их местоположение показаны на рисунке:

Программные модули, в свою очередь, состоят из разделов:

Контекст (context, англ.) — это одно из важнейших понятий в программировании. В 1С под ним понимается окружение модуля и его разделов, — какие именно переменные, свойства, объекты, метод (method) и события могут быть ему доступны в каждой конкретной точке. В разных точках context, как правило, уже другой.

Разработчик (доработчик) должен понимать — какие контекстные свойства имеет точка и какой method является доступным для использования в ней.

В восьмёрке выделены контекстные виды:

  • В любой точке конфигурации доступен Глобальный context. Отдельная ветка синтаксис-помощника показывает доступные для вызова функции:
  • Локальный context (более низкого уровня) доступен в точках каждой модульной части;
  • Ещё ниже уровень — локальный context процедуры и так далее.

Базовыми являются основные четыре правила для доступа процедур, переменных, и ф-ций в модулях:

  • В общих модульных частях не будут доступными для экспорта переменные, процедуры и ф-ции модульных приложений;
  • В модульных приложениях есть доступ для экспорта процедур и ф-ций общих модулей;
  • Для общих мод. частей открыт доступ к экспорту процедур и ф-ций прочих общих модулей;
  • Для модульных прикладных объектов и для модульных форм являются доступными переменные, функции и процедуры модулей приложений для экспорта и общих модулей.

Если какой-либо форме присвоен основной реквизит, то в контексте этой формы будут содержаться свойство и method, отвечающие этому основному реквизиту. К примеру, в модуле формы для элемента справочника Номенклатура доступен method и свойства объекта СправочникОбъект.Номенклатура.

Иллюстрация приведённых правил на схеме:

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

Читайте также:  Как правильно снимать видео на фотоаппарат

Несоблюдение правил и методов программного контекста

Все программисты встречались с уведомлением об ошибке 1С при вызове метода контекста. Рассмотрим такой пример:

Ошибки команд

При создании запроса в справочнике в его параметре «текст» был внесён фрагмент:

В конструкции «ГДЕ» было внесено «И», но само условие осталось непрописанным.

Реакция программы была такой:

<МОДСеанса(21)>: Ошибка при вызове метода контекста (Выполнить)
РезультатЗапроса = Запрос.Выполнить();

Как узнать правильный метод?

Для того чтобы получить подсказку платформы 1С о том, как использовать какой-либо method, поставьте курсор на нужную функцию и нажмите «Ctrl + F1». При возникновении ошибок нужно проверить параметры, которые передаются в функцию, а также правильность использования функции.

Что полезно знать об ошибках

Напоследок проведём общий анализ ошибок в 1С. Любая из них может быть причиной тех, которым посвящена тема статьи:

  • Нарушение как логической, так физической целостности информационной базы;
  • Ошибки пользователей при обращении с платформой;
  • Ошибочно введённый разработчиком (доработчиком) код;
  • Человеческий фактор — например, забывчивость;
  • Чрезвычайные ситуации (отсутствие света, метель, дождь, град, ураган, наводнение).

Провести анализ ошибки:

  • Сравнить релизы платформы и конфигурации;
  • Прочитать полный текст сообщения до конца, некоторое время подумать и понять то, что написала машина. Очень часто люди не читают такие сообщения целиком. Но бывает, что именно в конце его содержатся рекомендации к её устранению;
  • Проанализировать насколько давней она является и обстоятельства её появления;
  • Можно ли её воспроизвести;
  • Невоспроизводимые ранее не встречавшиеся ошибки, как правило, не исправляются;
  • Повторяется ли ошибка с другого компьютера или другим пользователем. В этом случае рассмотреть очистку кэша, настройку прав, очистку пользовательских настроек.

Дополнительно о причинах ошибок:

  • Часть ошибок — это результат использования нелицензионного программного обеспечения (и windows тоже);
  • Повреждённая платформа — это самый распространённый пример. Всего один патч способен взломать версию платформы. После чего можно не обнаружить базу (или лицензию);
  • При первичном столкновении с ошибкой стоит поискать решение в поисковике — возможно решение её уже кем-то найдено;
  • Следите за актуальностью релиза конфигурации (особенно если из них сдаётся регламентированная отчётность);
  • Актуальность релиза платформы — для каждой конфигурации рекомендован свой релиз;
    Все события, происходящие в 1С, протоколируются в технологическом журнале!
  • Перед началом каких-то действий с базой необходимо делать архивную копию!

Теперь вы знаете что такое context, почему возникают связанные с ним ошибки, как анализировать ошибки в 1С и как их решать.