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

Как правильно ПолучитьПоследнее из регистра сведений

Я
   Artemy55

25.06.15 — 11:59

Такую ошибку выдал мне, при выборе номенклатуры в режиме предприятия. Понимаю, что вопрос неправильно задан, мало информации…

{ОбщийМодуль.РаботаСоСправочниками.Модуль(6)}: Ошибка при вызове метода контекста (ПолучитьПоследнее)

    ЗначенияРесурсов = РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата, Отбор);

по причине:

Недопустимое значение параметра (параметр номер ‘2’)

   DTXqueque

1 — 25.06.15 — 12:00

>Понимаю, что вопрос неправильно задан, мало информации…

Верно понимаешь.

Вопрос то в чем?

   Господин ПЖ

2 — 25.06.15 — 12:04

кривой отбор, что не ясно

   D_E_S_131

3 — 25.06.15 — 12:05

Если ты программист, то смотри синтаксис по методу ПолучитьПоследнее() и проверяй, соответственно, в отладчике что у тебя попадает в в параметр «Отбор».

   Mitriy

4 — 25.06.15 — 12:06

(2) не кривой, а вообще не отбор…

   Адский плющ

5 — 25.06.15 — 12:28

(4) Не факт. Если в отборе присутствуют поля не соответствующие измерениям будет такая же картина.

   Господин ПЖ

6 — 25.06.15 — 12:29

(4) это тоже туда инкапсулируется ;)

   hhhh

7 — 25.06.15 — 12:32

(5) еще вариант: в отборе должно быть только одно измерение, а у автора несколько.

   Ненавижу 1С

8 — 25.06.15 — 12:39

запросом делай

   palpetrovich

9 — 25.06.15 — 12:48

(0) ежели это в типовой конфигурации  — вопрос к разработчикам, ежели сам наваял — сам понимаешь :)

   Artemy55

10 — 26.06.15 — 12:37

мм…

Ну вот код

Функция РозничнаяЦена (АктуальнаяДата, ЭлементНоменклатуры) Экспорт

    // Создать воспомогательный объект «Отбор»

    Отбор = Новый Структура («Номенклатура», ЭлементНоменклатуры);

    
    // Получить актуальны значения ресурсов регистра.

    ЗначенияРесурсов = РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата, Отбор);

    Возврат ЗначенияРесурсов.Цена;

КонецФункции

Вот ошибка из консоли, которую выдаёт, когда меняешь номенклатуру, должно подставить цену из регистра сведений, при выборе номенклатуры. Вроде…

{ОбщийМодуль.РаботаСоСправочниками.Модуль(6)}: Ошибка при вызове метода контекста (ПолучитьПоследнее)

    ЗначенияРесурсов = РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата, Отбор);

по причине:

Недопустимое значение параметра (параметр номер ‘2’)

Недопустимое значение параметра (параметр номер ‘2’)

   Enterprise

11 — 26.06.15 — 12:41

(10) «ЭлементНоменклатуры» это что?

   Artemy55

12 — 26.06.15 — 12:56

(11) не знаю.. нету такой переменной в форме документа откуда запрашивает эту функцию. Эта функция в глоб.модулях. Конфигурация учебная, могу расшарить.

   Mitriy

13 — 26.06.15 — 12:57

возможно, нужна не структура, а фиксированная структура…

   mTema32

14 — 26.06.15 — 13:00

(0) Код похож на пример из книжки Радченко «Практическое пособие разработчика»

   МимохожийОднако

15 — 26.06.15 — 13:02

Традиционно: встань в конфигураторе на ошибку, запусти отладчик, посмотри, какое значение в ЭлементНоменклатуры

   mTema32

16 — 26.06.15 — 13:03

(0) Все по книжке делал? Все галки там у модуля проставил?

В модул формы при изменении номенклатуры так?

// Получить текущую строку табличной части.

СтрокаТабличнойЧасти = Элементы.ПереченьНоменклатуры.ТекущиеДанные;

// Установить цену.

СтрокаТабличнойЧасти.Цена = РаботаСоСправочниками.РозничнаяЦена(Объект.Дата, СтрокаТабличнойЧасти.Номенклатура);

   Artemy55

17 — 26.06.15 — 13:05

(14) Да, именно оно, по 8.3

   Artemy55

18 — 26.06.15 — 13:06

(15) Тыкаюсь. Забыл как вызвать это окно в отладчике….

   Artemy55

19 — 26.06.15 — 13:07

(16) Да, вот так

    СтрокаТабличнойЧасти = Элементы.ПереченьНоменклатуры.ТекущиеДанные;

    
    // Установить цену.

    СтрокаТабличнойЧасти.Цена = РаботаСоСправочниками.РозничнаяЦена(Объект.Дата, СтрокаТабличнойЧасти.Номенклатура);

   AllJoke

20 — 26.06.15 — 13:10

(18) Shift+F9

   AllJoke

21 — 26.06.15 — 13:13

+ (20) либо в Конфигураторе меню Отладка — Вычислить выражение

   Artemy55

22 — 26.06.15 — 13:15

ЭлементНоменклатуры – ссылка на элемент справочника Номен-

клатура, для которого мы хотим получить розничную цену.

я не знаю каким образом эта ссылка задана, я не писал таокго в коде и в свойствах тоже нигде не прописывал… не понятно..

   hhhh

23 — 26.06.15 — 13:18

ошибка не здесь: Функция РозничнаяЦена покажи как вызываешь.

   Artemy55

24 — 26.06.15 — 13:19

(23)

&НаКлиенте

Процедура ПереченьНоменклатурыНоменклатураПриИзменении(Элемент)

    // Получить текущую строку табличной части.

    СтрокаТабличнойЧасти = Элементы.ПереченьНоменклатуры.ТекущиеДанные;

    
    // Установить цену.

    СтрокаТабличнойЧасти.Цена = РаботаСоСправочниками.РозничнаяЦена(Объект.Дата, СтрокаТабличнойЧасти.Номенклатура);

    
    // Пересчитать сумму строки.

    РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти);

КонецПроцедуры

   Artemy55

25 — 26.06.15 — 13:25

   Mitriy

26 — 26.06.15 — 13:31

Отбор = Новый Структура («Измерение1», ЭлементНоменклатуры);

   Artemy55

27 — 26.06.15 — 14:08

(26) Что это значит?

   Mitriy

28 — 26.06.15 — 14:11

(27) это значит, что измерение у тебя не «Номенклатура»

   Artemy55

29 — 28.06.15 — 13:32

(28) Ну не знаю.. всё равно не понятно

Функция РозничнаяЦена (АктуальнаяДата, ЭлементНоменклатуры) Экспорт

    // Создать воспомогательный объект «Отбор»

    Отбор = Новый Структура («Номенклатура», ЭлементНоменклатуры);

    
    // Получить актуальны значения ресурсов регистра.

    ЗначенияРесурсов = РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата, Отбор);

    Возврат ЗначенияРесурсов.Цена;

КонецФункции

   Рэйв

30 — 28.06.15 — 14:16

(29)Если не можешь, ну запросом тогда.

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

   hhhh

31 — 28.06.15 — 15:43

(29) В регистре сведений Цены у тебя нет поля Номенклатура. Посмотри внимательнее на этот регистр.

   Artemy55

32 — 28.06.15 — 17:01

(31) Я не дал название измерению Номенклатура в регистре  сведений, забыл просто. Спасибо, исправил свою ошибку, всё заработало))

   ДенисЧ

33 — 28.06.15 — 17:06

Гениально….

  

Loki Evil

34 — 28.06.15 — 18:21

Могу посоветовать не использовать объектную модель для чтения данных воооооообще, а использовать запросы и особенно конструктор запросов — никаких таких проблем бы не возникло, сразу же бы увидели в конструкторе, что с таблицей регистра беда.

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

sergson
12.07.2015 19:19 Прочитано: 2914

Ошибка 

{Документ.РеализацияТоваровИУслуг.Форма.ФормаДокумента.Форма(23)}: Ошибка при вызове метода контекста (ПолучитьПоследнее)

ЦенаТовара = РегистрыСведений.Цены.ПолучитьПоследнее(,Отбор);

по причине:

Недопустимое значение параметра (параметр номер ‘2’)

Код 1C v 8.х

 &НаКлиенте
Процедура ТоварНоменклатураПриИзменении(Элемент)
РасчетСтроки();
СтрокаТабличнойЧасти = ЭлементыФормы.Товар.ТекущиеДанные;
Номенклатура = СтрокаТабличнойЧасти.Номенклатура;
ТипЦен = Контрагент.Договор.ТипЦен;
Отбор = Новый Структура;
Отбор.Вставить("Номенклатура",Номенклатура);
Отбор.Вставить("ТипЦен",ТипЦен);
ЦенаТовара = РегистрыСведений.Цены.ПолучитьПоследнее(,Отбор);
СтрокаТабличнойЧасти.Цена = ЦенаТовара.Цена;
КонецПроцедуры
Yandex
Возможно, вас также заинтересует

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

IBReiter
13.07.2015 10:51 Ответ № 1

Вам нужно проверить, что в отбор попадает.

И сверить имена измерений регистра и полей отбора структуры

E_Migachev
13.07.2015 10:58 Ответ № 2

Вот Как получить последнее значение регистра сведений?

В целом у тебя вроде все правильно, передаешь структуру — может ей не нравится тип цен, попробуй без него

sergson
13.07.2015 18:14 Ответ № 3

Пробывал без ТипЦен или без Номенклатура ошибка та же

IBReiter
14.07.2015 09:25 Ответ № 4

Отбор — это: «Структура, содержащая отбор по измерениям регистра. Имя ключа структуры должно совпадать с именем измерения регистра, заданного в конфигураторе, а значение элемента структуры — задает отбираемое по данному измерению значение».

Возвращаемое значение: «Структура, содержащую значения ресурсов».

Вы пытаетесь передать значения ресурсов, чтобы получить измерение, а нужно делать наоборот.

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

all4cf
14.07.2015 11:54 Ответ № 5

 Как-то регистр наоборот, конфа самописная?

sergson
17.07.2015 12:12 Ответ № 6

sergson
17.07.2015 12:13 Ответ № 7

Большое спасибо все заработало, помогло сообщение — 

Отбор — это: «Структура, содержащая отбор по измерениям регистра. Имя ключа структуры должно совпадать с именем измерения регистра, заданного в конфигураторе, а значение элемента структуры — задает отбираемое по данному измерению значение».Возвращаемое значение: «Структура, содержащую значения ресурсов».Вы пытаетесь передать значения ресурсов, чтобы получить измерение, а нужно делать наоборот.

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

Подсказка:Вы можете добавить любую страничку в Социальные закладки щелкнув по значку соцсетей (в вверху)
Tais80

Новенький

kz
Offline Offline


Доброго всем суток! Вот решилась на ответственный шаг изучения программирования 1С бухгалтерии. Мне как новичку предложили учитЬся по книге М.Г.Радченко 1С Предприятие 8.1.
ПроблеМа возникла в процедуре заполнения цены в документе
 Вот код:
           Процедура ПереченьНоменклатурыНоменклатураOnChange(Control)

      СтрокаТабличнойЧасти = ЭлементыФормы.ПереченьНоменклатуры.ТекущиеДанные;

      СтрокаТабличнойЧасти.Цена = РозничнаяЦена(Дата,Элемент.Значение);

         РассчитатьСумму(СтрокаТабличнойЧасти);
   КонецПроцедуры

А вот ошибка {Document.ОказаниеУслуг.Form.ФормаДокумента(72,49)}: Переменная не определена (Элемент)
   СтрокаТабличнойЧасти.Цена = РозничнаяЦена(Дата,<<?>>Элемент.Значение);

 А вот код функции РозничнаяЦена, которую я использую в общем модуле.

  Функция РозничнаяЦена (АктуальнаяДата, ЭлементНоменклатуры)Экспорт
   Отбор = новый Структура(«Номенклатура»,ЭлементНоменклатуры);
   ЗначениеРесурсов=РегистрыСведений.Цена.ПолучитьПоследнее(АктуальнаяДата, Отбор);
   Возврат ЗначениеРесурсов.Цена;
  КонецФункции

Все смотрю, что сделала не так? Где мне нужно определить этот Элемент? Буду очень признательна за ответ.  

« Последнее редактирование: 08-02-2010 05:52 от Sel »
Записан
Tais80

Новенький

kz
Offline Offline


Все получилось! Элемент это и есть Control !!!


Записан
SHveД

Интересующийся

ru
Offline Offline


Тоже беда в этом же разделе книги, Регистр Сведений, уже задавал по этому поводу вопрос, спасибо, помогли, переделал все с нуля, так другая ошибка выскакивает:

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

{ОбщийМодуль.РаботаСоСправочниками(7)}: Ошибка при вызове метода контекста (ПолучитьПоследнее): Недопустимое значение параметра (параметр номер ‘2’)
   ЗначенияРесурсов = РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата,Отбор);
по причине:
Недопустимое значение параметра (параметр номер ‘2’)

Все строчки общего Модуля:

Функция РозничнаяЦена(АктуальнаяДата, ЭлементНоменклатуры) Экспорт

   // Создать вспомогательный объект Отбор
   Отбор = Новый Структура(«Номенклатура»,ЭлементНоменклатуры);

      // Получить актуальные значения ресурсов регистра
   ЗначенияРесурсов = РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата, Отбор);

   Возврат ЗначенияРесурсов.Цена;

КонецФункции

Помогите иначе у меня будут проблемы.Улыбаюсь

« Последнее редактирование: 07-02-2010 14:20 от Sel »
Записан
Kivals


1. ЭлементНоменклатуры — точно заполнен?
2. РегистрСведений.Цены точно периодический?
3. Номенклатыра — единственное измерение регистра Цены?


Записан
SHveД

Интересующийся

ru
Offline Offline


+++1. ЭлементНоменклатуры — точно заполнен?
2. РегистрСведений.Цены точно периодический?
3. Номенклатыра — единственное измерение регистра Цены?+++

1.Да, там находится название тризистора, ведь суть решения с использованием периодического регистра сведений, по изменению в документе Оказание Услуги даты, кофигурация берет данные  внесеные в Регистр Сведений и меняет цену в документе Оказание Услуги данного транзистора, но выдает ошибку.
2. Да, регистр имеет поле Период это ведь говорит о его «периодичности» и создан в соотвествующем разделе Кофигуратора
3.ДА, есть еще ресурс Цена и все.

П.С. подскажите как здесь вложить скрин экрана. что б не описывать все словами, лучше один раз увидет -чем Улыбаюсь, скрины пожаты много места не займут.


Записан
Sel

Злобный
Администратор

ru
Offline Offline


SHveД, перед отправкой поста нажми кнопку «Предпросмотр», потом- «Дополнительные опции», появится возможность добавить вложение, прикрепишь свой скрин.


Записан

Слово не воробей. Всё не воробей, кроме воробья.

Kivals


Жду скринов…


Записан
SHveД

Интересующийся

ru
Offline Offline


Сорри, был в отъезде… вот скрины
Когда в документе Оказание Услуги делаю 1 -изменение даты соответсвующей Регистру Сведений цены (1а) и выибраю заново транзистор, то выскакивает вышеописанная ошибка.
Еще добавил скрин формы документа оказание услуги, если еще какие надобно скажите предъявлю.
выкладываю еще модуль Оказание услуги:

Процедура ПереченьНоменклатурыНомеклатураПриИзменении(Элемент)
   // Вставить содержимое обработчика.
   // Получить текущую строку табличной части
СтрокаТабличнойЧасти = ЭлементыФормы.ПереченьНоменклатуры.ТекущиеДанные;

   // Установить цену
СтрокаТабличнойЧасти.Цена = РаботаСоСправочниками.РозничнаяЦена(Дата,Элемент.Значение);

   // Пересчитать сумму строки
РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти);
КонецПроцедуры

SHveД

Интересующийся

ru
Offline Offline


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

« Последнее редактирование: 10-02-2010 12:08 от Sel »
Записан
Kivals


Offtopic:

SHveД, чтобы выложить скрин — можно «подсмотреть» его адрес в отправленном посте, а потом отредактировать пост, вставив [IMG]http://здесь подсмотренная ссылка[/IMG]


Записан
Kivals


М-да — ничего не прояснилось Жаль
выложи cf файл конфигурации в архиве (Конфигурация — Сохранить конфигурацию в файл…)


Записан
SHveД

Интересующийся

ru
Offline Offline


Вот он, в архиве


* 1Cv82.rar (27.57 Кб — загружено 861 раз.)


Записан
Kivals


Все очень просто: у тебя измерение в регистре сведений называется «Номеклатура» вместо «Номенклатура»


Записан
SHveД

Интересующийся

ru
Offline Offline


Offtopic:

Да блин… есть смайл бьюсь головой об стену и разбиваю её на хрен за не надобностью, уже второй раз делаю в этом ошибку (!) , большое тебе спасибо за оказаную помощь и очередное напоминание что я безнадежен во внимательности Улыбаюсь. Все зачеркиваю строчку русский в паспорте и пишу -мартышка с дерева…
З.Ы. Знаю что админ зело строг за флейм, но просьба сохраните сей пост хотя бы на сутки, так я благодарен Kivalsу

« Последнее редактирование: 10-02-2010 20:23 от Kivals »
Записан

Студворк — интернет-сервис помощи студентам

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

1C
1
2
3
4
{ОбщийМодуль.РаботаСоСправочниками.Модуль(5)}: Ошибка при вызове метода контекста (ПолучитьПоследнее)
ЗначенияРесурсов = РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата, Отбор); 
по причине:
Недопустимое значение параметра (параметр номер '2')

Общий модуль «РаботаСоСправочниками»

1C
1
2
3
4
5
6
7
Функция РозничнаяЦена(АктуальнаяДата, ЭлементРаботы) Экспорт 
// Создать вспомогательный объект Отбор 
Отбор = Новый Структура("ПроводимыеАвтоработы", ЭлементРаботы); 
// Получить актуальные значения ресурсов регистра 
ЗначенияРесурсов = РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата, Отбор); 
Возврат ЗначенияРесурсов.Цена; 
КонецФункции

Документ ЗаказНаряд , процедура которая отвечает за то, чтобы он выводил цену указанное в регистре сведений

1C
1
2
3
4
5
6
7
8
9
Процедура РаботыРаботаПриИзменении(Элемент)
    // Вставить содержимое обработчика.
    СтрокаТабличнойЧасти=Элементы.Работы.ТекущиеДанные; 
// Установить цену 
СтрокаТабличнойЧасти.Цена=РаботаСоСправочниками.РозничнаяЦена(Объект.Дата,СтрокаТабличнойЧасти.Работа); 
// Пересчитать сумму строки 
РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти); 
 
КонецПроцедуры

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

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

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

Планшет

Приглашаем на
бесплатный вебинар!

06 июня в 11:00 мск

1 час

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


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

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

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

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


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

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

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

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

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

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

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

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

Понравилась статья? Поделить с друзьями:

Не пропустите эти материалы по теме:

  • Яндекс еда ошибка привязки карты
  • Ошибка при вызове метода контекста получитьобщуюформу
  • Ошибка при вызове метода контента
  • Ошибка при вызове метода контекста получитьмакет 1с
  • Ошибка при вызове метода контекста этопланобменаxdto

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

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