Доброго Дня.
Подсобите пожалуйста:
Есть:
ТаблицаЗначений (тзТаблица) с колонками - Товар(заполнено), Контрагент(пусто), датаПоследнегоПоступления(пусто)
Как заполнить пустые колонки.
Данную задачу решил таким путем:
Процедура ЗапросПН()
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(ЗапросПН)
|Период с (НачГода(ТекущаяДата())) по (ТекущаяДата());
// |Период с ВыбНачПериода по ВыбКонПериода;
|Обрабатывать НеПомеченныеНаУдаление;
|Контрагент = Документ.ПриходнаяНакладная.Контрагент;
|ТМЦ = Документ.ПриходнаяНакладная.ТМЦ;
|ДатаДок = Документ.ПриходнаяНакладная.ДатаДок;
|Группировка ТМЦ;
|Условие(ТМЦ = тзТаблица.Товар);
|"//}}ЗАПРОС
;
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
тзТаблица.Контрагент = Запрос.Контрагент;
тзТаблица.ДатаПослПост=Запрос.ДатаДок;
КонецПроцедуры
тзТаблица.ВыбратьСтроки();
Пока тзТаблица.ПолучитьСтроку()=1 Цикл
ЗапросПН();
КонецЦикла;
Конечно долго! Запрос на каждую строку ТЗ - это-ж кошмар!
сделайте СписокЗначений со всеми товарами из ТЗ и получи все результаты в одном запросе.
Потом уже циклом по результатам пройдись и проставь значения в ТЗ.
А примерчик как в запрос засунуть список можно?
можно так:
|Условие(ТМЦ В СЗ);
Но более правильно будет так:
|Условие(СЗ.Принадлежит(ТМЦ)=1);
Ускорить очень просто в десятки раз.
ТекстЗапроса =
"Период с (НачГода(ТекущаяДата())) по (ТекущаяДата());
|Без итогов;
|Обрабатывать НеПомеченныеНаУдаление;
|Контрагент = Документ.ПриходнаяНакладная.Контрагент;
|ТМЦ = Документ.ПриходнаяНакладная.ТМЦ;
|ДатаДок = Документ.ПриходнаяНакладная.ДатаДок;
|Группировка Контрагент без групп без упорядочивания;
|Группировка ТМЦ без групп без упорядочивания;
|Группировка ДатаДок без групп без упорядочивания;
|Условие(ТМЦ = тзТаблица.Товар);
|";
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
Запрос.Выгрузить(тбТоварыПрихода)
тбТоварыПрихода.Сортировать("Товар,ДатаДок");
КонецПроцедуры
i | Код можно выделять |
Вы что ребята, беленов объелись, простите, не сдержался. Вообще всю таблицу нужно получить одним запросом.
А если запрос медленно работает, то плюсы ставить и SQL запросом.
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua