Ошибка при вызове метода контекста eof 1c
Доброго дня всем
1с 8.3 Работаю с бизнес -процессами. Возникла сложность при завершении.
Есть ТЗ: При завершении задачи "Ознакомится с результатом" завершить комплексный бизнес процесс и все незавершенные задачи по нему.
В форме ЗадачиИсполнителя есть кнопка. Команда на кнопке выполняется наКлиенте. В конце выполнения я и решила подпихнуть свою обработку. Которая выполняется в общем модуле.
Вот как я это делаю. Вызов общего (клиент) из команды формы (Параметр: форма задачи)
Вызов
Ну и в общем модуле я работаю уже непосредственно с задачей, ищу по ней бизнес-процесс, завершаю задачи.
Так вот теперь суть всего вопроса:
После завершения работы на сервере когда уже отладчик стоит на КонецФункции у меня неожиданно все сваливается в ошибку
Я не могу понять в чем она заключается. Я вроде бы никакие данные не передаю. Задача - ссылку которой я беру уже завершена и я ее не изменяю.
ЧТо не так то?? Почитала кучу форумов и справок, но не нашла ответа на вопрос. Может кто поможет и опишет корректность выполнения процедур Клиент-Сервер-Клиент. Буду очень признательна за любую информацию по этому вопросу
Ошибка при вызове метода
Всем доброго утречка! Такой вот код написала, где программно создаю и хочу провести, но выдаёт.
Ошибка при вызове метода
Выдает ошибку в строке Ferma.ask(); хочу чтобы при запуске программы писало строчку, а потом.
данные с типом "СтрокаТаблицыЗначений" на клиента пытаетесь передать, где он не могет существовать, абашто вам и матерится 1с.
Я не могу этого понять Функция из общего модуля не возвращает никакие значения.
По логике я просто прихожу в нее с задачей,ссылкой. Ее использую как параметр для запроса. Сама задача не перезаписывается, не изменяется. Из функции я просто выхожу не передавая никаких параметров.
Возникает вопрос откуда появляются эти данные с типом СтрокаТаблицыЗначений. Зачем они возвращаются?? Как они передаются и почему, если программно я их не передаю??
Именно это мне и хочется понять и разобраться, чтоб в будущем обойти эту проблему
З.Ы. ТЗ я выполнила, обошла другим путем. Вызвала свою обработку с из процедуры которая выполняется наСервере. Все отработало отлично без всяких проблем
Но все таки может кто знает и сталкивался с такими ситуациями?? Поделитесь опытом
Дали мне поковыряться в одной обработке - грузит данные из оракла. Хочу допилить ее чтобы и записывала данные в таблицы. Триальный оракл поставил на вирт машину, для экспериментов, есть копия базы довольно большая и мусорная, в идеале хочу настроить синхронизацию с оракл, при проведении некоторых документов в 1С (конфа БГУ 1.0 толстая).
Так выглядит загрузка спр из оракл (пока тестовая, сам механихм думаю понятен)
Трудности возникают при попытке записать в оракл, выдает ошибку: Ошибка при вызове метода контекста (EOF): Произошла исключительная ситуация (ADODB.Recordset): Operation is not allowed when the object is closed.
Альтернатива Oracle (условие: использование языка SQL и процедурного PL/SQL)
Здравствуйте! Проблема такая: мне надо написать курсовой проект в котором управление БД, созданной.
Oracle, SQL, PL/SQL. В каком порядке изучать?
привет. скачал книжки для новичков по Oracle, SQL, PL/SQL. в какой последовательности надо.
Oracle PL/SQL
Доброе время суток. Может помочь в єтом не понятном для меня задании? Задание: "С помощью.
Oracle SQL*plus
Привет всем, а где в интернете я могу скачать Oracle SQL*plus, скиньте ссылку пожалуйста, а то я.
Так ты же запрос на Update пишешь и хочешь объектной моделью загружать.
Добавлено через 6 минут
Или ты хочешь сначала записать и сразу же прочитать записанные данные?
Добавлено через 7 минут
Пример:
Dethmontt, Идея примерно такая - в Обработке проведения дока, например, Кассовое поступление, подключаюсь к Оракл и из данных в документе формирую запись в Оракле. Имя таблицы куда пишем знаю заранее. Получается примерно так
Оракл ругается - Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Oracle][ODBC][Ora]ORA-00936: missing expression
глянуть бы, что там получилось
Добавлено через 3 минуты
Вы прямо озвученный текст туда пихаете? Это равнозначно просто ТекстЗапр = "INSERT INTO FK_RAS values('Чаво надо'");Правда, я ещё бонус в виде одинарных кавычек вложил
Процедура не может возвращать значение
Обращение к процедуре как к функции
Суть этой ошибки в том, что процедура не может возвращать значение. И если мы в коде используем вызов процедуры справа от знака присваивания, это приведет к ошибке.
Данная ошибка имеет две вариации – если используется стандартная процедура из методов какого-нибудь объекта, то фраза будет звучать “Обращение к процедуре объекта как к функции”. Если же использовать процедуру, объявленную в коде, то текст ошибки будет “Обращение к процедуре как к функции”.
При этом ошибка использования процедуры объекта является ошибкой времени выполнения – т.е. на этапе сохранения и проверки конфигурации платформа эту ошибку не обнаружит.
А вот неправильное использование процедуры синтаксическая проверка (Ctrl + F7) успешно обнаруживает, и не даст сохранить конфигурацию или внешнюю обработку/отчет, пока ошибка не будет устранена.
Рассмотрим два примера:
1. Воспроизведем ошибку “ Обращение к процедуре как к функции” . При этом платформа не даст сохранить изменения, т.к. не проходит синтакс-контроль.
2. Воспроизведем ошибку “ Обращение к процедуре объекта как к функции” . Здесь мы неверно используем метод объекта массива “Добавить”, который является процедурой.
Решение проблемы
Для решения проблемы достаточно понять, в чем именно заключается ошибка. В 99% случаев проблема решается банальным чтением справки и анализом проблемы.
Для того чтобы узнать, как пользоваться тем или иным методом, достаточно установить курсор на интересующей Вас функции и нажать «Ctrl + F1». Платформа 1С выдаст Вам контекстную подсказку по требуемому методу:
Проверьте параметры, передаваемые в функцию, и правильность её использования.
Другие статьи по 1С:
Существует множество статей, которые описывают возможные причины возникновения в 1С ошибки “Поле объекта не обнаружено”. Порой это связывают с обновлением платформы, обновлением типового релиза, или с какими-то другими причинами.
Мы же будем оперировать фактами. В конце статьи прилагается внешняя обработка, в которой воспроизведена данная ошибка.
- Удалили табличную часть, к которой обращаемся в коде?
- Переименовали реквизит, а в коде не исправили?
- Заменили значение со ссылки на неопределено?
Вуаля – платформа выдаст ошибку “Поле объекта не обнаружено”!
Переменная не определена
Такой текст ошибки платформа 1С выдает на этапе синтаксического контроля, при сохранении конфигурации, внешнего отчета или обработки.
Причин у этой ошибки может быть несколько.
- Опечатка в имени переменной
- Обращение к переменной, которая нигде в области видимости не объявлена (неявной инициализацией с присвоением значения, явным образом с использованием ключевого слова “Перем”, или передана в качестве параметра)
- Написание на клиенте серверного кода. Например, обращение к менеджеру справочников “Справочники”, и т.п. Клиентская часть приложения “не видит ” серверные объекты языка
- Также ошибка может появиться, если ранее код использовался в режиме толстого клиента, но после был запущен в тонком клиенте.
Внимательно следить за правильностью набранного кода, своевременно объявлять переменные или передавать их в качестве параметров. Писать серверный код только в серверных модулях, а также использовать соответствующие инструкции препроцессора, например “&НаСервере”.
Исправляем ситуацию
Рис.1 Запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора
Но ошибки могут быть не только в текстах запросов. Допустим, мы хотим выбрать всю номенклатуру и узнать, входит ли она в определенную группу. Проверка происходит с помощью метода «ПринадлежитЭлементу» и его параметра, который должен быть типа СправочникСсылка. Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной.
Рис.2 Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной
Рис.3 Синтакс-помощник
Рис.4 Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает
Чаще всего причиной подобных ошибок выступают следующие факторы:
- Невнимательность;
- Отсутствие опыта или знаний;
- Несогласованность действий разработчиков друг с другом;
- Изменения в методах контекста в новых версиях платформы.
Как в любом языке программирования, в платформе 1С есть предопределенные методы, которые облегчают жизнь разработчикам. Но выполнение этих команд требует правильного соблюдения синтаксиса языка программирования.
Самые распространенные ошибки при вызове типовых методов:
- Записать
- Создать
- Подключиться
- Connect
- ПроверитьВывод
- PreviewFile1C
- Прочитать
- Выполнить
- ВыполнитьПакет
- ПрочитатьИзменения
Рассмотрим пример. Мы программно создали запрос (справочник по запросам), передав в параметры «текст» вот такой фрагмент:
: Ошибка при вызове метода контекста (Выполнить)
РезультатЗапроса = Запрос.Выполнить();
по причине:
<(13, 4)>: Синтаксическая ошибка
И >
Рассмотрим еще один пример:
Получите понятные самоучители по 1С бесплатно:
Перенесем ошибочный код в обработчик «ПередЗаписью» справочника «Версии программ» и попробуем записать справочник программно. Видим ошибку:
: Ошибка при вызове метода контекста (Записать)
Выборка.ПолучитьОбъект().Записать();
по причине:
Ошибка при выполнении обработчика — ‘ПередЗаписью’
по причине:
: Ошибка при вызове метода контекста (Выполнить)
РезультатЗапроса = Запрос.Выполнить();
по причине:
<(13, 4)>: Синтаксическая ошибка
И >
Несмотря на то, что ошибка заключается в выполнения метода «Выполнить», система ругается и на строчку кода, где вызывается программная запись объекта.
Индекс находится за границами массива
- Использование при обходе коллекции количества элементов вместо индекса. Индексы начинаются с нуля, а количество элементов – с единицы. Поэтому следующий код гарантированно приведет к ошибке: Массив[Массив.Количество()]
- Последствия удаления элементов из коллекции, очистки коллекции или замены коллекции на пустую
- Ошибочное увеличение счетчика в цикле “Для”
Читайте также: