Имя: Пароль:
1C
1С v8
Получить обороты счета
,
0 malev35
 
10.09.12
17:12
Функция ПолучитьОборот (ТекСтрока)
   
   Запрос = Новый Запрос;
   Запрос.Текст ="ВЫБРАТЬ
   |ЕПСБУОбороты.Счет,
   |ЕПСБУОбороты.Субконто2,
   |ЕПСБУОбороты.Субконто3,
   |ЕПСБУОбороты.СуммаОборотКт
   |ИЗ
   |РегистрБухгалтерии.ЕПСБУ.Обороты(&НачПериода, &КонПериода, Период, Счет В (&СписокСчетов), , (Субконто2 = &Контрагент) И (Субконто3 = &Договор) )КАК ЕПСБУОбороты";
   
   Запрос.УстановитьПараметр("НачПериода", НачалоМесяца(Дата));
   Запрос.УстановитьПараметр("КонПериода", КонецМесяца(Дата));
   
   СписокСчетов = Новый СписокЗначений;
   СписокСчетов.Добавить(ПланыСчетов.ЕПСБУ.РасчетыСПлательщикамиДоходовОтУслуг); //205.31.(2.0.2)
   СписокСчетов.Добавить(ПланыСчетов.ЕПСБУ.ДСУчрежденияНаЛСВБанке);                //201.21.(2.2)
   СписокСчетов.Добавить(ПланыСчетов.ЕПСБУ.Касса);                                //201.34.(2.1.2)
   
   //Запрос.УстановитьПараметр("Счет", ПланыСчетов.ЕПСБУ.РасчетыСПлательщикамиДоходовОтУслуг);

   Запрос.УстановитьПараметр("СписокСчетов", СписокСчетов);
   
   Запрос.УстановитьПараметр("Контрагент",ТекСтрока.Плательщик );
   Запрос.УстановитьПараметр("Договор",ТекСтрока.Договор);
             
   Выборка = Запрос.Выполнить().Выбрать();
   Пока Выборка.Следующий() Цикл
       Продолжить;
   КонецЦикла;
   Возврат Выборка.СуммаОборотКт;
КонецФункции    

Как оптимизировать данный код для запроса сразу по всем строкам табличной части и соответственно выгрузки результата запроса в колонку табличной части документа?
1 DrShad
 
10.09.12
17:14
неужто в цикле функция выбирается!?
2 DrShad
 
10.09.12
17:15
а вот это
Пока Выборка.Следующий() Цикл
       Продолжить;
   КонецЦикла;
   Возврат Выборка.СуммаОборотКт;

феерично!
3 malev35
 
10.09.12
17:15
знаю что в корне неверно, скажите как надо
4 DrShad
 
10.09.12
17:17
(3) ответ на (1) будет?
5 salvator
 
10.09.12
17:19
Выгрузить ТЧ в ТЗ, запросом присоединить к ней данные по оборотам, выгрузить-загрузить колонку полученной ТЗ в ТЧ.
6 malev35
 
10.09.12
17:19
(5) а кодом или пример где смотреть
7 DrShad
 
10.09.12
17:21
(6) а деньгами помочь сообществу или еще как?
8 malev35
 
10.09.12
17:21
(5) ТЗ=ТабЧастьДокумента.Выгрузить()
так, а дальше?
9 DrShad
 
10.09.12
17:25
колонку по контрагентам выгружаешь в массив контрагентов, с договорами соответственно, пишешь такой же запрос, только
|РегистрБухгалтерии.ЕПСБУ.Обороты(&НачПериода, &КонПериода, Период, Счет В (&СписокСчетов), , (Субконто2 в (&Контрагент)) И (Субконто3 в (&Договор)) )КАК ЕПСБУОбороты";

в параметры передаешь массивы, получаешь общий результат - поиском по нему находишь нужный и пишешь в соответствующую строку

а еще лучше получить уже готовый результат для загрузки в ТЧ, но это супермегасильное колдунство
10 malev35
 
10.09.12
17:36
(9) спасибо за совет
не я придумал, но почему то в большинстве случаев принято сначала заполнить потом рассчитать (в том же Камине). попробую все таки поколдовать.
11 DrShad
 
10.09.12
17:41
ну и пусть будет заполнить, ТЧ пихай в запрос и там рассчитывай
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс