Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 18:02

ПрисоединитьСекцию()

Автор cokoc, 23 авг 2011, 08:43

0 Пользователей и 1 гость просматривают эту тему.

cokoc

Добрый день уважаемые форумчане.  Столкнулся с небольшой проблемой, может кто сталкивался уже и подскажет что делать.

Есть отчет по транспорту, необходимо сделать так чтоб данные сортировались по времени и добавлялись справа столбца времени.

Код программы

Запрос=СоздатьОбъект("ODBCRecordSet");
ТЗ="
|select
| ДокШ.iddoc [Док $Документ.РеализацияМаршрутныйЛист]
| from
| $Документ.РеализацияМаршрутныйЛист as ДокШ (nolock)                   
| inner join _1SJourn as Жур (nolock) on Жур.IDDOC=ДокШ.IDDOC
| where
| Жур.Date_Time_IdDoc BETWEEN :НачДата AND :КонДата~
| AND Жур.Closed&1 = 1
| AND $ДокШ.Контрагент = $ПустойИД
|";

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

Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Сформ2");
Таб.Опции(0,0,Таб.ВысотаТаблицы(),0);

тби.ВыбратьСтроки();
Пока тби.ПолучитьСтроку() = 1 Цикл
пДок = тби.Док;
пТранспорт = пДок.Транспорт;
таб.ВывестиСекцию("строка|Время");
таб.ПрисоединитьСекцию("строка|Данные");      
КонецЦикла;   
Таб.ТолькоПросмотр(1);
Таб.Показать("Отчет по транспорту");


на данном этапе отчет формируется вот так:



необходимо сделать что-то типа такого:



шаблон:



подскажите в каком направлении двигаться?

sergejK74

Например сравнивать в цикле текущее ВремяПод с временем из предыдущей итерации. Если совпадает то присоединить секцию, иначе выводить новую. Перед этим конечно отсортировать ТБИ по времени.
Кнопочка Спасибо - слева!

cokoc

Можете помочь кодом?, не совсем понимаю ка кэто реализовать...

cokoc


cokoc

закрывайте тему, сам все сделал.

sergejK74

сделал сам - поделись решеним с другими
Кнопочка Спасибо - слева!

cokoc

Ничего интересного. Переделал запрос и добавил группировку.

//*******************************************
// Процедура генерации запроса Сформировать.
//
Процедура Сформировать()
Перем Запрос, ТекстЗапроса, Таб,Сводная;

//Создание объекта типа Запрос
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|с ВыбНачПериода по ВыбКонПериода;
|ВремяПодачи = Документ.РеализацияМаршрутныйЛист.ВремяПодачи;
|Водитель = Документ.РеализацияМаршрутныйЛист.Водитель;
|Маршрут = Документ.РеализацияМаршрутныйЛист.Маршрут;
|Транспорт = Документ.РеализацияМаршрутныйЛист.Транспорт;
|ВремяПодачиФакт = Документ.РеализацияМаршрутныйЛист.ВремяПодачиФакт;
|ВремяВыезда = Документ.РеализацияМаршрутныйЛист.ВремяВыезда;
|Сводная = Документ.РеализацияМаршрутныйЛист.ТекущийДокумент;
|Группировка ВремяПодачи;
|Группировка Водитель;
|"//}}ЗАПРОС
;
// Если ошибка в запросе, то выход из процедуры 

Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;

// Подготовка к заполнению выходных форм данными запроса
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Сформировать");
Таб.ВывестиСекцию("Шапка|Вертикаль1");
Состояние("Заполнение выходной таблицы...");
Таб.Опции(1, 0, Таб.ВысотаТаблицы(), 0); 

Пока Запрос.Группировка(1) = 1 Цикл
Таб.ВывестиСекцию("Горизонталь|Вертикаль1");
Пока Запрос.Группировка(2) = 1 Цикл
Таб.ПрисоединитьСекцию("Горизонталь|Вертикаль2");  
КонецЦикла;
КонецЦикла;
// Вывод заполненной формы
Таб.ТолькоПросмотр(1);
Таб.Показать("Движение транспорта", "");
КонецПроцедуры

Процедура ПриОткрытии()
ВыбНачПериода = РабочаяДата();
ВыбКонПериода = РабочаяДата();
КонецПроцедуры

Теги:
Рейтинг@Mail.ru

Поиск