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

Ошибка при вызове метода контекста (ЭтоНовый): Документ не выбран

Я
   Gluk

18.04.08 — 12:35

Док = Документы.ПеремещениеТоваров.СоздатьДокумент();

Док.Дата = ТекущаяДата();

Док.Записать();

После выполнения документ не появляется в базе!

А если Док.ПолучитьФорму().Открыть(), а в форме нажать «Записать» тогда » Ошибка при вызове метода контекста (ЭтоНовый): Документ не выбран»

   Immortal

1 — 18.04.08 — 12:41

Док = Документы.ПеремещениеТоваров.СоздатьДокумент();

Док.Дата = ТекущаяДата();

Док.Записать();

а где этот код размещён?

   Gluk

2 — 18.04.08 — 12:45

(1) во внешней обработке

   Immortal

3 — 18.04.08 — 12:47

(2)что выводит :

Док = Документы.ПеремещениеТоваров.СоздатьДокумент();

Док.Дата = ТекущаяДата();

Док.Записать();

Сообщить(Док.Ссылка);

?

   IronDemon

4 — 18.04.08 — 12:50

Попытка
   Док.Записать();
Исключение
   Сообщить(«Не удалось записать документ. По причине » + ОписаниеОшибки());
КонецПопытки;

   Gluk

5 — 18.04.08 — 12:51

(3) Перемещение товаров ГЛ^00159 от 18.04.2008 12:50:03

   Gluk

6 — 18.04.08 — 12:57

(4) Ошибок не выводит

   IronDemon

7 — 18.04.08 — 13:00

Тогда плохо ищешь в базе :)

   Mitriy

8 — 18.04.08 — 13:00

отбор в форме списка сбрось

   Mitriy

9 — 18.04.08 — 13:00

(8)+ по периоду тож

   Gluk

10 — 18.04.08 — 13:04

Отборов нет!

Период — без ограничения

Пробовал на другой базе — тоже самое

Создал новую обработку — в ней работает!

   Gluk

11 — 18.04.08 — 13:05

Почему !?

   Immortal

12 — 18.04.08 — 13:08

(11) потому что старая «повисла» в памяти

   Gluk

13 — 18.04.08 — 13:11

(12) эт как ? вчера было  тоже самое, после этого перегружался

   Gluk

14 — 18.04.08 — 13:14

Кароче — все просто Начатая и незавершенная транзакция

Прошу у всех прощения

   Immortal

15 — 18.04.08 — 13:14

(13) версия платформы у тебя какая?

  

Immortal

16 — 18.04.08 — 13:14

гм..ну вот:(

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

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

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

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


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

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

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

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


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

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

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

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

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

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

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

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

Ошибка при вызове метода контекста (ПринадлежитЭлементу)

Я
   1ctube

05.05.22 — 07:46

Доброго времени суток. Не могу зайти в документ, пишет Ошибка при вызове метода контекста (ПринадлежитЭлементу) по причине «Элемент не выбран».

Права полные. С чем может быть связано?

   Ryzeman

1 — 05.05.22 — 07:52

С ошибкой программиста который дорабатывал конфу.

   1ctube

2 — 05.05.22 — 07:54

(1) а как исправить? в журнале пишет «Ошибка инициализации модуля: Документ.СвоиДокумент.МодульОбъекта».

  

Ryzeman

3 — 05.05.22 — 08:01

Для начала надо понимать что за изменения вносились, что это за конфа, откуда эта ошибка взялась — вполне возможно это обновление типовой в которой переименовали какой-нибудь объект. Причина может быть в чём угодно и для этого как минимум надо знать все эти вещи + всё-таки полный текст ошибки — на какой строчке отваливается, а не её заголовок.

ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.

Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.

Показывать по
10
20
40
сообщений

Новая тема

Ответить

МАнастасия

Дата регистрации: 19.03.2011
Сообщений: 17

Не формируется закладка проводки документа «Отражение зарплаты в реглам.учете» за декабрь(!за ноябрь все нормально). Вылетает на ошибку: <br> <br>{Документ.ОтражениеЗарплатыВРеглУчете.МодульОбъекта(30531)}: Ошибка при вызове метода контекста (ПринадлежитЭлементу)<br> Если (СчетКт = ПланыСчетов.Хозрасчетный.РасчетыСПерсоналомПоОплатеТруда или СчетКт = ПланыСчетов.Хозрасчетный.РасчетыПоВыплатеДоходов)<br>по причине:<br>Элемент не выбран<br>Основные и дополнительные начисления проставляет.<br>Помогите пожалуйста, не можем найти ошибку.

Дина

Дата регистрации: 21.05.2010
Сообщений: 2981

Поищите на заполненных закладках: отсортируйте по полю Счет Дт — нет ли записи с чем-то неправильным, н-р, 000.

Показывать по
10
20
40
сообщений

Загружаю контрагентов в справочник Контрагенты из внешнего файла Эксель. Выдает ошибку: {Форма.Форма}: Ошибка при вызове метода контекста (ПолучитьОбъект): Элемент не выбран! Вот мой текст:

А какой должен быть объект у пустой ссылки?

Объект у пустой ссылки получить нельзя..

а что хотим получить если ссылка пустая ?

Он наверно в условии НЕ забыла поставить — Если НЕ СсылкаКА.Пустая Тогда и по невнимательности не замечает этого

— А какой должен быть объект у пустой ссылки? — Объект у пустой ссылки получить нельзя.. — А какой должен быть объект у пустой ссылки? — Объект у пустой ссылки получить нельзя.. — а что хотим получить если ссылка пустая ?

хотя судя по комментариям …

Вы меня совсем запутали! В базе ИНН не заполнено, в файле этот ИНН — есть. Мне надо из файла загрузить ИНН в базу. Для этого я пишу условие в : Если СсылкаКА.Пустая Тогда      //не нашли ИНН Но выдает ошибку в . И еще вопрос, надо учесть три возможных случая: 1. ИНН в базе = ИННвФфайле (тогда пропустить) 2. ИНН в базе <>ИННвФайле  (тогда на выбор пользователю: перезаписать или пропустить) 3. ИНН в базе пусто (тоже на выбор пользователю).

Не нашли с таким ИНН — создай новый или пропусти, задав вопрос пользователю! Не в пустой же ссылке объект искать… п.2. особенно мощно. Каждого контрагента из справочника, у которого ИНН не совпадает с ИНН из файла надо перезаписать, изменив ему ИНН! Чтоб у всех один и тот же был. И наименование не забудьте у всех одно поставить. С ума сойти…

Спасибо, тёзка ;) !!! У меня все это крутится в цикле, поэтому ИНН у всех не поменяется ))

В вы пишите: Не нашли с таким ИНН — создай новый или пропусти, задав вопрос пользователю! Я так и делаю в , задаю вопрос пользователю: если он отвечает Да, то ИНН в базе должен перезаписаться ИНН из файла. Но у меня выходит ошибка в !!!

Вместо того, чтобы получать объект из пустой ссылки — надо создать новый.

+ Либо ищи по другому признаку нужный, а не по ИНН.

Я представляю справочник контрагентов хотя бы на 100 элементов. И в файле строк 50. Сидит пользователь за компом и ему вопрос «Найден контрагент с ИНН 123456789, перезаписать ему ИНН на 543765? Да, Нет?» И так в цикле 100*50=5000 раз. Дерзайте, Лера! Останется опять одна Шапокляк на форуме. Ну так создай! СПКА=Справочники.Контрагенты.СоздатьЭлемент; а потом ему присваивай че надо! СПКА.ИНН=….

в каком месте Вы создаете новый?

НОВЫЕ ЭЛЕМЕНТЫ СОЗДАВАТЬ в справочнике — НЕ НАДО! Надо у существующих контрагентов, у кого ИНН — пустые, заполнить их значениями из файла.

ты всё прододжаешь жечь напалмом. Сколько ты уже этих несчастных контрагентов грузишь из Ёкселя? :)) Головного научилась выставлять?

Капец справочнику контрагенты (((

Ну так как ты сопоставляешь того контрагента, что в Excel и того, что в справочнике?

попробуйте переписать код еще раз

И 3 года стажа. Умереть — не встать…

Логика — жесть!!! 1. Ищешь контрагента по ИНН 2. Если не находишь пытаешься записать значение. Куда?!!! (пультик пультик, включи телевизор :)))

Вот она уже 3 года и пытается этих контрагентов выгрузить. С невосполнимыми потерями для психики :)

уже-б писал весь код, без недомолвок… :))

Может ну его, этот 1С? В жизни столько вещей интересных, нафиг за компом сидеть?

неужели на инфостарте нет ничего подобного?

Старуха Шапокляк != Шапокляк ;)

Это разные Шапокляки! АААА!!! Тысячи их! ВНЕЗАПНО!

загрузки из екселя, как бы.

БЛИН! Меня-то за что? Я просто молодая красивая Шапокляк :) И на форуме пораньше немного зарегилась.

>>>>Я просто молодая красивая Шапокляк Мы не видели фото!

гы — бабка внучку экзаменует?

не понял, в риторический вопрос.

Да я ж помощи-то не прошу, а так бы опубликовала :)

Только без наездов, пожалуйста.

Да вас тут скоро вся семья Шапокляков соберется…

Вдуй там бабке, чтоб 1с не занималась.

о блин все семейство похоже прется ). Все живые с генеалогического (или гинеклологичекого) древа шапокляков.

Юмористы, блин, из кулинарного техникума :)

уже послал ужин готовить. Совсем расшалилась.

Ты там сначала на крысе, что ли, ужин испытай, а то если она еще и готовит как программирует… Короче, береги себя, дедуля.

готовит хорошо, когда не программирует.

напоминает семейку Квери Аналайзера :))

Ну тогда ладно, не совсем никчемная бабуся.

Шаgокляков развелось аки Гениев 1С на дубовом :D

некоторые прямо сейчас народились.

Тэги:

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

  1. Случился скачок напряжения и комп с базой 1с вырубился. После включения база 1с выдала ошибки СУБД. Вылечили утилитой chdbfl.exe. Но при попытке выгрузить базу на сайт, при формировании xml файлов сразу вываливается ошибка вида

    {Обработка.ОбменССайтом.МодульОбъекта(1169)}: Ошибка при вызове метода контекста (ПринадлежитЭлементу)
    Если Группа.Значение.ПринадлежитЭлементу(Элемент) Тогда
    по причине:
    Элемент не выбран!.

    Подскажите, пожалуйста, как вылечить.

  2. Offline

    alexburn
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    15.150
    Симпатии:
    556
    Баллы:
    204

    Кэш попробуйте очистить, ТИИ в конфигураторе

  3. Спасибо, попробую

    — Объединение сообщений, 19 сен 2016

    Простите незнающего, но в Конфигураторе Администрирование-Тестирование и исправление ничего про очистку кеша нету.

    Последнее редактирование: 19 сен 2016

  4. Offline

    alexburn
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    15.150
    Симпатии:
    556
    Баллы:
    204

    Так там и не должно быть, я предложил вам два совершенно разных действия :)

  5. Ясно, спасибо

    — Объединение сообщений, 19 сен 2016

    Может подскажете, после сбоя пропало несколько групп номенклатуры. Бэкап сильно устарел. Можно как-нибудь восстановить?

  6. Offline

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.518
    Симпатии:
    985
    Баллы:
    204

    Нельзя. Бэкап нужно делать чаще и поставить ИБП.

  7. Так в том-то и дело что ИБП стоит. Свет моргнул, компы без ИБП этого не заметили, а комп с базой и ИБП вырубился.

  8. Offline

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.518
    Симпатии:
    985
    Баллы:
    204

    Значит нужно разобраться с ИБП, возможно заменить полностью/АКБ в нем.

  9. Теперь-то ясное дело что с ним надо что-то делать, раньше комп с ИБП выдерживали.

  10. Offline

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.518
    Симпатии:
    985
    Баллы:
    204

    Вы еще радуйтесь, что БД легко отделалась…..могло бы быть все горадо хуже….

Всё сделал практически. Подскажите такую штуку.Вылетает ошибка после того как документ полностью сформирован и записан(Установка цен номенклатуры в магазине) ошибка выглядит так
{ОбщийМодуль.РаботаСДиалогами(123)}: Ошибка при вызове метода контекста (ЭтоНовый): Документ не выбран
Если ДокументОбъект.ЭтоНовый() Тогда
по причине:
Документ не выбран

А вот код на создание дока

Док=Документы.УстановкаЦенНоменклатурыВМагазине.СоздатьДокумент();
Форм=Док.ПолучитьФорму(«формадокумента»);
табло2=Док.Товары.Добавить();
табло2.ЦенаВРознице=цена;
номенклатура=Справочники.Номенклатура.НайтиПоНаименованию(ИмяНоменклатуры);
табло2.Номенклатура=Номенклатура;
форм.Открыть();
док.Записать();

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

Здравствуйте!

Платформа: 8.3.18.1289
Режим БД: клиент-серверный
Конфигурация. Название: 1С:Бухгалтерия строительной организации, редакция 3.1 (3.1.103.12)
Конфигурация. Основной режим запуска: Управляемое приложение
Конфигурация. Вариант встроенного языка: Русский
Конфигурация. Режим управления блокировкой данных: Управляемый
Конфигурация. Режим совместимости: Версия8_3_14
Конфигурация. Версия БСП: 301
Инструменты разработчика. Версия: Расширение 6.22.1e
Инструменты разработчика. Инструмент: Подбор и обработка объектов БД
Инструменты разработчика. Перехват клавиатурного ввода: Да
Инструменты разработчика. Объекты на сервере: Да
Инструменты разработчика. Асинхронность запрещена: Нет
Инструменты разработчика. Разрешены имитаторы: Да
Расширения. ИнструментыРазработчикаTormozit (6.22.1e)
Клиент. ОС: Microsoft Windows Server 2008 R2 Enterprise  64-bit Русский
Клиент. Приложение: Управляемое приложение 64б
Клиент. Проверка модальных вызовов: Нет
Клиент. Язык интерфейса конфигурации: ru
Клиент. Язык интерфейса системы: ru_RU
Клиент. От имени администратора Windows: Да
Сервер. ОС: Microsoft Windows Server 2008 R2 Enterprise  64-bit Русский
Сервер. Процесс: 64б
Сервер. Отладка: нет

Если в инструменте Подбор и обработка объектов БД запускать произвольный алгоритм, внутри которого выполняется удаление объекта, то появляется следующая ошибка:
{ИнструментыРазработчикаTormozit Обработка.ирПодборИОбработкаОбъектов.МодульОбъекта(742)}: Ошибка при вызове метода контекста (ЭтоНовый): Документ не выбран



Понравилась статья? Поделить с друзьями:
  • Ошибка при вызове метода контекста вызватьhttpметод
  • Ошибка при вызове метода контекста добавить недопустимое значение параметров
  • Ошибка при вызове метода контекста выгрузитьколонку
  • Ошибка при вызове метода контекста добавить неверное имя колонки
  • Ошибка при вызове метода контекста выгрузить