Читаю Ексель и получаю данные номер заказа. далее записываю эти номера в массив и подставляю их как параметр запроса но на этом моменте получаю ошибку недостаточно памяти, превышение времени, Как мне сделать это правильно и чтобы работало быстро. номеров в массиве 50 штук примерно.
Код 1C v 8.3 &НаСервере
Процедура ЗаполнитьДанныеНаСервере()
Попытка
МассивНомерНаСайте = Новый Массив;
Для каждого СтрокаДанных Из ЭтаФорма.ТаблицаОстатковРасчетов Цикл
МассивНомерНаСайте.Добавить(СокрЛП(СтрокаДанных.НомерЗаказаНаСайте));
КонецЦикла;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЗНАЧЕНИЕ(Перечисление.ТипыРасчетовСПартнерами.РасчетыСКлиентом) КАК ТипРасчетов,
| ЕСТЬNULL(РасчетыСКлиентами.СуммаОстаток, 0) КАК Сумма,
| РасчетыСКлиентами.ЗаказКлиента.Номер КАК Номер,
| РасчетыСКлиентами.ЗаказКлиента КАК Заказ,
| РасчетыСКлиентами.АналитикаУчетаПоПартнерам.Контрагент КАК Контрагент,
| ВЫБОР
| КОГДА РасчетыСКлиентами.СуммаОстаток > 0
| ТОГДА РасчетыСКлиентами.СуммаОстаток
| ИНАЧЕ 0
| КОНЕЦ КАК ДолгПартнера,
| ВЫБОР
| КОГДА РасчетыСКлиентами.КОплатеОстаток > 0
| ТОГДА РасчетыСКлиентами.КОплатеОстаток
| ИНАЧЕ 0
| КОНЕЦ КАК КОплате,
| РасчетыСКлиентами.ЗаказКлиента.СтатусЗаказаHybris КАК СтатусЗаказаHybris,
| РасчетыСКлиентами.ЗаказКлиента.НомерЗаказаНаСайте КАК НомерЗаказаНаСайте
|ИЗ
| РегистрНакопления.РасчетыСКлиентами.Остатки(, ЗаказКлиента.НомерЗаказаНаСайте В (&МассивНомерНаСайте)) КАК РасчетыСКлиентами";
Запрос.УстановитьПараметр("МассивНомерНаСайте", МассивНомерНаСайте);
Выборка = Запрос.Выполнить().Выгрузить();
Строка = ЭтаФорма.ТаблицаОстатковРасчетов;
Пока Выборка.Следующий() Цикл
Значение = Строка.Добавить();
Значение.НомерЗаказаНаСайте = Выборка.НомерЗаказаНаСайте;
Значение.СтатусЗаказа = Выборка.СтатусЗаказа;
Значение.Контрагент = Выборка.Контрагент;
Значение.Сумма = Выборка.Сумма;
Значение.Заказ = Выборка.Заказ;
Значение.ДолгПартнера = Выборка.ДолгПартнера;
Значение.ТипРасчетов = Выборка.ТипРасчетов;
КонецЦикла;
Исключение
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Не удалось внести данные по причине" +ОписаниеОшибки();
Сообщение.Сообщить();
КонецПопытки;
КонецПроцедуры