|   |   | 
| 
 | Не работает срезпоследних ↓ (Волшебник 01.01.2025 11:51) | ☑ | ||
|---|---|---|---|---|
| 0
    
        Alien47 30.12.24✎ 17:28 | 
        Добрый день! Всех с наступающим! В 1с я новичок.
 Пытаюсь подтянуть цены номенклатуры из ЦеныПродажи.СрезПоследних. При сохранении выдает ошибку Неверные параметры в операции сравнения. Нельзя сравнивать поля неограниченной длины и поля несовместимых типов. некий кодРегистрСведений.ЦеныПродукции.СрезПоследних (&Период, Номенклатура = <<?>>=&Номенклатура) Как ЦеныПродукцииСрезПоследних
Никак не видит параметр Номенклатура, пишет, что переменная не определена.
Текст запроса -
Номенклатура = Справочники.Номенклатура;
	Запрос = Новый Запрос;
	Запрос.Текст = 
"ВЫБРАТЬ
|	ЦеныПродукцииСрезПоследних.ЦенаБезНДС КАК Цена,
|	ЦеныПродукцииСрезПоследних.Номенклатура,
|	ЦеныПродукцииСрезПоследних.Период
|ИЗ
|	РегистрСведений.ЦеныПродукции.СрезПоследних(&Период, Номенклатура = &Номенклатура) КАК ЦеныПродукцииСрезПоследних";
		
		запрос.УстановитьПараметр("Период",НачалоДня(объект.Дата));		  
		запрос.УстановитьПараметр("Номенклатура",Номенклатура);	   	
		Выборка = Запрос.Выполнить().Выбрать();	
	Пока Выборка.Следующий() Цикл
		Цена = Выборка.Цена;
		Возврат Цена;
	КонецЦикла; | |||
| 1
    
        Amra 30.12.24✎ 17:06 | 
        Что непонятно в ошибке? Переменная Номенклатура не того типа. Посмотри, какого типа у тебя переменная, и какого соответствующее измерение в регистре     | |||
| 2
    
        Alien47 30.12.24✎ 17:08 | 
        Если убрать строку 
 Номенклатура = Справочники.Номенклатура; Тогда пишет, что переменная не определена (Номенклатура). | |||
| 3
    
        Alien47 30.12.24✎ 17:10 | 
        Amra,
 В документе, где делаю срезпоследних переменная типа СправочникСсылка.Номенклатура. И в регистре переменная типа СправочникСсылка.Номенклатура | |||
| 4
    
        maxab72 30.12.24✎ 17:16 | 
        (0) "Номенклатура = Справочники.Номенклатура;" Это зачем? Тебе нужна конкретная ссылка в справочнике номенклатуры, а не весь справочник целиком.     | |||
| 5
    
        Alien47 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://forum.mista.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 31.12.24✎ 10:02 | 
        (7)
 Как понять, что присвоено переменной Номенклатура? (вот в этой строке "запрос.УстановитьПараметр("Номенклатура",Номенклатура);")? | |||
| 34
    
        Дмитрий 31.12.24✎ 10:09 | 
        (33) Откройте регистр сведений ЦеныНоменклатуры и посмотрите, какой тип у измерения Номенклатура. Затем установите параметр своего запроса значением такого же типа. 
 Пока что у Вас это не получилось. | |||
| 35
    
        Prog_man 31.12.24✎ 10:12 | 
        (33) запрос.УстановитьПараметр("Номенклатура",Номенклатура)
 второй параметр Номенклатура, откуда берешь? какой у тебя документ? и где хранится ссылка на Номенклатуру? в табличной части ? | |||
| 36
    
        Alien47 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 31.12.24✎ 14:28 | 
        (39)
 Большое Вам спасибо! Всё заработало. | |||
| 45
    
        Волшебник 31.12.24✎ 14:56 | 
        (44) Сможете создать новую ветку?     | |||
| 46
    
        Волшебник 01.01.25✎ 11:53 | 
        (25) Слова песни я сочинил сам.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |