Меня зовут Вячеслав Голев, я руководитель отдела разработки 1С в компании Делимобиль. Хочу рассказать о том:
-
как 1С:Аналитика появилась в нашей компании;
-
какие проблемы она решает;
-
какие проблемы она не решает – к сожалению, она все решить не может;
-
с какими трудностями мы столкнулись;
-
и как мы эти трудности преодолевали.
Компания Делимобиль – это каршеринг №1 по количеству автомобилей в мире. На текущий момент их около 20 тысяч.
Компанию можно разделить на два больших участка.
-
Первый участок – это продукт, приложение по взаимодействию с автомобилем, закрытию и открытию поездки, которое стоит у вас на телефонах.
-
И второй большой блок – это система для учета ремонтов и обслуживания.
Первый блок работает не на 1С, потому что 1С – не про Highload. Но второй блок в основном работает на 1С:Предприятие – там целая сеть систем, связанных друг с другом.
Весь мой дальнейший рассказ пойдет об одной из систем 1С – системе обслуживания автопарка. Это заправки, ремонты, мойки и все-все-все, что позволяет вам пользоваться хорошими автомобилями.
-
На текущий момент в этой системе генерируется 50 тысяч документов в месяц. Много это или мало, но, я думаю, каждый сам смасштабирует под себя.
-
Размер базы 150 ГБ – это размер ужатых таблиц в Microsoft SQL. Но у нас планируется переезд на PostgreSQL, там будет все совсем по-другому.
-
Самая большая таблица – 210 миллионов строк. Уже 216 – она растет просто огромными темпами. Это таблица, которая получает информацию с телематики автомобилей – местоположение, полигоны, состояние и прочее. К сожалению, это наша боль, и от нее избавиться пока никуда нельзя – приходится с ней работать.
Все эти цифры я привел для масштабов, чтобы вы могли понимать, как те или иные проблемы, которые возникли у нас, могут проявиться у вас. И как их преодолевать.
Аналитический ландшафт компании. Долгая цепочка изменений структуры отчетов для Power BI
До 2022 года схема анализа данных в нашей компании была такой, как изображена на слайде.
Бизнес-аналитики – это ребята, которые:
-
Классно понимают цифры.
-
Могут преобразовывать цифры в буквы и слова, понятные топ-менеджменту или акционерам.
-
Видят шероховатости бизнес-процессов.
-
Видят, где мы проседаем, и что с этим можно сделать.
-
Но, к сожалению, эти ребята плохо умеют в SQL – они не знают запросов и, в общем-то, им это не нужно. Они именно бизнес-аналитики. Они работают с бизнес-данными и предоставляют их для потребителей.
Дальше в схеме у нас есть Power BI и аналитики BI:
-
Эти аналитики уже умеют в SQL.
-
Понимают, какая структура таблиц в DWH.
-
Знают, куда нужно писать запрос.
-
И какую информацию нужно предоставлять бизнес-аналитикам.
Дальше идет команда инженеров DWH – это самое узкое горлышко. Мы используем DWH на базе Vertica, и туда сыпется информация из всех учетных систем и из самого продукта. Любое изменение через DWH проходит очень медленно, потому что эти ребята контролируют, что у Vertica созданы все нужные таблицы и прочее-прочее-прочее.
И в конце этой цепочки стоят разработчики 1С – это мы. Мы создаем либо сервисы, из которых DWH у нас что-то затягивает. Либо мы пушим что-то в DWH – тут вариативно.
В целом цепочка получается очень длинная, и с этим связано много проблем, потому что инженеры и 1С-ники работают спринтами – две недели у нас, две недели у них. Спринты не совпадают, и могут быть пересечения, когда приходится долго ждать.
Например, когда бизнес-аналитик требует добавить новое поле, мы его добавляем, выпускаем релиз через две недели, но инженеры DWH говорят: «У нас сейчас места в спринте нет – подождите еще один спринт».
В итоге добавление всего лишь одного поля занимает месяц-полтора. А если там еще ошибка произошла, то все затягивается еще больше.
А потом еще нужно перевыгрузить все прошлые периоды – 210 миллионов строк. И когда DWH начинает все это выгружать, служба эксплуатации возмущается: «Что вы с нашим сервером сделали?»
И у нас появилась идея, а точнее потребность заменить всю эту большую цепочку на короткую.
Отчасти эта задача была решена за счет Excel. Но мы все понимаем, что Excel может обрабатывать максимум миллион с лишним строк. А дальше ничего не сделать – приходилось разбивать данные на кусочки по периодам, и потом собирать это все воедино. Это долго. А если там еще и формулы подтянутся, это потом нужно перевыгрузить, формулы сломаются – долго.
Появилась идея найти какое-то решение, которое убирает у нас зависимость от всех этих нужных людей, и помогает максимально быстро закрыть бизнес-потребность.
В 2021 году мы повертели головой, нашли хорошую презентацию 1С:Аналитики, и решили – а почему бы и нет? Все лицензии у нас есть, все подходит.
Закупили 10 лицензий на пробу и решили попробовать, чтобы избавиться от длинной цепочки с Power BI.
1С:Аналитика. Краткий обзор
Схема на слайде взята с сайта 1С и показывает, какое место занимает продукт 1С:Аналитика в архитектуре системы 1С.
1С:Аналитика – это отдельное решение, которое:
-
разворачивается независимо от 1С;
-
публикуется на веб-сервере – там же, где у вас опубликована 1С или крутятся все ваши веб-сервисы 1С;
-
и взаимодействует с базой данных 1С напрямую;
-
также есть возможность взаимодействовать не с самой базой данных, а с ее копией, которую вы создали инструментом, встроенным в 1С:Предприятие.
А поскольку это просто отдельное решение, оно позволит нам убрать «лишних людей» в цепочке.
Вот так в 1С:Аналитике выглядит работа с таблицей.
В целом вот самое близкое объяснение 1С:Аналитики – это сводные таблицы Excel. Для бизнес-аналитиков сводные таблицы Excel – это их рабочее место. Они пришли, открыли свои многотонные файлы и начали в них работать – двигать туда-сюда колонки, строчки, накладывать фильтры, добавлять кастомные поля.
В 1С:Аналитике основная работа бизнес-аналитиков выглядит точно так же. У нас есть таблица. Сверху ее фильтры, измерения и показатели (ресурсы, если в терминах СКД говорить). Всё на одном экране.
В целом 1С:Аналитика для бизнес-аналитика понятнее, нежели СКД. СКД сделано не для людей – для 1С-аналитиков, программистов, может быть, но не для бизнес-аналитиков.
Слева у нас список всех полей, которые представляются источником данных – мы их получили из 1С.
Колоссальное преимущество 1С:Аналитики перед тем же Power BI – в том, что слева мы имеем не только реквизиты этого источника, но и реквизиты реквизитов по вложенности – 1С:Аналитика получает целиком все таблицы метаданных вашей базы данных. И вы можете вытаскивать себе в сводную таблицу любой реквизит из вашего источника.
Вам не нужно ничего дополнительно выгружать. Если у вас бизнес-аналитик решил посмотреть группировку по автомобилю, а потом решил провалиться и из автомобиля вытащить модель – пожалуйста, это делается прямо здесь. Вам, как разработчику или службе эксплуатации, ничего делать не нужно – все это работает напрямую из коробки.
Также есть набор функций, с помощью которых бизнес-аналитик может создавать кастомные поля.
Набор функций, конечно, не такой, как в Excel, но он позволяет покрыть большинство потребностей: СУММА, КОЛ (количество), РКОЛ (количество различных), ПРОЦЕНТ (доля в вышестоящей группировке) и прочее. Основные потребности бизнес-анализа этот набор функций покрывает.
Также можно создавать поля в зависимости от значений реквизитов, чтобы проверять какие-то гипотезы – это непосредственно та работа, которую делает бизнес-аналитик ежедневно. Он проверяет свои гипотезы и предлагает решения.
То, о чем я сейчас рассказывал, мы увидели в презентации 1С:Аналитики. Мы на все это посмотрели и решили: окей, подходит, берем.
Мы у себя это все развернули и решили, что копии и все эти Дата акселераторы нам не нужны. Зачем? Мы будем долбиться в базу напрямую и оттуда получать всю необходимую информацию.
Все поставили очень просто – через Далее-Далее-Далее. Никаких сложностей здесь не было. Все поставили, все заработало.
Запрос к отдельному регистру кэша вместо временных таблиц
Но возник нюанс: наш основной отчет, который собирает все косты компании, небольшой – там около трех тысяч строк в запросе, но куча временных таблиц, само собой.
И мы столкнулись с ограничениями – 1С:Аналитика в источнике не может использовать временные таблицы. Это просто ограничение 1С:Аналитики.
Таким образом, сам отчет мы через Ctrl+C, Ctrl+V перенести в 1С:Аналитику не можем. Мы решили его данные кэшировать – сохранять их на каждый день, чтобы не генерировать каждый раз эту информацию в рантайме, потому что таблиц много.
Конечно, можно было эти временные таблицы во вложенные запросы переделать, но это monkey job, поэтому мы решили, что так будет лучше.
В итоге у нас появилось несколько регистров, которые попросту хранят в себе информацию на каждый период.
В качестве основного разреза регистра используется период – день. Но нас в этом никто не ограничивает и вас тоже – как сделаете, так сделаете.
Таким образом, мы перенесли всю информацию в один регистр, который у нас стал основным источником данных. Точнее, источников данных было два:
-
один – регистр накопления, который хранил обороты;
-
а второй – регистр сведений.
Недокументированное ограничение по таймауту
Мы развернули 1С:Аналитику, собрали регистр с данными, дали это все бизнес-аналитикам, они довольны – у них все работает. У них отчет за полгода вместо 5 минут формируется секунд 40. При том, что раньше они в Excel этот пример вообще не могли собрать никак.
Но в один прекрасный момент мы столкнулись вот с этим: «Ошибка обращения к серверу. Превышено время ожидания запроса».
Что это значит? Непонятно. Документацию почитали – ничего нет.
Решили найти причину проблемы в запросе. Нашли такое поле – это бизнес-аналитик поработал, поискал по LIKE. Ему так надо. В принципе, запрещать нельзя – это его работа. Ему нужно отобрать номенклатуру с таким наименованием, он хочет ее таким образом отделить и проверить свою гипотезу. Ну да, окей.
Стали искать, почему ошибка обращения к серверу.
Искали настройки нашего веб-сервера – там никаких тайм-аутов нет.
Искали настройки 1С, СУБД – всё нормально, должно работать. Да, долго, но подождать-то можно. Аналитика, подожди, и тебе будет результат. Нет, не будет.
В конце концов, мы нашли рабочие папки самой 1С:Аналитики. К счастью, она ведёт логи. И в логах нашли вот такую штуку.
Здесь показана ошибка запроса, указан сам запрос, его ID-шник и timeout=240.
Почему 240? Не знаю. Начали рыть конфиги уже самой 1С:Аналитики – это же 1С:Аналитика ограничивает. Нигде ничего со значением 240 нет.
Мы сдались, написали в «1С», нам ответили: «Да, 240. Живите с этим. Вы ничего с этим не сделаете». Мы просим: «Но у нас данных много, нам надо. Пожалуйста!» – «Нет, не надо. Мы вообще писали 1С:Аналитику для Дата акселератора. Используйте Дата акселератор» – «Ну спасибо, написали бы где-нибудь…»
На основании этого можно сделать вывод: если у вас много данных, готовьтесь к Дата акселератору, без него у вас работать не получится – 1С:Аналитика ничего не выдаст.
Более того, эта плашка с ошибкой – нам повезло ее поймать. Мы сначала просто не понимали, в чем проблема. У нас просто прогресс-бар крутился бесконечно, и все. Аналитик запустил, пошел, чай попил, вернулся, плашка уже пропала. Там есть центр оповещений – там пусто. Мы эту плашку случайно поймали, и после этого начали рыть.
Поэтому имейте в виду: если долго крутится прогресс-бар, значит, у вас все вывалилось по таймауту. Либо логи смотрите – других вариантов нет.
Кстати, небольшое отвлечение: ответы на вопросы в «1С» дают очень быстро. Аналитики РСБУ у нас уже просто бесятся, что им отвечают неделями. Нам отвечают в течение дня. Поэтому не стесняйтесь писать. Ребята тоже заинтересованы в продвижении продукта. Я думаю, всем будет лучше от того, что вы им напишете. Тем более, что все однозначные ошибки они довольно оперативно исправляют.
Плюсы и минусы использования Дата акселератора в сравнении с прямым запросом в базу
Окей – раз нужно, будем разворачивать Дата акселератор.
Дата акселератор – это in-memory база данных (база данных в оперативной памяти), куда загружаются данные, которые вам нужны.
Вы галочками выбираете нужные метаданные, и их таблицы выгружаются целиком, вы не можете там ограничить период. Если таблицы большие, выгружаются долго. У нас инициация этих двух табличек заняла где-то часов шесть. Плюс выгружаются все справочники и документы, которые в измерениях этих таблиц используются. После чего 1С:Аналитика может подключиться к Дата акселератору.
В 1С:Аналитике вы управляете подключением к Дата акселератору – если вас сейчас актуальность данных Дата акселератора не устраивает, можете снять галочку. Тогда 1С:Аналитика будет брать данные напрямую в СУБД – если таймаут не поймаете, получите актуальную информацию.
Если же вас устраивает вчерашняя актуальность, используйте Дата акселератор. И у вас там внизу в статус-баре в браузере пишется, что вы подключились именно к конкретному Дату акселератору.
Точно так же и СКД, когда подключается к копии базы данных, она там пишет дату актуальности и имя копии. Здесь то же самое – только в статус-баре.
Мы договорились с бизнес-аналитиками, что лаг в одни сутки их сейчас устроит. По ночам эти кэши у нас заполняются, ночью довыгружаются в Дата акселератор, и утром у них все есть.
Теперь о нюансах Дата акселератора.
Дата акселератор мы развернули весной – слева показан пример загрузки оперативной памяти, как оно работало весной. А справа – то, как работает сейчас. Сейчас оно работает не так.
Раньше dbda – процесс Дата акселератора – жрал память как ни в себя. Ел все, что было – выедал весь файл подкачки, а потом падал.
У нас была машина на 32 ГБ оперативной памяти. На ней с 1С:Аналитикой одновременно работало до трех человек. Он просто выедал весь файл подкачки и падал. Потом вставал, очищался и требовал заливать в него все заново – еще шесть часов.
Потом мы виртуалку с 32 ГБ увеличили до 128. Плюс увеличили файл подкачки. Падать перестало. Ему стало хватать. В общем, тут жалеть было нельзя.
Но летом с 1С:Аналитикой что-то произошло, и поведение стало таким, как справа. Он теперь ест ЦПУ – прямо по полной его эксплуатирует. Но память при этом особо не растет.
Это именно работа 1С:Аналитики, потому что платформа осталась та же самая – 8.3.21. А работать стало гораздо лучше. Возможно, чуть-чуть медленнее – при работе с Дата акселератором разница в полсекунды. Но для бизнеса это абсолютно не критично.
Теперь он стал потреблять процессор, но при этом перестал падать в течение дня. Это самое важное. У нас теперь нет необходимости каждый день поднимать эту копию в течение дня, если он падает.
Мы обратно убрали оперативку – пока работает на 32 ГБ.
Дальше мы планируем туда добавлять пользователей из топ-менеджмента. И использовать 1С:Аналитику вместо Power BI, когда он кончится.
Когда у нас происходили падения, мы решили, что нужно ограничить период, за который получается информация, на уровне источника.
Т.е. изначально мы передавали в Дата акселератор всю таблицу, а обращались к ней, накладывая фильтр по периоду. Он брал всю эту таблицу, накладывал период и одновременно с этим накладывал все творчество, который бизнес-аналитик там наделал – с LIKE и прочее. Это потребляло память – хотя анализировался небольшой период в месяц. При том, что этот пользователь всегда работает с месяцем.
Мы решили делать отдельный источник данных, который будет усекаться фильтром на момент запроса. Мы взяли первую таблицу кэша и сджойнились с регистром, чтобы ограничить период предыдущим месяцем. Т.е. он сначала ограничивает источник по периоду, а потом на получившиеся данные накладывает все творчество.
Это очень хорошо позволило нам сэкономить – и ресурс, и время, и нервы службы эксплуатации, когда все падает, и получить информацию, которая бизнес-аналитика устраивает.
Таким образом, мы сделали четыре источника: месяц, квартал, полугодие, год, и вся таблица. Аналитиков это устраивает.
Единственный минус всего этого – кастомные поля, которые при создании сохраняются в разрезе источника. И вам при переключении на другой источник нужно будет один раз сделать Ctrl-C, Ctrl-V по кастомным полям. Это просто нужно учитывать в работе, что если резко переключаешься на другой источник, там кастомных полей не будет.
Это то, что касалось технологической части.
Сейчас все работает стабильно. Есть небольшие шероховатости, нюансы, но я думаю, они есть везде в 1С – любой организм, бывает, глючит.
Особенности UI в 1С:Аналитике
Теперь перейдем к грустной части моего рассказа. Это юзер-интерфейс. Даже не юзер-интерфейс, наверное, а возможности графического представления в 1С:Аналитике – мы же все-таки Power BI заменяем.
Здесь, к сожалению, грусть.
На скриншоте – отчет в Power BI. Здесь в целом все понятно. Для разных уровней иерархии свое оформление. Можно курсив сделать. Все в корпоративных цветах – у нас есть определенные правила в компании. Видно ограничение колонок. Можно вставлять в презентацию.
Вот так эта таблица максимально приближена в 1С:Аналитике. Ничего больше я сделать не смог. Никак. Шапка подсвечена – это все.
Я могу подсветить шапке измерения – разрезы, но не могу подсветить показатели – ресурсы.
Никаких разделений или групп колонок я тоже сделать не могу.
Здесь сейчас наведена мышка на какой-то показатель – да, подсвечены колонки. Для операционной работы это нормально. Но в презентацию эту таблицу вставить нельзя. Глаз не цепляется – невозможно ответить на вопрос, сколько Contractor 1 нам стоил.
Мы решили попробовать строить диаграммы.
-
Слева диаграмма, нарисованная в Excel. Здесь цифры и данные видно сразу.
-
Справа та же самая диаграмма в 1С:Аналитике – даже колонки я подобрал, чтобы они были одинаковые по ширине. Цифр не видно абсолютно, они прижаты кверху. Пользователь 1С:Аналитики не управляет положением этих цифр. Не управляет размером их шрифта. Такое тоже на слайд не добавить.
На этом мы сдались.
К счастью, из сводных таблиц 1С:Аналитики можно выгружать данные в CSV-файл.
Поэтому сейчас у нас бизнес-аналитик что-то проверяет, формирует табличку, выгружает ее в CSV, открывает в LibreOffice / Microsoft Office и рисует диаграмму.
Да, классно. Но, к счастью, я понимаю, почему так происходит. Я понимаю, что разработчики сделали упор на надежность решения, чтобы оно хотя бы не падало и работало. И уже им за это спасибо.
В этой схеме, в этой цепи мы больше не идем по правому пути. Да, 1С:Аналитика может быть в чем-то неудобна с точки зрения бизнес-аналитика, но она офигенно классная с точки зрения бизнеса.
Мы экономим прорву времени, и бизнес-аналитики получают информацию гораздо быстрее – практически сразу же, как только у них появится какое-то желание, какая-то гипотеза, которую они могут проверить.
Теперь у нас получается, что новое поле появляется в 1С:Аналитике само. Мы ничего не делаем.
Если мы добавляем какое-то поле, и оно у нас кэшируется – например, это реквизит или допразрез из какого-нибудь регистра – оно уже там появляется.
Дальше бизнес-аналитик с этим работает, проверяет гипотезы, говорит: «Да, кайф, беру!» Выгружает это в CSV и уже в LibreOffice рисует диаграммы.
На текущий момент это используется именно так.
Дальше будет развитие – они сейчас добавляют в 1С:Аналитике гистограммы, географическую схему и прочее. Оно будет развиваться, но пока, к сожалению, есть нюансы. В частности, по агрегированию данных. Но сейчас речь не об этом.
Преодолевая трудности…
Подводя итоги, что я могу сказать:
-
Кэшируйте данные. Скорее всего, у вас не получится отдать бизнес-аналитику информацию из ваших отчетов 1С напрямую. Отчеты у вас наверняка не самые простые, используют какую-то логику. И добавить их запросы «как есть» в источник данных вы не сможете. Либо придется потратить кучу времени на рефакторинг, чтобы это были вложенные запросы. В любом случае, вы туда даже параметры не передадите. В СКД параметры запросов есть, а в 1С:Аналитике – нет.
-
Используйте Дата акселератор. Пока не попробуете, не поймете. Я тоже очень скептически относился, потому что под него нужна отдельная виртуальная машина, отдельное ресурсное админство, контролировать нагрузку, выводить ее в Grafana, смотреть, что он падает, и прочее. Но оно того стоит. Вы после этого не захотите возвращаться на прямые запросы к СУБД в принципе. Даже несмотря на все проблемы с этим Дата акселератором и его падениями, используйте его. Попробуйте хотя бы. Первая доза – бесплатно, а потом вы останетесь на нем.
-
Ограничивайте источники данных. Если бы эта идея пришла к нам сразу же, возможно, мы бы и Дата акселератор не стали использовать. Мы бы просто ограничили запрос изначально, а СУБД нам потом все это творчество вывезла бы за 240 секунд – мы бы получили информацию. Но мы к этому пришли позже, поэтому сейчас используем даже с Дата акселератором. Так мы экономим ресурс сервера.
-
И используйте дополнительное ПО – это неизбежное зло. Выгружайте в CSV, рисуйте диаграммы и красивые графики в каком-то другом ПО. Здесь рисовать тоже можно, но пока будет некрасиво – даже цветовые схемы иногда слетают по непонятным причинам.
*************
Статья написана по итогам доклада (видео), прочитанного на конференции Infostart Event.