Поиск справочника по двум реквизитам

1. AlexeyPapanov 464 05.11.13 00:54 Сейчас в теме
Пишу загрузку номенклатуры и накладных из экселя в УТ 10.3.
Я в курсе готовых решений, они сложны в применении. а нужно написать для совсем тугоплавких.

Мне нужно найти номенклатуру по наименованию и по артикулу одновременно, тк у меня в базе есть совпадения по обеим реквизитам.
Как это лучше сделать?

У меня мысль пока одна. В поле "полное наименование писать артикул_наименование, а потом при поиске искать по этому реквизиту.
Есть ли еще решения?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. stanru1 91 05.11.13 01:13 Сейчас в теме
3. AlexeyPapanov 464 05.11.13 01:41 Сейчас в теме
можно. только вот что, если будет несколько тысяч позиций? и столько запросов делать на каждую строку?

а то, что я сказал, сделать нельзя.
полное наименование в ут неограниченной длинны, по которому сравнение невозможно.
4. НовенькийЯ 05.11.13 12:34 Сейчас в теме
Запрос идеально подходит под ваши нужды. И не надо писать тысячи запросов, он у вас будет всего 1.
Да и к тому же можно сделать запрос не в цикле а 1 запрос на все номенклатуры.
Я делал так:
1 - Цикл выборка нужных полей из XLS в таблицу значений(ТЗ).
2 - Запрос из внешнего источника(ТЗ) с присоединенным справочником Номенклатура по нужным полям. В этом запросе выбираем сам справочник и все поля из ТЗ
3 - в выборке по запросу смотрим, если номенклатура=null то создаем новую по полям из запроса, или используем найденную номенклатуру.

Этот метод в сотни раз увеличивает скорость загрузки прайса, так как не нужно искать тысячи раз номенклатуру по ключевым полям, это делается все 1 раз для всей номенклатуры.
5. AlexeyPapanov 464 05.11.13 13:13 Сейчас в теме
(4) НовенькийЯ, спасибо. я понял вас.
ни разу не сталкивался с запросами+ТЗ.
пока я этого не умею.
а вы не могли бы показать пример текста вашего запроса с параметром ТЗ?
6. stanru1 91 05.11.13 13:58 Сейчас в теме
(5) El_Loco,

	текстзапроса = "ВЫБРАТЬ
	|	тз.номенклатура
	|ПОМЕСТИТЬ времТЗ 
	|ИЗ
	|	&тз КАК тз
	|;
	|
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ
	|	времТЗ.номенклатура
	|ИЗ
	|	времТЗ КАК времТЗ
        | // тут соединяйте что с чем хотите, например со справочником номенклатуры
        |";
	
	ТЗ = новый ТаблицаЗначений();
        // таблица, которая "уйдет" в запрос
	ТЗ.колонки.добавить("номенклатура",новый ОписаниеТипов("строка"));
	запрос = новый Запрос(текстзапроса);
	запрос.параметры.Вставить("ТЗ",ТЗ);	
	
        // таблица, которая получится в результате
	тзрез = запрос.Выполнить().Выгрузить();
Показать
AlexeyPapanov; +1 Ответить
7. НовенькийЯ 05.11.13 14:05 Сейчас в теме
Как то так:

"ВЫБРАТЬ
| Таблица.Наименование КАК Наименование,
| Таблица.Артикул КАК Артикул
|ПОМЕСТИТЬ СписокНоменклатуры
|ИЗ
| &Таблица КАК Таблица
|;
|
|////////////////////////////////////////////////////////////­////////////////////
|ВЫБРАТЬ
| СписокНоменклатуры.Наименование,
| СписокНоменклатуры.Артикул,
| Номенклатура.Ссылка
|ИЗ
| СписокНоменклатуры КАК СписокНоменклатуры
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
| ПО СписокНоменклатуры.Наименование = Номенклатура.Наименование
| И СписокНоменклатуры.Артикул = Номенклатура.Артикул"
Запрос.УстановитьПараметр("Таблица",ТЗ);
AlexeyPapanov; +1 Ответить
8. AlexeyPapanov 464 05.11.13 22:04 Сейчас в теме
Спасибо, вы мне очень помогли.
Всем остальным, кому пригодится этот топик - когда будете передавать ТЗ в качестве параметра, при создании колонок обязательно устанавливайте их тип, иначе будет вылазить ошибка.
Оставьте свое сообщение

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