Загребельный Александр

616
Рейтинг

hobi
Александр Загребельный



  •   Регистрация: 30.05.2010 (13 лет назад)

  •   Был(а) на сайте: 11.04.2024

Друзья
  • Сергей Космачев
  • Максим Бычков
  • Boris Solverus
  • Дмитрий Малышев
  • Евгений Комиссаров
  • d f
  • Hoh Hehov
  • Андрей Волин
Подписчики 17

Группы

Профессиональный разработчик

Рейтинг 616

«Варп-двигатель» для «среза последних»

Статья Программист Бесплатно (free) Нет файла Запросы

Решение, позволяющее получить данные, аналогичные "срезу последних" на два порядка быстрее.

10.08.2020    5401    hobi    52       

28

Отладка запросов ЕГАИС

Инструменты и обработки Программист Платформа 1С v8.3 Конфигурации 1cv8 Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика ИТ-компания Абонемент ($m) Внешняя обработка (ert,epf) Внешние источники данных Обмен с ГосИС

Обработка для работы на низком уровне универсальным транспортным модулем (УТМ) ЕГАИС. Имеет возможности, аналогичные утилите CURL, но позволяет быстро выполнять интерактивные команды для работы с данными УТМ.

1 стартмани

27.05.2019    5136    7    hobi    9       

8

hsИнтегратор 3. Онлайновый обмен и удаленное исполнение функций по HTTP протоколу

Инструменты и обработки Системный администратор Программист Платформа 1С v8.3 Абонемент ($m) Архив с данными Перенос данных 1C

Кроссплатформенный онлайновый обмен данными и удаленное исполнение функций по протоколу HTTP. Новая функциональность - обмен элементами плана видов расчета и данными расчетных регистров. Увеличение производительности и упрощение пользовательского API. Тестирование обменов выполнялось с демонстрационными базами: "Бухгалтерия предприятия, редакция 3.0 3.0.72.66" и "Зарплата и Управление Персоналом, редакция 3 3.1.10.135"

1 стартмани

19.05.2019    16226    61    hobi    10       

32

hsИнтегратор - технология онлайнового обмена данными между базами на платформе 1С:Предприятие. Использование технологии в виде расширения, без изменения конфигураций баз данных, участвующих в обмене

Статья Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Бесплатно (free) Нет файла Перенос данных 1C

hsИнтегратор : Простое в использовании решение, работает в качестве клиента и сервиса (в мобильном приложении – только клиента). Не обязательно требует внесения изменений в конфигурации интегрируемых баз данных. Маленький трафик обмена между клиентом и сервером, быстрая реакция на запросы со стороны клиента. Единый сервис для обмена данными различной структуры, механизмы для обеспечения безопасности.

25.06.2018    13703    12    hobi    8       

38

Виртуальные глобальные контейнеры переменных

Инструменты и обработки Программист Платформа 1С v8.3 Абонемент ($m) Конфигурация (md, cf) Инструментарий разработчика

Концепция и реализация механизма виртуальных контейнеров глобальных переменных. Виртуальные контейнеры могут содержать переменные различных типов (ссылки, данные, таблицы значений и др.). Добавлять, изменять и считывать данные можно из клиентских (только примитивные типы) и серверных процедур. Возможно использование нескольких контейнеров и групповое удаление переменных. Механизм работает в толстом, тонком клиенте на платформе 1С 8.2 и выше.

1 стартмани

08.04.2017    9517    hobi    0       

5

Доработка механизма версионирования объектов

Инструменты и обработки Системный администратор Программист Платформа 1С v8.3 Конфигурации 1cv8 Windows Абонемент ($m) Архив с данными Инструменты администратора БД

Пара небольших доработок: 1. Исправлена ошибка построения отчета по версиям объектов для случая, когда реквизиты имеют составной тип. 2. Доработан механизм сохранения версий - при записи неизмененных объектов новые версии не создаются.

1 стартмани

09.05.2015    11176    11    hobi    9       

9

Доработка отчета "Структура подчиненности"

Отчеты и формы Программист Платформа 1С v8.3 Конфигурации 1cv8 Windows Абонемент ($m) Архив с данными Анализ учета

Расширение типового поведения отчета. Небольшая доработка позволяет сразу построить дерево документов "от корня", при этом текущий документ также остаётся выделен жирным шрифтом.

1 стартмани

23.03.2015    21566    37    hobi    12       

19

Инструменты для ведения проектов версия 1.3.1

Отчеты и формы Системный администратор Программист Платформа 1С v8.3 Россия Абонемент ($m) Внешняя обработка (ert,epf) Управление проектом (PMO, EPM)

Интеграция 1С и интеллектуальных карт. Внешняя обработка экспортирует структуру конфигурации в набор связанных файлов в формате XMind.

1 стартмани

30.06.2013    34036    251    hobi    49       

136

Комментарии

Dev«Варп-двигатель» для «среза последних»#51 28.04.23 9:35
(50) оконные функции в ClickHouse появились уже позже публикации.
Срез последних с помощью оконных функций будет эффективнее агрегации и соединения таблиц.
Так что да, оконные функции предпочтительнее для такой задачи.
Еще проще использовать конструкцию LIMIT BY (тоже появилась позже):

SEL ECT * FR OM <таблица>
ORDER BY
измерение1, измерение2,...,измерениеN, dat DESC
LIMIT 1 BY измерение1, измерение2,...,измерениеN

https://clickhouse.com/docs/en/sql-reference/statements/select/limit-by#examples

Пример работающего запроса:
Цитата
SEL ECT
dat,
magaz,
tovar,
kol
FR OM work.itz
WHERE // отбор в диапазоне магазинов
magaz BETWEEN 10000 AND 11000
ORDER BY
tovar, magaz, dat DESC
LIMIT 1 BY tovar, magaz
SETTINGS
max_memory_usage=40000000000

Если исходная таблица очень большая, "срез" можно получать частями, в диапазоне какого-либо измерения,
иначе возможна нехватка памяти для выполнения запроса.
А результат можно "накопить" в цикле в другой таблице.
DevИспользование функций внешнего отчета в вычисляемых полях системы компоновки данных. Добавлена поддержка расшифровки.#20 25.08.22 15:31
(19)
В архивном файле готовый пример. 10 лет назад публикацию разместил, всех подробностей не вспомню уже.
ОбменОтладка запросов ЕГАИС#9 08.07.22 16:07
(8) Добрый день.
Запрос уходит по адресу компьютера, на котором развёрнут УТМ.
На рисунке в публикации этот адрес "замазан", он индивидуальный для каждой организации, так же как и ФСРАР.
Обычно отладка запросов выполняется на тестовом контуре УТМ, т.е. нужно указывать адрес компьютера,
на котором установлен УТМ для тестов, чтобы не исказить рабочие данные.

Адреса ресурсов для конкретных запросов можно посмотреть в документации к УТМ
(например: /info/version , /opt/out/total и т.д.). Необходимые адреса можно добавлять в таблицу.
DevИнтересная задача на Yandex cup 2021#51 14.10.21 20:34
(48)
Быстродействие алгоритма можно оценить по прототипу в онлайне:
http://www.michurin.net/online-tools/life-game.html
готовый код игры на JS:
https://github.com/pmav/game-of-life/tree/master/assets/js

Для решения задачи выхода из лабиринта нужно (кроме инициализации матрицы и наложения результатов
на матрицу с лабиринтом) изменить правила "Жизни":
оставить только "смерть" и добавить правило смерти:
"рядом с точками старта и выхода не умирают".

Мы не ищем легких путей. Ждем когда трудные сами сдохнут.
DevИнтересная задача на Yandex cup 2021#48 14.10.21 14:01
Алгоритм поиска пути выхода из лабиринта (своебразный вариант игры "Life"):

Делаем матрицу размером количество ячеек + количество перегородок.
Первоначально заполняем матрицу - если там перегородка, значение 0,
если ячейка - значение 1.
Потом сканируем матрицу построчно/поколоночно.
Если рядом со сканируемой ячейкой есть хотя бы две со значением 1
или одна из них - это ячейка выхода или центральная, то сканируемая ячейка
"жива", если нет - умирает.

Через некоторое количество сканирований останется только решение с путем
выхода из лабиринта. Конец итераций - когда количество "смертей"
в итерации равно нулю.

Несколько раз просканировать матрицу и все "неправильные" пути сами умрут,
останутся только правильные. И "правильные" пути будут найдены все,
даже если их несколько. А потом уже можно выбрать из них самый короткий.
Да, еще останутся зацикленные (круговые пути), не связанные с точкой
выхода и центральной точкой. Но их может и не быть, зависит от формы лабиринта.
Проверка зацикленного пути - если при обходе пути повторно проходим
через одну и ту же ячейку. Но на решение задачи зацикленные
пути не влияют, т.к. после окончания итераций решения будем
находить, перемещаясь от центральной точки.
Dev«Варп-двигатель» для «среза последних»#49 18.05.21 10:55
(48)
Данные актуализируются раз в сутки (для целей аналитики этого достаточно).
В рабочей базе 1С выполняется удаленный запрос через механизм hИнтегратор - для каждой даты и типа документов вычисляются суммы по проведенным документам. Это самый простой и быстрый способ сравнения. Контрольные суммы (SHA256) пробовал считать в базе SQL, это надежнее, но получалось дольше в несколько раз.
То же самое выполняется в базе Клик. По всем датам, где обнаружили расхождения, формируются запросы, которые исполняются утилитой bcp.exe (в несколько потоков), выгружаются все данные по проведенным документам за эти даты в формат CSV.
Затем в базе КХ удаляются все данные с расхождениями и загружаются из CSV и запускаются расчеты по изменениям (остатки на каждый день и проч). Перед этим полностью копируются справочники.
На синхронизацию уходит, примерно, полчаса. Различные регламентные расчеты еще часа три. Выполняется по ночам, типичный объем изменений несколько десятков миллионов строк.
Часть данных синхронизируются постоянно, например каждые 3 минуты чеки загружаются с FTP. Скорость загрузки - примерно 10 отчетов из магазинов в секунду, с учетом времени на удаление прежних вариантов за дату от магазинов в базе Клик.
DevЗависание 1С при ftp подключении. РИБ#8 16.05.21 10:06
(1) Аналогичная проблема.
Количество файлов на FTP было около 10 тыс.
Зависает при обращении Соединение.НайтиФайлы(ИмяКаталогаСервера, "").
Перенёс Far-ом файл с FTP в локальный каталог, потом по 1000 выкладывал на FTP.
Таким способом успешно удалось загрузить с FTP все файлы.
Похоже, что именно при большом количестве файлов начинаются глюки у типовой функции.
1С:Предприятие 8.3 (8.3.11.2867)
DevФормирование отчета СКД с расшифровкой из обработки#5 27.04.21 15:17
(4) Заказчиком была ИТ служба компании, и Заказчик сам прекрасно разбирался в 1С, но часть работ отдал субподрядчику. Поэтому требование Заказчика было принято как обязательное.
DevФормирование отчета СКД с расшифровкой из обработки#3 27.04.21 15:06
(1)
(2)
Да, сталкивался с требованием заказчика, чтобы отчеты формировались обработками. Так что плюс, полезная публикация. Лишний раз не нужно вспоминать, как это сделать. И, кроме обработки, отчет можно сформировать на любой форме, например при открытии формы документа. Например, при создании документа "Продажи" сразу показывать отчет по расчетам с клиентом.
Dev«Варп-двигатель» для «среза последних»#47 05.03.21 23:02
(46)
(46)
Цитата
Автор зарегистрирован на ресурсе 10 лет назад и утверждает, что не имеет опыта разработки на T-SQL. Как-то странно, хотя, всё возможно.

Небольшой опыт теперь уже имею, через bcp.exe выгрузку из базы 1С больших объемов данных SQL запросом в CSV с последующей загрузкой в базу ClickHouse (справочники, данные регистров, документы). Убеждать и рекламировать "СУБД от известной российской ИТ-компании" здесь тоже не собираюсь. Скриншот с размерами некоторых таблиц, в которые перенесены данные из базы 1С, и скриншоты интерфейса технологической базы 1С (из которой выполняется загрузка, сверка данных и регламентные расчеты) прикладываю.
На этом скриншоте самая большая таблица > 12 миллиардов записей, в другой базе - данные объединенного журнала регистрации 13-ти больших баз данных 1С имеют размер больше 15 миллиардов записей. И эти данные сейчас уже используются в качестве источника в нескольких критичных по времени исполнения отчетах 1С. В публикации поделился своим небольшим на тот момент опытом, если есть какие-то религиозные предубеждения к другим СУБД, кроме напрямую поддерживаемых платформой 1С, можете игнорировать публикацию. А если есть конкретные вопросы о проблемах, нюансах и сложностях интеграции 1С с данной СУБД, например - быстрая загрузка данных из MS SQL в СУБД, формирование отчетов по данным СУБД с использованием СКД, сверка данных СУБД и 1С, возможности диалекта SQL данной СУБД и адаптация к 1С, система скриптов, исполняющих смешанный код 1С, запросы MS SQL и ClickHouse, отвечу.

Прикрепленные файлы:

Скриншот.png
Скриншот1.png
Скриншот2.png
Скриншот3.png
Скриншот4.png