Добрый вечер. Уперся в задачу, которую своими силами не смог решить. Дайте дельный совет, куда рыть.
Ситуация: Есть Табличный документ с названиями товара. Строк 1000+. (На клиенте) Если перебирать в цикле и искать в справочниках (На сервере), то после 250 строк уже начинает просаживаться скорость (прям на глазах видно).
&НаСервере
Функция ПолучитьТоварНаСервере(Название)
Возврат Справочники.Номенклатура.НайтиПоНаименованию(Название);
КонецФункции
Володька @ Today, 15:53
,
Зачем передавать табличный документ? Обойдите его и соберите в массив, например, все нужные данные и этот массив уже и передавайте на сервер.
Petre @ Сегодня, 16:56
,
Вопрос больше в том, как эти данные потом сравнить на сервере (Массив строк). Как передать на сервер в любом виде я понимаю.
Володька, выбрать все названия в массив, потом запрос к справочнику с условием
ГДЕ
Наименование в (&МассивНаименований)
Vofka @ Вчера, 17:19
,
Спасибо за ответ.
Сделал, как советовал Petre. Сформировал массив с названием товаров по табличному документу, передал на сервер и сравнил, как советовали Вы.
Итог:
Отправляем
Товар1 (Строка)
Товар2 (Строка)
Товар3 (Строка)
....
Запрос
...
Получаем
Товар1 (Элемент справочника)
Товар3 (Элемент справочника)
....
Володька @ Today, 9:13
,
На сервере создайте тз с одной колонкой. Загрузите туда переданный массив. Передайте тз в запрос в качестве источника. В запросе этот источник соедините с таблицей товара...
Попробуйте с передать данные (табличный документ) через временное хранилище:
ПолучитьИзВременногоХранилища
ПоместитьВоВременноеХранилище
УдалитьИзВременногоХранилища - главное не забыть удалить из временного хранилища после обработки.
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua