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

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

Я
   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 Прочитано: 2920

Ошибка 

{Документ.РеализацияТоваровИУслуг.Форма.ФормаДокумента.Форма(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 »
Записан

medved62

19 / 0 / 0

Регистрация: 08.10.2013

Сообщений: 27

1

Ошибка при выполнении

21.05.2014, 23:37. Показов 2431. Ответов 3

Метки нет (Все метки)


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

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

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



0



2954 / 1766 / 82

Регистрация: 03.11.2011

Сообщений: 8,280

22.05.2014, 00:02

2

отбор кривой. Отладчиком попользуйтесь.
конфа самописная? Форма толстая?



0



19 / 0 / 0

Регистрация: 08.10.2013

Сообщений: 27

26.05.2014, 19:42

 [ТС]

3

Пользуюсь отладчиком, так как не силен в 1С , конфа самописная, а форму как посмотреть, если клиент то автоматически



0



2954 / 1766 / 82

Регистрация: 03.11.2011

Сообщений: 8,280

26.05.2014, 21:05

4

Цитата
Сообщение от medved62
Посмотреть сообщение

Пользуюсь отладчиком

ну так и посмотрите, что из себя представляет Отбор

Цитата
Сообщение от medved62
Посмотреть сообщение

так как не силен в 1С

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

Цитата
Сообщение от medved62
Посмотреть сообщение

а форму как посмотреть, если клиент то автоматически

есть ещё режим: управляемый, обычный. Смотреть в конфигураторе, ПКМ на форме — документа, например — Свойства, там тип формы.
В модуле тонкой (управляемой) формы есть слова &НаКлиенте, &НаСервере.

В каком объекте при каком событии возникла ошибка?



0



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

Новая тема

Ответить

Thorben

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

Как и где мне в УТ 8.1 правильно дать права пользователю, чтобы он мог все видеть, но ничего не смог писать? Давал просто пользователь, однако выдает ошибку.

BelikovS

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

Сразу несколько вопросов:<br>1. Какая ошибка<br>2. Когда возникает<br>3. Только у него и только с правами пользователь? Если добавить прав ошибка исчезает?

Thorben

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

Сейчас у меня у пользователя нет данных ни в контрагентнах, ни в номенклатуре. А в настройках стоит, чтение разрешено.<br>Где мне там в настройках и что добавить, чтобы он мог все видеть, но не мог ничего менять?

Liberty

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

У меня тот же самый вопрос только про ЗУП 8.1. Помогите=)

Thorben

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

«Я сейчас удалил почти все ограничения доступа к данным. Теперь вижу например все заказы. Однако, когда пытаюсь открыть отдельный заказ, появляется ошибка.» ОбщийМодуль.ОбщегоНазначения(3651)}: Ошибка при вызове метода контекста (ПолучитьПоследнее): Ошибка при выполнении операции над данными:<br>Microsoft OLE DB Provider for SQL Server: Arithmetischer &berlauffehler beim Konvertieren von expression in den int-Datentyp.<br>HRESULT=80040E57, SQLSrvr: Error state=2, Severity=10, native=8115, line=1<br><br> СтруктураПараметров = РегистрыСведений.УчетнаяПолитикаНалоговыйУчет.ПолучитьПоследнее(Дата, Новый Структура(«Организация», Организация));<br>по причине:<br>Ошибка при выполнении операции над данными:<br>Microsoft OLE DB Provider for SQL Server: Arithmetischer &berlauffehler beim Konvertieren von expression in den int-Datentyp.<br>HRESULT=80040E57, SQLSrvr: Error state=2, Severity=10, native=8115, line=1″<br><br>»

BelikovS

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

Если бы не хватало прав сообщение было бы коротким: «Недостаточно прав для операции над базой» (или что-то такое).<br>Попробуйте поставить этому пользователю «Полные права». Ошибка останется?<br>Создается ощущение, что дело не в правах и не в новом пользователе, а в базе или конфигурации.

Thorben

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

Я удалил шаблоны ограничений у роли «Пользователь» и ограничения доступа к данным. Ошибка исчезла.

bacemo

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

Про эту ошибку с кодом 80040E57 я уже читал на форумах. Как я понял дело в новых фунциях платформы 8.1.12 и выше. Она использует SQL Server SP4. Если на сервере SP3 и ниже, то достаточно установить K…. А проверить легко. Если в локальной БД все ОК, то виноват SQL.<br>У меня такое было на УПП 1.2.21 с платформой 8.1.13 SQL Server 2000 SP3.

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

Читают тему:

Понравилась статья? Поделить с друзьями:
  • Ошибка при вызове метода контекста получитьобъект элемент не выбран
  • Ошибка при вызове метода контекста прочитатьxdto
  • Ошибка при вызове метода контекста получитьобщуюформу
  • Ошибка при вызове метода контекста прочитатьjson недопустимое имя свойства
  • Ошибка при вызове метода контекста получитьмакет нарушение прав доступа