ИСХОДНАЯ ИДЕЯ: Для получения отчета ("Таблица") скармливать одному и тому же внешнему отчету (ОтчетПоТабЗн.ert) различные исходные данные в виде таблицы значений (ТЗ) в зависимости от задачи, и тем самым избавить себя от части рутины, связанной с программированием формирования и вывода таблицы отчета. Однако, постепенно функционал обработки существенно расширился (см. далее).
Консоль запросов в сочетании с возможностями дополнительной обработки полученной таблицы значений и режимом сохранения настроек позволяют применять обработку программистами и здравомыслящими конечными пользователями в режиме "Предприятие" как универсальный генератор отчетов на базе выборки, не прибегая к программированию.
ВОЗМОЖНОСТИ: 1. Формирование динамического отчета (с переменными колонками) по таблице значений. Отчет может быть простой или с вложенными группировками. В этом случае требуется исходная ТаблицаЗначений специального формата, см.комментарии к процедуре СформироватьОтчетСГруппировками(ТабЗнЧастиОтчета). Поддерживается до 4-х уровней группировок включительно: первый - охватывающий (старший), последний - детальная строка (если передать больше - выведет 4, начиная с охватывающего уровня). С версии 02-07 имеется также альтернативный вариант вывода отчета с группировками произвольной вложенности (Флажок "флРекурсивныйВыводГруппировок"). В версии 03-00 появилась возможность произвольно задавать группируемые и суммируемые колонки (1 или несколько уровней) непосредственно в обработке перед формированием отчета (вкладка "Произвольные группировки"). Исходная таблица значений может быть передана при вызове обработки в качестве параметра открытия в конструкции типа ОткрытьФорму("Отчет",ТабЗнСтрокиОтчета, КаталогИБ()+"ExtForms\ОтчетПоТабЗн.ert"); С версии 03-04 для отчета с группировками можно обойтись и без ТЗ специального формата (поднадоело ее собирать) - при вызове передавать детальную ТЗ, а затем, манипулируя контекстом открытой формы, установить значения заголовка, группируемых и суммируемых колонок и т.д. (см. соответствующий пример ниже). 2. Импорт ТЗ из *.dbf файла (xBase) (есть выбор DOS/Windows кодировки). 3. Импорт ТЗ из *.xls файла (Excel) (есть выбор листа книги). 4. Экспорт ТЗ в *.xml файл (агрегатные типы данных преобразуются к базовым). 5. Импорт ТЗ из *.xml файла в формате, выгружаемом данной обработкой, который содержит описание структуры данных (поддерживаются только базовые типы данных). 6. Импорт ТЗ из *.txt файла (есть выбор DOS/Windows кодировки, разделителя полей). 7. Получение ТЗ из запроса 1С, сформированного из данной обработки (вкладка "Консоль запросов", операция "Выполнить запрос"). Есть возможность ссылаться на списочные условия типа Условие(ПеременнаяЗапроса В СписокЗначений) для агрегатных типов данных, подробнее см. всплывающие подсказки к диалогам. 8. Экспорт ТЗ в *.dbf файл (есть выбор DOS/Windows кодировки). 9. Экспорт ТЗ в *.xls файл. 10. Экспорт ТЗ в *.txt файл (есть выбор DOS/Windows кодировки, разделителя полей). 11. Редактирование ячеек ТЗ, добавление/удаление строк и колонок, замена значения в колонке по условию, сортировка по указанным колонкам, редактирование параметров колонок. 12. Собственный механизм сохранения/восстановления настроек (дополнительно к стандартному) посредством текстового файла (позволяет объединять списки настроек из разных файлов). 13. Создание перекрестной таблицы по типу перекрестного запроса MS Access или сводной таблицы Excel (вкладка "Перекрестная таблица"). Реализовано отдельной операцией, а также как предварительное действие перед формированием отчета с группировками (флажок на вкладке "Произвольные группировки"). Можно указывать несколько колонок со значениями. 14. Заполнение колонок по формуле на языке 1С (вычисляемые поля). В формуле можно ссылаться на значения колонок ТЗ и свойства самой ТЗ. В списке подстановок имеются шаблоны готовых формул, возвращающие элементы справочника и документы как значения агрегатных типов. 15. Свертка ТЗ по указанным колонкам. Для числовых колонок при этом возможно суммирование значений. 16. Сохранение ТЗ в текстовом файле служебного формата и восстановление ее из такого файла (в режиме создания новой ТЗ или добавления строк в существующую ТЗ по колонкам с совпадающими идентификаторами) с сохранением значений агрегатных типов данных.
ПРИМЕРЫ ВНЕШНЕГО ВЫЗОВА: ВОЗМОЖНЫЕ НАПРАВЛЕНИЯ ПРИМЕНЕНИЯ: НЕКОТОРЫЕ НЕОЧЕВИДНЫЕ ФИЧИ: ГРУППИРОВКИ ПРОИЗВОЛЬНОЙ ВЛОЖЕННОСТИ: см. описание обработки или прилагаемый текстовый файл.
АВТОР: Селюкин Александр (sau) E-mail Буду рад, если моя поделка окажется востребованной в миру и принесет пользу прогрессивному человечеству
Файл: repbyvaltab.zip
Размер: 80,16 KB
Дата регистрации: 09/12/2003
Последнее обновление: 04/03/2010
Пишет регулярно
Зарегистрирован:30/10/2003
Город:Новосибирск
Сообщений:44
Re: Внешняя обработка \"Отчет по таблице значений\" v04-10
Еще новое в версии 04-10: Мелкая, но востребованная фича - теперь при экспорте ТЗ в Excel значения из "строковых" и "неопределенных" колонок помещаются в ячейку листа именно как "Текст", а не с "Общим" форматом. Иначе Excel может самопроизвольно преобразовывать разного рода номенклатурные коды, инвентарные номера и т.п. с ведущими нулями в числа, а нули обрезть, что ведет к искажению данных. Фича задействуется автоматически, если колонка ТЗ имеет неопределенный или строковый тип. Можно, вообще-то, рулить не форматом ячейки, а ведущий апостроф добавлять к значению, чтобы "как есть" отображалось, но через формат, по-моему, корректнее.
Пишет регулярно
Зарегистрирован:30/10/2003
Город:Новосибирск
Сообщений:44
Re: Внешняя обработка \"Отчет по таблице значений\" v04-10
Новое в версии 04-10: Случайно заметил, что ограничение на 4 уровня вложенности группировок для отчета с группировками распространялось и на рекурсивный вывод группировок, что лишало затею с ним практического смысла. Для устранения данной недоработки модифицирована Процедура СформироватьОтчетСГруппировками(ТабЗнЧастиОтчета).
Пишет регулярно
Зарегистрирован:30/10/2003
Город:Новосибирск
Сообщений:44
Re: Внешняя обработка \"Отчет по таблице значений\" v04-09
Новое в версии 04-09: 1. Сохранение ТЗ в текстовом файле служебного формата и восстановление ее из такого файла (в режиме создания новой ТЗ или добавления строк в существующую ТЗ по колонкам с совпадающими идентификаторами) с сохранением значений агрегатных типов данных.
2. Оптимизировано заполнение колонки по формуле. В списке подстановок добавлены шаблоны готовых формул (из контекста модуля обработки), возвращающие элементы справочника и документы как значения агрегатных типов. Например, импортировав из файла *.xls таблицу, где имеются уникальные наименования или коды элементов справочника, можно добавить колонку агрегатного типа и заполнить ее значениями, найденными с помощью формулы по имеющимся атрибутам базовых типов. Сама реализация вычисления формулы также скорректирована, чтобы поддерживать возврат значений любых типов, в том числе и агрегатных. Как известно, штатно функция Шаблон([...]) вычисляет выражение [...] и возвращает строку. Полезная идея неочевидного способа использования функции Шаблон() для получения значения фактического типа заимствована на правах общего доступа с сайта Кайгородова Андрея (aka mszsuz) http://www.sinor.ru:8100/~my1c/knowhow/getvalat.html На этом сайте вообще-то много полезного кода есть, автору - благодарность за то, что собирает и делится с народом.
Пишет регулярно
Зарегистрирован:30/10/2003
Город:Новосибирск
Сообщений:44
Re: Внешняя обработка \"Отчет по таблице значений\" v04-08
Новое в версии 04-08: - Добавлена кнопка просмотра и выбора значений ячеек ТЗ агрегатного типа в немодальном режиме (через "ОткрытьПодбор"). - Добавлена кнопка копирования строки ТЗ. - Добавлена кнопка установки пустого значения в ячейку ТЗ.
Пишет регулярно
Зарегистрирован:30/10/2003
Город:Новосибирск
Сообщений:44
Re: Внешняя обработка \"Отчет по таблице значений\" v04-07
Новое в версии 05-07:
1. Оптимизирован интерфейс подбора списочных условий для консоли запросов - добавлена возможность по двойному щелчку на уже включенном в список значении позиционироваться на нем в форме подбора (форма списка справочника, журнал документов, план счетов).
2. Несколько оптимизирована обработка импорта-экспорта через файл обмена для TXT и XLS файлов: - при экспорте в качестве заголовков полей в файл выгружаются заголовки колонок ТЗ (по умолчанию они совпадают с идентификаторами). - при импорте допустимо не указывать номер строки с именами полей ('Отмена' или 0), если в файле обмена с первой строки начинаются непосредственно данные.
Пишет регулярно
Зарегистрирован:30/10/2003
Город:Новосибирск
Сообщений:44
Re: Внешняя обработка \"Отчет по таблице значений\" v04-05
Новое в версии 04-05: - Некоторые относительно новые реквизиты диалога не сохранялись при записи пользовательских настроек. Дополнено. - В целях стандартизации изменены идентификаторы флажков ВыполнитьОперациюПриЗакрытии -> флВыполнитьОперациюПриЗакрытии, РекурсивныйВыводГруппировок -> флРекурсивныйВыводГруппировок. - Для лучшей наглядности в отчете с группировками предусмотрена возможность выделения группировок, имеющих подчиненные, более крупным шрифтом (старше группировка - крупнее шрифт), что определяется флажком флВыделятьГруппировкиШрифтом (вкладка 'Произвольные группировки').
Пишет регулярно
Зарегистрирован:30/10/2003
Город:Новосибирск
Сообщений:44
Re: Внешняя обработка \"Отчет по таблице значений\" v04-04
Новое в версии 04-04: - Свертка ТЗ по указанным колонкам. Для числовых колонок при этом возможно суммирование значений. - Немного оптимизированы замена значений по колонкам типа "Неограниченная строка" и обработка замыкающих пробелов в заменяемых и заменяющих строках. //------------------------------------------------------------------------------ К консоли запросов: Визуальный конструктор текста запросов 1С в режиме "Предприятие" от MPV: http://1c.proclub.ru/modules/mydownloads/personal.php?cid=5&lid=3601