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

В данной транзакции уже были ошибки, Константы[ИмяПараметраВР], хелп… !!

Я
   nodrama

04.09.14 — 08:01

Доброго времени суток.. есть база УПП 56 релиз. типовая.Контрагентов около 400. Пытаюсь создать нового контрагента. Появляется ошибка

В данной транзакции уже были ошибки. Жмем подробно, видим

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

        Возврат Константы[ИмяПараметраВР].Получить();»

ТиС — не помогло

Выгрузка-загрузка ИБ — не помогло

Ребут сервера+sql — не помогло

Перенумерация контрагентов (не знаю зачем) — не помогло.

__

Открываю журнал регистрации что бы посмотреть что же там.

И вижу такую строчку

[URL=http://pixs.ru/showimage/Bezimyanni_1596871_13695306.jpg][IMG]http://i6.pixs.ru/storage/3/0/6/Bezimyanni_1596871_13695306.jpg[/IMG][/URL]

   nodrama

1 — 04.09.14 — 08:05

вот ссылка новая на картинку.. что то нельзя отредактировать сообщения

http://pixs.ru/showimage/Bezimyanni_1596871_13695306.jpg

   BuHu

2 — 04.09.14 — 08:05

(0) а в ИмяПараметраВР что ? может нет такой константы?

   nodrama

3 — 04.09.14 — 08:06

(2) то есть, пол года было)) а в 56 релизе новом нет? у нас типовая УПП..

сейчас отладчиком гляну.

   BuHu

4 — 04.09.14 — 08:07

(3) странно что ты не с этого начал.

   nodrama

5 — 04.09.14 — 08:08

Поставил точку останова на начало кода «При записи».. прошелся. Код закончился (процедура закончилась). то есть в этот момент он должен был мне закрыть и записать контрагента. все отладка закончелась уже. и в этот момент он мне выдал эту ошибку.

   BuHu

6 — 04.09.14 — 08:08

(3) это началось после обновления?

   nodrama

7 — 04.09.14 — 08:09

(6) нет это началось в 55 релизе, я решил обновить на 56. ну малоли как бывает. толку 0

   BuHu

8 — 04.09.14 — 08:09

(5) у тебя же есть название модуля , номер строки , поставь точку останова там где вылазит ошибка

   BuHu

9 — 04.09.14 — 08:10

(5) здается мне , что кто то что в подписке дописал

   nodrama

10 — 04.09.14 — 08:13

да такая строчка одна на всю конфу

Это общий модуль

РаботаСОбщимиПеременнымиПовтИсп

Значения ИмяПараметраВР в моем случаи

«ДУБЛИРОВАТЬСООБЩЕНИЯВЖУРНАЛРЕГИСТРАЦИИ»

тип строка.

   Рэйв

11 — 04.09.14 — 08:13

(0)Такую фигню обычно пишет когда внутри транзакции пытаются втюхать попытку и она выпадает в исключение. Естественно

   nodrama

12 — 04.09.14 — 08:14

Вот строчка.

Возврат Константы[ИмяПараметраВР].Получить();»

После нее сразу вылетает эта ошибка

Но. ИмяПараметраВР, есть я написал его выше

   BuHu

13 — 04.09.14 — 08:15

(12) с упп не работал , там есть такая константа?

   nodrama

14 — 04.09.14 — 08:18

(13) в конфе в Константах .. нет… но я смотрел 55 релиз 54 релиз и тд. там этот код не изменен. то есть он был всегда. и все работало.

   BuHu

15 — 04.09.14 — 08:20

(14) конфигурация на поддержке без возможности изменения ?

   nodrama

16 — 04.09.14 — 08:21

Да полностью типовая. на поддержке. но могу и снять ;)

   BuHu

17 — 04.09.14 — 08:22

(14)дело не в коде функции которая получает значение константы , а в коде который вызывает эту функцию и передает такой ей параметр

   nodrama

18 — 04.09.14 — 08:29

(17) Ну и как это поймать? Перед Записью, При записи и тд. Не поподают в тот модуль.

   BuHu

19 — 04.09.14 — 08:31

(18) и на форме и в модуле объекта? а после записи? подписки на события есть? сопутствующие события происходят , типа создания договора или еще чего ?

   nodrama

20 — 04.09.14 — 08:32

(19) да создание договора контра происходит. щас там порою еще

   sergey198

21 — 04.09.14 — 09:19

(0) если база на поддержке и ты ее недавно обновил, может кэш у тебя?

   sergey198

22 — 04.09.14 — 09:19

(21) или старая платформа?

  

nodrama

23 — 04.09.14 — 09:30

разобрался. проблема была в Договорах контрагентов.. при попытки создать и записать новый выдавалась ошибка. Код не уникальный

Мы с помощью правил переноса с ИТС, с 1с77 на упп. перенесли контров+договоры. видимо кривова-то. перенумеровал договоры. ;)

Вот конечно 1с ники намутили.. почему нельзя было сразу написать ошибку. что Код в договорах не уникальный.))

В общем из за того что договор контрагента не создавался. Контрагент так же не записывался

Доброго дня. Таких тес было множество, но не нашел то, что могло бы мне помочь. Если в карточке контрагента, в контактах, меняю вид телефона, то при записи контрагента выходит ошибка: {ОбщийМодуль.РаботаСОбщимиПеременнымиПовтИсп.Модуль}: Ошибка при вызове метода контекста (Получить)         Возврат Константы[ИмяПараметраВР].Получить; по причине: В данной транзакции уже происходили ошибки! Знать хотя бы как 1С попадает в эту процедуру, чтобы отловить ошибку.

Остановку по ошибке пробовали?

ИмяПараметраВР = «ДУБЛИРОВАТЬСООБЩЕНИЯВЖУРНАЛРЕГИСТРАЦИИ» Галку поставил в константах, но не помогло. Права на константу есть, видимо ошибка возникает раньше, не пойму где искать.

>Знать хотя бы как 1С попадает в эту процедуру, чтобы отловить ошибку. ошибка была где-то раньше +1

Да, точно, попробую поискать. Спасибо.

такое бывает когда:открывается транзакция, происходит исключение и гасится попыткой, потом попытка зафиксить транзакцию

Да, я в курсе почему выходит ошибка, просто куча таких ошибок стало выскакивать после обновления последнего

По стеку поиск ошибки может получиться долго, тогда можно попробовать остановиться на ошибке сразу.

вот стек, как я понимаю проблема из-за того, что запись с такими ключевыми полями уже существует?

в ЖР посмотри по какому объекту идет отмена транзакции

В ЖР две отмены, первая по РегистрСведений. Предупреждения при синхронизации данных Вторая по контрагенту

стек что-то не прчитать, вот еще раз

Не факт, что в какой-то из этих процедур или функций возникла ошибка. В любой из этих процедур или функций мог быть вызов другой процедуры в которой уже и возникла ошибка.

Дык там не описана ошибка )

все ясно как день. Если ранее с подобным сталкивался. Ты изменил контактную информацию. Вот и всё. Ну если все еще не понятно кому-то: запись идет в РС, там транзакция, отказ. Скорее всего в попытке. В общем смотри в Записать контактной информации.

Не стоит слишком часто по делу и без дела использовать Попытки-Исключения.

Не я же их использую, а программисты 1С =)

Если в транзакции использовать попытку, то возникает такая ошибка

Тэги: 1С 8

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

В платформе 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С.

Ошибка при вызове метода контекста (Получить) Списка значений

Автор iceman2112, 09 окт 2011, 16:44

0 Пользователей и 1 гость просматривают эту тему.

{Документ.ргАктФактическогоВыполнения.МодульОбъекта(116)}: Ошибка при вызове метода контекста (Получить)
      текПлощадка = сзСписокНапечатПлощадок.Получить(Сч);
Не могу справится с ошибкой, может кто сталкивался, подскажите?

сзСписокНапечатПлощадок  = Новый СписокЗначений;
Для каждого СтрокаТабличнойЧасти Из ТаблицаРасшифровка Цикл
Если сзСписокНапечатПлощадок.НайтиПоЗначению(СтрокаТабличнойЧасти.Площадка)<>Неопределено Тогда
Продолжить;
КонецЕсли;

сзСписокНапечатПлощадок.Добавить(СтрокаТабличнойЧасти.Площадка);
КонецЦикла;

Для Сч=1 По сзСписокНапечатПлощадок.Количество() Цикл

[b]текПлощадка = сзСписокНапечатПлощадок.Получить(Сч);[/b]
       ....
       КонецЦикла;


Для Сч=0 По сзСписокНапечатПлощадок.Количество()-1 Цикл
текПлощадка = сзСписокНапечатПлощадок.Получить(Сч);
КонецЦикла;

Если долго всматриваться в учебник…то в голову может прийти мысль его открыть!


Или вот так
Для каждого х из сзСписокНапечатПлощадок Цикл
текПлощадка = х;
КонецЦикла;

Если долго всматриваться в учебник…то в голову может прийти мысль его открыть!


SvetaT04
19.03.2012 15:33 Прочитано: 3940

Добрый день!
Помогите, пожалуйста, разобраться с ошибкой
Код 1C v 8.2 УП

 {ОбщийМодуль.ИнтернетПоддержкаПользователейВызовСервера.Модуль(24)}: Ошибка при вызове метода контекста (Получить)
ФайлОбработки = Константы.ФайлОбработкиИнтернетПоддержкиПользователей.Получить().Получить();
по причине:
Нарушение прав доступа!

Ошибка возникает при открытии программы, у пользователя выбрана роль ПросмотртСПрКонтрагенты, используется интерфейс ПросмотртСпрКонтрагенты. Конфигурация Бухгалтерия Предприятия редакция 2.0


Изменено 19.03.12 15:52:15

Yandex
Возможно, вас также заинтересует

Реклама на портале

E_Migachev
21.03.2012 18:49 Ответ № 1

(0) SvetaT04, В роли нужно разрешить использовать константу ФайлОбработкиИнтернетПоддержкиПользователей и возможно еще саму обработку *09

SvetaT04
23.03.2012 14:33 Ответ № 2

Спасибо!

Подсказка: Вы получили ответ на свой вопрос — закройте вопрос!

Возможно, вам также будет интересно:

  • Константа коэффициент регрессии стандартная ошибка коэффициента регрессии
  • Конспекты уроков работа над ошибками в начальной школе
  • Конспект урока типичные ошибки связанные с нарушением лексической сочетаемости
  • Конспект урока русского языка 3 класс работа над ошибками
  • Конспект урока родной язык 7 класс типичные грамматические ошибки

  • Понравилась статья? Поделить с друзьями:
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии