Как доработать DOCPRINT.ERT
28.09.2012
13:39
#1
"Здравствуйте необходимо доработать 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);
гТаб.Показать("Документ " + ДокМД.Представление());
КонецПроцедуры
Отражение восстановления НДС при передаче на ЕНВД в книге продаж - проблемыКак обновить сервер с 32-битной ОС ?
Читают тему
(гостей: 1)