Версия для печати темы (https://pro1c.org.ua/index.php?s=30d45afc6968b637f5b3af9ba1891e10&showtopic=56535)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Поиск данных из списка в одном запросе

Автор: Володька 22.01.20, 15:53

Добрый вечер. Уперся в задачу, которую своими силами не смог решить. Дайте дельный совет, куда рыть.

Ситуация: Есть Табличный документ с названиями товара. Строк 1000+. (На клиенте) Если перебирать в цикле и искать в справочниках (На сервере), то после 250 строк уже начинает просаживаться скорость (прям на глазах видно).

&НаСервере
Функция ПолучитьТоварНаСервере(Название)
      Возврат Справочники.Номенклатура.НайтиПоНаименованию(Название);
КонецФункции

Вопрос: Есть ли способ передать данные табличного документа на сервер (как превратить эти данные в ТЗ я понимаю) и запросом (в идеале одним) найти соответствия в справочнике? Может кто-то решал подобную задачу, наведите на путь истинный.

Пример:
Отправляем
Товар1 (Строка)
Товар2 (Строка)
Товар3 (Строка)
....
Запрос
...
Получаем
Товар1 (Элемент справочника)
Null
Товар3 (Элемент справочника)
....

Автор: Petre 22.01.20, 15:56

Володька @ Today, 15:53 * ,
Зачем передавать табличный документ? Обойдите его и соберите в массив, например, все нужные данные и этот массив уже и передавайте на сервер.

Автор: Володька 22.01.20, 16:00

Petre @ Сегодня, 16:56 * ,
Вопрос больше в том, как эти данные потом сравнить на сервере (Массив строк). Как передать на сервер в любом виде я понимаю.

Автор: Vofka 22.01.20, 16:19

Володька, выбрать все названия в массив, потом запрос к справочнику с условием

ГДЕ
   Наименование в (&МассивНаименований)

Автор: Володька 23.01.20, 9:13

Vofka @ Вчера, 17:19 * ,
Спасибо за ответ.
Сделал, как советовал Petre. Сформировал массив с названием товаров по табличному документу, передал на сервер и сравнил, как советовали Вы.
Итог:

Отправляем
Товар1 (Строка)
Товар2 (Строка)
Товар3 (Строка)
....
Запрос
...
Получаем
Товар1 (Элемент справочника)
Товар3 (Элемент справочника)
....

Как теперь понять, какой товар отсутствует в базе? Как сравнить? Результат запроса выгружен в ТЗ, исходные данные в Массиве. ТЗ 1650 элементов, Массив 1730 элементов.

Автор: Petre 23.01.20, 9:33

Володька @ Today, 9:13 * ,
На сервере создайте тз с одной колонкой. Загрузите туда переданный массив. Передайте тз в запрос в качестве источника. В запросе этот источник соедините с таблицей товара...

Автор: macho210386 23.01.20, 10:44

Попробуйте с передать данные (табличный документ) через временное хранилище:
ПолучитьИзВременногоХранилища
ПоместитьВоВременноеХранилище
УдалитьИзВременногоХранилища - главное не забыть удалить из временного хранилища после обработки.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua