Подробный пример использования данной обработки в составе отчета по оплатам приведен здесь: //infostart.ru/projects/522/?&desc=1&ref=174
Обработка, которая приведена здесь, по сравнению с упомянутой выше ссылкой, расширена: стало лень каждый раз обозначать требуемую раскладку колонок для вывода РАЗНЫХ отчетов — вот и прикрутил сохранение/восстановление раскладки колонок для вывода отчетов. Причем, обработка сама распознает, какой набор/раскладка колонок подходит для полученного на вывода отчета.
От других навороченных обработок аналогичного типа отличается, на мой взгляд, идеальной сбалансированностью функционала и простоты использования.
Мое мнение — удобнейший инструментарий! В копилку программистаааааа!!
Оригинал обработки расположен здесь: http://1c.proclub.ru/modules/mydownloads/personal.php?cid=5&lid=3454 Разрешение от автора на выкладывание доработанной обработки — получено.
Пример использования данной обработки.
//здесь работает внешний отчет, формирующий какие-либо данные
//…
//если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0
Тогда Возврат;
КонецЕсли;
ТЗ = СоздатьОбъект("ТаблицаЗначений");
Запрос.Выгрузить(ТЗ,1,0);
Если ФлагГруппа = 0 Тогда ТЗ.УдалитьКолонку("ГруппаТовара"); КонецЕсли;
ТЗ.УдалитьКолонку("Количество"); //удаляем ненужные колонки
ТЗ.УдалитьКолонку("ПродСт");
ТЗ.УдалитьКолонку("ТекДок");
//здесь имеем ПЛОСКУЮ ТЗ с нужными для вывода данными
//ТЗ должна содержать нужные числовые данные и, по возможности, не содержать лишних колонок
//…
//сформируем параметры для передачи в обработку
/
//Параметр "ТаблицаЗначений"
//собственно, сама таблица значений для вывода, подготовленная ранее, плоская.
//Параметр "СписокПоказателей"
//положим в список значений "счетные" колонки ТЗ (числовые)
//(суммы, количества, себестоимости и прочее всякое что можно складывать…)
//все остальные неуказанные колонки будут считаться "измерениями" (группировками)
//формат элемента списка значений:
//значение элемента = идентификатор колонки ТЗ,
//представление элемента = заголовок колонки в отчете
//
СЗПоказателей = СоздатьОбъект("СписокЗначений");
СЗПоказателей.ДобавитьЗначение("СуммаПродСт","Сумма"); //"СуммаПродСТ" — идентификатор колонки ТЗ, "Сумма" — будет выводиться заголовком колонки
СЗПоказателей.ДобавитьЗначение("СуммаКоличество","Кол-во"); //"СуммаКоличество" — идентификатор колонки ТЗ, "Кол-во" — будет выводиться заголовком колонки
//Параметр "СписокВыводаГруппировок", может отсутствовать
//положим в список значений формат вывода группировок (этот параметр может быть опущен/не задан)
//0 -группировку по измерению не выводить (свертывать, с последующей расшифровкой)
//1 -группировать измерение по строкам (группировок может быть несколько)
//2 -группировать измерение по столбцам (группировку по столбцам можно не более одной!)
//
//формат элемента списка значений:
// значение элемента = число (0,1,2)
// представление элемента = идентификатор колонки ТЗ
//
СЗгруппировок = СоздатьОбъект("СписокЗначений");
СЗгруппировок.ДобавитьЗначение(2,"ТипЯчейки"); //неуказаннные группировки имеют значение 1 — по строкам
СЗгруппировок.ДобавитьЗначение(0,"АдресЯчейки");
//Параметр "Заголовок", может отсутствовать
//текст, выводится как заголовок отчета
//…
//вызовем универсальный отчет по ТЗ
//в списке значений передадим параметры
// — саму таблицу значений для вывода, параметр "ТаблицаЗначений"
// — список "счетных" колонок, параметр "СписокПоказателей"
// — список группировок, параметр "СписокВыводаГруппировок" (может отсутствовать)
// — заголовок для отчета, параметр "Заголовок" (может отсутствовать)
КонтекстВызова = СоздатьОбъект("СписокЗначений");
КонтекстВызова.ДобавитьЗначение(ТЗ,"ТаблицаЗначений");
КонтекстВызова.ДобавитьЗначение(МойЗаголовокОтчета,"Заголовок");
КонтекстВызова.ДобавитьЗначение(СЗПоказателей,"СписокПоказателей");
КонтекстВызова.ДобавитьЗначение(СЗПоказателей,"СписокВыводаГруппировок"); //если не указывать параметр — все группировки = по строкам
//…
ПутьОбработки = ""; ИмяОбработки = "";
РасположениеФайла(ПутьОбработки, ИмяОбработки);
ОткрытьФорму("Отчет", КонтекстВызова, ПутьОбработки+"ОтчетПоТЗ.ert");
КонецПроцедуры //Сформировать()
Обновление 30.11.19
Модифицировано: выполняется автонастройка ширины колонок таблицы расшифровки числовых показателей
Обновление 29.11.19
Добавлена возможность манипулировать настройками вывода группировок программно при вызове отчета.
ВНИМАНИЕ: СПЕЦИАЛЬНО ДЛЯ ТЕХ, КТО НЕ УМЕЕТ ЧИТАТЬ, ПИШУ БОЛЬШИМИ ЖИРНЫМИ КРАСНЫМИ БУКВАМИ: ОБРАБОТКУ СЛЕДУЕТ ВЫЗЫВАТЬ КАК ОПИСАНО ВЫШЕ, ИСПОЛЬЗУЯ ПРОГРАММНЫЙ ОПЕРАТОР ОткрытьФорму("Отчет",….) — НИКАКИМИ ДРУГИМИ СПОСОБаМИ ДАННУЮ ОБРАБОТКУ ОТКРЫВАТЬ НЕ СЛЕДУЕТ!
Все — бяки!
100 раз качнули — хоть один бы коммент оставил…
в комплексной при открытии
Для сч = 1 По ТЗПолнаяОригинал.КоличествоКолонок() Цикл
{C:DOCUMENTS AND SETTINGSALEX.DOBRO_PRODРАБОЧИЙ СТОЛBVK_OTCHETPOTZ.ERT(325)}: Значение не представляет агрегатный объект (КоличествоКолонок)
ок. проверю вечером.
проблема, скорее всего — в ненадлежащей передаче параметров при вызове обработки — копать в эту сторону.
на досуге придется вставить проверку на прием параметров…
Очень понравилась 🙂 куча отчетов было таких, что вывод только из таблиц, а тут группировки по ним готовенькие. спасибо 🙂
Всегда пожалуйста.
Приходите еще.
Заказывайте и спрашивайте про прочие нужные вам «полезности»
круто
Спасибо что выложил эту прогу. но боюсь это не совсем то, что мне надо
Господин, Che Burashka… Вы и так впереди планеты всей… и вызываете уважение… УРА!
Хоть и не модератор FIDO, но плюс Вам поставлю…
Спасибо. Начинаю офигевать от собственной офигенности… Качают много всяких моих разработок, но вопросов задают мало… или написал так что все понятно/большинстов устраивает или посмотрели и бросили.. даже ругать не стали… ВАШИ МНЕНИЯ ПО ЭТОМУ ПОВОДУ?
Я скачал, нет времени посмотреть. Гляну, обязательно отпишусь и оценю :))
вот здесь есть достойное продолжение для классомановhttp://infostart.ru/projects/1658/
Спасибо.Супер
(14) А то! То что лежит у мну в профайле — испытано и одобрено лично мною и используется в моей повседневной работе, так что крупных косяков — нет…
гранаты ваши не моёй системы. моя ругается и ничго делать не хочет. жаль.
(16) не надо ля-ля.. все работает!
как конкретно ругается?
покажите код, который готовит и передает параметры на вход этой обработки…?
(17) выдает:
ТЗраб.Сортировать(«ИмяГруппировки»);
{D:BASESБАЗЫ ГЛАВБУХАКОПИЯ БД БУХ ТЕКУЩАЯEXTFORMSУНИВЕРСАЛЬНЫЙ ОТЧЕТ ПО ТАБЛИЦЕ ЗНАЧЕНИЙ.ERT(994)}: Неверный идентификатор колонки!
Если ТЗНастроекКолонокТекущая.КоличествоСтрок() = 0 Тогда
{D:BASESБАЗЫ ГЛАВБУХАКОПИЯ БД БУХ ТЕКУЩАЯEXTFORMSУНИВЕРСАЛЬНЫЙ ОТЧЕТ ПО ТАБЛИЦЕ ЗНАЧЕНИЙ.ERT(1035)}: Значение не представляет агрегатный объект (КоличествоСтрок)
ТЗПолная.НоваяКолонка(ИмяВертГруппировки,ТипВертГруппировки);
{D:BASESБАЗЫ ГЛАВБУХАКОПИЯ БД БУХ ТЕКУЩАЯEXTFORMSУНИВЕРСАЛЬНЫЙ ОТЧЕТ ПО ТАБЛИЦЕ ЗНАЧЕНИЙ.ERT(753)}: Значение не представляет агрегатный объект (НоваяКолонка)
По поводу кода ничё сказать не могу — я просто булгахтер любопытный.
отвечено в личку:
— обработка самостоятельно ручками не вызывается! вызывается программным способом с передачей параметров!
такое выдает
ТЗИдВерт.УстановитьЗначение(ТЗИдВерт.НомерСтроки, ИмяПоказателя, ТЗВремКопия.ПолучитьЗначение(ТЗВремКопия.НомерСтроки, ИмяПоказателя));
{D:…BVK_OTCHETPOTZ.ERT(701)}: Неверный идентификатор колонки!
(20)
1.Отчет вызывается ТОЛЬКО ПРОГРАММНО!
2. Проверьте чтобы при передаче параметров было
СЗПоказателей.ДобавитьЗначение(«ЗдесьИмяКолонкиТЗ»,»ЗдесьКакэТоНазыватВотчете»);
Спасибо все работает супер! Поначалу правда не запускалось. Достаточно было понять, что в ТЗ должны быть не только группировки, но и их значения
Великий СЕНКС. Весьма облегчило жисть
отлично! спасибо 🙂
Помогла не только разработка, но и автор! Спасибо!
Поместила файл в подкаталог ExtForms в каталоге информационной базы.
Через меню «Сервис» выбрала пункт «Дополнительные возможности».
Добавила этот файл.
Попыталась открыть отчет, пишет — НЕВЕРНЫЕ ПАРАМЕТРЫ ВЫЗОВА, но при этом при нажатии на «ОК» отчет открылся.
при попытке сформировать выдает :
ТЗПолная.НоваяКолонка(ИмяВертГруппировки,ТипВертГруппировки);
{D:1С — ОПТИМАБАЗЫ ДАННЫХ (ЛОКАЛЬНЫЕ)СТEXTFORMSBVK_OTCHETPOTZ.ERT(753)}: Значение не представляет агрегатный объект (НоваяКолонка)
что делать? я не программист, я бухгалтер, который старается облегчить себе жизнь путем использования обработок.
Если сможете подсказать, буду благодарна.
bearcat, не делайте так.
не надо все в рот тянуть, прям как дети малые
(27) спокойно! инструкции были даны в личку…
CheBurator вышлите мне пожалуйста инструкцию как для (26)
(29) в описании обработки где-нибудь сказано что обработку следует открывать через файл-открыть? сказано открывать каким либо другим способом кроме как вызовом оператора ОткрытьФорму(«Отчет», КонтекстВызова, ПутьОбработки+»БВК_ОтчетПоТЗ.ert»); ….????????
— что именно непонятно?
(30) разобралься спасибо.
я пока что нуб так что извиняйте.
😥 Наверно, я чего-то не понимаю, но у меня неправильно работает
Во вложенном файле исходная ТЗ и картинка, чего получается. Самое яркое что в глаза бросается — столбцы по первой номенклатуре — итоги по торговым
(32) архив битый!
(33) Отправил архив на мыло
глФРМ неплохо бы вставить в модуль 🙂
(35) Разрешаю, вставляйте!
не имею такой возможности; да мне то собственно…
Бывают клиенты «Кнопочники», такие нелюбят много кнопок, а нооборот мечтают об одной кнопке 🙂
(38) вставь «заглушку» — для такого-то набора колонок применить такую-ту раскладку 😉 — т.е. пррограммно прописать то что делается по кнопке восстановить… а еще лепотее — через глРасшифровку закинуть нужный набор параметров
А глФРМ — это из типовой конфы? У меня база 10 раз переписана, ругается.
глФРМ<<?>>(ЗначениеПоказателя)
Функция не обнаружена (глФРМ)
Может скинете на почту модуль функции?
Кстати, было бы еще неплохо иметь возможность убирать группировку из вывода таблицы.
(40) уже разобрался) Крутая штука, очень помогло)
(41) ну.. это простая глПечатьТЗ() — есть такая широко распространенная…
(43) и это победил, просто кинул на форму кнопку, удаляющую текущую группировку, и сделал сохранение перед этим. Теперь не пойму, почему не работает фиксация строк, и не выводятся заголовки)))
Классно работает, но до тех пор пока не нужно выводить посортированное, т.к. обработка производит свою сортировку при выводе.
напр.: группировка 1 = контрагент, группировка 2 = товар, ресурсы — количество и сумма . нужно вывести все посортированное по количеству в
порядке убывания. ТЗ, которая передается Вашей обработке уже так и посортирована, но внутри Вашей обработке сортировка ломается. однозначный плюс автору и
CheBurator за то, что представил (доработки CheBurator не проверял). буду пробовать исправить что-то с сортировкой
(45) Обработка — универсальная, хотите специфики — перетачивайте самостоятельно 😉
В общем случае сортировка по измерению (товар, клиент) — всегда имеет смысл, сортировка по количеству в общем случае — смысла лишена: отсортируйте литры с килограммами и сантиметрами…
почему же лишена смысла — если все товары имеют одну единицу измерения — то сортировка в числовом измерении дасть больше аналитической информации, чем сортировка по товару, контрагенту.
(47) потому что не надо «подгонять данные». Я выше написал: реализован общий случай, в общем случае — товары не имеют одну единицу измерения. А вот «если.. имеют…», «если… весь товар — одна номенклатура но разных серий с разными сроками изготовления» и т.д. — это частные случаи. никто не запрещает подогнать универсальную обработку для общих случаев под свое частное решение…
Показать
очень помогло
Не нашел как добавить обычных колонок для доп. информации.
Видимо нужно доработать, чтобы был список колонок кот. следует исключить из группировки.
Не нашел как зафиксировать порядок сортировки строк/колонок.
Так же необходимо немного доработать )
(51) этот отчет — в первую очередь группировочный. поэтому вывод дополнительной информаци для уровня группировки — не предусмотрен. Выйти из положения нможно так: если надо вывести в группировке, например номенклатуру с дополнительнйо инфорацией (акртику) — то в ТЗ ДЛЯ ВЫВОДА вместо колонки «номенклатьура», формируем колонку «артикул+номенклатура»
(52) внизу под таблицей группирвоко — есть кнопка «сохранить» и «восстановить». Первая кнопка запоминает под именем (вводится пользователем) текущую настройку вывода колонок/группирвоок, «восстановить2 — позволяет восстановить ее.
(53,54) Уже переделал под себя )
Пришел к клиентам, а там твоя обработка используется.
Очень хорошая обработка, спасибо, очень помогла. Возникла правда, проблема. Отчет чисто группировочный, а иногда надо выводить дополнительную строку с информацией «в т.ч.» Привожу пример.
В ТЗ есть колонки Контрагент, Товар, РасходнаяНакладная, Количество, ГруппаКонтрагентов, Группа Товаров. Счетная колонка «Количество»
Этим отчетом удается вывести ГруппаКонтрагентов в столбцах, Группа Товар и Товар в строках, выглядит так
http://gyazo.com/7338e1dfc1ed8c30de7e64212fb6f799
http://gyazo.com/12f731587eb4c5fdf114c2decae889bc т.е. без вывода товаров.
Или можно вывести вот так
А хотелось бы выводить например только группу товаров, и «в т.ч.» товар. Вот так
http://gyazo.com/5b3b77d726cd758afd062b4707e86494
Иными словами, чтобы итоги по группе считал, но выводил под названием группы и количеством только определенные товары с количеством по конкретным товарам. Как можно извратиться в рамках существующего отчета? Или только допиливать отчет?
Впрочем, вышел из положения, тупил. Просто добавил колонку еще одну группировочную. ) Проблема решена.
(57) Ну и отлично
Обновил обработку.
Добавлена возможность манипулировать настроками вывода группировок программно при вызове отчета.
В плане (когда-то.. если руки дойдут…):
1.переписать на йоксель и ИТЗ для увеличения производительности.
2. сделать возможность запуска обработки интерактивно — с загрузкой сторонних данных для вывода из экселя, csv, dbf + вывод данных из базы, получаемых через универсальный подбор обьектов.
Обновил обработку.
Модифицировано: выполняется автонастройка ширины колонок таблицы расшифровки числовых показателей