|
Не работает срезпоследних 🠗 (Волшебник 01.01.2025 11:51) | ☑ | ||
---|---|---|---|---|
0
Alien47
naïve
30.12.24
✎
17:28
|
Добрый день! Всех с наступающим! В 1с я новичок.
Пытаюсь подтянуть цены номенклатуры из ЦеныПродажи.СрезПоследних. При сохранении выдает ошибку Неверные параметры в операции сравнения. Нельзя сравнивать поля неограниченной длины и поля несовместимых типов. некий кодРегистрСведений.ЦеныПродукции.СрезПоследних (&Период, Номенклатура = <<?>>=&Номенклатура) Как ЦеныПродукцииСрезПоследних Никак не видит параметр Номенклатура, пишет, что переменная не определена. Текст запроса - Номенклатура = Справочники.Номенклатура; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЦеныПродукцииСрезПоследних.ЦенаБезНДС КАК Цена, | ЦеныПродукцииСрезПоследних.Номенклатура, | ЦеныПродукцииСрезПоследних.Период |ИЗ | РегистрСведений.ЦеныПродукции.СрезПоследних(&Период, Номенклатура = &Номенклатура) КАК ЦеныПродукцииСрезПоследних"; запрос.УстановитьПараметр("Период",НачалоДня(объект.Дата)); запрос.УстановитьПараметр("Номенклатура",Номенклатура); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл Цена = Выборка.Цена; Возврат Цена; КонецЦикла; |
|||
1
Amra
30.12.24
✎
17:06
|
Что непонятно в ошибке? Переменная Номенклатура не того типа. Посмотри, какого типа у тебя переменная, и какого соответствующее измерение в регистре
|
|||
2
Alien47
naïve
30.12.24
✎
17:08
|
Если убрать строку
Номенклатура = Справочники.Номенклатура; Тогда пишет, что переменная не определена (Номенклатура). |
|||
3
Alien47
naïve
30.12.24
✎
17:10
|
Amra,
В документе, где делаю срезпоследних переменная типа СправочникСсылка.Номенклатура. И в регистре переменная типа СправочникСсылка.Номенклатура |
|||
4
maxab72
30.12.24
✎
17:16
|
(0) "Номенклатура = Справочники.Номенклатура;" Это зачем? Тебе нужна конкретная ссылка в справочнике номенклатуры, а не весь справочник целиком.
|
|||
5
Alien47
naïve
30.12.24
✎
17:18
|
maxab72,
Тогда пишет ошибку, что переменная не определена (Номенклатура). |
|||
6
H A D G E H O G s
30.12.24
✎
17:21
|
Чужик - брат по разуму.
|
|||
7
Fedor-1971
30.12.24
✎
17:33
|
(0) Что такое Ссылка знаешь?
что присвоено переменной Номенклатура? (вот в этой строке "запрос.УстановитьПараметр("Номенклатура",Номенклатура);") |
|||
8
Волшебник
30.12.24
✎
17:30
|
(5) Когда обращаетесь к конкретному сообщению, то пишите его номер в скобках
почитайте описание форума, куда Вас занесло случайно https://1cers.ru/help/about.html хотя может это судьба и приживётесь вот Буковка прижилась же |
|||
9
Волшебник
30.12.24
✎
17:28
|
(6) Давайте без вот этих вот... На новогодних каникулах будет мало веток.
|
|||
10
Волшебник
30.12.24
✎
17:31
|
(5) Если пишет ошибку, что "переменная не определена (Номенклатура)", значит не определена переменная Номенклатура в этой строке. Там ещё номер строки должен быть. Ставьте точку останова на этой строке и смотрите значения переменных. (Отладчик нужен)
|
|||
11
lEvGl
гуру
30.12.24
✎
17:32
|
(0) У Справочники.Номенклатура тип объекта - справочник-менеджер, в параметр запроса должен передаваться конкретный элемент справочника, то есть ссылка. Найдите два отличия
|
|||
12
lEvGl
гуру
30.12.24
✎
17:33
|
(0) в (10) для понимания что где это самый верный вариант
|
|||
13
Волшебник
30.12.24
✎
17:35
|
(11) Типы СправочникМенеджер и СправочникСсылка — это был мой первый культурный (когнитивный) шок после 7.7, когда я изучал восьмёрку. В семёрке был просто "Справочник"
|
|||
14
Asmody
30.12.24
✎
17:43
|
(0) Справочники.Номенклатура - это весь справочник целиком. Все его 100500 элементов вместе. Если точнее, то это менеджер справочника.
В параметр запроса надо отправить элемент справочника номенклатура, а точнее - ссылку на него. Откуда он/она возьмётся - это уже ваше дело. Самый простой вариант получить ссылку на элемент справочника - попросить НайтиПоКоду() у менеджера справочника (на проде так делать не надо, для тренировки сойдет). Т.е.: Номенклатура = Справочники.Номенклатура.НайтиПоКоду("00000000001"); |
|||
15
Asmody
30.12.24
✎
17:37
|
(13) вполне логичное разделение ответственности
|
|||
16
lEvGl
гуру
30.12.24
✎
17:41
|
(13) ну вот с точки зрения ООП не до всех дошло, например
Справочники.Номенклатура - это весь справочник целиком. Все его 100500 элементов вместе
;) и опять ошибка, очевидно перекликается с 7.7 Справочник.Номенклатура.НайтиПоКоду("00000000001");
;;) |
|||
17
Fedor-1971
30.12.24
✎
17:42
|
(13) Походу, ТС использует логику 7.7 Номенклатура - значение в текущей строке ТЧ, по его логике уже заполнено.
А тут засада подкралась из-за угла - Номенклатура = Неопределено и сравнивать в запросе не получается |
|||
18
Asmody
30.12.24
✎
17:45
|
Учтите, что в реквизитах объектов хранятся те самые ссылки, которые вам нужны.
Т.е., если у вас есть некий документ ЗаказПокупателя, у него табличная часть Товары, в котором есть реквизит Номенклатура, то в запрос надо передавать СтрокаТовары.Номенклатура. Ни в коем случае не СтрокаТовары.Номенклатура.Ссылка, и уж тем более не Справочники.Номенклатура.НайтиПоКоду(СтрокаТовары.Номенклатура.Код) |
|||
19
Asmody
30.12.24
✎
17:45
|
(16) НайтиПоКоду() у менеджера - это, как раз, нормально. Дело менеджера разбираться с "табличкой" в целом.
|
|||
20
Asmody
30.12.24
✎
17:46
|
А в следующей ветке мы научим ТС, как не писать запросы в цикле
|
|||
21
lEvGl
гуру
30.12.24
✎
17:56
|
(20) кмк это будет еще не скоро. если с типами непонятно, то до циклов еще дальняя дорога. Но надеемся и ждем
|
|||
22
Волшебник
30.12.24
✎
17:57
|
О, в ветке собрались мэтры, знающие типы... Джун-автор будет жив!
|
|||
23
lEvGl
гуру
30.12.24
✎
18:00
|
:D
но не только лишь все)) |
|||
24
Волшебник
30.12.24
✎
18:00
|
(23) хе-хе. Выживут все. Вы просто не слышали мою новую песню Блокчейн.
Выживут все https://wizard.mista.ru/music/my-songs/blockchain.html |
|||
25
lEvGl
гуру
30.12.24
✎
18:24
|
(24) в кубит.. ну неплохо сочиняет и спевает, и смысл есть. Но с ии настроен скептически: его суть - делать выводы на уже произошедшем или повторять произошедшее. Это упрощает такой вид деятельности, ее ведут некоторые люди, но это никак не развивает, что тоже делают люди, только другие
|
|||
26
Волшебник
30.12.24
✎
18:25
|
(25) Чушь какая-то! Какой вид деятельности делают люди, кроме просто жизни?
|
|||
27
lEvGl
гуру
30.12.24
✎
18:37
|
(26) смотря что понимать под просто жизнью. Федор Михалыч (ну например) тоже просто жил, как наверно он думал, а какой базис получили. Это справедливо для других сфер деятельности тоже, причем литература занимает далеко не первое место, это для примера. Именно этим и оперирует сейчас ии, выдавая квадроберам до дрожи глубокие мысли, книг то никто не открывал)
|
|||
28
Волшебник
30.12.24
✎
18:40
|
(27) Ну создайте новую ветку под Вашу мысль. Чё мы тут как бедние родственники на Новый год?
|
|||
29
lEvGl
гуру
30.12.24
✎
18:57
|
(28) уффф.. ну ок, сейчас новогодний матрас затяну к себе...
|
|||
30
Волшебник
30.12.24
✎
18:57
|
||||
31
Волшебник
30.12.24
✎
18:58
|
Учись, салага
|
|||
32
lEvGl
гуру
30.12.24
✎
19:44
|
.. затащил
|
|||
33
Alien47
naïve
31.12.24
✎
10:02
|
(7)
Как понять, что присвоено переменной Номенклатура? (вот в этой строке "запрос.УстановитьПараметр("Номенклатура",Номенклатура);")? |
|||
34
Дмитрий
31.12.24
✎
10:09
|
(33) Откройте регистр сведений ЦеныНоменклатуры и посмотрите, какой тип у измерения Номенклатура. Затем установите параметр своего запроса значением такого же типа.
Пока что у Вас это не получилось. |
|||
35
Prog_man
гуру
31.12.24
✎
10:12
|
(33) запрос.УстановитьПараметр("Номенклатура",Номенклатура)
второй параметр Номенклатура, откуда берешь? какой у тебя документ? и где хранится ссылка на Номенклатуру? в табличной части ? |
|||
36
Alien47
naïve
31.12.24
✎
10:24
|
(34) Тип измерения СправочникСсылка.Номенклатура, если я правильно понимаю. Подскажите, пожалуйста, как установить параметр запроса значением того же типа?
(35) У меня документ ПоступлениеТоваровИУслуг. Номенклатура в табличной части Товары. |
|||
37
Волшебник
31.12.24
✎
10:39
|
(36) Это неправильно.
|
|||
38
Волшебник
31.12.24
✎
10:46
|
Смотри, Катя. Я тебя сейчас научу.
Берёшь эту ветку и тыкаешь в лицо своему начальнику с фразой "Нужна отладка".
Дальше само разрулится |
|||
39
Prog_man
гуру
31.12.24
✎
10:49
|
(36) примерно так
Для Каждого ТекСтрока из Объект.Товары Цикл Цена = ПолучитьЦену(ТекСтрока.Номенклатура); КонецЦикла; Функция ПолучитьЦену(Номенклатура) Экспорт Отбор = Новый Структура("Номенклатура", Номенклатура); Ресурсы = РегистрыСведений.ЦеныПродукции.ПолучитьПоследнее(Объект.Дата, Отбор); Возврат Ресурсы.Цена; КонецФункции |
|||
40
Волшебник
31.12.24
✎
10:42
|
(39) фу, нет лесенки
|
|||
41
Prog_man
гуру
31.12.24
✎
10:44
|
если нужно при изменении номенклатуры, то такой вариант:
СтрокаТабличнойЧасти = Элементы.Товары.ТекущиеДанные; СтрокаТабличнойЧасти.Цена = ПолучитьЦену(СтрокаТабличнойЧасти.Номенклатура); |
|||
42
Prog_man
гуру
31.12.24
✎
10:45
|
(40) соррян
|
|||
43
Волшебник
31.12.24
✎
10:45
|
(42) ладно...
|
|||
44
Alien47
naïve
31.12.24
✎
14:28
|
(39)
Большое Вам спасибо! Всё заработало. |
|||
45
Волшебник
31.12.24
✎
14:56
|
(44) Сможете создать новую ветку?
|
|||
46
Волшебник
01.01.25
✎
11:53
|
(25) Слова песни я сочинил сам.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |