Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
18 Дек 2017, 04:22
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Сгруппировать строки в ТД  (Прочитано 2190 раз)

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

Оффлайн SkyNetYar

  • ****
  • Сообщений: 351
  • РЕПУТАЦИЯ: 10
  • КПД: 3%
  • Регистрация: 2014-10-25
  • Сайт: 
  • Профессия: Ученик 1С
Добрый день!
Документ пересчет товаров,выводит просто колонки артикул,наименование,кол-во
Как сделать вывод групп у наименований в которых они состоят?
Пытаюсь использовать НачатьАвтоГруппировкуСтрок();

ТабличныйДокумент.НачатьАвтоГруппировкуСтрок();   ////////////////////
Пока ВыборкаПоСтрокамТЧ.Следующий() Цикл

ОбластьСтрокаТаблицыНачало.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
ТабличныйДокумент.Вывести(ОбластьСтрокаТаблицыНачало);

Если ВыводитьКоды Тогда
ОбластьСтрокаТаблицыКолонкаКодов.Параметры.Артикул = ВыборкаПоСтрокамТЧ[КолонкаКодов];
ТабличныйДокумент.Присоединить(ОбластьСтрокаТаблицыКолонкаКодов);
КонецЕсли;

ОбластьСтрокаТаблицыКолонкаТоваров.Параметры.Товар = ПолучитьПредставлениеНоменклатурыДляПечати(
ВыборкаПоСтрокамТЧ.НоменклатураПредставление,
ВыборкаПоСтрокамТЧ.ХарактеристикаПредставление,
,
ВыборкаПоСтрокамТЧ.СерияПредставление
);
ТабличныйДокумент.Присоединить(ОбластьСтрокаТаблицыКолонкаТоваров);

ОбластьСтрокаТаблицыКолонкаЦена.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
            ТабличныйДокумент.Присоединить(ОбластьСтрокаТаблицыКолонкаЦена);


ОбластьСтрокаТаблицыУпаковки.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
ТабличныйДокумент.Присоединить(ОбластьСтрокаТаблицыУпаковки);

Если ВыводитьПоУчету Тогда
ОбластьСтрокаТаблицыПоУчету.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
ТабличныйДокумент.Присоединить(ОбластьСтрокаТаблицыПоУчету);
КонецЕсли;

ОбластьСтрокаТаблицыФакт.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
ТабличныйДокумент.Присоединить(ОбластьСтрокаТаблицыФакт);

Если ВыводитьПоУчету Тогда
ОбластьСтрокаТаблицыОтклонение.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
ТабличныйДокумент.Присоединить(ОбластьСтрокаТаблицыОтклонение);
КонецЕсли;

КонецЦикла;
ТабличныйДокумент.ЗакончитьАвтоГруппировкуСтрок();  //////////////////////////////////////////


Оффлайн vitasw

  • *****
  • Сообщений: 2575
  • РЕПУТАЦИЯ: 311
  • КПД: 12%
  • Регистрация: 2015-02-10
  • Сайт: 
  • Профессия: Программист 1С
Как сделать вывод групп у наименований в которых они состоят?

А по-русски? это как?

Оффлайн SkyNetYar

  • ****
  • Сообщений: 351
  • РЕПУТАЦИЯ: 10
  • КПД: 3%
  • Регистрация: 2014-10-25
  • Сайт: 
  • Профессия: Ученик 1С
Цитировать
А по-русски? это как?
Группа товара1
    товар
    товар
Группа товара2
    товар
    товар

т.е группа товара ,затем товар который находится в этой группе и.т.д..

Как настроить отчет на СКД я знаю,а вот программно в ТД что то запутался..


Оффлайн vitasw

  • *****
  • Сообщений: 2575
  • РЕПУТАЦИЯ: 311
  • КПД: 12%
  • Регистрация: 2015-02-10
  • Сайт: 
  • Профессия: Программист 1С
НачатьГруппуСтрок

Оффлайн SkyNetYar

  • ****
  • Сообщений: 351
  • РЕПУТАЦИЯ: 10
  • КПД: 3%
  • Регистрация: 2014-10-25
  • Сайт: 
  • Профессия: Ученик 1С
Что то не получается и с помощью НачатьГруппуСтрок ,пробую с помощью ОбходРезультатаЗапроса.ПоГруппировкамСИерархией ,тоже не получается :fdbsdfbsd:
Полный вариант функции привел ниже,и нужно ли добавлять строку группа в печатную форму,даже не нашел образца нигде что бы подглядеть..

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

//ВыводитьГрадацииКачества    = ПараметрыПечати.ВыводитьГрадацииКачества;
ВыводитьГрадацииКачества    = Ложь;
//ВыводитьРезультатыПересчета = ПараметрыПечати.ВыводитьРезультатыПересчета;
ВыводитьРезультатыПересчета = Ложь;

ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПересчетТоваров_ЗаданиеНаПересчетТоваров";
ТекстЗапроса =
"ВЫБРАТЬ
| ПересчетТоваров.Ссылка КАК Ссылка,
| ПересчетТоваров.Представление КАК ПредставлениеДокумента,
| ПересчетТоваров.Дата КАК Дата,
| ПересчетТоваров.Номер КАК Номер,
| ПересчетТоваров.Склад КАК Склад,
| ПересчетТоваров.Помещение КАК Помещение,
| ПересчетТоваров.ЯчейкаКонсолидацииИзлишковТоваров КАК ЯчейкаИзлишков,
| ПересчетТоваров.ЯчейкаКонсолидацииИспорченныхТоваров КАК ЯчейкаИспорченных,
| ПРЕДСТАВЛЕНИЕ(ПересчетТоваров.Склад) КАК СкладПредставление,
| ПРЕДСТАВЛЕНИЕ(ПересчетТоваров.Помещение) КАК ПомещениеПредставление,
| ПересчетТоваров.Исполнитель.ФизическоеЛицо КАК Исполнитель,
| ПересчетТоваров.ПечататьКоличествоПоУчету КАК ПечататьКоличествоПоУчету,
| ПересчетТоваров.Статус КАК Статус
|ИЗ
| Документ.ПересчетТоваров КАК ПересчетТоваров
|ГДЕ
| ПересчетТоваров.Ссылка В(&МассивОбъектов)
|
|УПОРЯДОЧИТЬ ПО
| ПересчетТоваров.Ссылка
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ПересчетТоваровТовары.НомерСтроки КАК НомерСтроки,
| ПересчетТоваровТовары.Количество КАК Количество,
| ПересчетТоваровТовары.КоличествоУпаковок КАК КоличествоУпаковок,";
Если ВыводитьРезультатыПересчета Тогда
ТекстЗапроса = ТекстЗапроса + "
| ПересчетТоваровТовары.КоличествоФакт КАК КоличествоФакт,
| ПересчетТоваровТовары.КоличествоУпаковокФакт КАК КоличествоУпаковокФакт,";
Иначе
ТекстЗапроса = ТекстЗапроса + "
| 0                                    КАК КоличествоФакт,
| 0                                            КАК КоличествоУпаковокФакт,";
КонецЕсли;
ТекстЗапроса = ТекстЗапроса + "
| ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,
| ПересчетТоваровТовары.Номенклатура.Наименование     КАК НоменклатураПредставление,
| ПересчетТоваровТовары.Характеристика.НаименованиеПолное КАК ХарактеристикаПредставление,
| ВЫБОР КОГДА ЕСТЬNULL(ПересчетТоваровТовары.Упаковка.Коэффициент, 1) = 1
| ТОГДА НЕОПРЕДЕЛЕНО
| ИНАЧЕ ПересчетТоваровТовары.Упаковка.Наименование
| КОНЕЦ КАК УпаковкаПредставление,
| ПересчетТоваровТовары.Серия.Наименование                КАК СерияПредставление,
| ПРЕДСТАВЛЕНИЕ(ПересчетТоваровТовары.Номенклатура.ЕдиницаИзмерения) КАК ЕдиницаИзмеренияПредставлениеНоменклатура,
| ПРЕДСТАВЛЕНИЕ(ПересчетТоваровТовары.Упаковка.ЕдиницаИзмерения) КАК ЕдиницаИзмеренияПредставлениеУпаковка,
| ПРЕДСТАВЛЕНИЕ(ПересчетТоваровТовары.Ячейка) КАК ЯчейкаПредставление,
| ПересчетТоваровТовары.Номенклатура.Код КАК Код,
| ПересчетТоваровТовары.Номенклатура.Артикул КАК Артикул,
| ПересчетТоваровТовары.Ссылка КАК Ссылка
|ИЗ
| Документ.ПересчетТоваров.Товары КАК ПересчетТоваровТовары
|ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ВидЦены = &НужныйТипЦен) КАК ЦеныНоменклатурыСрезПоследних
| ПО ПересчетТоваровТовары.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
| И ПересчетТоваровТовары.Характеристика = ЦеныНоменклатурыСрезПоследних.Характеристика
    |
|ГДЕ
| ПересчетТоваровТовары.Ссылка В(&МассивОбъектов)
|
|УПОРЯДОЧИТЬ ПО
| Ссылка,
| НомерСтроки
|ИТОГИ ПО
| Ссылка";
Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
Запрос.УстановитьПараметр("Дата", ТекущаяДата());
//установка типа показываемых цен
//Если ТипЗнч(ДополнительныеПараметры) = Тип("Структура") Тогда
// Для каждого КлючИЗначение Из ДополнительныеПараметры Цикл
// ВывестиЗначение(Таб, ОбластьРеквизитШапки, КлючИЗначение.Ключ, КлючИЗначение.Значение);
// КонецЦикла;
//КонецЕсли;
Если ЗначениеЗаполнено(ДополнительныеПараметры) Тогда
НужнЦена = Справочники.ВидыЦен.НайтиПоНаименованию(ДополнительныеПараметры.НаименованиеЦены);
Если   (НужнЦена = Неопределено) ИЛИ (НужнЦена = Справочники.ВидыЦен.ПустаяСсылка()) Тогда
НужнЦена = Справочники.ВидыЦен.НайтиПоНаименованию("Цена продажи");
КонецЕсли;
ВыводитьГрадацииКачества = ДополнительныеПараметры.ВыводитьГрадацииКачества;
        ВыводитьРезультатыПересчета = ДополнительныеПараметры.ВыводитьРезультатыПересчета;
       
  Иначе
НужнЦена = Справочники.ВидыЦен.НайтиПоНаименованию("Цена продажи");
  КонецЕсли;
    Если   (НужнЦена = Неопределено) ИЛИ (НужнЦена = Справочники.ВидыЦен.ПустаяСсылка()) Тогда
НужнЦена = Справочники.ВидыЦен.НайтиПоНаименованию("Цена продажи");
КонецЕсли;

 
    Запрос.УстановитьПараметр("НужныйТипЦен", НужнЦена);

Результаты = Запрос.ВыполнитьПакет();
ТабличныйДокумент.НачатьАвтогруппировкуСтрок(); ////////////////////////
ВыборкаПоДокументам = Результаты[0].Выбрать();
ВыборкаПоТабличнымЧастям = Результаты[1].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией,Запрос.НоменклатураПредставление);

ПервыйДокумент = Истина;


Если ВыводитьРезультатыПересчета Тогда
СинонимДокумента = НСтр("ru='Результаты пересчета товаров'");
Иначе
СинонимДокумента = НСтр("ru='Задание на пересчет товаров'");
КонецЕсли;

Пока ВыборкаПоДокументам.Следующий() Цикл
РеквизитыДокумента = Новый Структура("Номер, Дата, Префикс");
ЗаполнитьЗначенияСвойств(РеквизитыДокумента, ВыборкаПоДокументам);
Заголовок = СформироватьЗаголовокДокумента(РеквизитыДокумента, СинонимДокумента);

Если ВыводитьРезультатыПересчета
И Не ВыборкаПоДокументам.Статус = Перечисления.СтатусыПересчетовТоваров.Выполнено Тогда

ТекстСообщения = НСтр("ru = 'Документ ""%ПредставлениеДокумента%"" находится в статусе ""%Статус%"". Печать результатов пересчета возможна только в статусе ""Выполнено""'");

РеквизитыДокумента.Вставить("Представление",ВыборкаПоДокументам.ПредставлениеДокумента);
ПредставлениеДокумента = ОбщегоНазначенияУТКлиентСервер.СформироватьЗаголовокДокумента(РеквизитыДокумента);

ТекстСообщения = СтрЗаменить(ТекстСообщения,"%ПредставлениеДокумента%",ПредставлениеДокумента);
ТекстСообщения = СтрЗаменить(ТекстСообщения,"%Статус%",ВыборкаПоДокументам.Статус);

ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
Продолжить;

КонецЕсли;


ВыводитьПоУчету = ВыборкаПоДокументам.ПечататьКоличествоПоУчету Или ВыводитьРезультатыПересчета;
ПоАдресномуСкладу = СкладыСервер.ИспользоватьАдресноеХранение(ВыборкаПоДокументам.Склад, ВыборкаПоДокументам.Помещение);
Макет = ПолучитьМакет("ПФ_MXL_ЗаданиеПересчетТоваров");
//Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.ПересчетТоваров.ПФ_MXL_ЗаданиеПересчетТоваров");

ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьСкладИсполнитель = Макет.ПолучитьОбласть("СкладИсполнитель");
ОбластьЯчейкаИзлишков = Макет.ПолучитьОбласть("ОбластьЯчейкаИзлишков");
ОбластьЯчейкаИспорченных = Макет.ПолучитьОбласть("ОбластьЯчейкаИспорченных");

Если ПоАдресномуСкладу Тогда

Если ВыводитьКоды Тогда
ОбластьШапкаТаблицыНачало = Макет.ПолучитьОбласть("ШапкаТаблицыЯчейкаКодУчет|НачалоСтроки");
ОбластьСтрокаТаблицыНачало = Макет.ПолучитьОбласть("СтрокаТаблицыЯчейкаКодУчет|НачалоСтроки");
ОбластьПодвалТаблицыНачало = Макет.ПолучитьОбласть("ПодвалТаблицыЯчейкаКодУчет|НачалоСтроки");
ОбластьШапкаТаблицыКолонкаКодов = Макет.ПолучитьОбласть("ШапкаТаблицыЯчейкаКодУчет|КолонкаКодов");
ОбластьСтрокаТаблицыКолонкаКодов = Макет.ПолучитьОбласть("СтрокаТаблицыЯчейкаКодУчет|КолонкаКодов");
ОбластьПодвалТаблицыКолонкаКодов = Макет.ПолучитьОбласть("ПодвалТаблицыЯчейкаКодУчет|КолонкаКодов");
ОбластьШапкаТаблицыКолонкаТоваров = Макет.ПолучитьОбласть("ШапкаТаблицыЯчейкаКодУчет|КолонкаТоваровКодЯчейка");
ОбластьСтрокаТаблицыКолонкаТоваров = Макет.ПолучитьОбласть("СтрокаТаблицыЯчейкаКодУчет|КолонкаТоваровКодЯчейка");
ОбластьПодвалТаблицыКолонкаТоваров = Макет.ПолучитьОбласть("ПодвалТаблицыЯчейкаКодУчет|КолонкаТоваровКодЯчейка");
Иначе
ОбластьШапкаТаблицыНачало = Макет.ПолучитьОбласть("ШапкаТаблицыЯчейка|НачалоСтроки");
ОбластьСтрокаТаблицыНачало = Макет.ПолучитьОбласть("СтрокаТаблицыЯчейка|НачалоСтроки");
ОбластьПодвалТаблицыНачало = Макет.ПолучитьОбласть("ПодвалТаблицыЯчейка|НачалоСтроки");
ОбластьШапкаТаблицыКолонкаТоваров = Макет.ПолучитьОбласть("ШапкаТаблицыЯчейка|КолонкаТоваровБезКодовЯчейки");
ОбластьСтрокаТаблицыКолонкаТоваров = Макет.ПолучитьОбласть("СтрокаТаблицыЯчейка|КолонкаТоваровБезКодовЯчейки");
ОбластьПодвалТаблицыКолонкаТоваров = Макет.ПолучитьОбласть("ПодвалТаблицыЯчейка|КолонкаТоваровБезКодовЯчейки");
КонецЕсли;
Иначе
ОбластьШапкаТаблицыНачало = Макет.ПолучитьОбласть("ШапкаТаблицы|Номер");
ОбластьСтрокаТаблицыНачало = Макет.ПолучитьОбласть("СтрокаТаблицы|Номер");
ОбластьПодвалТаблицыНачало = Макет.ПолучитьОбласть("ПодвалТаблицы|Номер");

Если ВыводитьКоды Тогда

ОбластьШапкаТаблицыКолонкаКодов = Макет.ПолучитьОбласть("ШапкаТаблицыКодУчет|КолонкаЯчейкаКод");
ОбластьСтрокаТаблицыКолонкаКодов = Макет.ПолучитьОбласть("СтрокаТаблицыКодУчет|КолонкаЯчейкаКод");
ОбластьПодвалТаблицыКолонкаКодов = Макет.ПолучитьОбласть("ПодвалТаблицыКодУчет|КолонкаЯчейкаКод");
ОбластьШапкаТаблицыКолонкаТоваров = Макет.ПолучитьОбласть("ШапкаТаблицыКодУчет|КолонкаТоваровБезКодовЯчейки");
ОбластьСтрокаТаблицыКолонкаТоваров = Макет.ПолучитьОбласть("СтрокаТаблицыКодУчет|КолонкаТоваровБезКодовЯчейки");
ОбластьПодвалТаблицыКолонкаТоваров = Макет.ПолучитьОбласть("ПодвалТаблицыКодУчет|КолонкаТоваровБезКодовЯчейки");
Иначе
ОбластьШапкаТаблицыКолонкаТоваров = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаТоваров");
ОбластьСтрокаТаблицыКолонкаТоваров = Макет.ПолучитьОбласть("СтрокаТаблицы|КолонкаТоваров");
ОбластьПодвалТаблицыКолонкаТоваров = Макет.ПолучитьОбласть("ПодвалТаблицы|КолонкаТоваров");
КонецЕсли;
КонецЕсли;

ОбластьШапкаТаблицыУпаковки = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаУпаковок");
ОбластьСтрокаТаблицыУпаковки = Макет.ПолучитьОбласть(?(ПоАдресномуСкладу, "СтрокаТаблицыЯчейка|КолонкаУпаковок", "СтрокаТаблицы|КолонкаУпаковок"));
ОбластьПодвалТаблицыУпаковки = Макет.ПолучитьОбласть("ПодвалТаблицы|КолонкаУпаковок");

Если ВыводитьКоды Тогда

ОбластьШапкаТаблицыКолонкаКодов.Параметры.ИмяКолонкиКодов = КолонкаКодов;

КонецЕсли;

Если Не ВыводитьПоУчету Тогда
Если ВыводитьГрадацииКачества Тогда
ОбластьШапкаТаблицыФакт = Макет.ПолучитьОбласть("ШапкаТаблицыГрадацииКачества|ГрадацииКачества");
ОбластьСтрокаТаблицыФакт = Макет.ПолучитьОбласть("СтрокаТаблицыГрадацииКачества|ГрадацииКачества");
ОбластьПодвалТаблицыФакт = Макет.ПолучитьОбласть("ПодвалТаблицыГрадацииКачества|ГрадацииКачества");
Иначе
ОбластьШапкаТаблицыФакт = Макет.ПолучитьОбласть("ШапкаТаблицы|ФактБезКоличестваПоУчету");
ОбластьСтрокаТаблицыФакт = Макет.ПолучитьОбласть("СтрокаТаблицы|ФактБезКоличестваПоУчету");
ОбластьПодвалТаблицыФакт = Макет.ПолучитьОбласть("ПодвалТаблицы|ФактБезКоличестваПоУчету");
КонецЕсли;
Иначе

ОбластьШапкаТаблицыПоУчету = Макет.ПолучитьОбласть("ШапкаТаблицыКодУчет|КолонкаПоУчету");
ОбластьСтрокаТаблицыПоУчету = Макет.ПолучитьОбласть("СтрокаТаблицыКодУчет|КолонкаПоУчету");
ОбластьПодвалТаблицыПоУчету = Макет.ПолучитьОбласть("ПодвалТаблицыКодУчет|КолонкаПоУчету");
ОбластьШапкаТаблицыОтклонение = Макет.ПолучитьОбласть("ШапкаТаблицыКодУчет|КолонкаОтклонение");
ОбластьСтрокаТаблицыОтклонение = Макет.ПолучитьОбласть("СтрокаТаблицыКодУчет|КолонкаОтклонение");
ОбластьПодвалТаблицыОтклонение = Макет.ПолучитьОбласть("ПодвалТаблицыКодУчет|КолонкаОтклонение");
Если ВыводитьГрадацииКачества Тогда
ОбластьШапкаТаблицыФакт = Макет.ПолучитьОбласть("ШапкаТаблицыГрадацииКачества|ГрадацииКачества");
ОбластьСтрокаТаблицыФакт = Макет.ПолучитьОбласть("СтрокаТаблицыГрадацииКачества|ГрадацииКачества");
ОбластьПодвалТаблицыФакт = Макет.ПолучитьОбласть("ПодвалТаблицыГрадацииКачества|ГрадацииКачества");
Иначе
ОбластьШапкаТаблицыФакт = Макет.ПолучитьОбласть("ШапкаТаблицыКодУчет|КолонкаФакт");
ОбластьСтрокаТаблицыФакт = Макет.ПолучитьОбласть("СтрокаТаблицыКодУчет|КолонкаФакт");
ОбластьПодвалТаблицыФакт = Макет.ПолучитьОбласть("ПодвалТаблицыКодУчет|КолонкаФакт");
КонецЕсли;
КонецЕсли;

ОбластьСтрокаТаблицыКолонкаЦена = Макет.ПолучитьОбласть("СтрокаТаблицы|КолонкаЦена");
        ОбластьШапкаТаблицыКолонкаЦена = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаЦена");
ОбластьПодвалТаблицыКолонкаЦена = Макет.ПолучитьОбласть("ПодвалТаблицы|КолонкаЦена");

Если НЕ ВыборкаПоТабличнымЧастям.НайтиСледующий(Новый Структура("Ссылка",ВыборкаПоДокументам.Ссылка)) Тогда
Продолжить;
КонецЕсли;

ВыборкаПоСтрокамТЧ = ВыборкаПоТабличнымЧастям.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);

Если Не ПервыйДокумент Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;

ПервыйДокумент = Ложь;
НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;

ОбластьЗаголовок.Параметры.ТекстЗаголовка = Заголовок; 

ШтрихкодированиеПечатныхФорм.ВывестиШтрихкодВТабличныйДокумент(ТабличныйДокумент, Макет, ОбластьЗаголовок, ВыборкаПоДокументам.Ссылка);
ТабличныйДокумент.Вывести(ОбластьЗаголовок);

ОбластьСкладИсполнитель.Параметры.ИсполнительПредставление = ФамилияИнициалыФизЛица(ВыборкаПоДокументам.Исполнитель);
ОбластьСкладИсполнитель.Параметры.СкладПредставление = СкладыСервер.ПолучитьПредставлениеСклада(ВыборкаПоДокументам.СкладПредставление,ВыборкаПоДокументам.ПомещениеПредставление);

ТабличныйДокумент.Вывести(ОбластьСкладИсполнитель);

Если ЗначениеЗаполнено(ВыборкаПоДокументам.ЯчейкаИзлишков) Тогда
ЗаполнитьЗначенияСвойств(ОбластьЯчейкаИзлишков.Параметры, ВыборкаПоДокументам);
ТабличныйДокумент.Вывести(ОбластьЯчейкаИзлишков);
КонецЕсли;

Если ЗначениеЗаполнено(ВыборкаПоДокументам.ЯчейкаИспорченных) Тогда
ЗаполнитьЗначенияСвойств(ОбластьЯчейкаИспорченных.Параметры, ВыборкаПоДокументам);
ТабличныйДокумент.Вывести(ОбластьЯчейкаИспорченных);
КонецЕсли;

ТабличныйДокумент.Вывести(ОбластьШапкаТаблицыНачало);

Если ВыводитьКоды Тогда
ТабличныйДокумент.Присоединить(ОбластьШапкаТаблицыКолонкаКодов);
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьШапкаТаблицыКолонкаТоваров);
ТабличныйДокумент.Присоединить(ОбластьШапкаТаблицыКолонкаЦена);
ТабличныйДокумент.Присоединить(ОбластьШапкаТаблицыУпаковки);

Если ВыводитьПоУчету Тогда
ТабличныйДокумент.ПолеСправа = 5;
ТабличныйДокумент.Присоединить(ОбластьШапкаТаблицыПоУчету);
КонецЕсли;

ТабличныйДокумент.Присоединить(ОбластьШапкаТаблицыФакт);
Если ВыводитьПоУчету Тогда
ТабличныйДокумент.Присоединить(ОбластьШапкаТаблицыОтклонение);
КонецЕсли;

    Пока ВыборкаПоСтрокамТЧ.Следующий() Цикл

ОбластьСтрокаТаблицыНачало.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
ТабличныйДокумент.Вывести(ОбластьСтрокаТаблицыНачало);

Если ВыводитьКоды Тогда
ОбластьСтрокаТаблицыКолонкаКодов.Параметры.Артикул = ВыборкаПоСтрокамТЧ[КолонкаКодов];
ТабличныйДокумент.Присоединить(ОбластьСтрокаТаблицыКолонкаКодов);
КонецЕсли;

ОбластьСтрокаТаблицыКолонкаТоваров.Параметры.Товар = ПолучитьПредставлениеНоменклатурыДляПечати(
ВыборкаПоСтрокамТЧ.НоменклатураПредставление,
ВыборкаПоСтрокамТЧ.ХарактеристикаПредставление,
,
ВыборкаПоСтрокамТЧ.СерияПредставление
);
ТабличныйДокумент.Присоединить(ОбластьСтрокаТаблицыКолонкаТоваров);

ОбластьСтрокаТаблицыКолонкаЦена.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
            ТабличныйДокумент.Присоединить(ОбластьСтрокаТаблицыКолонкаЦена);


ОбластьСтрокаТаблицыУпаковки.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
ТабличныйДокумент.Присоединить(ОбластьСтрокаТаблицыУпаковки);

Если ВыводитьПоУчету Тогда
ОбластьСтрокаТаблицыПоУчету.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
ТабличныйДокумент.Присоединить(ОбластьСтрокаТаблицыПоУчету);
КонецЕсли;

ОбластьСтрокаТаблицыФакт.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
ТабличныйДокумент.Присоединить(ОбластьСтрокаТаблицыФакт);

Если ВыводитьПоУчету Тогда
ОбластьСтрокаТаблицыОтклонение.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
ТабличныйДокумент.Присоединить(ОбластьСтрокаТаблицыОтклонение);
КонецЕсли;

КонецЦикла;

ТабличныйДокумент.Вывести(ОбластьПодвалТаблицыНачало);
Если ВыводитьКоды Тогда
ТабличныйДокумент.Присоединить(ОбластьПодвалТаблицыКолонкаКодов);
КонецЕсли;

ТабличныйДокумент.Присоединить(ОбластьПодвалТаблицыКолонкаТоваров);
ТабличныйДокумент.Присоединить(ОбластьПодвалТаблицыКолонкаЦена);
ТабличныйДокумент.Присоединить(ОбластьПодвалТаблицыУпаковки);
Если ВыводитьПоУчету Тогда
ТабличныйДокумент.Присоединить(ОбластьПодвалТаблицыПоУчету);
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьПодвалТаблицыФакт);

Если ВыводитьПоУчету Тогда
ТабличныйДокумент.Присоединить(ОбластьПодвалТаблицыОтклонение);
КонецЕсли;

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

