Как правильно ПолучитьПоследнее из регистра сведений |
Я |
25.06.15 — 11:59
Такую ошибку выдал мне, при выборе номенклатуры в режиме предприятия. Понимаю, что вопрос неправильно задан, мало информации…
{ОбщийМодуль.РаботаСоСправочниками.Модуль(6)}: Ошибка при вызове метода контекста (ПолучитьПоследнее)
ЗначенияРесурсов = РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата, Отбор);
по причине:
Недопустимое значение параметра (параметр номер ‘2’)
1 — 25.06.15 — 12:00
>Понимаю, что вопрос неправильно задан, мало информации…
Верно понимаешь.
Вопрос то в чем?
2 — 25.06.15 — 12:04
кривой отбор, что не ясно
3 — 25.06.15 — 12:05
Если ты программист, то смотри синтаксис по методу ПолучитьПоследнее() и проверяй, соответственно, в отладчике что у тебя попадает в в параметр «Отбор».
4 — 25.06.15 — 12:06
(2) не кривой, а вообще не отбор…
5 — 25.06.15 — 12:28
(4) Не факт. Если в отборе присутствуют поля не соответствующие измерениям будет такая же картина.
6 — 25.06.15 — 12:29
(4) это тоже туда инкапсулируется
7 — 25.06.15 — 12:32
(5) еще вариант: в отборе должно быть только одно измерение, а у автора несколько.
8 — 25.06.15 — 12:39
запросом делай
9 — 25.06.15 — 12:48
(0) ежели это в типовой конфигурации — вопрос к разработчикам, ежели сам наваял — сам понимаешь
10 — 26.06.15 — 12:37
мм…
Ну вот код
Функция РозничнаяЦена (АктуальнаяДата, ЭлементНоменклатуры) Экспорт
// Создать воспомогательный объект «Отбор»
Отбор = Новый Структура («Номенклатура», ЭлементНоменклатуры);
// Получить актуальны значения ресурсов регистра.
ЗначенияРесурсов = РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата, Отбор);
Возврат ЗначенияРесурсов.Цена;
КонецФункции
Вот ошибка из консоли, которую выдаёт, когда меняешь номенклатуру, должно подставить цену из регистра сведений, при выборе номенклатуры. Вроде…
{ОбщийМодуль.РаботаСоСправочниками.Модуль(6)}: Ошибка при вызове метода контекста (ПолучитьПоследнее)
ЗначенияРесурсов = РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата, Отбор);
по причине:
Недопустимое значение параметра (параметр номер ‘2’)
Недопустимое значение параметра (параметр номер ‘2’)
11 — 26.06.15 — 12:41
(10) «ЭлементНоменклатуры» это что?
12 — 26.06.15 — 12:56
(11) не знаю.. нету такой переменной в форме документа откуда запрашивает эту функцию. Эта функция в глоб.модулях. Конфигурация учебная, могу расшарить.
13 — 26.06.15 — 12:57
возможно, нужна не структура, а фиксированная структура…
14 — 26.06.15 — 13:00
(0) Код похож на пример из книжки Радченко «Практическое пособие разработчика»
15 — 26.06.15 — 13:02
Традиционно: встань в конфигураторе на ошибку, запусти отладчик, посмотри, какое значение в ЭлементНоменклатуры
16 — 26.06.15 — 13:03
(0) Все по книжке делал? Все галки там у модуля проставил?
В модул формы при изменении номенклатуры так?
// Получить текущую строку табличной части.
СтрокаТабличнойЧасти = Элементы.ПереченьНоменклатуры.ТекущиеДанные;
// Установить цену.
СтрокаТабличнойЧасти.Цена = РаботаСоСправочниками.РозничнаяЦена(Объект.Дата, СтрокаТабличнойЧасти.Номенклатура);
17 — 26.06.15 — 13:05
(14) Да, именно оно, по 8.3
18 — 26.06.15 — 13:06
(15) Тыкаюсь. Забыл как вызвать это окно в отладчике….
19 — 26.06.15 — 13:07
(16) Да, вот так
СтрокаТабличнойЧасти = Элементы.ПереченьНоменклатуры.ТекущиеДанные;
// Установить цену.
СтрокаТабличнойЧасти.Цена = РаботаСоСправочниками.РозничнаяЦена(Объект.Дата, СтрокаТабличнойЧасти.Номенклатура);
20 — 26.06.15 — 13:10
(18) Shift+F9
21 — 26.06.15 — 13:13
+ (20) либо в Конфигураторе меню Отладка — Вычислить выражение
22 — 26.06.15 — 13:15
ЭлементНоменклатуры – ссылка на элемент справочника Номен-
клатура, для которого мы хотим получить розничную цену.
я не знаю каким образом эта ссылка задана, я не писал таокго в коде и в свойствах тоже нигде не прописывал… не понятно..
23 — 26.06.15 — 13:18
ошибка не здесь: Функция РозничнаяЦена покажи как вызываешь.
24 — 26.06.15 — 13:19
(23)
&НаКлиенте
Процедура ПереченьНоменклатурыНоменклатураПриИзменении(Элемент)
// Получить текущую строку табличной части.
СтрокаТабличнойЧасти = Элементы.ПереченьНоменклатуры.ТекущиеДанные;
// Установить цену.
СтрокаТабличнойЧасти.Цена = РаботаСоСправочниками.РозничнаяЦена(Объект.Дата, СтрокаТабличнойЧасти.Номенклатура);
// Пересчитать сумму строки.
РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти);
КонецПроцедуры
25 — 26.06.15 — 13:25
26 — 26.06.15 — 13:31
Отбор = Новый Структура («Измерение1», ЭлементНоменклатуры);
27 — 26.06.15 — 14:08
(26) Что это значит?
28 — 26.06.15 — 14:11
(27) это значит, что измерение у тебя не «Номенклатура»
29 — 28.06.15 — 13:32
(28) Ну не знаю.. всё равно не понятно
Функция РозничнаяЦена (АктуальнаяДата, ЭлементНоменклатуры) Экспорт
// Создать воспомогательный объект «Отбор»
Отбор = Новый Структура («Номенклатура», ЭлементНоменклатуры);
// Получить актуальны значения ресурсов регистра.
ЗначенияРесурсов = РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата, Отбор);
Возврат ЗначенияРесурсов.Цена;
КонецФункции
30 — 28.06.15 — 14:16
(29)Если не можешь, ну запросом тогда.
Если конечно ты и про запросы ветку не поднимешь…
31 — 28.06.15 — 15:43
(29) В регистре сведений Цены у тебя нет поля Номенклатура. Посмотри внимательнее на этот регистр.
32 — 28.06.15 — 17:01
(31) Я не дал название измерению Номенклатура в регистре сведений, забыл просто. Спасибо, исправил свою ошибку, всё заработало))
33 — 28.06.15 — 17:06
Гениально….
Loki Evil
34 — 28.06.15 — 18:21
Могу посоветовать не использовать объектную модель для чтения данных воооооообще, а использовать запросы и особенно конструктор запросов — никаких таких проблем бы не возникло, сразу же бы увидели в конструкторе, что с таблицей регистра беда.
Скорость работы запросов на уровне, а за счет более тонкой фильтрации данных часто удается отобрать лучше и в итоге работает намного быстрее. Это не говоря о запросах по нескольким таблицам.
sergson |
|
||
---|---|---|---|
|
Ошибка {Документ.РеализацияТоваровИУслуг.Форма.ФормаДокумента.Форма(23)}: Ошибка при вызове метода контекста (ПолучитьПоследнее) ЦенаТовара = РегистрыСведений.Цены.ПолучитьПоследнее(,Отбор); по причине: Недопустимое значение параметра (параметр номер ‘2’) Код 1C v 8.х
|
Yandex |
|
||
---|---|---|---|
|
IBReiter |
|
||
---|---|---|---|
|
Вам нужно проверить, что в отбор попадает. И сверить имена измерений регистра и полей отбора структуры |
E_Migachev |
|
||
---|---|---|---|
|
Вот Как получить последнее значение регистра сведений? В целом у тебя вроде все правильно, передаешь структуру — может ей не нравится тип цен, попробуй без него |
sergson |
|
||
---|---|---|---|
|
Пробывал без ТипЦен или без Номенклатура ошибка та же |
IBReiter |
|
||
---|---|---|---|
|
Отбор — это: «Структура, содержащая отбор по измерениям регистра. Имя ключа структуры должно совпадать с именем измерения регистра, заданного в конфигураторе, а значение элемента структуры — задает отбираемое по данному измерению значение». Возвращаемое значение: «Структура, содержащую значения ресурсов». Вы пытаетесь передать значения ресурсов, чтобы получить измерение, а нужно делать наоборот. Вам нужно, чтобы номенклатура и типцен были измерениями, а цена — ресурс. Это будет правильно и Ваш алгоритм будет работать |
all4cf |
|
||
---|---|---|---|
|
Как-то регистр наоборот, конфа самописная? |
sergson |
|
||
---|---|---|---|
|
sergson |
|
||
---|---|---|---|
|
Большое спасибо все заработало, помогло сообщение — Отбор — это: «Структура, содержащая отбор по измерениям регистра. Имя ключа структуры должно совпадать с именем измерения регистра, заданного в конфигураторе, а значение элемента структуры — задает отбираемое по данному измерению значение».Возвращаемое значение: «Структура, содержащую значения ресурсов».Вы пытаетесь передать значения ресурсов, чтобы получить измерение, а нужно делать наоборот.
Вам нужно, чтобы номенклатура и типцен были измерениями, а цена — ресурс. Это будет правильно и Ваш алгоритм будет работать |
Подсказка: Вы можете приложить к ответу файл или изображение щелкнув по значку или в редакторе. |
Tais80
Новенький |
Доброго всем суток! Вот решилась на ответственный шаг изучения программирования 1С бухгалтерии. Мне как новичку предложили учитЬся по книге М.Г.Радченко 1С Предприятие 8.1. СтрокаТабличнойЧасти = ЭлементыФормы.ПереченьНоменклатуры.ТекущиеДанные; СтрокаТабличнойЧасти.Цена = РозничнаяЦена(Дата,Элемент.Значение); РассчитатьСумму(СтрокаТабличнойЧасти); А вот ошибка {Document.ОказаниеУслуг.Form.ФормаДокумента(72,49)}: Переменная не определена (Элемент) А вот код функции РозничнаяЦена, которую я использую в общем модуле. Функция РозничнаяЦена (АктуальнаяДата, ЭлементНоменклатуры)Экспорт Все смотрю, что сделала не так? Где мне нужно определить этот Элемент? Буду очень признательна за ответ. |
||
|
Tais80
Новенький |
Все получилось! Элемент это и есть Control !!! |
||
|
SHveД
Интересующийся |
Тоже беда в этом же разделе книги, Регистр Сведений, уже задавал по этому поводу вопрос, спасибо, помогли, переделал все с нуля, так другая ошибка выскакивает: Ошибка при вызове метода контекста (ПолучитьПоследнее):Недопустимое значение параметра(параметр номер 2) {ОбщийМодуль.РаботаСоСправочниками(7)}: Ошибка при вызове метода контекста (ПолучитьПоследнее): Недопустимое значение параметра (параметр номер ‘2’) Все строчки общего Модуля: Функция РозничнаяЦена(АктуальнаяДата, ЭлементНоменклатуры) Экспорт // Создать вспомогательный объект Отбор // Получить актуальные значения ресурсов регистра Возврат ЗначенияРесурсов.Цена; КонецФункции Помогите иначе у меня будут проблемы. |
||
|
Kivals |
1. ЭлементНоменклатуры — точно заполнен? |
||
|
SHveД
Интересующийся |
+++1. ЭлементНоменклатуры — точно заполнен? 1.Да, там находится название тризистора, ведь суть решения с использованием периодического регистра сведений, по изменению в документе Оказание Услуги даты, кофигурация берет данные внесеные в Регистр Сведений и меняет цену в документе Оказание Услуги данного транзистора, но выдает ошибку. П.С. подскажите как здесь вложить скрин экрана. что б не описывать все словами, лучше один раз увидет -чем |
||
|
Sel
Злобный
|
SHveД, перед отправкой поста нажми кнопку «Предпросмотр», потом- «Дополнительные опции», появится возможность добавить вложение, прикрепишь свой скрин. |
||
Слово не воробей. Всё не воробей, кроме воробья. |
Kivals |
Жду скринов… |
||
|
SHveД
Интересующийся |
Сорри, был в отъезде… вот скрины Процедура ПереченьНоменклатурыНомеклатураПриИзменении(Элемент) // Установить цену // Пересчитать сумму строки |
SHveД
Интересующийся |
ИзвИняюсь, не зна,л что скрины не выкладывает,а делает ссылку на них, названия бы точней оформил |
||
|
Kivals |
Offtopic: SHveД, чтобы выложить скрин — можно «подсмотреть» его адрес в отправленном посте, а потом отредактировать пост, вставив [IMG]http://здесь подсмотренная ссылка[/IMG] |
||
|
Kivals |
М-да — ничего не прояснилось |
||
|
SHveД
Интересующийся |
Вот он, в архиве |
||
|
Kivals |
Все очень просто: у тебя измерение в регистре сведений называется «Номеклатура» вместо «Номенклатура» |
||
|
SHveД
Интересующийся |
Offtopic: Да блин… есть смайл бьюсь головой об стену и разбиваю её на хрен за не надобностью, уже второй раз делаю в этом ошибку (!) , большое тебе спасибо за оказаную помощь и очередное напоминание что я безнадежен во внимательности |
||
|
medved62 19 / 0 / 0 Регистрация: 08.10.2013 Сообщений: 27 |
||||
1 |
||||
Ошибка при выполнении21.05.2014, 23:37. Показов 2431. Ответов 3 Метки нет (Все метки)
Новичок в изучении 1С Ошибка:
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 |
Пользуюсь отладчиком ну так и посмотрите, что из себя представляет Отбор
так как не силен в 1С ну раз пользуетесь отладчиком — напрягитесь, погуглите по разделу — есть в темах ссылки на мануалы
а форму как посмотреть, если клиент то автоматически есть ещё режим: управляемый, обычный. Смотреть в конфигураторе, ПКМ на форме — документа, например — Свойства, там тип формы. В каком объекте при каком событии возникла ошибка?
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
сообщений
Читают тему: