Табличная часть, убрать не нужные строки.
Доброго времени суток, есть отчет, который формируется в виде макета(извините если не правильно сформулировал).
Нужно сделать что бы при выставление галочки на панели, формировался отчет, но без пустых строк.
Например на изображение выше, нужно что бы формировался без 3 строки "М.3", но при этом не трогал остальные столбцы(Например М.2, Месяц 2,месяц 4).
Нужно сделать что бы при выставление галочки на панели, формировался отчет, но без пустых строк.
Например на изображение выше, нужно что бы формировался без 3 строки "М.3", но при этом не трогал остальные столбцы(Например М.2, Месяц 2,месяц 4).
По теме из базы знаний
- Есть ли жизнь в закрытом периоде? Или способ заставить работать "Обработку заполнения табличных частей" в закрытом периоде.
- Выгрузка-загрузка любых данных (и измененных) между похожими конфигурациями (ФАЙЛ, HTTP, COM) ЛЮБЫХ баз 1С 8.1-8.3 с обработкой и поиском данных по произвольным полям поиска
- Загрузка данных из табличного документа в справочники, документы, планы видов характеристик, планы видов расчетов, планы счетов, бизнес-процессы, задачи, в движения документов, поточная загрузка документов (EXCEL, управляемые формы, универсальная)
- [ТАКСИ] Шаблон внешней обработки...и не только
- Управление сборкой. Расширение для конфигурации СППР
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Часть кода, где происходит формирование, если не ошибаюсь, то нужно копать тут, я прав?
Процедура КнопкаСформироватьНажатие(Кнопка)
тзПериод = Новый ТаблицаЗначений;
тзПериод = СформироватьПериоды();
Массив = Новый Массив;
Массив.Добавить(Тип("СправочникСсылка.Магазины"));
ОписаниеТиповМагазин = Новый ОписаниеТипов(Массив);
КД = Новый КвалификаторыДаты();
Массив = Новый Массив;
Массив.Добавить(Тип("Дата"));
ОписаниеТиповПериод = Новый ОписаниеТипов(Массив, , КД);
Массив.Очистить();
КЧ = Новый КвалификаторыЧисла(12,2);
Массив.Добавить(Тип("Число"));
ОписаниеТиповЧисло = Новый ОписаниеТипов(Массив, , КЧ);
Массив.Очистить();
КС = Новый КвалификаторыСтроки(50);
Массив.Добавить(Тип("Строка"));
ОписаниеТиповСтрока = Новый ОписаниеТипов(Массив, , КС);
тзРез = Новый ТаблицаЗначений;
тзРез.Колонки.Добавить("Магазин",ОписаниеТиповСтрока);
тзРез.Колонки.Добавить("Период",ОписаниеТиповПериод);
тзРез.Колонки.Добавить("Оборот",ОписаниеТиповЧисло);
тзРез.Колонки.Добавить("Остаток",ОписаниеТиповЧисло);
Для каждого стр Из тзПериод Цикл
т = ОборотыОстаткиЗаПериод(стр.НачДата,стр.КонДата,?(Магазин = Справочники.Магазины.ПустаяСсылка(),"",Магазин.Ссылка));
Для каждого тт Из т Цикл
НовСтр = тзРез.Добавить();
ЗаполнитьЗначенияСвойств(НовСтр,тт);
КонецЦикла;
т = "";
КонецЦикла;
ЭлементыФормы.Табл.Очистить();
Таб = ЭлементыФормы.Табл;
Таб.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ДинамикаАптек";
Макет = ПолучитьМакет("Макет");
облЗаголовокАптека = Макет.ПолучитьОбласть("Заголовок|Аптеки");
облЗаголовокДанные0 = Макет.ПолучитьОбласть("Заголовок|Данные0");
облЗаголовокДанные1 = Макет.ПолучитьОбласть("Заголовок|Данные1");
облСтрокаАптека0 = Макет.ПолучитьОбласть("Строка0|Аптеки");
облСтрокаАптека1 = Макет.ПолучитьОбласть("Строка1|Аптеки");
облСтрокаДанные00 = Макет.ПолучитьОбласть("Строка0|Данные0");
облСтрокаДанные01 = Макет.ПолучитьОбласть("Строка0|Данные1");
облСтрокаДанные10 = Макет.ПолучитьОбласть("Строка1|Данные0");
облСтрокаДанные11 = Макет.ПолучитьОбласть("Строка1|Данные1");
облПодвалАптека = Макет.ПолучитьОбласть("Итоги|Аптеки");
облПодвалДанные0 = Макет.ПолучитьОбласть("Итоги|Данные0");
облПодвалДанные1 = Макет.ПолучитьОбласть("Итоги|Данные1");
Таб.Вывести(облЗаголовокАптека);
фл1 = ЛОЖЬ;
Для каждого стр Из тзПериод Цикл
фл1 = НЕ фл1;
Если фл1 Тогда
Обл = облЗаголовокДанные0;
Иначе
Обл = облЗаголовокДанные1;
КонецЕсли;
обл.Параметры.Период = стр.НачДата;
Таб.Присоединить(обл);
КонецЦикла;
Таб.ФиксацияСверху = Таб.ВысотаТаблицы;
Запрос = Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
| ТЗн.Магазин,
| ТЗн.Период,
| ТЗн.Оборот,
| ТЗн.Остаток
|ПОМЕСТИТЬ Таб
|ИЗ
| &ТЗ КАК ТЗн
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| рТаб.Магазин КАК Магазин,
| рТаб.Период КАК Период,
| рТаб.Оборот КАК Оборот,
| рТаб.Остаток КАК Остаток
|ИЗ
| Таб КАК рТаб
|
|СГРУППИРОВАТЬ ПО
| рТаб.Магазин,
| рТаб.Период,
| рТаб.Оборот,
| рТаб.Остаток
|
|УПОРЯДОЧИТЬ ПО
| Магазин,
| Период
|ИТОГИ
| СУММА(Оборот),
| СУММА(Остаток)
|ПО
| Магазин,
| Период";
Запрос.УстановитьПараметр("ТЗ",тзРез);
// Побежали по содержимому отчета
Аптека = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
НачОстОбщий = 0;
ОборотОбщий = 0;
КоэфОбщий = 0;
фл = ЛОЖЬ;
пп = 0;
Пока Аптека.Следующий() Цикл
фл = НЕ фл;
Если фл Тогда
ОблСтрока = ОблСтрокаАптека0;
Иначе
ОблСтрока = ОблСтрокаАптека1;
КонецЕсли;
пп = пп + 1;
облСтрока.Параметры.пп = пп;
облСтрока.Параметры.Аптека = Аптека.Магазин;
Таб.Вывести(облСтрока);
Период = Аптека.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
фл1 = Ложь;
Пока Период.Следующий() Цикл
фл1 = НЕ фл1;
Если фл Тогда
Если фл1 Тогда
ОблКолонка = ОблСтрокаДанные00;
Иначе
ОблКолонка = ОблСтрокаДанные01;
КонецЕсли;
Иначе
Если фл1 Тогда
ОблКолонка = ОблСтрокаДанные10;
Иначе
ОблКолонка = ОблСтрокаДанные11;
КонецЕсли;
КонецЕсли;
ОблКолонка.Параметры.НачОст = Период.Остаток;
ОблКолонка.Параметры.Оборот = Период.Оборот;
ОблКолонка.Параметры.Коэф = ?(Период.Оборот=0,"",Период.Остаток / Период.Оборот);
Таб.Присоединить(ОблКолонка);
стрПериод = тзПериод.Найти(Период.Период,"НачДата");
Если НЕ(стрПериод = Неопределено) Тогда
стрПериод.НачОст = стрПериод.НачОст + Период.Остаток;
стрПериод.Оборот = стрПериод.Оборот + Период.Оборот;
стрПериод.Коэффициент = ?(стрПериод.Оборот <> 0, стрПериод.НачОст / стрПериод.Оборот,0);
КонецЕсли;
КонецЦикла;
КонецЦикла;
// Выводим данные подвала
облПодвалАптека = Макет.ПолучитьОбласть("Итоги|Аптеки");
облПодвалДанные0 = Макет.ПолучитьОбласть("Итоги|Данные0");
облПодвалДанные1 = Макет.ПолучитьОбласть("Итоги|Данные1");
Таб.Вывести(облПодвалАптека);
фл1 = ЛОЖЬ;
Для каждого стр Из тзПериод Цикл
фл1 = НЕ фл1;
Если фл1 Тогда
Обл = облПодвалДанные0;
Иначе
Обл = облПодвалДанные1;
КонецЕсли;
обл.Параметры.НачОстОбщий = стр.НачОст;
обл.Параметры.ОборотОбщий = стр.Оборот;
обл.Параметры.КоэфОбщий = стр.Коэффициент;
Таб.Присоединить(обл);
КонецЦикла;
тзКоэффициент = Новый ТаблицаЗначений;
тзКоэффициент.Колонки.Добавить("Период");
тзКоэффициент.Колонки.Добавить("Коэффициент");
//стр = тзКоэффициент.Добавить();
//стр.Период = "Период";
//стр.Коэффициент = "Коэффициент";
тзПоказатели = Новый ТаблицаЗначений;
тзПоказатели.Колонки.Добавить("Период");
тзПоказатели.Колонки.Добавить("НачальныйОстаток");
тзПоказатели.Колонки.Добавить("Оборот");
//стр = тзПоказатели.Добавить();
//стр.Период = "Период";
//стр.НачальныйОстаток = "НачальныйОстаток";
//стр.Оборот = "Оборот";
Для каждого стрПериод Из тзПериод Цикл
стр = тзКоэффициент.Добавить();
стр.Период = Формат(стрПериод.НачДата,"ДФ=MMMMYYYY");
стр.Коэффициент = стрПериод.Коэффициент;
стр = тзПоказатели.Добавить();
стр.Период = Формат(стрПериод.НачДата,"ДФ=MMMMYYYY");
стр.НачальныйОстаток = стрПериод.НачОст;
стр.Оборот = стрПериод.Оборот;
КонецЦикла;
ПоказатьПока Период.Следующий() Цикл
фл1 = НЕ фл1;
Вот в этом цикле считайте сумму реквизитов, если она равна нулю, тогда не выводите ни аптеку ни присоединение колонок не делаете. Тогда пустых строк не будет. Соот-но при условии, что галка нажата.
Внимание! Тема сдана в архив
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот