Интеграция 1С и Sentry для мониторинга ошибок и расчета Apdex

24.01.25

Администрирование - Мониторинг

Данная статья посвящена разработке интеграции 1С и Sentry, что позволяет сделать удобнее анализ ошибок. Также имеется возможность выгрузки замеров времени из 1С для расчета Apdex с целью анализа удовлетворенности пользователей скоростью работы информационной системы. В статье разобраны основные важные моменты при разработке представленной интеграции.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Интеграция с Sentry
.cfe 60,47Kb
2
2 Скачать (1 SM) Купить за 1 850 руб.

Введение

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

В вопросе реализации выгрузки ошибок статья не несет глобальной новизны (все статьи по данной тематике перечислены в списке источников), но представленное решение имеет свое исполнение. Схожая и полезная статья[1] на эту тему написана Владиславом Журавским, за что автору огромная благодарность. Помимо мониторинга ошибок, Sentry предоставляет возможность расчета такого показателя, как Apdex, суть которого будет описана далее. Было решено воспользоваться, в том числе, и данным функционалом Sentry, что уже более ново в контексте интеграции 1С и Sentry (во всяком случае, по данной теме сходу материалов найти не удалось).

Рассматриваемое решение может быть неидеальным, но оно работоспособно и дает определенный функционал. В статье подробно пояснены не все тонкости разработки решения, а только наиболее важные (по мнению автора).

Что такое Sentry

Sentry - инструмент для сбора и анализа ошибок. Есть возможность указания большого количества дополнительной информации для каждой ошибки: пользователь, окружение, клиент и сервер и многое другое. Процесс создания проекта в Sentry рассматриваться не будет, как и процесс получения DSN токена, эта информация есть в статье [1].

 

Рисунок 1. Пример списка ошибок и иных сообщений в Sentry

 

На рис.1 показан пример списка ошибок (и других сообщений) в Sentry. Видно, что есть возможность настраивания фильтров для отбора нужной информации. Также уже можно заметить некоторые плюсы от использования данного инструмента. Например, указано количество возникновения каждой ошибки и количество пользователей, у которых она когда-либо возникала. 

 

Рисунок 2. Пример списка событий для расчета Apdex в Sentry

   

На данном рисунке проиллюстрирован список событий для расчета Apdex. APDEX (Application Performance Index) — это индекс производительности, который отражает, насколько пользователи удовлетворены скоростью работы информационной системы[2]. Есть возможность внутри каждого события увидеть список событий данного типа (с возможностью раскрыть информацию о конкретном событии), а также ознакомиться с графиками Apdex и длительности события в различные временные промежутки. Это продемонстрировано на рис. 3.

 

Рисунок 3. Пример списка событий конкретного вида для расчета Apdex в Sentry

   

На данном рисунке можно увидеть некоторую техническую информацию в разрезе процентного соотношения от общего количества таких событий. Например, окружение (прод, стейдж или тест), операционную систему и имя компьютера. 

 

Рисунок 4. Пример данных конкретного события для расчета Apdex в Sentry

   

На рисунке выше продемонстрированы данные, полученные для конкретного события. Указаны даты начала и окончания события в Unix формате в стандарте UTC в миллисекундах, длительность в миллисекундах, пользователь, база, версии платформы и конфигурации и т.д. Т.к. в примере использованы данные для события открытия формы списка справочника сотрудников, то у пользователя (пользователя Sentry) есть подробная информация о том, когда и у кого была открыта упомянутая форма, как быстро открылось окно и другая полезная информация.

 

Реализация интеграции на стороне 1С

Как и для большинства доработок в 1С, было принято решение воспользоваться дополнительным расширением. Главным преимуществом применения доп. расширений при доработках в 1С является отсутствие необходимости снимать основную конфигурацию с поддержки. Кроме того расширение крайне просто установить в нужную базу или несколько баз. В расширение были добавлены некоторые объекты и есть несколько заимствованных из основной конфигурации. 

Были добавлены 3 общих модуля: sentry_Синхронизацияsentry_RestApisentry_ОбщегоНазначенияСервер. Подсистема sentry_Интеграция. Роль sentry_ОсновнаяРоль для настройки прав доступа к расширению.  Общая картинка для упомянутой подсистемы. Справочник НастройкиСинхронизацииСsentry для настройки интеграции. И 3 системных перечисления: sentry_РежимыРаботыsentry_УровниЖурналаРегистрацииsentry_Окружение. Заимствованные объекты: справочник КлючевыеОперации и РС (регистр сведений) ЗамерыВремени.

Для справочника НастройкиСинхронизацииСsentry были добавлены следующие реквизиты:

  • Сервер (Строка) - хранит адрес Sentry для обмена данными;
  • Токен (Строка) - хранит токен Sentry для обмена данными;
  • НомерПроекта (Строка) - хранит идентификатор проекта Sentry для обмена данными;
  • ЗащищенноеСоединение (Булево) - признак защищенного соединения;
  • Порт (Строка) - номер порта при обмене данными;
  • ОбменЗапущен (Булево) - признак того, что обмен с Sentry запущен;
  • ИдентификаторФоновогоЗадания (УникальныйИдентификатор) - идентификатор текущего выполняемого фонового задания для данной настройки интеграции;
  • РежимРаботы (ПеречислениеСсылка.sentry_РежимыРаботы) - хранит режим работы для данной настройки. Доступны значения: ПолнаяВыгрузкаВыгрузкаЗаПериодВыгружатьТолькоНовыеПослеЗапускаОбмена;
  • НачалоПериодаЖурналРегистрации (Дата) - дата начала выгрузки данных об ошибках при режиме работы ВыгрузкаЗаПериод;
  • ОкончаниеПериодаЖурналРегистрации (Дата) - дата окончания выгрузки данных об ошибках при режиме работы ВыгрузкаЗаПериод;
  • ВыгружатьЖурналРегистрации (Булево) - признак того, необходимо выгружать ошибки;
  • ВыгружатьЗамерыВремени (Булево) - признак того, необходимо выгружать замеры времени;
  • НачалоПериодаЗамерыВремени (Дата) - дата начала выгрузки данных о замерах времени при режиме работы ВыгрузкаЗаПериод;
  • ОкончаниеПериодаЗамерыВремени (Дата) - дата окончания выгрузки данных о замерах времени при режиме работы ВыгрузкаЗаПериод;
  • Окружение (ПеречислениеСсылка.sentry_Окружение) - информация об окружении, доступные значения: Прод, СтейджТест.

Дополнительно была добавлена табличная часть с единственным реквизитом УровеньЖурналаРегистрации (ПеречислениеСсылка.sentry_УровниЖурналаРегистрации) с возможными значениями: ОшибкаПредупреждениеИнформацияПримечание. Табличная часть необходима для возможности указания пользователем типа информации выгружаемой из журнала регистрации.

Важный момент про Сервер, Токен и НомерПроекта будет раскрыт далее. Для данного справочника были созданы 3 формы: ФормаЭлементаФормаСпискаФормаВыполнениеСинхронизации. На рис. 5 продемонстрирована форма элемента справочника.

 

Рисунок 5. Форма настройки в 1С интеграции с Sentry

   

Назначение полей формы можно понять из описания реквизитов выше. На форме присутствуют кнопки запуска и выключения обмена, а также кнопка проверки соединения с Sentry. Элементы формы отображаются в зависимости от необходимости их отображения. Эта логика отражена в модуле формы.

 
 Модуль формы ФормаЭлемента справочника НастройкиСинхронизацииСsentry

     

Необходимо упомянуть важные аспекты работы модуля выше. Добавлена проверка создания дублирующих настроек интеграции (функция ПроверитьНастройкуНаДубль), т.е. нет возможности создать несколько подключений к одному и тому же проекту одного и того же Sentry. Есть возможность проверки установки соединения с Sentry путем отправки тестовой ошибки. Формирование и процесс отправки данных об ошибке будет описан позже. Элементы формы, которые не нужны при текущих настройках скрываются и вновь отображаются при соответствующих настройках, все это описано в процедуре ОбновитьОтображениеЭлементовФормы. У пользователя есть возможность указывать различные уровни журнала регистрации, т.е. без дублей, что отражено в обработчике события формы ВыгружаемыеУровниЖурналаРегистрацииПередОкончаниемРедактирования. Также все изменения формы в результате своих действий пользователь будет видеть сразу и форму не надо обновлять или использовать кнопку записи. 

Стоит более подробно описать работу с DSN токеном. Он состоит из 3-х частей: токена, адреса Sentry и идентификатор проекта(в представленном коде переменная названа НомерПроекта).

Шаблон DSN токена: https://<токен>@<адрес Sentry>/<идентификатор проекта>. 

Пример DSN токена: https://4df6cc9d87bgw6363353c051e23d@sentry.mycompany.ru/46.

По коду модуля формы видно, что при окончании редактирования DSN токена пользователем он разделяется на указанные выше части и записывается в соответствующие реквизиты.

Выгрузка данных в Sentry во всех трех режимах происходит с помощью фонового задания, т.е. пользователю не нужно ждать, пока все данные выгрузятся в Sentry, он может и дальше работать с 1С. Для режимов ПолнаяВыгрузка и ВыгрузкаЗаПериод используется форма ФормаВыполнениеСинхронизации, чтобы выводить пользователю информацию о ходе выгрузки данных. Сейчас выводятся только 2 сообщения: о начале и об окончании выгрузки данных. При необходимости логирование можно дополнить. Для режима работы ВыгружатьТолькоНовыеПослеЗапускаОбмена эта форма не используется, т.к. без выключения обмена пользователем этот процесс нельзя считать конечным, также не имеет смысла на глазах у пользователя логировать процессы неизвестной длительности. На рис. 6 представлена форма ФормаВыполнениеСинхронизации справочника НастройкиСинхронизацииСsentry.

 

Рисунок 6. Форма выполнения синхронизации с Sentry

 

 
 Модуль формы ФормаВыполнениеСинхронизации справочника НастройкиСинхронизацииСsentry

В модуле формы выше отсутствуют какие-либо важные моменты, которые требуют подробного разбора. Он отвечает за запуск фонового задания и обновление форм, в т.ч. за отображение логов пользователю. Вывод сообщений пользователю реализован с помощью макета МакетЛога.

 
 Общий модуль sentry_Синхронизация

Модуль sentry_Синхронизация имеет несколько важных особенностей работы. Он отвечает за старт работы фоновых заданий, именно с него начинается исполнение фонового задания. Процедуры ВыполнитьОбменДаннымиПоФоновомуЗаданию и ВыполнитьОбменДаннымиВРежимеРеальногоВремениПоФоновомуЗаданию отличаются тем, что первая используется в режимах работы ПолнаяВыгрузка и ВыгрузкаЗаПериод, а вторая при ВыгружатьТолькоНовыеПослеЗапускаОбмена. Вторая процедура будет исполнятся до тех пор, пока настройка, из которой был запущен обмен, существует и в ней не активирована кнопка выключения обмена. Естественно, код прекратит свое исполнение при возникновении ошибок в коде или при удалении фонового задания.

Необходимо уделить внимание функции СформироватьСтруктуруНастроек, т.к. она имеет важную роль. Дело в том, что по ходу исполнения кода необходимо обращаться к различным данным настройки обмена. Вдобавок, это происходит в цикле. Если в текущей ситуации обращаться к информации, которую хранит реквизит справочника, через точку, то это увеличит нагрузку на систему. Такой метод получения данных создает много запросов к БД, также идет получение не только запрашиваемого реквизита, но и всех остальных. По этой тематике много информации на просторах интернета, где самостоятельно можно наглядно увидеть, как это работает на стороне СУБД. Чтобы решить проблему, описанную выше, значения реквизитов справочника записываются в структуру и хранятся в переменной, что избавляет от необходимости обращения к БД.

Получение данных об ошибках происходит с помощью выгрузки данных из журнала регистрации посредством использования процедуры встроенного языка ВыгрузитьЖурналРегистрации. Есть возможность настроить отбор, отбор происходит только по уровню журнала и датам начала и окончания, если они заданы. В режиме работы ВыгружатьТолькоНовыеПослеЗапускаОбмена дата начала отбора уменьшается на секунду. Это необходимо, когда в момент формирования предыдущей выгрузки была добавлена запись в ЖР, которая в выгрузку не попала. Выгрузка замеров времени ничем примечательным не отличается и формируется по данным РС ЗамерыВремени.

 
 Общий модуль sentry_ОбщегоНазначенияСервер

   

Естественно, самым важным является формирование сообщения для Sentry, за которое отвечает функция СформироватьТелоСообщенияSentry при выгрузке журнала регистрации. Итоговое сообщение является структурой. Ключ структуры - имя поля, а значение - его значение. Ниже представлено назначение каждого поля[1]:

  • timestamp - содержит дату события;
  • logger - имя логера, можно задать по своему усмотрению;
  • platform - тут обязательно указывается Other, т.к. в Sentry  в списке доступных платформ нет 1С;
  • level - уровень ошибки. У Sentry свой список уровней (их больше, чем в 1С) ошибок, поэтому было сопоставлено следующим образом: в 1С Ошибка - в Sentry error, в 1С Информация - в Sentry info, в 1С Примечание - в Sentry info, в 1С Предупреждение - в Sentry warning;
  • transaction - транзакция, в этом поле передается транзакция из журнала регистрации;
  • server_name - имя сервера;
  • release - версия конфигурации;
  • dist - имя базы;
  • environment - окружение (Prod, Stage, Test);
  • message - комментарий из журнала регистрации;
  • tags - произвольные теги. Здесь было решено через поле context передавать режим совместимости;
  • extra - через это поле можно передавать любую дополнительную информацию;
  • exception - содержит информацию о возникшем событии и модулю, в котором оно возникло. По данному полю происходит группировка событий;
  • contexts - контекст события. Тут передается информация о компьютере пользователя (т.е. клиента), операционной системе, приложении (фоновое задание, тонкий клиент и т.д.), версии платформы, сеансе и соединении;
  • breadcrumbs - перечень вызовов перед возникновением ошибки;
  • user - информация о пользователе.

Сообщение с информацией о замерах времени формируется похожим образом. В этом случае итоговые данные представлены массивом, который обязательно должен содержать 3 элемента: структура с информацией о замерах времени, структура с данными о событии и структура с информацией о типе данных в сообщении. В структуре события заполняются следующие поля:

  • event_id- идентификатор события;
  • sent_at - дата отправки данной информации. Указывается в формате UTC, поэтому к XML строке прибавляется символ "Z", при ином формате Sentry не воспримет отправленную информацию;
  • dsn - DSN токен;
  • sdk - Software Development Kit, сюда было решено передавать свое наименование и версию;
  • trace - информация о трассировке. Содержит поля:
    • trace_id - идентификатор трассировки. С его помощью можно отследить последовательность пользовательских операций (открытий окон в 1С), но в текущем решении эта возможность не используется, т.к. в РС ЗамерыВремени нет связи между записями и не отследить последовательность открытия окон;
    • sample_rate - частота выборки для отправки данных. Данное число характеризует, какая часть данных отправляется. 1- все данные, а, например, 0.1 - 10% случайно выбранных данных. В контексте решаемой задачи этот параметр неважен, поэтому используется значение по умолчанию - 1;
    • transaction - содержит наименование операции;
    • public_key - ключ из DSN токена;
    • environment - окружение;
    • sampled - признак выборки данных.

В структуре с типом данных сообщения всего 2 поля:

  • type - тип события, для замеров времени указывается "transaction";
  • content_type - тип передаваемых данных, в данном случае "application/json".

Структура с данными о замерах времени содержит поля:

  • platform - название конфигурации;
  • sdk - такое же поле, как и в первой структуре;
  • transaction - такое же поле, как и в первой структуре;
  • server_name - сервер 1С;
  • environment - окружение;
  • contexts - содержит информацию о версии ОС и поле trace с полями:
    • trace_id - такое же поле, как и в первой структуре;
    • span_id - схож с идентификатором трассировки, но позволяет отслеживать последовательность рабочих процессов приложения. В данном решении этот функционал также не используется;
    • op - тип операции, указывается "ui", т.к. замеры времени относятся к интерфейсу;
    • status - содержит информация о том, с ошибкой или без была выполнена операция;
    • data - содержит информация о пользователе;
    • runtime - содержит имя базы и версии платформы и конфигурации.
  • start_timestamp - дата начала события (открытия окна) в формате Unix в стандарте UTC;
  • timestamp - дата окончания события (открытия окна) в формате Unix в стандарте UTC;
  • transaction_info - информация о транзакции, в которой указан источник.

Передача дат начала и окончания события имеет особенность. В РС ЗамервВремени эти даты хранятся в универсальном формате в миллисекундах, а в Sentry  они должны передаваться в Unix формате. Под вторым форматом понимается количество секунд (в текущем случае миллисекунд) прошедших с начала 1970-го года (01.01.1970). В 1С эти даты подразумевают количество секунд (в текущем случае миллисекунд) прошедших от рождества Христова (т.е. с 01.01.0001). Никаких штатных методов конвертации таких дат из одного формата в другой найдено не было, поэтому была написана функция КонвертироватьДатуВunixФормат, которая конвертирует универсальную дату в миллисекундах в 1С в дату Unix формата стандарта UTC. 

 
 Общий модуль sentry_RestApi

 

Последним важным модулем является модуль по отправке данных в Sentry. Стоит отметить 3 важных заголовка, без которых соединение установлено не будет. В заголовке X-Sentry-Auth обязательно необходимо указать версию Sentry и ключ из DSN токена. В заголовке Authorization нужно указать также ключ из DSN токена. Важно, что при отправке ошибок в заголовке Content-Type указывается "application/json;charset=utf-8", а при отправке замеров времени "application/x-sentry-envelope". Структуры для отправки ошибок сразу записываются в json  и отправляются, а структуры из массива при отправке замеров времени записываются поочередно в json с помощью конкатенации и потом данные отправляются. 

 

Заключение

Было разработано расширение для отправки ошибок и других уровней журнала из журнала регистрации в 1С в Sentry. Также был реализован функционал для выгрузки данных из РС ЗамерыВремени с целью мониторинга пользовательского опыта в 1С. В статье описаны ключевые моменты при разработке представленного расширения, а самой информации достаточно для самостоятельной разработки такой же или похожей интеграции. Расширение можно считать полностью законченным и готовым к использованию. Представленное решение есть возможность расширить с точки зрения функционала и функционала, используемого с помощью Sentry.

Решение подходит для типовых конфигураций, т.к. журнал регистрации и РС ЗамерыВремени являются штатными механизмами. Тестировалось на платформе 8.3.25.1374, конфигурация Зарплата и управление персоналом, редакция 3.1 (3.1.30.108), база файловая. Стоит добавить, что обновления и поддержка расширения не планируются (на текущий момент), но приветствуются предложения и комментарии. Статья может быть дополнена. 

 

Список источников

  1. Владислав Журавский.Cбор и анализ ошибок при помощи Sentry, или как упростить жизнь себе и пользователям: [Электронный ресурс]., 2020 // URL: //infostart.ru/1c/articles/1307327/. (Дата обращения: 28.12.2024).
  2. Введение в APDEX – с чего начинают оптимизацию профессионалы: [Электронный ресурс]., 2021 // URL: https://xn----1-bedvffifm4g.xn--p1ai/news/2021-12-03-apdex/. (Дата обращения: 28.12.2024).
  3. Андрей Крапивин. Часовой на страже логов: [Электронный ресурс]., 2020 // URL: //infostart.ru/pm/1178723/. (Дата обращения: 28.12.2024).
  4. Александр Маликов. Использование Sentry в контексте розничной сети: [Электронный ресурс]., 2022 // URL: //infostart.ru/1c/articles/1678579/. (Дата обращения: 28.12.2024).

Проверено на следующих конфигурациях и релизах:

  • Зарплата и управление персоналом, редакция 3.1, релизы 3.1.30.108

мониторинг ошибок показатели производительности пользовательский опыт интеграция Sentry

См. также

Учет доходов и расходов Логистика, склад и ТМЦ Маркетплейсы Мониторинг Пользователь Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Расширение модуля Synchrozon для удобного контроля габаритов на Ozon! Разработка позволяет мгновенно сравнивать установленные габариты товаров, с габаритами, указанными на Ozon, чтобы выявлять любые несоответствия. Поможет сократить расходы на логистику, гарантируя, что все данные о товарах остаются точными и актуальными.

3600 руб.

31.10.2024    493    1    0    

3

Мониторинг Системный администратор Программист Платформа 1С v8.3 Россия Платные (руб)

Обработка позволяет использовать подобные КОРП-функциональности механизмы контроля расхода памяти (сеансом на 1 вызов и рабочими процессами), реагируя завершением "тяжелых" вызовов, перезапуском рабочих процессов при чрезмерном потреблении этого важного ресурса.

3600 руб.

03.05.2023    5355    3    0    

4

Логистика, склад и ТМЦ Мониторинг Маркетплейсы Пользователь Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Платные (руб)

Расширение для 1С, которое автоматически «отлавливает» тарифы складов с наиболее выгодными коэффициентами для ваших товаров на маркетплейсе Wildberries. С помощью этого инструмента вы сможете легко находить и выбирать склады с лучшими условиями для максимизации своей прибыли. Удобная интеграция позволяет настроить регулярный поиск складов по выгодным коэффициентам в виде регламентного задания в 1С, что существенно экономит время и автоматизирует процесс принятия решений по размещению товаров. Всегда будьте на шаг впереди конкурентов и повышайте эффективность своего бизнеса с помощью «Ловца коэффициентов складов Wildberries»!

3600 руб.

14.11.2024    528    1    0    

4

Поиск данных Мониторинг Программист Платформа 1C v8.2 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 Россия Абонемент ($m)

Внешняя обработка ищет файлы и каталоги в выбранном каталоге, определяет их размер, сортирует по убывающей и заполняет таблицу.

1 стартмани

16.12.2024    309    0    ludmila777    7    

4

Мониторинг Анализ продаж Платформа 1С v8.3 1C:Бухгалтерия 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Розница 3.0 Управленческий учет Платные (руб)

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

24000 руб.

11.11.2024    466    0    0    

0

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

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

1 стартмани

18.07.2024    988    7    moolex    0    

5

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

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

1 стартмани

13.06.2024    5345    44    Garilia    3    

38

Мониторинг Платформа 1С v8.3 1C:Бухгалтерия 1С:Документооборот Россия Платные (руб)

Подсистема мониторинга ПДЕ 1С (далее ПМ) предназначена для отображения бизнес-показателей прикладных решений на платформе 1С Предприятие 8.3 в виде динамичных графических изображений диаграмм, графиков, таблиц.

24000 руб.

31.05.2024    1625    0    0    

0
Оставьте свое сообщение