УТ 10.3 Найти номенклатуру по полному наименованию.

1. pentanom 30 20.03.25 23:14 Сейчас в теме
Есть таблица, в которой в качестве наименования указано ПОЛНОЕ наименование номенклатуры. Как сделать поиск по полному наименованию. Если пишу
			Номенклатура = Справочники.Номенклатура.НайтиПоРеквизиту("НаименованиеПолное",СокрЛП(Лев(ААА,100)));
где ААА полное наименование из таблицы, то вылетает по ошибке
Ошибка при вызове метода контекста (НайтиПоРеквизиту)
{ВнешняяОбработка.ПрочитатьМакет.Форма.Форма.Форма(12)}: Номенклатура = Справочники.Номенклатура.НайтиПоРеквизиту("НаименованиеПолное",СокрЛП(Лев(ААА,100)));
по причине:
Неверно указан реквизит
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user2107191 20.03.25 23:26 Сейчас в теме
(1)
Неверно указан реквизит
Указать верно - не вариант?

Да и вообще - надо читать справку.
С Хранилищем значения и строками произвольной длины (неограниченной) это не работает. Соответственно, имена таких типов реквизитов являются невалидными.
pentanom; +1 Ответить
3. pentanom 30 20.03.25 23:48 Сейчас в теме
(2)
Указать верно - не вариант?
Не понятно что в этом случае должно считаться "верно"? Есть реквизит "НаименованиеПолное", есть его значение - ААА (беру первые 100 символов).
Если делаю поиск о артикулу, то никаких ошибок. Проблема в том, что артикул не у всей номенклатуры указан. Отличие в том, что "НаименованиеПолное" - строка неограниченной длины. Другого отличия не вижу.
8. user2107191 21.03.25 07:06 Сейчас в теме
(3) То есть вторую часть комментария я написал в пустоту.
Не барское это дело - читать до конца.
13. pentanom 30 21.03.25 11:08 Сейчас в теме
(8)
(3) То есть вторую часть комментария я написал в пустоту.
Не барское это дело - читать до конца.
Прошу прощения, но я не ожидал, что дальше будет что-то стоящее. В качестве извинения плюсанул.
9. user2107191 21.03.25 07:08 Сейчас в теме
(3)
(беру первые 100 символов).
А ты что ли хотел ещё и по части строки искать???
4. uriah 18 20.03.25 23:49 Сейчас в теме
Нет поиска по По полному наименованию. Костыль нужен. Выгрузить справочник в ТЗ, в строке добавить колонку,заполнить по строке эту колонку значением Полного наименования. Далее уже искать по значению.
5. pentanom 30 20.03.25 23:58 Сейчас в теме
(4)
Нет поиска по По полному наименованию. Костыль нужен. Выгрузить справочник в ТЗ, в строке добавить колонку,заполнить по строке эту колонку значением Полного наименования. Далее уже искать по значению.
Мудрено. Уж если выгрузить в ТЗ, то и дополнительную колонку не надо делать. Или я не прав? И странно, что по полному наименованию нет поиска, хотя это просто реквизит справочника. Только это строка неограниченной длины.
А если запросом?
7. uriah 18 21.03.25 07:04 Сейчас в теме
(5)
И странно, что по полному наименованию нет поиска, хотя это просто реквизит справочника.

Это к разработчику.
10. grafit 8 21.03.25 07:34 Сейчас в теме
(5) Запросом в лоб бесполезно.
12. Vadim-SH 21.03.25 08:21 Сейчас в теме
(5)
А если запросом?


ВЫБРАТЬ
	Т.НаименованиеПолное КАК ПолноеНаименование,
	Т.Ссылка КАК Ссылка
ИЗ
	Справочник.Номенклатура КАК Т
ГДЕ
	Истина
	И Выразить(Т.НаименованиеПолное КАК Строка(100))=&ПолноеНаименование
	//И Т.НаименованиеПолное ПОДОБНО &ПолноеНаименование + "%"
	//И Т.НаименованиеПолное ПОДОБНО "%" + &ПолноеНаименование + "%"
Показать
14. pentanom 30 21.03.25 13:03 Сейчас в теме
(12)
ГДЕ
Истина
И Выразить(Т.НаименованиеПолное КАК Строка(100))=&ПолноеНаименование
Зачем здесь условие ИСТИНА?
15. Vadim-SH 21.03.25 13:56 Сейчас в теме
(14) Для удобства. На результат запроса не влияет.
6. vlad636 12 21.03.25 04:07 Сейчас в теме
(4) С реквизитами с типом строка неограниченной длины лучше с запросом с использованием "ВЫРАЗИТЬ", ну, или как вариант, ограничить длину реквизита в конфигурации.
11. lone_mayson 59 21.03.25 08:07 Сейчас в теме
	Запрос = Новый Запрос();
	Запрос.УстановитьПараметр("ТЗ", ТЗ);
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	Таблица.НомерСтроки КАК НомерСтроки,
	|	Таблица.НаименованиеПолное КАК НаименованиеПолное
	|ПОМЕСТИТЬ ТЗ
	|ИЗ
	|	&ТЗ КАК Таблица
	|;
	|
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ
	|	Таблица.НомерСтроки КАК НомерСтроки,
	|	МАКСИМУМ(СправочникНоменклатура.Ссылка) КАК Ссылка
	|ИЗ
	|	ТЗ КАК Таблица
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СправочникНоменклатура
	|		ПО ((ВЫРАЗИТЬ(Таблица.НаименованиеПолное КАК СТРОКА(1000))) = (ВЫРАЗИТЬ(СправочникНоменклатура.НаименованиеПолное КАК СТРОКА(1000))))
	|
	|СГРУППИРОВАТЬ ПО
	|	Таблица.НомерСтроки";
	Выборка = Запрос.Выполнить().Выбрать();
	Пока Выборка.Следующий() Цикл
		ТЗ[Выборка.НомерСтроки - 1].Номенклатура = Выборка.Ссылка;
	КонецЦикла;
Показать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот