Пишу загрузку номенклатуры и накладных из экселя в УТ 10.3.
Я в курсе готовых решений, они сложны в применении. а нужно написать для совсем тугоплавких.
Мне нужно найти номенклатуру по наименованию и по артикулу одновременно, тк у меня в базе есть совпадения по обеим реквизитам.
Как это лучше сделать?
У меня мысль пока одна. В поле "полное наименование писать артикул_наименование, а потом при поиске искать по этому реквизиту.
Есть ли еще решения?
Я в курсе готовых решений, они сложны в применении. а нужно написать для совсем тугоплавких.
Мне нужно найти номенклатуру по наименованию и по артикулу одновременно, тк у меня в базе есть совпадения по обеим реквизитам.
Как это лучше сделать?
У меня мысль пока одна. В поле "полное наименование писать артикул_наименование, а потом при поиске искать по этому реквизиту.
Есть ли еще решения?
По теме из базы знаний
- Универсальная обработка поиска и отбора по нескольким подстрокам
- Распознавание и загрузка сканов в 1С "одним нажатием". УПД, ТОРГ-12, накладные, счета, номенклатура, заказы и т.д.
- Код для поиска номенклатуры в конфигурациях 1С. Использование мнемоники по первым буквам как вариант применения
- Не спеша, эффективно и правильно – путь разработки. Часть 2. Теория
- Синхронизация справочников или импорт данных через HTTP-сервис
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
можно. только вот что, если будет несколько тысяч позиций? и столько запросов делать на каждую строку?
а то, что я сказал, сделать нельзя.
полное наименование в ут неограниченной длинны, по которому сравнение невозможно.
а то, что я сказал, сделать нельзя.
полное наименование в ут неограниченной длинны, по которому сравнение невозможно.
Запрос идеально подходит под ваши нужды. И не надо писать тысячи запросов, он у вас будет всего 1.
Да и к тому же можно сделать запрос не в цикле а 1 запрос на все номенклатуры.
Я делал так:
1 - Цикл выборка нужных полей из XLS в таблицу значений(ТЗ).
2 - Запрос из внешнего источника(ТЗ) с присоединенным справочником Номенклатура по нужным полям. В этом запросе выбираем сам справочник и все поля из ТЗ
3 - в выборке по запросу смотрим, если номенклатура=null то создаем новую по полям из запроса, или используем найденную номенклатуру.
Этот метод в сотни раз увеличивает скорость загрузки прайса, так как не нужно искать тысячи раз номенклатуру по ключевым полям, это делается все 1 раз для всей номенклатуры.
Да и к тому же можно сделать запрос не в цикле а 1 запрос на все номенклатуры.
Я делал так:
1 - Цикл выборка нужных полей из XLS в таблицу значений(ТЗ).
2 - Запрос из внешнего источника(ТЗ) с присоединенным справочником Номенклатура по нужным полям. В этом запросе выбираем сам справочник и все поля из ТЗ
3 - в выборке по запросу смотрим, если номенклатура=null то создаем новую по полям из запроса, или используем найденную номенклатуру.
Этот метод в сотни раз увеличивает скорость загрузки прайса, так как не нужно искать тысячи раз номенклатуру по ключевым полям, это делается все 1 раз для всей номенклатуры.
(5) El_Loco,
текстзапроса = "ВЫБРАТЬ
| тз.номенклатура
|ПОМЕСТИТЬ времТЗ
|ИЗ
| &тз КАК тз
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| времТЗ.номенклатура
|ИЗ
| времТЗ КАК времТЗ
| // тут соединяйте что с чем хотите, например со справочником номенклатуры
|";
ТЗ = новый ТаблицаЗначений();
// таблица, которая "уйдет" в запрос
ТЗ.колонки.добавить("номенклатура",новый ОписаниеТипов("строка"));
запрос = новый Запрос(текстзапроса);
запрос.параметры.Вставить("ТЗ",ТЗ);
// таблица, которая получится в результате
тзрез = запрос.Выполнить().Выгрузить();
Показать
Как то так:
"ВЫБРАТЬ
| Таблица.Наименование КАК Наименование,
| Таблица.Артикул КАК Артикул
|ПОМЕСТИТЬ СписокНоменклатуры
|ИЗ
| &Таблица КАК Таблица
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| СписокНоменклатуры.Наименование,
| СписокНоменклатуры.Артикул,
| Номенклатура.Ссылка
|ИЗ
| СписокНоменклатуры КАК СписокНоменклатуры
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
| ПО СписокНоменклатуры.Наименование = Номенклатура.Наименование
| И СписокНоменклатуры.Артикул = Номенклатура.Артикул"
Запрос.УстановитьПараметр("Таблица",ТЗ);
"ВЫБРАТЬ
| Таблица.Наименование КАК Наименование,
| Таблица.Артикул КАК Артикул
|ПОМЕСТИТЬ СписокНоменклатуры
|ИЗ
| &Таблица КАК Таблица
|;
|
|////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| СписокНоменклатуры.Наименование,
| СписокНоменклатуры.Артикул,
| Номенклатура.Ссылка
|ИЗ
| СписокНоменклатуры КАК СписокНоменклатуры
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
| ПО СписокНоменклатуры.Наименование = Номенклатура.Наименование
| И СписокНоменклатуры.Артикул = Номенклатура.Артикул"
Запрос.УстановитьПараметр("Таблица",ТЗ);
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот