Как доработать DOCPRINT.ERT

Новая тема
"Здравствуйте необходимо доработать DOCPRINT.ERT, чтобы во всех сформированных отчётах выводились итоги с сложением сумм из одного столбца, киньте идею, код сформировать:
Процедура СформироватьИтоги()
   Перем Час,Минута,Сек,СтрПредставление;
   Перем СтрУсловие,СтрРасшифровка;
   ДокМД = Метаданные.Документ(ФормДокумент.ТекущаяСтрока());
   Если (ФормДатаНач>ФормДатаКон)И(ФормДатаКон<>Дата(0)) Тогда
       Предупреждение("Внимание!Дата начала выбора превышает дату конца.Запрос не выполнен!");
       Возврат;
   КонецЕсли;
   ДатаКон=ФормДатаКон;
   Если РежТА=1 Тогда
       Попытка
           ДатаКон=Строка(ПолучитьДатуТА())+" "+ПолучитьВремяТА(Час,Минута,Сек);
       Исключение
           ДатаКон=Строка(РабочаяДата());
       КонецПопытки;
   КонецЕсли;
   ТекстЗапроса = ПостроитьЗапрос("Итоги");
   Запрос = СоздатьОбъект("Запрос");
   Попытка
       Запрос.выполнить(ТекстЗапроса);
   Исключение
       Предупреждение(ОписаниеОшибки());
       Возврат;
   КонецПопытки;
   гТаб = СоздатьОбъект("Таблица");
   гТаб.ИсходнаяТаблица("Итоги");
   гСекцияСтрРеквизит = гТаб.ПолучитьСекцию("Строка|Реквизит");
   гСекцияФункции=гТаб.ПолучитьСекцию("Строка|Функция");

   гТаб.Опции(0,0,гТаб.ВысотаТаблицы(),0);
   // Нарисуем шапку...
   ПечатьУсловия(СтрУсловие,СтрРасшифровка);
   гТаб.ВывестиСекцию("Заголовок");
   гТаб.ВывестиСекцию("Шапка|гНачало");

   СекцШапкаРекв = гТаб.ПолучитьСекцию("Шапка|Реквизит");
   Если ФлОднаКолГруппы=0 Тогда
       //колонки группировок
       Для Инд = 1 По ФормГруппы.РазмерСписка() Цикл
           ФормГруппы.ПолучитьЗначение(Инд,СтрПредставление);
           СекцШапкаРекв.Реквизит.Текст = СтрПредставление;
           гТаб.ПрисоединитьСекцию(СекцШапкаРекв);
       КонецЦикла;
   Иначе
       //одна колонка группировки
       СтрКолГруппы="""";
       Для Инд = 1 По ФормГруппы.РазмерСписка() Цикл
           ФормГруппы.ПолучитьЗначение(Инд,СтрПредставление);
           Если Инд<ФормГруппы.РазмерСписка() Тогда
               СтрКолГруппы = СтрКолГруппы+СтрПредставление+"/ ";
           Иначе
               СтрКолГруппы = СтрКолГруппы+СтрПредставление;
           КонецЕсли;
       КонецЦикла;
       Если ФормГруппы.РазмерСписка()>0 Тогда
           СекцШапкаРекв.Реквизит.Текст = СтрКолГруппы;
           СекцШапкаРекв.Реквизит.Расшифровка(СтрКолГруппы);
           гТаб.ПрисоединитьСекцию(СекцШапкаРекв);
       КонецЕсли;
   КонецЕсли;
   Если ФормГруппы.РазмерСписка()=0 Тогда
       СекцШапкаРекв.Реквизит.Текст = """";
       гТаб.ПрисоединитьСекцию(СекцШапкаРекв);
   КонецЕсли;

   Таб = гТаб.ПолучитьСекцию("Шапка|Функция");

   Если (ФлОднаКолГруппы=0)ИЛИ(ФормГруппы.РазмерСписка()=0)  Тогда
       КолГрупп=ФормГруппы.РазмерСписка();
   Иначе
       КолГрупп=1;
   КонецЕсли;
   НачЗначение = 1 + КолГрупп;
   Если ФормГруппы.РазмерСписка()=0 Тогда
       НачЗначение=НачЗначение+1;
   КонецЕсли;

   ВидФунк=ФормВидыФункций.ПолучитьЗначение(ФормВидыФункций.ТекущаяСтрока());
   Для Инд = 1 По ФормФункции.РазмерСписка() Цикл
       ФормФункции.ПолучитьЗначение(Инд,СтрПредставление);
       Таб.Функ.Текст = СтрПредставление;
       гТаб.ПрисоединитьСекцию(Таб);
   КонецЦикла;
   КолОбл=ФормФункции.РазмерСписка() + НачЗначение;
   Если КолОбл>=НачЗначение+1 тогда
       Обл = гТаб.Область(4,НачЗначение+1, 4, КолОбл );
       Обл.Объединить();
       Обл.РамкаСлева(3);
       Обл.РамкаСправа(3);
       Обл.РамкаСнизу(3);
       Обл.Текст=ВидФунк;
   КонецЕсли;

   //печать данных
   гУровеньРекурсии=0;
   гКоличествоСтрок=0;
   ОбработкаРезультатов(гТаб,Запрос);
   Запрос.вНачалоВыборки();
   ВывестиРеквизиты(гТаб,Запрос);
   ВывестиФункции(гТаб,Запрос);

   //форматирование
   // Установим ширину...
   Для Инд = 1 По ФормГруппы.РазмерСписка() Цикл
       Ширина = гДлина.Получить(ФормГруппы.ПолучитьЗначение(Инд));
       Если ПустоеЗначение(Ширина) = 1 Тогда
           Ширина = 16;
       КонецЕсли;
       Если ФлОднаКолГруппы=0 Тогда
           гТаб.Область(,Инд+1,, Инд+1).ШиринаСтолбца(Ширина);
       ИначеЕсли гТаб.Область(,2,, 2).ШиринаСтолбца()<Ширина*8 Тогда
           гТаб.Область(,2,, 2).ШиринаСтолбца(Ширина);
       КонецЕсли;
   КонецЦикла;

   Для Инд = 1 По ФормФункции.РазмерСписка() Цикл
       Ширина = гДлина.Получить(ФормФункции.ПолучитьЗначение(Инд));
       Если ПустоеЗначение(Ширина) = 1 Тогда
           Ширина = 16;
       КонецЕсли;
       Если Ширина<СтрДлина(ФормФункции.ПолучитьЗначение(Инд)) Тогда
            Ширина=СтрДлина(ФормФункции.ПолучитьЗначение(Инд))+1;
       КонецЕсли;
         гТаб.Область(, Инд + НачЗначение,, Инд + НачЗначение).ШиринаСтолбца(Ширина);
   КонецЦикла;
   гТаб.Область(4,2,гТаб.ВысотаТаблицы(), НачЗначение+ФормФункции.РазмерСписка()).РамкаОбвести(4,4,4,4);
   гТаб.Область(5,2,гТаб.ВысотаТаблицы(), НачЗначение+ФормФункции.РазмерСписка()).ВертикальноеПоложение(2);
   гТаб.Опции(0,0,5,0);
   гТаб.ТолькоПросмотр(1);
   гТаб.Показать("Документ " + ДокМД.Представление());
КонецПроцедуры
"
А зачем получение ТА и выполнение запроса включать в транзакцию? Это чтобы у всех еще больше тормозило?
а там закладка "итоги" есть! Это не то?
А где в коде транзакция?
http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=579665;
Посмотри что пишет Павел Чистов.
Читают тему
(гостей: 1)

Быстрый переход