ТабличныйДокумент.АвтоМасштаб = Истина;
ТабличныйДокумент.НижнийКолонтитул.Выводить=Истина;
ТабличныйДокумент.НижнийКолонтитул.ТекстСправа="Стр.[&НомерСтраницы] из [&СтраницВсего]";
ТабличныйДокумент.НижнийКолонтитул.ТекстСлева="[&Дата]";
ТабличныйДокумент.ПолеСлева=3;
ТабличныйДокумент.ПолеСправа=3;
ТабличныйДокумент.ПолеСверху=3;
ТабличныйДокумент.ПолеСнизу=8;

Если ПривилегированныйРежим() Тогда
        УстановитьПривилегированныйРежим(Ложь);
    КонецЕсли;
ТабличныйДокумент.ЗакончитьАвтогруппировкуСтрок(); ///////////////////////////////////
Возврат ТабличныйДокумент;

КонецФункции

Оффлайн vitasw

  • *****
  • Сообщений: 2575
  • РЕПУТАЦИЯ: 311
  • КПД: 12%
  • Регистрация: 2015-02-10
  • Сайт: 
  • Профессия: Программист 1С
Жесть!
1.ОбходРезультатаЗапроса.ПоГруппировкам используется только при наличии секции "Итоги". В противном случаее - не имеет смысла.
2. Зачем вам пакет запросов? Проще будет, если реквизиты шапок документов извлекать из ссылок. (да, неоптимально. Но лучше иметь приавильно и неоптимально, чем НЕправильно, зато как оптимально!)
3. Я вам советовал "НачатьГруппуСтрок" - в приведенном коде этого нет.
4. Даже не берусь представить, что будет в сочетании сгруппированных строк и ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц()- думаю, что ничего хорошего.
5. Если вы хотите группировать номенклатуру, то зачем вам  ТабличныйДокумент.НачатьАвтогруппировкуСтрок(); до вывода первой области, т.е. на пустом листе?!?!
6.НачатьГруппуСтрок используется после вывода "группы". Т.е. сначала вы выводите группу->НачатьГруппуСтрок -> вывод детальных записей в цикле->ЗакончитьГруппуСтрок.
и т.д.

Оффлайн SkyNetYar

  • ****
  • Сообщений: 351
  • РЕПУТАЦИЯ: 10
  • КПД: 3%
  • Регистрация: 2014-10-25
  • Сайт: 
  • Профессия: Ученик 1С
Спасибо за разжеванный ответ! буду дерзать..
Вы не удивляйтесь,я учусь,и с этим столкнулся в первые! :dfbsdfbsdf:
Добавлено: 02 Сен 2015, 19:27

Делаю так

ТабличныйДокумент.НачатьГруппуСтрок(); ////////////////////////////////
 
    Пока ВыборкаПоСтрокамТЧ.Следующий() Цикл

ОбластьСтрокаТаблицыНачало.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
ТабличныйДокумент.Вывести(ОбластьСтрокаТаблицыНачало);

Если ВыводитьКоды Тогда
ОбластьСтрокаТаблицыКолонкаКодов.Параметры.Артикул = ВыборкаПоСтрокамТЧ[КолонкаКодов];
ТабличныйДокумент.Присоединить(ОбластьСтрокаТаблицыКолонкаКодов);
КонецЕсли;

ОбластьСтрокаТаблицыКолонкаТоваров.Параметры.Товар = ПолучитьПредставлениеНоменклатурыДляПечати(
ВыборкаПоСтрокамТЧ.НоменклатураПредставление,
ВыборкаПоСтрокамТЧ.ХарактеристикаПредставление,
,
ВыборкаПоСтрокамТЧ.СерияПредставление
);
ТабличныйДокумент.Присоединить(ОбластьСтрокаТаблицыКолонкаТоваров);

ОбластьСтрокаТаблицыКолонкаЦена.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
            ТабличныйДокумент.Присоединить(ОбластьСтрокаТаблицыКолонкаЦена);


ОбластьСтрокаТаблицыУпаковки.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
ТабличныйДокумент.Присоединить(ОбластьСтрокаТаблицыУпаковки);

Если ВыводитьПоУчету Тогда
ОбластьСтрокаТаблицыПоУчету.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
ТабличныйДокумент.Присоединить(ОбластьСтрокаТаблицыПоУчету);
КонецЕсли;

ОбластьСтрокаТаблицыФакт.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
ТабличныйДокумент.Присоединить(ОбластьСтрокаТаблицыФакт);

Если ВыводитьПоУчету Тогда
ОбластьСтрокаТаблицыОтклонение.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
ТабличныйДокумент.Присоединить(ОбластьСтрокаТаблицыОтклонение);
КонецЕсли;

КонецЦикла;
ТабличныйДокумент.ЗакончитьГруппуСтрок(); //////////////////////////////////
ТабличныйДокумент.Вывести(ОбластьПодвалТаблицыНачало);
Выводит весь список номенклатуры как одна группа..
Только не злитесь :mellow:

Последний раз редактировалось: SkyNetYar; 02 Сен 2015, 19:27. Причина: Объединение сообщений

Оффлайн vitasw

  • *****
  • Сообщений: 2575
  • РЕПУТАЦИЯ: 311
  • КПД: 12%
  • Регистрация: 2015-02-10
  • Сайт: 
  • Профессия: Программист 1С
:) Ну, как вы написали код, так оно и выводит.
В запросе, нужна секция ИТОГИ по Номенклатуре Иерархия.
Если "Группа номенклатуры" = Родитель для конкретной номенклатуры, то дальше будет тяжелее.
ВыбСсылка=Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Ссылка");
Пока ВыбСсылка.Следующий() Цикл
//Вывод шапки каждого документа
ВыборкаПоТабличнымЧастям = ВыбСсылка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией,"Номенклатура");
Пока ВыборкаПоТабличнымЧастям.Следуюущий() Цикл
//Вывод таб. части "товары"
//ВыборкаПоТабличнымЧастям.Номенкатура - Тут при проходе циклом перебираются родители конкретной номенклатуры
//Если вы хотите выводить на всю глубину иерархии, а не только верхнего родителя, то нужно что-то вроде
Если ВыборкаПоТабличнымЧастям.Номенкатура.ЭтоГруппа Тогда
Обл=Макет.ПолучитьОбласть("...");
Обл.Параметры.Заполнить(ВыборкаПоТабличнымЧастям);
ТабДокумент.Вывести(Обл);
ТабДокумент.НачатьГруппуСтрок();//Начинаем группу строк для каждой группы номенклатуры
СчетчикГрупп=СчетчикГрупп+1;
Иначе
//это элемент номенклатуры
Обл=Макет.ПолучитьОбласть("...");
Обл.Параметры.Заполнить(ВыборкаПоТабличнымЧастям);
ТабДокумент.Вывести(Обл);
//А дальше начинается самое пичальное. Нужно закрыть группы строк, причем столько раз, сколько их открывали.
Т.е. нужен какой-то счетчик открытых групп
Для ее=1 По СчетчикГрупп Цикл
    ТабДокумент.ЗакончитьГруппуСтрок();
КонецЦикла;
КонецЕсли;
Это только пример, который нужно еще дорабатывать.

Оффлайн SkyNetYar

  • ****
  • Сообщений: 351
  • РЕПУТАЦИЯ: 10
  • КПД: 3%
  • Регистрация: 2014-10-25
  • Сайт: 
  • Профессия: Ученик 1С
Блин жесть,нужно как то на СКД сделать тогда что ле..
Это внешняя печатная форма выдрана из УТ 11.1 документа пересчет товаров как она там есть...добавлены только колонки цены на товары и комсетика в виде номеров страниц и полей..

Оффлайн vitasw

  • *****
  • Сообщений: 2575
  • РЕПУТАЦИЯ: 311
  • КПД: 12%
  • Регистрация: 2015-02-10
  • Сайт: 
  • Профессия: Программист 1С
то на СКД сделать тогда что ле..
Я смотрю, вы не ищите легких путей. ну-ну...


Теги:
 

Как при вставке текста запроса с консоли запроса ив программный код конфигурации автоматически добавлять прямую черту в начале каждой строки

Автор ktu78Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 5
Просмотров: 2082
Последний ответ 16 Ноя 2015, 08:12
от KrivosheevEV
Возможно ли языком запросов без конкатенации текста запроса и без СКД преобразовать строки таблицы в столбцы (колонки) выходной таблицы?

Автор acces969Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 3
Просмотров: 454
Последний ответ 29 Май 2017, 15:29
от alex0402
"Уникальность" строки таблиной части документа

Автор mashencev_antonРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 3
Просмотров: 1958
Последний ответ 20 Авг 2014, 12:22
от has
как перебрать строки в табличной части документа в форме документа

Автор IaterРаздел Пользователям "1С - Предприятие 8"

Ответов: 2
Просмотров: 7803
Последний ответ 06 Май 2015, 23:03
от Iater
Изменение строки "Скидка" в чеке ККМ в Розница 2.2

Автор magnifico61Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 416
Последний ответ 06 Апр 2017, 08:40
от magnifico61

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
133 Сообщений
ilyay ilyay
63 Сообщений
AIFrame
62 Сообщений
alex0402
50 Сообщений
andron81_81
44 Сообщений
oleg-x
41 Сообщений
MuI_I_Ika MuI_I_Ika
31 Сообщений
BuhRust
30 Сообщений
Golickoff Golickoff
27 Сообщений
alexandr_ll
23 Сообщений

* Кто онлайн

  • Точка Гостей: 176
  • Точка Скрытых: 0
  • Точка Пользователей: 4
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal