Универсальный генератор отчетов СКД (Управляемые формы, тонкий клиент)
Разработка - Инструментарий разработчика
Коллеги, представляю вашему вниманию, свою очередную наработку.
Как всегда, в качестве мотиватора выступила бухгалтерия на моей новой работе. Напиши им такой отчет, напиши им этакий отчет, а можно ли сделать чтобы выгруженные документы как-то сравнивать с управленческой базой, вдруг там что-то изменили, или неправильно выгрузилось, или отчетик который вытащит им какие то кривые документы, по определенным критериям.
В общем, ничего особенного, обычная работа. Но еще, давно я упростил себе и людям жизнь, упорядочив все отчеты в единую обработку, которая позволяла "на коленке" рисовать любые отчеты, и умела подключатся к внешним базам, и можно было дополнительно обрабатывать произвольными алгоритмами. Сама идея была, даже не мной придумана, а была основа которую, я уже потом допиливал..и все это много лет успешно работало (и работает до сих пор).
Но есть одно "НО". Все это было на старых конфигурациях, в обычном приложении.
На управляемых конфигурациях, все оказалось несколько сложнее. И так-как мне не удалось найти ничего готового подходящего, то пришлось все делать самому и так, как мне хочется, с учетом накопившихся потребностей и новых идей.
Итак консоль.
Внешне она выглядит как обычная консоль запросов, с деревом отчетов. Хранятся все отчеты в едином файлике.
Подключаем к конфигурации, как обычный внешний отчет. ну или просто открываем из файла.
Слева мы видим дерево наших отчетов. Закладки параметры, Порядок и отбор - это стандартные настройки вариантов отчетов для пользователя, дабы он мог их крутить.
Далее, закладка "внешние источники" - это закладка, где мы настраиваем базы, к которым мы будем подключатся (если таковые есть).
В дерево добавляем нужный отчет, задаем имя. По правой кнопке мыши, в контекстном меню, есть пункты "Описание" и "Изменить".
Описание - позволяет сделать описание текущего отчета (для чего он нужен, что выводит и т.п.), при большом количестве отчетов и пользователей, очень удобно, иначе забывается. Если описание есть, то строка отчета выделена подчеркиванием.
Выбрав описание, открывается фрейм, где мы видим описание, а в нем по правой кнопке мыши попадаем в редактор. Редактор описаний я делал давно, используя HTML-поле. Можно вставлять картинки, гиперссылки, раскрашивать и т.п. Сейчас,я бы сделал используя форматированный документ, но пока времени переделывать, то, что оттестировано и давно работает, нет, да и форматированный документ, это такой же HTML. В принципе там особо описывать нечего, все должно быть интуитивно понятно.
Изменить - это редактор внутренностей нашего отчета. Вот тут все интересней.
Тут рассмотрим все по порядку.
В левой колонке, список наших источников данных, по которым будем строится наш отчет.
Введем новый источник - обзовем его, к примеру, "ЛокальнаяБаза".
Также в окне мы видим несколько кнопок, которыми будем настраивать наш источник.
Открыть консоль - это стандартный редактор запроса, либо форма транспорта для внешней базы.
Вывести запрос - просто выведет результат нашего заделанного запроса, в нижний фрейм. Чек бокс "редактировать", это просто включение возможности открытия ссылочных полей по расшифровке. Регулятор внизу - меняет масштаб выведенной таблицы.
Обработки - форма ввода произвольного обработчика.
Радиопереключатель Внешний/Локальный - это источник данных. В случае с внешним, откроется выбор наших внешних баз, заданных ранее, где мы и выберем к какой оно будет подключатся и выгребать данные. Для локальной базы, дополнительной настройки не требуется.
Чекбокс Использовать ВТ - нужен для того, если мы предполагаем комбинацию из разных источников. Т.е. например, имеем несколько источников, а нам нужно их, объединить в один запрос через виртуальную таблицу. Создав новый источник, и активировав кнопку ВТ, появится кнопка - добавления в запрос, кода из выбранного нужного источника.
Итак, подготовим запросик
и зададим его параметры
нажав кнопку ок, вернемся в окно редактирования.
Теперь мы можем уже тестово вывести запрос, посмотреть что он там нам выводит.
Следующим шагом, нам необходимо заполнить поля источника, нажав соответствующую кнопку.
Если все сделано верно и корректно, то увидим названия полей, и тип полей. Это будут ключевые поля, для работы и с временными таблицами, и в самой схеме СКД,
если поля не заполнились, то ищем ошибки в запросе, или в обработчиках, без автоматом заполненных полей ничего работать не будет.
Ну и для примера заполним обработчик произвольного алгоритма.
следует помнить, что обработчик вызывается после выполнения основного запроса. Результат запроса выгружен в переменную "таблица", с которой мы и оперируем.
если это таблица удаленной базы, то в переменной ВнешнийИсточник находится наш ком соединитель. Чтобы не забыть, кликнув на поле правой кнопкой мыши, можно посмотреть пример.
Итак, после заполнения обработчиков, нажмем еще раз "Заполнить поля источника", чтобы там появилось программно добавленная нами колонка, и переходим к следующему шагу.
Закладка параметры, нужна для задания связок и визуализации параметров непосредственно у пользователя, с параметрами запросов наших источников.
Для начала нажмем кнопку "Обновить структуру".
И введем названия параметров, как их будет видеть пользователь, а в колонке с именем источника, выберем параметр из запроса, которому он будет соответствовать.
Параметры необязательно задавать все, какие есть в запросе. Мы можем задать, только Дату начала и дату конца, а организацию и контрагента, вообще не задавать,
тогда его значение по умолчанию, будет тем, каким мы его задали в консоли запроса.
Ну и после задания связок параметров, создадим схему СКД.
К слову сказать, конструктор схемы СКД, в тонком клиенте не работает, поэтому, чтобы его задать, нам придется запустить все приложение в режиме Толстого клиента, управляемого приложения. Других серьезных платформенных ограничений нет. Но пользоваться готовыми отчетами, вполне можно и в режиме тонкого клиента.
Итак, нажав, "ОК", перейдя в начальную форму отчета, нам нужно только у заполненного списка параметров, выбрать тип, задать какие-то значения, которые наиболее часто будут использоваться. Ну и можно его уже вывести и пользоваться.
--------------------------------------------------------
Несколько слов о внешних базах.
Работа с КОМ-объектами, требует, некоторого опыта при работе. Поэтому, не нужно расстраиваться что, не работает то или другое. Курите, изучайте мат часть. В принципе, консоль это инструмент разработчика, а не обычного пользователя.
Итак.
Чтобы сделать запрос, во внешней базе - необходимо запустить консоль, в этой самой внешней базе. Делаем там источник, "локальный", также редактируем запрос.
у редактора есть форма транспорт. Когда мы подготовим текст запроса, и зададим параметры, то перейдя на эту закладку видим абрукадабру.
это ни что иное, как сериализованный в строку, весь наш запрос, вместе с параметрами, функцией ЗначениеВСтрокуВнутр.
Сразу отвечу на вопрос, почему не сериализатор. Да потому, что опытным путем, выяснилось, что не со всеми базами это прокатывает, при десеарилизации в другой базе. Может быть из за разных режимов совместимости заданных у конфигураций, может еще из за чего-то. А данная функция, работает железобетонно. Поэтому оставил ее.
Эту абракадабру копипастим,
а в той базе, где строим отчет, при нажатии ОткрытьКонсоль, у нас откроется форма ввода транспортной строки.
Важно !!! При составлении запроса, не нужно выводить ссылочные поля !! Ссылки выводим через представления. Ну и примитивные типы.
При задании параметров, для внешней базы, требуется задать код связки. Это там же, на вкладке параметров.
Например, имеет стандартный отчет, по сверке поступлений. Там 2 источника данных, один реестр "Поступлений товаров услуг" в бухгалтерской базе,
другой берет документы "Приходная накладная" во внешней базе УНФ.
Ключевыми параметрами для обоих запросов, у нас является Дата начала, дата окончания, и Организация.
Дата - это примитивный тип, преобразования не требует, а вот с организацией посложнее.
Выбирать организацию мы будем в локальной базе, там это будет элемент справочника "Организации", а в удаленной базе будем искать выбранную организацию по "ИНН" (предположим, что наименования, и коды справочников у нас различаются).
На закладке параметры, после обновления структуры, мы видим поле "Преобразование", именно туда нам и необходимо вписать нужный код преобразования.
Если код не указать, то она просто попытается в лоб воткнуть значение параметра, что у нее конечно же не получится. А вот примитивные типы, без всякого преобразования указываем.
В контекстном меню, оставил памятку, по примеру преобразований (а то и сам, забываю).
На этом, пожалуй закончу данное повествование.
Пожелания, и баги приветствуются, претензии не принимаются (кому что не нравится, делайте свои поделки).
Всевозможные способы и вариации работы, тестировать нет ни потребности ни возможности. Но если что, по возможности буду дорабатывать. В принципе, итак перерабатывал его уже несчетное количество раз, идеи развития есть...поэтому буду тут и выкладывать обновления.
На авторство самой идеи не претендую, подобные работы давно делались. При кодировании, также не все из головы брал, использовал и куски чужих разработок (точно помню где-то подсмотрел раскраску текста), только источников этих сейчас уже и не смогу найти.
В общем всем удачи, и плодотворной работы.
UPD. 27.11.2017 v.2.0.0.1 исправлено некоторое количество багов.
UPD. 29.11.2017 v.2.0.1.0 выявлен и исправлен баг с расшифровкой (работал только в толстом клиенте), добавлена проверка корректности задания имени источника. Добавлена возможность тестового подключения к внешнему источнику. Добавлена возможность установить пароль на весь файл отчетов, для того чтобы обычный пользователь не мог случайно испортить и после этого сохранить отчеты.
UPD. 30.11.2017 v.2.0.1.1 Теперь настройки отчетов (отборы, сортировки) пользователем сохраняются и восстанавливаются через хранилище общих настроек, сам файл отчетов перезаписывать при этом не нужно.
UPD. 08.12.2017 v.2.0.1.2 Исправлена следующая ошибка. "Если пользователь ошибочно указывал файл, каталог, или неподходящий по структуре, путь запоминался и при открытии отчет выдавал ошибку и не открывался. " Завернул чтение и запись файла в попытку.
UPD. 14.12.2017 v.2.0.1.3 В целях удобства, по кнопке восстановить настройки, сделана инициализация настроек компоновщика по умолчанию. При многократном изменении схемы, настройки от предыдущих вариантов сильно мешали. Также немного почистил интерфейс, на кнопки с надписями сделал картинки, и информационные надписи сделал более лаконичными.
UPD. 15.12.2017 v.2.0.2.1 Добавлена автосумма выделенных ячеек, что-то наподобие ОСВ в БУХ.
UPD. 22.12.2017 v.2.1.0.1 Расширен функционал отчета. Появилась возможность расширенного редактирования настроек отчета, включая оформление, поля, структуру, и при необходимости экспертное редактирование всех параметров отчета.
Для этого в настройках появилась галка - расширенное редактирование.
после этого появляются дополнительные вкладки в параметрах, и несколько дополнительных кнопок в вариантах отчета.
Также появилась возможность работы с вариантами настроек.
По умолчанию варианты, подтягиваются из самой схемы СКД, и по желанию пользователя, меняются, либо добавляются собственные.
В отчете также, разграничились функции по управлению настройками, надеюсь стало более интуитивно понятно, как все работает. Отдельные кнопки сохранение восстановление и очистка хранилища пользователя, и отдельные кнопки помещения отрегулированных настроек в саму структуру отчета, а также возможность их инициализации.
Ну и в придачу убрал недочет, связанный с тем что при открытии отчета на полный экран (кнопка скрытия списков и параметров), при нажатии переформировать отчет - он теперь спокойно заново формируется.
И сделал вопрос, при попытке закрытия консоли, подтверждение о закрытии (дабы пользователь случайно esc не нажал и все свои настройки закрыл).
UPD. 01.08.2018 v.2.1.0.3. Столкнулся со старенькой УТ-шкой 11.0 с древним режимом совместимости. Как и написали в отзывах, не взлетело. Пришлось подшаманить, и заменить новые функции, на старые, и один вызов функции из БСП перенести. Предыдущую версию удалять не буду, т.к. она уже проверена а эту еще тестить нужно в различных вариантах.
UPD. 16.11.2018 v2.2.1.3. Расширен функционал. Сделана возможность хранения созданных отчетов внутри базы данных.
для этого в настройках необходимо установить галочку
При этом поле с выбором файла станет недоступным, а все созданные отчеты будут сохранятся внутри базы данных.
Данная функция будет работать, только на конфигурациях с БСП !. В качестве места хранения используется регистр сведений "ПользовательскиеМакетыПечати". При открытии отчета происходит поиск регистра по метаданным, и если такого нет, то и функция не будет доступна.
Для того чтобы удалить из базы сохраненные отчеты, сделал кнопку удаления.
Также перенес внутрь отчета, процедуру из БСП, для того чтобы максимально отвязать, и использовать отчет там где этой процедуры нет.
UPD. 16.11.2018 v2.2.1.4. Заметил и исправил ошибочку, возникшую после переноса общего модуля. Не считалась сумма выделенных ячеек.
Скачать файлы
Специальные предложения
См. также
Перенос данных БП 3.0 => УТ 11 / КА 2 / ERP 2 (ЕРП) (перенос остатков, документов и справочной информации из "1С:Бухгалтерия предприятия 8", ред.3.0). Обновлено до БП 3.0.73.х, УТ 11.4.10.х, КА 2.4.10.х., ERP 2.4.10.х! Промо
Переносятся документы за выбранный период, справочная информация и остатки по счетам бух. учета в программу УТ 11 / КА 2 / ЕРП 2 (ERP). Переносятся все возможные виды операций ввода остатков на нужную дату. Есть отбор по периоду переноса документов и фильтр по организации, доступен выбор даты ввода остатков. Если нужно переносить что-то дополнительно, то обычно бесплатно добавляем это в перенос . Смотрите видеодемонстрацию со звуком - советами по переносу и рекомендациями настройки программ.
29700 руб.
Просмотр и анализ структуры базы данных (отчет на СКД) 121
5 стартмани
24.07.2019 9090 96 YPermitin 25
С 2020 года сервис «Продление поддержки конфигурации 1С:УПП» подорожает вдвое Промо
Успейте продлить поддержку УПП до повышения цен! Фирма «1С» предупредила об изменении цен на сервис «Продление поддержки конфигурации "1С:Управление производственным предприятием"». С 1 января 2020 года сервис подорожает в два раза.
Переводим рутину ручного тестирования 1C на рельсы Jenkins-а и ADD 142
1 стартмани
03.06.2019 11927 1 ripreal1 86
Новогодние скидки на авторское ПО Промо
В преддверии праздника в Маркетплейсе на Инфостарт действует скидка на все платные авторские программы. Размер скидок начинается от 10%. Советуем не откладывать покупки, многие наши партнеры повышают цены на свои продукты именно в начале нового года.
Универсальный HTTP-сервис на платформе 1С, аля HTTP-сервер с примером 198
1 стартмани
13.05.2019 18564 95 Diversus 42
Перенос документов и справочников ERP 2 / КА 2 / УТ 11 => БП 3.0 Промо
Перенос позволяет настроить собственный обмен данными между указанными программами, альтернативный предлагаемому фирмой 1С. Предоставляем техподдержку по всем вопросам данного обмена. Можем подключиться к вам удаленно для разбора ситуаций. Оперативно обновляем при выходе новых релизов 1С. Бесплатные обновления в течение полугода.
19700 руб.
Расширение "Быстрая проверка кода" для конфигурации 1С:Автоматизированная проверка конфигураций 92
1 стартмани
26.03.2019 11076 42 Bazil 25
Перенос данных УПП 1.3 => ERP 2 (ЕРП) / УТ 11 / КА 2.х (обработка переноса документов, остатков и справочников из "1С:Управление производственным предприятием, ред. 1.3" в ERP / УТ 11 / КА 2). Обновлен до УПП 1.3.127.х, КА 2.4.10.х и ERP 2.4.10.х! Промо
Обработка позволяет переносить из УПП 1.3 в ERP 2 документы за выбранный период и остатки. Типовая обработка от фирмы 1С документы не переносит. Также исправлены ошибки типовой обработки. При выходе новых релизов обновление высылается бесплатно в течение года. Разработка будет полезна фирмам-франчайзи, которые периодически выполняют такой перенос данных для заказчиков. Вы можете один раз приобрести обработку переноса, и потом бесплатно получать обновления при выходе новых релизов конфигураций 1С.
29700 руб.
Методика оптимизации программного кода 1С: проведение документов 85
1 стартмани
19.03.2019 15650 14 dmitrydemenew 83
Перенос данных КА 1.1 => ERP 2 (ЕРП) (обработка переноса документов, остатков и справочной информации из "1С:Комплексная автоматизация, ред. 1.1" в "1С:ERP Управление предприятием, ред 2"). Обновлен до КА 1.1.115.х и ERP 2.4.10.х Промо
Обработка позволяет переносить из КА 1.1 в ERP 2 документы за выбранный период и остатки. Типовая обработка от фирмы 1С документы не переносит. Также исправлены ошибки типовой обработки. При выходе новых релизов обновление высылается бесплатно в течение года. Разработка будет полезна фирмам-франчайзи, которые периодически выполняют такой перенос данных для заказчиков. Вы можете один раз приобрести обработку переноса, и потом бесплатно получать обновления в случае выхода новых релизов конфигураций 1С.
29700 руб.
Подборка программ для взаимодействия с ЕГАИС Промо
ЕГАИС (Единая государственная автоматизированная информационная система) - автоматизированная система, предназначенная для государственного контроля за объёмом производства и оборота этилового спирта, алкогольной и спиртосодержащей продукции. Инфостарт рекомендует подборку проверенных решений для взаимодействия с системой.
Конструктор мобильного клиента Simple WMS Client: способ создать полноценный ТСД без мобильной разработки. Теперь новая версия - Simple UI (обновлено 14.11.2019) 178
5 стартмани
09.01.2019 25094 229 informa1555 189
Управление задачами в 1С - готовая подсистема с открытым кодом и широким базовым функционалом. Версия 1.0.6 97
2 стартмани
17.12.2018 11656 83 for_sale 38
Программы для исполнения 488-ФЗ: Маркировка товаров Промо
1 января 2019 года вступил в силу ФЗ от 25.12.2018 № 488-ФЗ о единой информационной системе маркировки товаров с использованием контрольных (идентификационных) знаков, который позволяет проследить движение товара от производителя до конечного потребителя. Инфостарт предлагает подборку программ, связанных с применением 488-ФЗ и маркировкой товаров.
Go. Разбор лога технологического журнала. Достойная альтернатива perl'у 85
1 стартмани
24.10.2018 12122 4 lazarenko 39
Новый раздел на Инфостарте - Electronic Software Distribution Промо
Инфостарт напоминает: на нашем сайте можно купить не только ПО, связанное с 1С. В нашем арсенале – ESD-лицензии на ПО от ведущих вендоров: Microsoft, Kaspersky, ESET, Dr.Web, Аскон и другие.
- Низкие цены, без скрытых платежей и наценок
- Оперативная отгрузка
- Возможность оплаты с личного счета (кешбек, обмен стартмани на рубли и т.п.)
- Покупки идут в накопления для получения скидочных карт лояльности Silver (5%) и Gold (10%)
Перенос данных КА 1.1 / УПП 1.3 => БП 3.0 (перенос остатков, документов и справочников из "1С:Комплексная автоматизация 1.1" / УПП 1.3 в "1С:Бухгалтерия 3.0"). Обновлен до версий КА 1.1.115.х, УПП 1.3.127.х! Промо
Разработка позволяет перенести остатки по всем счетам бух.учета в программу "1С:Бухгалтерия предприятия 8", ред. 3.0 на выбранную дату начала ведения учета. Также переносятся документы за период и вся необходимая справочная информация. Правила оперативно обновляю при выходе новых релизов. Рассылка обновлений правил бесплатно в течение 12 месяцев. Есть видеодемонстрация проведения переноса данных. Конфигурации при использовании обмена остаются полностью типовыми. Перенос данных возможен в Бухгалтерию 3.0 версии ПРОФ, КОРП или базовую.
24700 руб.
Очный семинар по регулярному менеджменту Александра Фридмана "Вы или Хаос", 12 декабря 2019 г. , Санкт-Петербург Промо
Семинар по регулярному менеджменту от Александра Фридмана для собственников, первых лиц и топов. Технология управленческого планирования, комплексного управления временем и другими ресурсами, выполнением поручений, делами, информацией, контактами (встречи-звонки-почта).
от 11000 до 29000 рублей
Позиционирование в помещении с помощью нейросети по сигналу Wi-Fi. Интерактивная карта склада в 1С с показом позиции 65
5 стартмани
09.08.2018 17438 23 informa1555 26
Готовые переносы данных из различных конфигураций 1C Промо
Рекомендуем готовые решения для переноса данных из различных конфигураций 1C. C техподдержкой от разработчиков и гарантией от Инфостарт.