Ошибка при вызове метода контекста в 1с что значит
(44) Сейчас отлаживаю эту процедуру, по нажатию кнопке. Ошибки в ней.
Вот. Все работает. Но иногда идет эта ошибка и все, на таких же данны!
вангую, есть попытка в функции РазложитьСтрокуВМассивПодстрок()(48) я так и останавливаюсь на строке 2000 с лишним
(51)(52) Да можно многого добавить, но я же смотрю в отладчике, в функцию передаются верные данные, а идет ошибка.
Добавлю конечно проверки.
(54) Даже для пустой базы? Я туда ни разу ещё не загрузил эти элементы номенклатуры.
(55) не знаю. у меня правило, если происходит неведомая херня, нужно сначала делать это, а потом только лезть за бубном
(57) ну тогда вперед к админам за снастью если своей нет и вызывать помощника.
Кэш почищу сейчас догрузится.
Стоит галка останавливаться по ошибке.
Ошибка видимо возникает при записи элемента.
Я смотрю что там в нем, вижу проблему в единицах измерения и родителе.
Но из за чего не пойму.
(61) платформенная проверка какая то.
Сделай обменДанными.загрузка = истина.
Потом глазами увидишь
Стоит галка при отладке останавливаться по ошибке. Вот на ней и вылетает.
У тебя ошибка не в найти по наименованию, а некорректная обработка исключения ранее
Или ошибка заполнения обязательных на уровне платформы полей: наименование, владелец (если справочник подчинённый) и тд
(71) У меня же нет попытки исключения?
Да ранее я вижу что в родителе и единицах измерения.
Но туда идут нормальные данные. Буду разбираться.
Видимо энергия ушла.
(72) Единицу измерения обязательно заполнять, выдавать ошибку стоит.
(74) технически это отказ=истина в процедуре ПроверкаЗаполнения, но не исключение
сейчас вот с этим буду бороться что это пока не знаю
(83) в общем пройдись по справочнику номенклатуры где-то есть одинаковое наименование у элемента и группы. Или если самому лень, посади за проверку девочку-восьмиклассницу, пусть проштудирует справочник от и до.
(81) Не должно такого быть.
(84) Гружу структуру из другой базы. Я пока не могу записать ни одного элемента. Так как грузится в транзакции.
Мне не лень. Я пытаюсь разобраться. Но такого не могло в принципе быть. Надеюсь докапаться до проблемы.
Как и любая программа, программа 1С состоит из модулей, частей. Существует несколько видов модулей:
- общие модули (проведение, отчеты, процедуры общего назначения и т.д.);
- модуль объекта (валюты);
- модуль формы (форма: списка, элемента, подбора и выбора);
- модуль приложения.
Программные модули состоят из разделов:
- объявления переменных;
- процедур и функций;
- основной программы.
Контекст в 1С заключается в окружении модуля и его разделов, т.е. это конкретные переменные, свойства, объекты, метод и события которые могут быть доступны в каждой конкретной точке.
- Глобальный контекст указывает открытые для вызова функции;
- Локальный контекст (более низкий уровень) становится доступен в каждой модульной части.
Существуют правила для доступа процедур, переменных, и функций в модулях:
- В общем модуле не будут доступны для экспорта переменные, процедуры и функции модульных приложений;
- В модульных приложениях существует доступ для экспорта процедур и функций общих модулей;
- В общих модульных частях открыт доступ к экспорту процедур и функций прочих общих модулей;
- Для модульных прикладных объектов и для модульных форм являются доступными переменные, функции и процедуры модулей приложений для экспорта и общих модулей.
Если какой-либо из форм присвоен основной реквизит, то в настройках этой формы будут содержаться свойство и метод, которые отвечают этому основному реквизиту.
Ошибка модуля
Готовые работы на аналогичную тему
Получить выполненную работу или консультацию специалиста по вашему учебному проекту Узнать стоимостьСамые распространенные пояснения:
- записать;
- создать;
- подключиться;
- connect;
- проверить вывод;
- previewFile1C;
- прочитать;
- выполнить;
- выполнить пакет;
- прочитать изменения.
Данная ошибка может возникнуть по причинам:
- нарушена логическая и физическая целостность информационной базы;
- ошибки при обращении с программой;
- разработчиком ошибочно был введен код;
- внезапное закрытие программы.
Вы можете провести анализ ошибки:
Способы устранения ошибки
Перед началом работы с базой обязательно сделайте архивную копию!
Данная ошибка в 99% случаях легко решается. Для этого вам достаточно проанализировать проблему и вызвать справку. Так же вы можете забить конкретную ошибку с пояснением в поиск и найти решение проблемы.
Перед использованием любого метода вы можете получить подсказку о том, как его использовать. Для этого выберете требуемую функцию и нажмите на клавиши на клавиатуре «Ctrl + F1». Программа откроет подсказку по необходимому методу. В конце работы проверьте параметры, которые передаются в функцию, и правильность её использования.
Решить данную проблему можно двумя способами.
Переустановить платформу под правами Администратора или под пользователем, у которого есть такие права.
Если не получилось как в способе №1, то можно вручную зарегистрировать самому эту компоненту.
Перед этим нам необходимо изменить Параметры контроль учетной записи.
Для Windows 7 нам необходимо зайти в Пуск затем в Панель управления.
Для Windows 10 нам необходимо в левом нижнем углу панели задач в строке поиска набрать Панель управления и перейти по открывшейся ссылке.
В правом верхнем углу Панели управления выбрать Просмотр-Мелкие значки и затем в списке перейти в Учетные записи пользователей.
Там выбрать Изменить параметры контроля учетных записей.
Затем поставить ползунок в самом нижнем положении.
И перезапустить компьютер.
После перезагрузки необходимо:
Для Windows 7 надо перейти в Пуск, затем в строке поиска ввести cmd.exe,нам покажет что найдена Командная строка и, щелкнув по ней правой клавишей мыши, выбрать "Запуск от имени администратора".
Для Windows 10 нам необходимо в левом нижнем углу панели задач в строке поиска набрать Командная панель или cmd.exe и, щелкнув по ней правой клавишей мыши, выбрать "Запуск от имени администратора".
У нас откроется Командная строка, где нам необходимо ввести команду:
1.Для платформы x86
Regsvr32 "C:\Program Files (х86)\1cv8\номер версии вашей платформы\bin\comcntr.dll" (regsvr32пробел"C:\Program Files (х86)\1cv8\номер версии вашей платформы\bin\comcntr.dll").
2.Для платформы х64
Regsvr32 "C:\Program Files\1cv8\номер версии вашей платформы\bin\comcntr.dll" (regsvr32пробел"C:\Program Files\1cv8\номер версии вашей платформы\bin\comcntr.dll").
Затем нажать клавишу Enter.
Если все сделали правильно, то увидите вот такое окно.
После этого необходимо перезагрузить компьютер. Как включится, пробуйте снова сделать синхронизацию.
Как в любом языке программирования, в платформе 1С есть предопределенные методы, которые облегчают жизнь разработчикам. Но выполнение этих команд требует правильного соблюдения синтаксиса языка программирования.
Самые распространенные ошибки при вызове типовых методов:
- Записать
- Создать
- Подключиться
- Connect
- ПроверитьВывод
- PreviewFile1C
- Прочитать
- Выполнить
- ВыполнитьПакет
- ПрочитатьИзменения
Рассмотрим пример. Мы программно создали запрос (справочник по запросам), передав в параметры «текст» вот такой фрагмент:
Получите 267 видеоуроков по 1С бесплатно:
<МодульСеанса(21)>: Ошибка при вызове метода контекста (Выполнить)
РезультатЗапроса = Запрос.Выполнить();
по причине:
<(13, 4)>: Синтаксическая ошибка
И >
Рассмотрим еще один пример:
Перенесем ошибочный код в обработчик «ПередЗаписью» справочника «Версии программ» и попробуем записать справочник программно. Видим ошибку:
<МодульСеанса(8)>: Ошибка при вызове метода контекста (Записать)
Выборка.ПолучитьОбъект().Записать();
по причине:
Ошибка при выполнении обработчика — ‘ПередЗаписью’
по причине:
<Справочник.ВерсииПрограмм.МодульОбъекта(20)>: Ошибка при вызове метода контекста (Выполнить)
РезультатЗапроса = Запрос.Выполнить();
по причине:
<(13, 4)>: Синтаксическая ошибка
И >
Несмотря на то, что ошибка заключается в выполнения метода «Выполнить», система ругается и на строчку кода, где вызывается программная запись объекта.
Решение проблемы
Для решения проблемы достаточно понять, в чем именно заключается ошибка. В 99% случаев проблема решается банальным чтением справки и анализом проблемы.
Для того чтобы узнать, как пользоваться тем или иным методом, достаточно установить курсор на интересующей Вас функции и нажать «Ctrl + F1». Платформа 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С и как их решать.
Читайте также: