Приветствую, Форумчане!
1с8.3.12, СП, самопис, УФ
Имеется обработка. Обраотка имеет 2-е ТЧ: ТЧ_Основная, ТЧ_Дополнительно
ТЧ_Основная заполняется по кнопке, основной Реквизит "Заказ".
Требуется на основании данных ТЧ_Основная заполнить данными Дополнительную ТЧ. Сейчас делаю обходом по всей ТЧ и далее запросом добиваю данные для другой ТЧ:
КодДля Каждого Заказы Из Объект.ТЧосновная Цикл
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДоставкаТоваровВПодразделенияОстатки.Заказ,
| ДоставкаТоваровВПодразделенияОстатки.КлючСтрокиЗаказа,
| ДоставкаТоваровВПодразделенияОстатки.КоличествоОстаток
|ИЗ
| РегистрНакопления.ДоставкаТоваровВПодразделения.Остатки КАК ДоставкаТоваровВПодразделенияОстатки
|ГДЕ
| ДоставкаТоваровВПодразделенияОстатки.КоличествоОстаток > 0
| И ДоставкаТоваровВПодразделенияОстатки.Заказ = &Заказ
| И ДоставкаТоваровВПодразделенияОстатки.КлючСтрокиЗаказа = &КлючСтрокиЗаказа";
Запрос.УстановитьПараметр("Заказ", Заказы.Заказ);
Запрос.УстановитьПараметр("КлючСтрокиЗаказа", Заказы.КлючСтроки);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
ТЧ = Объект.ТЧДополнительно.Добавить();
ТЧ.Заказ = Выборка.Заказ;
ТЧ.КлючСтроки = Выборка.КлючСтрокиЗаказа;
ТЧ.КлючСтрокиУИД = Выборка.КлючСтрокиЗаказа;
КонецЦикла;
КонецЦикла;
Показать
Заполнение идет естественно очень долго. Есть ли более оптимальный способ получения данных для второй ТЧ?
Типа в приведенный запрос вставить все данные из ТЧ_Основная и уже в самом запросе проверять соответствие через соединение?
Т.е. использовать в запросе на соединение ТЧ обработки как простую таблицу из других документов?
КодТабЗнач = Новый ТаблицаЗначений;
ТабЗнач = Объект.ТЧОсновная.Выгрузить(,);
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВТ.Заказ,
| ВТ.КлючСтроки,
| ВТ.КлючСтрокиУИД
|ПОМЕСТИТЬ ВТ_Заказы
|ИЗ
| &ВТ КАК ВТ
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ДоставкаТоваровВПодразделенияОстатки.Заказ,
| ДоставкаТоваровВПодразделенияОстатки.КлючСтрокиЗаказа,
| ДоставкаТоваровВПодразделенияОстатки.КоличествоОстаток
|ИЗ
| ВТ_Заказы КАК ВТ_Заказы
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ДоставкаТоваровВПодразделения.Остатки КАК ДоставкаТоваровВПодразделенияОстатки
| ПО ВТ_Заказы.Заказ = ДоставкаТоваровВПодразделенияОстатки.Заказ
| И ВТ_Заказы.КлючСтроки = ДоставкаТоваровВПодразделенияОстатки.КлючСтрокиЗаказа
|ГДЕ
| ДоставкаТоваровВПодразделенияОстатки.КоличествоОстаток > 0";
Запрос.УстановитьПараметр("ВТ", ТабЗнач);
НеДоставленныеЗаказы = Запрос.Выполнить().Выгрузить();
Отладчик показал правильные результаты в "НеДоставленныеЗаказы"
Как теперь одним махом разместить эти данные в другой таличной части обработки?
Constantus @ Сегодня, 16:17
,
Ответ:
Объект.НеДоставлены.Загрузить(НеДоставленныеЗаказы);
Сообщение отредактировал Vofka - 26.09.19, 12:25