Назначение разработки - упростить доступ к информации, которая находится в ИБ 1С. Сделать простой, дружелюбный интерфейс при этом использовать все мощные инструменты платформы (запросы, СКД), предоставить расширенные возможности по анализу данных, используя сторонние компоненты на базе html/javascript.
Сервер управленческих отчетов (СУО) - это внешние приложение (web сервер), в котором есть два раздела административный и пользовательский. В административном разделе настраивается список информационных баз и отчетов. В настройках отчета указывается тип, возможные варианты:
- на базе текста запроса,
- системы компоновки данных (указывается схема и настройка в формате xml)
- на базе универсального отчета (для УТ 10)
- произвольный тип.
С отчетами с типом 1 и 2 все предельно просто – в 1С в своей любимой консоли запросов/компановки данных конструируем и отлаживаем отчет, копируем текст запроса/СКД и подставляем это в СУО. Вот и все, отчет готов для всеобщего обозрения! Схема работы: 1С получает текст запроса/СКД выполняет его, сохраняет результат в файл формата html и отдает СУО. Так как на выходе получается html файл не ждите, что у вас сохранится функционал со сворачиванием групп. Если вы без этого никак, то отчеты с произвольным типом, смогут вам помочь.
Для произвольного типа отчета, кроме запроса, необходимо создать два файла - клиентское представление страницы (index.html) и скрипт для сервера (module.js), который будет отдавать данные. Тут можно воспользоваться всей мощью html/javascript. Необходимо отметить, что мир веб разработки стремительно развивается - новые фреймворки появляются как грибы после дождя, а JavaScript перерос из языка который использовался на стороне клиента, в серверный вариант - Node.js. Все что, Вы здесь видите и демо-сайт на Linux и исполняемый файл на Windows все разработано на Ноде. Причем используется один и тот же код. Один язык программирования и для клиента и для сервера, для создания десктопных приложений и для веб разработки, в общем Node.js такой же крутой как 1С! ;)
Согласен, что каждый инструмент предназначен для определенного круга задач. Но в данной разработке JS это то, что, нужно и заставим его поработать на нас! Первое, что можно сделать, это вывести все возможные списки и справочники, которые могут понадобится в нелегком управленческом труде. Причем это сделать красиво и функционально, не хуже, чем в 1С. Чтобы не изобретать велосипед, возьмём готовую компоненту в которой уже есть весь необходимый функционал: сортировка, поиск, группировки и т.д. В html странице мы просто декларативно описываем: название столбца, ширину, необходимость поиска и т.п.
title: 'Товары',
gridOptions: {
enableFiltering: true,
columnDefs: [
{ name: 'name', displayName: 'Товар', width: '30%' },
{ name: 'grup', displayName: 'Товарная группа', width: '350', enableFiltering: false, grouping: { groupPriority: 0 }, sort: { priority: 0, direction: 'asc' } },
и т.д...
Еще понадобится код на стороне СУО, чтобы отдавать данные:
var db = new sqlite3.Database(par.pathReport + 'data.db', sqlite3.OPEN_READONLY);
function getData(numTable, fn) {
var qSQL = 'SELECT * FROM Tab'+ numTable;
var res = [];
db.each(qSQL,
function (err, row) {
res.push(row);
},
function () {fn(res)});
}
Не так уж и сложно, что бы создать свой шедевр не правда ли?
Графики и диаграммы - это то, что позволяет представить цифры в визуальную информацию и это то, что любят аналитики. Да, безусловно, в 1С это дело тоже присутствует, но когда увидишь другие решения, то хочется большего. Существует множество готовых библиотек для построения диаграмм и схем: D3.js, Google Charts, Highcharts и др., хороший обзор по этой теме здесь.
Отчеты с графиками можно создавать традиционно - один запрос, один набор данных, один статический график.
Мне же представляется интересным другой вариант. Вот рецепт отчета по продажам, который доступен по ссылке выше. Делаем срез данных (запрос) за достаточно большой промежуток времени и сохраняем (это делает обработка на стороне 1С, используется sqlite). Выгружаются данные по продажам с детализацией по дате, товарной группе, подразделению (филиалу), сумме реализации, себестоимости и прибыли. Создаем три связных графика: продажи, сгруппированные по дням, по подразделениям и по товарным группам. Таким образом мы видим итоговые цифры по продажам, а также, информацию из чего эти цифры сложились. Легким движением руки мы можем быстро менять период и анализировать данные за любой произвольный период хозяйственной деятельности предприятия. Отчет построен на базе Highcharts - библиотека для графиков с множеством плюшек, например, масштабирование, автогруппировки (при увеличении периода меняется группировка дни/недели/месяц) и др. На Инфостаре есть разработки, с примером использованием этой компонеты, например: здесь или здесь. Если вам по каким-то причинам не пришлась по душе эта компонента, воспользуйтесь amCharts, тоже рекомендую, пример здесь и здесь. Поробуйте и Вы поймете, что создать свой график не так уж и сложно!
Профиты:
- Возможность создавать мощные аналитические отчеты;
- Удобный доступ к нужному отчету: аналитик может даже и не подозревать, какая учетая система используется;
- Быстрая публикация отчета: при наличии готового запроса, схемы СКД размещение займет несколько минут;
- Простая установка: не требуется поднимать web сервер (IIS, Apache), настраивать web сервисы, вносить изменения в конфигурацию, необходимо только открыть обработку в 1С;
- Работа с любыми платформами V8: обычные/ управляемые формы, файловый /клиент-серверный формат базы 1С;
- Неограниченный доступ к отчетам с различных устройств: ПК/Планшет и ОС внутри предприятия;
- Автономность и переносимость: если по каким-то причинам 1С недоступна (обновления и т.п.) СУО всегда в строю, можно скопировать папку с программой и запустить на любом компьютере;
- Снижение нагрузки на базу данных: первоначально мгновенно отобразится последний сформированный отчет, если он актуальный нет необходимости его обновлять;
- Оптимизация использования лицензий: на одном сеансе 1С могут подключаться большое количество пользователей;
- Открытый код, возможность дорабатывать программу под свои нужды.
Варианты развития:
- Работа с нескольким информационными базами
- Доступ к базам через com-подключение
- Создание клиентской программы, для off-line работы пользователя с отчетами (возможна работа без подключения к серверу, например на ноутбуке в командировке и т.п.)
- Планируется дальнейшая развитие СОУ, сама программа(платформа) со всем функционалом будет бесплатной, а готовые подключаемые отчеты (дашборды) на платной основе. Можно разработать комплексные дашборды по направлениям – продажи, затраты и денежные потоки и т.п. Вот возможный источник для будущего вдохновения http://eu-b.demo.qlik.com (там выберите раздел Retail and Service). Если у Вас есть интерес поучаствовать в проекте, дайте мне об этом знать, буду делиться наработками.
Запрограммировано на JavaScript, Node.js.
Тестировалось на Windows: 7, 8, Server 2003, 2008
Браузеры: Chrome и Internet Explorer свежих версий, возможно будет работать и в других.
Примеры отчетов разрабатывались для УТ 11
Итоги
Итак, мы имеем внутри предприятия web сервер, который позволяет расшарить информацию из 1С. Эту информацию мы можем представить в красивом и функциональном виде для того чтобы пользователи не испытывали боль, разочарование и унижение от использования компьютерных программ. Не сомневаюсь, что вы получите благодарность от директора. Плюс если вы решитесь создать свой отчет с произвольным типом, то это прокачает ваши скилы как web разработчика со знанием JavaScript/html.
Подобные разработки:
Запросница 1С. Получить результат запроса в web таблицу: //infostart.ru/public/167093/
Доступ к информации вне 1С используя OneScript //infostart.ru/public/389679/