Возможно необходимо переустановить компоненту или вспомогательные. Несоблюдение правил и методов программного контекста
Ошибки при использовании той или другой программы встречаются самого разного рода. Из них есть целая серия - которые возникают по нашей вине. Рассмотрим, как исправить ошибку при выводе метода контекста в 1С, возникающую в результате несоблюдения правил и методов контекста.
Понимание принципов функционирования метода контекста поможет избежать ошибок при работе в 1С.
Любой программный продукт архитектурно состоит из модулей (module, англ.), частей. и их местоположение показаны на рисунке:
Программные модули, в свою очередь, состоят из разделов:
Контекст (context, англ.) - это одно из важнейших понятий в программировании. В 1С под ним понимается окружение модуля и его разделов, - какие именно переменные, свойства, объекты, метод (method) и события могут быть ему доступны в каждой конкретной точке. В разных точках context, как правило, уже другой.
Разработчик (доработчик) должен понимать - какие контекстные свойства имеет точка и какой method является доступным для использования в ней.
В восьмёрке выделены контекстные виды:
Базовыми являются основные четыре правила для доступа процедур, переменных, и ф-ций в модулях:
- В общих модульных частях не будут доступными для экспорта переменные, процедуры и ф-ции модульных приложений;
- В модульных приложениях есть доступ для экспорта процедур и ф-ций общих модулей;
- Для общих мод. частей открыт доступ к экспорту процедур и ф-ций прочих общих модулей;
- Для модульных прикладных объектов и для модульных форм являются доступными переменные, функции и процедуры модулей приложений для экспорта и общих модулей.
Если какой-либо форме присвоен основной реквизит, то в контексте этой формы будут содержаться свойство и method, отвечающие этому основному реквизиту. К примеру, в модуле формы для элемента справочника Номенклатура доступен method и свойства объекта СправочникОбъект.Номенклатура.
Иллюстрация приведённых правил на схеме:
Стрелками обозначено что одной из модульных частей предоставляется возможность другим по обращению к своим переменным, функциям и процедурам для экспорта . Напоминаем, - в общем модуле не существует объявления переменных.
Несоблюдение правил и методов программного контекста
Все программисты встречались с уведомлением об ошибке 1С при вызове метода контекста. Рассмотрим такой пример:
Ошибки команд
При создании запроса в справочнике в его параметре «текст» был внесён фрагмент:
В конструкции «ГДЕ» было внесено «И», но само условие осталось непрописанным.
Реакция программы была такой:
{МОДСеанса(21)}: Ошибка при вызове метода контекста (Выполнить)
РезультатЗапроса = Запрос.Выполнить();
Как узнать правильный метод?
Для того чтобы получить подсказку платформы 1С о том, как использовать какой-либо method, поставьте курсор на нужную функцию и нажмите «Ctrl + F1». При возникновении ошибок нужно проверить параметры, которые передаются в функцию, а также правильность использования функции.
Что полезно знать об ошибках
Напоследок проведём общий анализ ошибок в 1С. Любая из них может быть причиной тех, которым посвящена тема статьи:
- Нарушение как логической, так физической целостности информационной базы;
- Ошибки пользователей при обращении с платформой;
- Ошибочно введённый разработчиком (доработчиком) код;
- Человеческий фактор - например, забывчивость;
- Чрезвычайные ситуации (отсутствие света, метель, дождь, град, ураган, наводнение).
Провести анализ ошибки:
- Сравнить релизы платформы и конфигурации;
- Прочитать полный текст сообщения до конца, некоторое время подумать и понять то, что написала машина. Очень часто люди не читают такие сообщения целиком. Но бывает, что именно в конце его содержатся рекомендации к её устранению;
- Проанализировать насколько давней она является и обстоятельства её появления;
- Можно ли её воспроизвести;
- Невоспроизводимые ранее не встречавшиеся ошибки, как правило, не исправляются;
- Повторяется ли ошибка с другого компьютера или другим пользователем. В этом случае рассмотреть очистку кэша, настройку прав, очистку пользовательских настроек.
Дополнительно о причинах ошибок:
- Часть ошибок - это результат использования нелицензионного программного обеспечения (и windows тоже);
- Повреждённая платформа - это самый распространённый пример. Всего один патч способен взломать версию платформы. После чего можно не обнаружить базу (или лицензию);
- При первичном столкновении с ошибкой стоит поискать решение в поисковике - возможно решение её уже кем-то найдено;
- Следите за актуальностью релиза конфигурации (особенно если из них сдаётся регламентированная отчётность);
- Актуальность релиза платформы - для каждой конфигурации рекомендован свой релиз;
Все события, происходящие в 1С, протоколируются в технологическом журнале! - Перед началом каких-то действий с базой необходимо делать архивную копию!
Теперь вы знаете что такое context, почему возникают связанные с ним ошибки, как анализировать ошибки в 1С и как их решать.
Оставляйте в комментариях свои отзывы.
Столкнулся с такой ошибкой, при выводе информации на печатную форму, платформа выдает следующее сообщение:
Ошибка при вызове метода контекста (ПроверитьВывод)...
ПроверитьВывод() - это метод табличного документа, который проверяет, умещаются ли переданные табличные документы на страницу при печати. В примечании у этого метода разработчики платформы 1С сразу написали, что при возникновении проблем с получением информации о текущем принтере (например, в системе не установлено ни одного принтера), будет вызвано исключение.
Проверил установленные принтеры, все исправно и работает. Эмпирическим путем выяснил, что данная ошибка возникает только у конкретной печатной формы и только под одним пользователем.
Ошибка решилась следующими действиями (выполнять под пользователем, у которого возникла ошибка):
1) Создал пустой документ, что бы при формировании печатной формы не был задействован метод ПроверитьВывод(). Если же этот метод в любом случае вызывается, то придется его найти в конфигурации и закомментировать, или же поместить в конструкцию Попытка-Исключение-КонецПопытки
.
3) Для текущей печатной формы открыл параметры страницы и установил правильные параметры.
3. Параметры страницы |
Что бы данная ошибка не возникала из-за неправильных параметров страницы, свойство КлючПараметровПечати следует устанавливать не в начале процедуры вывода на печать, а в конце, так как при установке данного свойства параметры печати тут же восстанавливаются.
UPD 04/10/2015: Если устанавливать свойство КлючПараметровПечати в конце формирования табличного документа, то метод ПроверитьВывод будет использовать параметры печати установленные по-умолчанию, а не пользовательские. Что бы избежать данной ситуации, необходимо устанавливать свойство КлючПараметровСистемы в начале формирования табличного документа, а метод ПроверитьВывод поместить в конструкцию Попытка-Исключение-КонецПопытки.
Любой программист 1С встречался с таким сообщением, как «Ошибка при вызове метода контекста (Выполнить)». Обычно эта ошибка не вызывает затруднения у опытного программиста. Почему она возникает? Рассмотрим ниже.
Как в любом языке программирования, в платформе 1С есть предопределенные методы, которые облегчают жизнь разработчикам. Но выполнение этих команд требует правильного соблюдения синтаксиса языка программирования.
Самые распространенные ошибки при вызове типовых методов:
- Записать
- Создать
- Подключиться
- Connect
- ПроверитьВывод
- PreviewFile1C
- Прочитать
- Выполнить
- ВыполнитьПакет
- ПрочитатьИзменения
Рассмотрим пример. Мы программно создали запрос (), передав в параметры «текст» вот такой фрагмент:
Получите 267 видеоуроков по 1С бесплатно:
В конструкции «ГДЕ» мы преднамеренно ошиблись, поставив «И», но не прописав еще одно условие. Совершенно логично, что 1С не сможет справиться с таким запросом и выдаст ошибку:
{МодульСеанса(21)}: Ошибка при вызове метода контекста (Выполнить)
по причине:
И <>>
Рассмотрим еще один пример:
Перенесем ошибочный код в обработчик «ПередЗаписью» «Версии программ» и попробуем записать справочник программно. Видим ошибку:
{МодульСеанса(8)}: Ошибка при вызове метода контекста (Записать)
Выборка.ПолучитьОбъект().Записать();
по причине:
Ошибка при выполнении обработчика — ‘ПередЗаписью’
по причине:
{Справочник.ВерсииПрограмм.МодульОбъекта(20)}: Ошибка при вызове метода контекста (Выполнить)
РезультатЗапроса = Запрос.Выполнить();
по причине:
{(13, 4)}: Синтаксическая ошибка
И <>>
Несмотря на то, что ошибка заключается в выполнения метода «Выполнить», система ругается и на строчку кода, где вызывается программная запись объекта.
Решение проблемы
Для решения проблемы достаточно понять, в чем именно заключается ошибка. В 99% случаев проблема решается банальным чтением справки и анализом проблемы.
Для того чтобы узнать, как пользоваться тем или иным методом, достаточно установить курсор на интересующей Вас функции и нажать «Ctrl + F1». Платформа 1С выдаст Вам контекстную подсказку по требуемому методу:
Проверьте параметры, передаваемые в функцию, и правильность её использования.