Имя: Пароль:
1C
1С v8
Сгруппировать по изделию
,
0 Gossar1C
 
21.05.13
15:43
Добрый день. Подскажите как программно сгруппировать строчки в табдоке по изделию? тоесть есть:

Изделие Комплектация Количество Упаковка
Трансф. Гайка        3          шт
Трансф. Шуруп        3          шт
Трансф. Провод       3          м
Транс.BH Гайка       4          шт
Транс.BH Молоток     4          шт

надо:

Изделие Комплектация Количество Упаковка
Трансф.
       Гайка        3          шт
       Шуруп        3          шт
       Провод       3          м
Транс.BH
       Гайка       4          шт
       Молоток     4          шт

подскажите пожалуйста, вот код...

// Процедура заполняет табличный документ комплектации.
//
Процедура ЗаполнитьТабличныйДокументКомплектация(ТабличныйДокумент, ДанныеДляПечати, ОбъектыПечати, Тип) Экспорт
   //
   ТаблицаКомплектующих = ДанныеДляПечати.РезультатПоТабличнойЧасти.Выбрать();
   
   Макет = УправлениеПечатью.ПолучитьМакет("Обработка.ПечатьСчетовНаОплату.ПФ_MXL_Комплектация");
   
   
   ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
   ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
   ОбластьИзделие = Макет.ПолучитьОбласть("Данные");
   ОбластьКомплект = Макет.ПолучитьОбласть("Комплект");
   
   ТабличныйДокумент.Вывести(ОбластьЗаголовок);
   ТабличныйДокумент.Вывести(ОбластьШапка);

   Пока ТаблицаКомплектующих.Следующий() Цикл
       ОбластьКомплект.Параметры.Заполнить(ТаблицаКомплектующих);
       ТабличныйДокумент.Вывести(ОбластьКомплект,ТаблицаКомплектующих.Уровень());
   КонецЦикла;
   
       
   
КонецПроцедуры //ЗаполнитьТабличныйДокументКомплектация
1 kosts
 
21.05.13
15:46
(0) Можно переделать твой вывод (если не типовой).
Запрос с итогами и т.д.

Но можно тут добавить сортировку и если пред наименование отличается от следующего, то выводить новую группу.
2 Gossar1C
 
21.05.13
15:48
(1) как раз встраиваю в обработку вывода печатных форм) а как проверить что изделие отличается от предыдущего?
3 Gossar1C
 
21.05.13
15:50
пробовал через ТабДок.Вывести("ИмяОбласти").Сгруппировать() но нннет...
4 kosts
 
21.05.13
15:52
Как-то так. Таким образом давно уже делал, мог и забыть что-то

Если Предыдущее <> Текущее Тогда
// Отличаются
5 Gossar1C
 
21.05.13
15:56
(4) муторно как то... ладно буду пробовать, спасибо
6 kosts
 
21.05.13
15:59
(2) Если запрос сам пишешь, то сделай через итоги, получишь дерево.
7 Gossar1C
 
21.05.13
16:05
(6) не совсем понимаю с обработкой результата?
8 kosts
 
21.05.13
16:09
(7) Выборку от строки выборки и всё


ВыборкаГруппы = Результат.Выбрать(Что то про группировки);

Пока ВыборкаГруппы.Следующий() Цикл
// Вывести группы
   ВыборкаДетальныеЗаписи = ВыборкаГруппы.Выбрать();
   Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
// Вывести Строки
[//1c]
9 Gossar1C
 
21.05.13
16:10
(8) вообщеем сделал так)

Процедура ЗаполнитьТабличныйДокументКомплектация(ТабличныйДокумент, ДанныеДляПечати, ОбъектыПечати, Тип) Экспорт
   //
   ТаблицаКомплектующих = ДанныеДляПечати.РезультатПоТабличнойЧасти.Выбрать();
   
   Макет = УправлениеПечатью.ПолучитьМакет("Обработка.ПечатьСчетовНаОплату.ПФ_MXL_Комплектация");
   
   
   ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
   ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
   ОбластьИзделие = Макет.ПолучитьОбласть("Данные");
   ОбластьКомплект = Макет.ПолучитьОбласть("Комплект");
   
   ТабличныйДокумент.Вывести(ОбластьЗаголовок);
   ТабличныйДокумент.Вывести(ОбластьШапка);
   Последнее = "";

   Пока ТаблицаКомплектующих.Следующий() Цикл
       Если Последнее <> ТаблицаКомплектующих.Изделие.Наименование Тогда
           ОбластьИзделие.Параметры.Заполнить(ТаблицаКомплектующих);
           ТабличныйДокумент.Вывести(ОбластьИзделие,ТаблицаКомплектующих.Уровень());
           Последнее = ТаблицаКомплектующих.Изделие.Наименование;
       КонецЕсли;
       
       ОбластьКомплект.Параметры.Заполнить(ТаблицаКомплектующих);
       ТабличныйДокумент.Вывести(ОбластьКомплект,ТаблицаКомплектующих.Уровень());
   
   КонецЦикла;
   
       
   
КонецПроцедуры //ЗаполнитьТабличныйДокументКомплектация
10 kosts
 
21.05.13
16:12
(9) Сортировку не забудь, а то будут сюрпризы...
11 Gossar1C
 
21.05.13
16:15
(9) угу поставил, спасибо