page |
desc |
Документация по использованию юнита EHDM |
Назад
Документация по использованию юнита EHDM
Описание
Юнит EHDM предназначен для работы с программным фискальными регистратором EHDM (Армения). Он расширяет функциональность класса TFiscalRegistar, предоставляя методы и свойства для управления фискальными операциями, такими как создание чеков, обработка платежей и отправка уведомлений.… |
Порядок создания библиотек фискализации |
Назад
Порядок создания библиотек фискализации
* Класс библиотеки фискализации должен быть наследником интерфейса IFiscalRegistrator
* Для записи логов использовать модуль |
Порядок интеграции библиотек фискализации в приложения |
Назад
Порядок интеграции библиотек фискализации в приложения
Если это первичная интеграция, в приложение необходимо подключить юнит FiscalClass.pas |
Класс TAtol |
Назад
Класс TAtol
Свойства
Модуль
Atol
Объявления
type TAtol = class(TInterfacedObject, IFiscalRegistrator)
Описание
Класс для работы с фискальным регистратором Атол
Иерархия |
Модуль Atol |
Назад
Модуль Atol
Описание
Класс для работы с фискальным регистратором Атол
Используемые модули
* System.Classes
* System.Variants
* System.SysUtils
* Vcl.Dialogs |
Library AtolDLL |
Назад
Library AtolDLL
Описание
Библиотека для работы с фискальным регистратором Атол
Методы
* CancelCheck:WideString - Отмена чека
* CashIncome(Summ: double):WideString |
Модуль FuncsLogDll |
Назад
Модуль FuncsLogDll
Описание
Класс для записи логов в библиотеках
Описание стандарта и использования логов https://doc.agb.is/develop/logs_standart
Для использования CodeSite в проекте необходимо указать директиву USE_CODESITE. При отсутсвии директивы, будут писаться обычные логи. |
Интерфейс IFiscalRegistrator |
Назад
Интерфейс IFiscalRegistrator
Модуль
interfaceFiscDll
Объявления
type IFiscalRegistrator = interface(IUnknown)
Описание
Универсальный интерфейс для подключения фискальных регистраторов |
Модуль interfaceFiscDll |
Назад
Модуль interfaceFiscDll
Описание
Используемые модули
Классы, интерфейсы и объекты
Типы
Описание
Универсальный интерфейс для подключения фискальных регистраторов
Используемые модули
* System.Classes
* Vcl.ExtCtrls |
develop:kasses_atoldll |
Назад
Atol DLL
Модули
ИмяОписаниеAtol Класс для работы с фискальным регистратором Атол AtolDLL Библиотека для работы с фискальным регистратором Атол
FuncsLogDll Класс для записи логов в библиотеках |
Описание библиотек |
Назад
Описание библиотек
Библиотеки Агбис для подключения к стороннему оборудованию и сервисам для фискализации:
* Атол |
Описание работы компонентов облака. |
Описание работы компонентов облака.
Подробно про настройку облаков с точки зрения клиента:
Настройка Яндекс.Диска
Для работы облачного хранилища у нас на текущий момент (23.09.2024) используются компоненты TMS Software из пакета TMS Cloud Pack (их часть TMS Yandex Disk Cloud access). |
Фискализация в Агбис |
Фискализация в Агбис
Фискализация в Агбис имеет несколько направлений:
* Фискализация в АХ
* Онлайн-фискализация
* Фискализация в мобильных приложениях Windows
* Фискализация в мобильных приложениях Android
Связанные с фискализацией модули:
* Юниты для работы с кассовым оборудованием
* Описание библиотек
* Порядок создания библиотек фискализации
* Порядок интеграции библиотек фискализации в приложения… |
Создание UDR библиотеки |
Создание UDR библиотеки
Мастер класс -------->
Документация -------->
Видео с конференции Firebird --------> |
Virtual Treeview |
Virtual Treeview
Компонент отображения деревьев и списков: Virtual Treeview.
Приёмы использования в проектах.
Содержание
*
*
*
*
*
*
*
*
* |
Речевая аналитика |
Речевая аналитика
Получение возможных оплат для химчистки
Тип запроса: PUT | Адрес: (пока тестовый) | Формат запроса: multipart/form-data - пришлось выбрать данный формат запроса из-за того что передавать файл и параметры в одном request body можно только через данный формат, поэтому параметры отправляются через форму… |
Принципы работы с шрифтами в VCL |
Принципы работы с шрифтами в VCL
Для стандартизации размеров и названий шрифтов внес ряд изменений в базовые классы.
Основной шрифт приложения теперь задается в ImgDM.pas (модуль выбран из-за того, что он использует Forms и создается раньше всех): |
Перевод в delphi |
Перевод в delphi
С текущего момента эталонным языком в программе является Английский. По этому все, что будет отображено клиенту должно быть на английском (текст на формах, сообщения, |
Команды монитора цеха |
Команды монитора цеха
----------
Авторизация
Команда: Login
Общая команда авторизации.
Используются данные (логин/пароль) пользователя Агбис.Химчистка |
Рекомендательная система |
Рекомендательная система
----------
О методах рекомендаций
На данный момент рекомендательная система способна формировать и выдавать рекомендации по 3 наиболее популярным методам: |
Билд "сабов" Агента |
Билд "сабов" Агента
Связанные с Агентом дополнительные приложения AgbisAgentCheckFreeze, AgbisAgentTasks, AgbisAgentAsterisk находятся в проекте:
E:\_Projects\Agbis.dxe\Tasks\AgbisAgentSub.dproj |
Кодировки и наборы символов |
Кодировки и наборы символов
Начать думаю стоит с того времени когда компьютеризация еще не была так сильно развита и только набирала обороты. Собственно тогда то и возникла потребность в кодировке текста. В каком то же виде нужно было хранить буквы, а компьютер только единицы и нули понимает. Так была разработана одно-байтовая кодировка… |
Установка Delphi и компонентов для десктопных решений |
Установка Delphi и компонентов для десктопных решений
Установка Delphi , настройка компонентов и тюнинг, устранение зависимостей компонентов при установке, раньше были сродни искусству. Иногда это походило на какое-то шаманство и не хватало только танцев с бубнами, чтобы это все заработало.… |
Ссылка на заказ клиента |
Ссылка на заказ клиента
У апи используется единая точка входа. Все команды работают через одну функцию с разными параметрами
В связи с моральным устареванием старой ссылки на заказ, было принято решение обновить и изменить концептуально. |
Команда SaveFullOrder |
Команда SaveFullOrder
Команда SaveFullOrder позволяет создать новый заказ...
----------
Формат запроса:
SaveFullOrder={"dor_id":"0","price_id":"6","sclad_id":"3","sclad_to":"3","is_not_confirmed":"1","waiting_confirm":"0","status_deliver":"0","kredit":"18824","comments":[{"description":"55"}],"servs":[{"dos_id":"1","parent_id":"0","tovar_id":"1556","count":"2","wardrobe_id":"0","kfx":"1","action_him_id":"0"}],"plans":[{"type":"1","address":"Улица пушкина 1 1","dttm":"18.01.2023 03:00:00",… |
Сборка проекта на iOS со встроенным Extension |
Сборка проекта на iOS со встроенным Extension
Основной сценарий
1) На рабочем столе MacOS создается папка с названием проекта (например, BrendAPP)
2) Запускаем xCode и создаем новый проект |
Получение параметров Тинькофф. GetTinkoffQR |
Получение параметров Тинькофф. GetTinkoffQR
Получения признака и параметров, что Тинькофф QR активирован. Для чистомата
Тип запроса: GET
Формат запроса: |
Основные термины |
Основные термины
Константы - данные, значения которых не изменяются в программе.
Переменные - данные, могущие изменяться при выполнении программы. |
Обслуживание и сбор статистики базы данных |
Обслуживание и сбор статистики базы данных
Основные моменты, которые будут освещены в этой статье, это:
* Database Monitoring;
* Backup/Restore;
* Database validation; |
Модуль TmpQuery |
Модуль TmpQuery
В TmpQuery.pas прописаны ф-ии для доступа к БД и работы с ней.
CreateTempQuery
Ф-ия создает TagbDataset с указанным SQL запросом и заполненными параметрами, если они есть и |
Компоненты agbRadioButton's |
Компоненты agbRadioButton's
Компоненты используются используемые как правило в группе взаимосвязанных индикаторов, из которых обычно может быть выбран только один. Они используются для выбора одной из нескольких взаимоисключающих альтернатив. |
Компоненты agbCheckBox's |
Компоненты agbCheckBox's
Компоненты используются для обозначения включения или отключения какой либо опции. Действие одного флажка, на форме, происходит независимо от других флажков, но при необходимости можно запрограммировать такие действия. |
Компоненты agbButton's |
Компоненты agbButton's
Компоненты представляющие собой стандартную кнопку, инициирующее какое-то действие.
agbButton
В отличии от базового TsButton из пакета AlphaControl, имеется возможности: |
Транзакции |
Транзакции
Что такое транзакции?
Транзакция — это группа последовательных операций с базой данных, которая представляет собой логическую единицу работы с данными. Транзакция может быть выполнена либо целиком и успешно, соблюдая целостность данных и независимо от параллельно идущих других транзакций, либо не выполнена вообще, и тогда она не должна произвести никакого эффекта. Транзакции обрабатываются транзакционными системами, в процессе работы которых создаётся история транзакций.… |
Строковые типы в Delphi. |
Строковые типы в Delphi.
Строка представляет собой последовательность символов. Delphi поддерживает следующие предопределенные типы строк: |
Документирование API (УСТАРЕВШИЕ) |
Документирование API (УСТАРЕВШИЕ)
Введение
Любые команды API должны быть задокументированы.
Основные документы:
* API Личного кабинета - Команды API, которые используются для Личного кабинета, предоставляя информацию по сессии авторизованного клиента. |
Статистика исключений, беспощадная ты су... или особенности программистской охоты на ошибки |
Статистика исключений, беспощадная ты су... или особенности программистской охоты на ошибки
Всё нижеописанное актуально на момент написания статьи, т.к. аффтар не теряет надежды, что в дальнейшем это всё будет поудобнее и более организованно. |
Используемые нами контролы и подходы |
Используемые нами контролы и подходы
В качестве основных контролов мы используем набор AlphaControls - Сайт с компонентами.
В дизайн-тайме они располагаются на вкладках AlphaStandard, AlphaAdditional, AlphaDBControls и AlphaTools, и их классы начинаются с префикса Ts |
Оплаты ПСБ |
Оплаты ПСБ
----------
Описание команд
Получение ссылки на оплаты (Для личного кабинета, МП лк)
Тип запроса: POST
Адрес: https://himinfo.ru/him_general_php/api/payment_systems/Psb/PsbPay.php |
Общее описание оплат |
Общее описание оплат
----------
Список систем оплат
В команды оплат обязательно передается payment_system_id - ID платежной системы.
Принимает значения: |
Оплаты Тинькофф/Тинькофф QR |
Оплаты Тинькофф/Тинькофф QR
Описание протокола api тинькоффа
Описание ошибок api тинькоффа
----------
Содержание
----------
Описание команд |
Команды онлайн оплаты |
Команды онлайн оплаты
Данные оплаты поддерживают, платежную веб страницу, оплату QR кодом через систему быстрых платежей.
Работа с оплатами реализована через общие скрипты разделенные по типу оплаты, и при работе на прямую со криптами конкретной платежной системы. |
Clumsy - программа для эмуляции "плохой" сети |
Clumsy - программа для эмуляции "плохой" сети
Симуляция сетевых сбоев для распределенных систем является одним из необходимых видов тестирования ПО.
Не всегда есть возможность использовать аппартные решения, поэтому на помощь приходят программы - эмуляторы.
Для Linux и Unix систем давно существует несколько таких программ.
Для Windows есть программа… |
Безопасность Api |
Безопасность Api
Можно ознакомиться со статьей на Хабре и
----------
Введение
Все больше сервисов предоставляют свои возможности с помощью |
AgentNG автоматическое тестирование |
AgentNG автоматическое тестирование
Запуск и просмотр результатов автоматического тестирования
Для запуска автоматического тестирование AgentNG ему необходимо послать команду: |
Тестирование отчета в разных условиях |
Тестирование отчета в разных условиях
Для того чтобы проверить отчёт нужно провести следующие проверки
* Успешность построения
* Правильность построения данных |
Компоненты с выпадающими списками |
Компоненты с выпадающими списками
Компоненты предназначенные для выбора значения из подготовленного списка.
agbKeyEdit
[&400]
Однострочное текстовое поле, служащее для ввода данных пользователем. |
Справочник конфликтных клиентов |
Справочник конфликтных клиентов
Для информирования химчисток разработан общий справочник номеров телефонов конфликтных клиентов. Справочник содержит номер телефона и комментарии к данному телефону. |
Создание заказа через АГБИС ПМП |
Создание заказа через АГБИС ПМП
В мобильных приложениях, основанных на базе АГБИС ПМП есть один способ именно СОЗДАНИЯ заказа. Для оформления нового заказа в мобильном приложении нужно перейти в прайс-лист, добавить услуги в корзину, далее настроить выезд курьера и после нажатия на кнопку… |
Команды для ПМП и ПСК |
Команды для ПМП и ПСК
* ПМП. Создание заказа.
* ПМП. Создание заказа. V2 |
Шаблоны проектирования php(Статья в разработке) |
Шаблоны проектирования php(Статья в разработке)
Шаблоны проектирования позволяют улучшить читаемость кода и стандартизировать подходы к разработке. Статья будет разделена на 2 главы: |
Потоки, анонимные потоки, OmniThreadLibrary |
Потоки, анонимные потоки, OmniThreadLibrary
Потоки.
Процесс — это исполнение программы. Операционная система использует процессы для разделения исполняемых приложений. |
Работа с базой данных в PHP |
Работа с базой данных в PHP
Неотъемленной частью разработки на пхп является работа с базой данных. Есть разные подходы в зависимости от проекта. |
PhpStorm |
PhpStorm
PhpStorm — коммерческая кросс-платформенная интегрированная среда разработки, разрабатывается компанией JetBrains на основе платформы IntelliJ IDEA.
PhpStorm представляет собой интеллектуальный редактор для PHP, |
Дашборды |
Дашборды
В будущем здесь будет нормальная документация
URL:
Авторизация(auth)
Вывод текущей итерации выгрузки с 2018 года(get_stage_first_loading) |
Создание/Изменения таблиц, репликационная структура |
Создание/Изменения таблиц, репликационная структура
Создание новых таблиц
Для создания новых таблиц обычно используем IBE. Можно написать скрипт создания самому, можно воспользоваться возможностями интерфейса (ПКМ на строке Tables, и затем New Table, или комбинация клавиш ctrl+N): |
Компоненты agbEdit's |
Компоненты agbEdit's
Компоненты предназначенные для ввода данных на форме.
agbEdit
[&400]
Однострочное текстовое поле, служащее для ввода данных пользователем. |
Создание меню |
Создание меню
В этой статье разберём то как создаются разделы меню в модуле Агбис Химчистка.
Общие правила
* Необходимо правильно выбрать место для добавление нового раздела меню, по планируемому наполнению. |
Чистоматы. Инструкция по сборке и установке ПО. |
Чистоматы. Инструкция по сборке и установке ПО.
Система сборки deb пакетов развернута на TestStand (192.168.92.3). Скрипты сборки и
распространения находятся в ~/PROD/BuildStation/. Все действия выполняются на TestStand. |
Интерфейсы. |
Интерфейсы.
Введение.
Не смотря на то, что понятие интерфейса обычно не рассматривается в основных концепциях
ООП, «интерфейс» является важной программной/синтаксической структурой и наряду с абстракцией
служит для упрощения проектирования, написания, сопровождения информационных систем.… |
Трехзвенная архитектура приложений. |
Трехзвенная архитектура приложений.
Трехзвенная (трехуровневая) архитектура приложений - это модульная клиент-серверная архитектура, которая состоит из |
Компоненты agbLabel's |
Компоненты agbLabel's
Компоненты предназначен для отображения, как правило статического текста, то есть надписей форме, которые используются как метки для пользователя во времени работы. |
Особенности работы смс-рассылки |
Особенности работы смс-рассылки
Здесь будут описаны некоторые особенности работы
Выборка клиентов при sendAllMsg
Выборка клиентов основана на таблице _users_new_msg. В зависимости от выбранного канала, необходимо учитывать разные поля. Для sms это date_added_sms и date_send_sms. |
Стандартизация логов |
Стандартизация логов
Уровни логирования
* DEBUG — запись масштабных переходов состояний, например, обращение к базе данных, старт/пауза сервиса, успешная обработка записи, текст SQL запроса и пр. (расширенный лог). |
Отправка сообщений |
Для понимания последовательности действий при отправке и получении сообщений используется алгоритм. У каждого провайдера есть свои особенности, но приблизительный алгоритм одинаковый. |
Использование API команд |
Использование API команд
----------
Введение
Команды выполняются в зависимости от поддерживаемого методом командой GET или POST. Ответ на запрос приходит в |
Кратко о б24 |
*
*
*
*
*
*
*
*
----------
Кратко о б24
Окно условно можно разделить на три области:
* Список ссылок на разные информационные блоки
* |
Agb controls |
Agb controls
* Label - Компоненты предназначен для отображения, как правило статического текста, то есть надписей форме, которые используются как метки для пользователя во времени работы. |
Создание procedures, triggers, views в Firebird |
Создание procedures, triggers, views в Firebird
Далее для простоты повествования:
* Procedures - процедуры
* Triggers - триггеры
* Views - представления
В этой документации рассмотрим как создавать процедуры, триггеры и представления в Firebird. Начнём с общей информации. |
Uni_Form |
Uni_Form
Наш основной класс, который мы используем в качестве шаблона для различных карточек и документов
1 Создание формы
Чтобы создать новый модуль на базе TUniForm, необходимо в Delphi выбрать пункт меню File / New / Other, в окне найти Inheritable Items и выбрать UniForm. |
Принципы работы с базой данных |
Принципы работы с базой данных
В данной статье будут разобраны модули Init, DM и TmpQuery, с точки зрения работы с базой данных.
Выбор базы данных |
Firebird |
Firebird
Приложения АГБИС для своей работы используют базы данных под упралением Firebird.
Для подключения к базе данных используются сервер Firebird и клиент Firebird. |
Обновление программ |
Обновление программ
При выходе новой версии запускается процесс обновления программных модулей на серверах и приемных пунктах.
Обновление выполняется в три этапа: |
Идемпотентность API |
Идемпотентность API
Интересная статья c примером от Яндекс |
Создание классов |
Создание классов
Класс - логическая абстракция, которая описывает некоторый объект.
Объект физически занимает место в ОП и производит действия над своими данными (полями), используя собственные методы - процедуры и функции. |
UniLines |
UniLines
TUniLinesFrame (размещён в модуле UniLines.pas, далее будем называть его просто UniLines) - пожалуй, можно считать основным фреймом в нашей программе. |
Дизайн справочников и документов |
Дизайн справочников и документов
Дизайн очень важный критерий для программы, чем он понятней, удобней и лаконичней, тем пользователям будет удобней пользоваться продуктом. В этой статье представлены критерии, примеры и советы по дизайну справочников и документов. |
Юниты для работы с кассовым оборудованием |
Назад
Юниты для работы с кассовым оборудованием
Все юниты по работе с кассовым оборудованием (фискальными регистраторами - далее ФР, POS-терминалами) находится в папке |
Юниты по работе с оборудованием |
Юниты по работе с оборудованием
Кассовое оборудование |
Описание работы с Яндекс Доставка |
Описание работы с Яндекс Доставка
Модуль BusinessYandexDelivery.pas предназначен для автоматического создания заявок в Яндекс Доставке.
Для работы в нем необходимо получить и настроить |
Описание работы с Яндекс Геокодер |
Описание работы с Яндекс Геокодер
Вариант 1
В общем модуле BusinessYandexDelivery.pas есть публичная функция GeoPosYandex.
function GeoPosYandex(adr: string; const GeoApiKey: string): TStringList; |
Структура скриптов |
Структура скриптов
Отправка сообщений клиенту разделена на два этапа:
* Непосредственная передача данных агрегатору - SendAllMsg.php
* Запрос статусов отправленных сообщений - |
Структура базы данных sms_workflow |
Структура базы данных sms_workflow
*
*
*
*
*
*
*
*
*
----------
База данных создана в MySQL.
Для работы сервиса создано две БД, одна для хранения основных данных |
sms_workflow |
SmsWorkflow - это сервис по отправке сообщений. Сервис находится на нашем удаленном сервере.
* Структура БД
* Структура скриптов
* Интеграции с новыми агрегаторами
* Примерный алгоритм работы скриптов
* Особенности работы проекта |
Общая информация |
Общая информация
Агбис.Агент умеет выполнять 3 вида скриптов, мы их называем Random, DifOrder и SMS.
Скрипт должен представлять собой файл вида .script, находящийся в той же папке, что и исполняемый файл Агбис.Агента. |
Тестирование документов и справочников |
Тестирование документов и справочников
1. Общее тестирование
Здесь мы рассмотрим общие вещи основного функционала, необходимого для корректной работы. |
FSAdmin |
FSAdmin
В качестве фреймворка использовался Laravel. Фронт был реализован на blade шаблонах.
Логика работы разделена на 3 условных блока «AdminAgbis», |
Мастер-классы по Delphi |
Мастер-классы по Delphi
Здесь публикуем видео с разборов как правильно использовать те или иные механизмы в Delphi касательно наших подходов. |
TNamedListJson |
TNamedListJson
TNamedListJson - предназначен для хранения списка «ключ-значение». В роли значения может выступать переменная типа variant или объект TNamedListJson |
Классы и функции по категориям |
Классы и функции по категориям
Работа с БД
Работа файлами
Работа с датой/временем
Работа JSON
* TNamedListJson - unit AgbJson (..\ForAll\AgbJson.pas) Класс для хранения многомерной структуры данных |
Использование DDDebug |
Использование DDDebug
----------
Описание
DDDebug - это набор инструментов отладки, который содержит несколько модулей:
* профилировщик памяти; |
Использование FastMM5 |
Использование FastMM5
FastMM5 используется для новой версии Delphi (с поддержкой FMX). Если требуется осуществить поиск утечек памяти для старой версии Delphi XE нужно использовать |
Использование FastMM4 |
Использование FastMM4
FastMM4 используется для старой версии Delphi XE. Если требуется осуществить поиск утечек памяти для новой версии Delphi (с поддержкой FMX) нужно использовать |
Поиск и устранение утечек памяти в Delphi |
Поиск и устранение утечек памяти в Delphi
* Использование FastMM4
* Использование FastMM5
* Использование DDDebug
Мастеркласс по поиску утечек памяти с помощью FastMM и DDDebug:
|
Оформление проекта PHP |
Оформление проекта PHP
Зачем статья?
Для стандартизации оформления проектов и для облегчения порога вхождения для новых сотрудников. Статья будет постепенно пополняться свежей информацией |
Лайфхаки в АП используемые для отладки |
Лайфхаки в АП используемые для отладки
* CTRL+V - эмуляция ввода штрихкода, посылает событие штрихкода
* CTRL+W - WHAT? где мы? отображает в заголовке, текущий таск и активный фрейм, упрощает поиск формочек |
Вспомогательные команды для AgentNG |
Вспомогательные команды для AgentNG
* DebugLog?enable=1 - статус и включение/выключение отладочных логов,
* AutoUpdate - запуск автообновления
* BugReport - показ списка файлов багрепортов за 4 дня, ?all=1 все имеющиеся файлы, и их скачивание, требует авторизации agbis временным ключем |
Файлы проектов |
Файлы проектов
Проекты Delphi состоят из множества файлов разных типов, основные:
pas - исходный код Pascal
dfm - файл с описанием формы
dcu - откомпилированный модуль |
Модуль для обновлений UpdateMe |
Модуль для обновлений UpdateMe
Путь до последней версии модуля тут. Данный модуль подписан нашим сертификатом Agbis что бы на него не ругалась Windows |
Многопоточность |
Многопоточность
Современные программы не могут работать в одном потоке. Один поток в случае с Delphi – это главный поток программы, который обрабатывает все взаимодействие с пользователем, отрисовку |
Коды ответов агента |
Коды ответов агента
Формат кодов ответов Агента.
где
error - состояние обработки запроса агентом. Принимает значения:
* 0 - Успешный ответ; |
Правильные коммиты во все ветки разработки в Мету. |
Правильные коммиты во все ветки разработки в Мету.
Настройка подключений
В первую очередь нужно настроить мету. Для этого нужно правильно указать пути к базовым базам всех веток. |
Зачем параметрам нужен const |
Зачем параметрам нужен const
отсутствие const приводит к
* Увеличению генерируемого ASM кода: скрыто генерируется защитный блок try finally. На небольших процедурах количество паразитного кода может легко превзойти количество полезного. |
JSONHelpers.pas или "Разделка JSON, без брызг и боли..." |
JSONHelpers.pas или "Разделка JSON, без брызг и боли..."
Как пилит JSON мальчик (реальный пример!)
procedure THimstat.DoAddScriptsForRepl(json: string; out Str: String);
var
nSessionID: string;
json_o: TJSONObject;
json_SessionIDP: TJSONPair;
begin
try
json_o := TJSONObject.ParseJSONValue(json) as TJSONObject;
if not Assigned(json_o) then
begin
Str := 'Не Json строка!';
Exit;
end;
json_SessionIDP := json_o.Get('SessionID');
if json_SessionIDP = n… |
Страничка в разработке |
Страничка в разработке
Но это не точно...
JSONHelpers.pas или "Разделка JSON, без брызг и боли..."
Зачем параметрам нужен const? |
Вычитка кода (Code Review) - как сделать |
Вычитка кода (Code Review) - как сделать
1. Оформление кода
* Отступы
* Пробелы
* Читабельность
* Понятное название ф-ий и переменных
2. Странности в коде |
Работа с командами для АМО |
Работа с командами для АМО
----------
Оглавление
----------
Авторизация. Login
Команда: …/api/?Login
Общая команда авторизации пользователем Агбис химчистки (в программе Агбис химчистка, меню «Справочники»-«Пользователи»). |
Все виды настроек |
Все виды настроек
Глобальные настройки
Глобальные настройки собираются автоматически в реальном времени. Для того чтобы добавить глобальную настройку |
Работа в канбане и Б24 |
Работа в канбане и Б24
Канбан - это инструмент для организации работы, распределения и контроля выполнения задач в рамках команды.
Просмотреть все доступные канбаны можно по ссылке |
Создание справочников |
Создание справочников
Создание Мета объекта
В Мете выбираем нужный нам раздел, например Химчистка > Справочники. В нём создаём метаобъект, задаём ему название. Далее в запросе данных этого метаобъекта вписываем необходимый нам запрос, который должен ссылаться на уже созданную или на предварительно созданную таблицу в базе.… |
Настройка рабочего места |
Настройка рабочего места
В этом разделе будут описаны моменты, связанные с настройкой рабочего места программиста - какие программы нужны, как их настроить, какие нюансы и т.д. |
Билд Агента |
Билд Агента
Отклонение от данной инструкции повлечет замечание от руководителя!
Билды агента разрешено делать только Андрею (если билд делается после рабочего времени Новокузнецка) и Анатолию (если билд агента делается в рабочее время Новокузнецка) |
Конфигурирование линий с включенным параметром exctention-in-contract |
Конфигурирование линий с включенным параметром exctention-in-contract
Разобран пример конфигурирования линии, соответствующий форме:
Конфигурация FreeSWITCH находится в файле: /usr/local/freeswitch/conf/freeswitch.xml |
Установка CEF4 |
Установка CEF4
* Скачать архив \<\\WebDAV\Share55\Develop\cef4>.rar
* Разархивировать его в папку E:\_ComponentsXE
* В Tools-Options-Library добавить путь E:\_ComponentsXE\CEF4\source
* Установить пакет из E:\_ComponentsXE\CEF4\packages\CEF4Delphi.dproj |
Выключение Delphi доступа в интернет |
Выключение Delphi доступа в интернет
Delphi нет нет, но лезет в интернет за разным, передает сведения о нас. Очень не хочется, чтобы это происходило.
Поэтому выключаем доступ для Delphi всех версий в интернет. |
BuildStation |
BuildStation
Для создания билдов используется отдельная виртуальная машина. Билды создаются с помощью задач xStarter, веб интерфейс доступен по адресу: |
Реализация запуска клиентов |
Реализация запуска клиентов
Доработка списка клиентов в РС для отдела запуска
1 Добавлено на форме «Менеджер проектов» TMainForm
1.1. Добавлена вкладка «Клиенты» \ «Запуск клиентов»
1.2. При переключении на вкладку «Запуск клиентов» выполняется загрузка данных для этой вкладки (actDeployClientsLoad)… |
Тест команд AgbisAgent |
Тест команд AgbisAgent
Проект E:\_Projects\AgbisTest\AT_AgentCmd\AT_AgentCmd.dpr
Программа предназначена для автоматического тестирования выпускаемых версий AgbisAgent. |
Реализация подключения БДП к ЦБД Реализация подключения к центральной базе данных |
Реализация подключения БДП к ЦБД Реализация подключения к центральной базе данных
Реализация подключения приемного пункта к центральной базе данных через агент. |
Updater Агбис.Обновление Реализация |
Updater Агбис.Обновление Реализация
Проект Updater Агбис.Обновление
E:\_Projects\Agbis.dxe\Updater\Updater.dpr
* TFIBSQLExecuter Исполнение SQL
* TFIBSQLExecuter Игнорирование ошибок исполнения SQL
Параметры командной строки
* AliasDB – алиас БД из agbis.xml (если есть, то должен быть |
FIBSQLExecuter Игнорирование ошибок исполнения SQL |
FIBSQLExecuter Игнорирование ошибок исполнения SQL
Подсистема TFIBSQLExecuter Исполнение SQL
При обновлении скриптами изменяется структура базы: добавляются или удаляются поля таблиц, меняются процедуры, триггеры и другие элементы.
Часто изменения вносятся вручную, например, добавляется новое поле, тогда в обновлении скриптом это поле будет добавляться повторно и вызовет ошибку.
Такие ошибки не должны останавливать процесс обновления. Для этого сделана функция TFIBSQLExecuter.IgnoreError, к… |
Ветвление в Mercurial |
Ветвление в Mercurial
Навеяно статьей:
Mercurial, как и Git, позволяет очень удобно работать с ветками. В терминологии Mercurial ветки - это Branches. Далее по тексту везде под веткой понимается именно branch. Использование веток позволяет хранить разный код одних и тех же файлов и легко переключаться между ними. Ну и для полного счастья в Mercurial присутствуют средства слияния веток.… |
Расчет "Задолженность общая" |
Расчет "Задолженность общая"
Проект "AnaliticDB"
Расчет данных выполняется в процедуре TMain.CalcData
TMain.CalcData
* Определяется период расчета: (rcParam.DateCalcBegin, rcParam.DateCalcEnd) |
Загрузка таблицы A_ORDERS |
Загрузка таблицы A_ORDERS
Проект "AnaliticDB"
Импорт данных выполняется в процедуре TMain.LoadData
TMain.LoadData
* Определяется период загрузки: с даты следующего дня после последней загрузки (rcParam.DateLoadLast) по текущую дату. Если это первая загрузка, то добавляется период для импорта до даты первой загрузки (rcParam.DateCalcFirst).… |
Загрузка таблицы A_SALES |
Загрузка таблицы A_SALES
Проект "AnaliticDB"
Импорт данных выполняется в процедуре TMain.LoadData
TMain.LoadData
* Определяется период загрузки: с даты следующего дня после последней загрузки (rcParam.DateLoadLast) по текущую дату. Если это первая загрузка, то добавляется период для импорта до даты первой загрузки (rcParam.DateCalcFirst).… |
Загрузка таблицы A_PAYMENTS |
Загрузка таблицы A_PAYMENTS
Проект "AnaliticDB"
Импорт данных выполняется в процедуре TMain.LoadData
TMain.LoadData
* Определяется период загрузки: с даты следующего дня после последней загрузки (rcParam.DateLoadLast) по текущую дату. Если это первая загрузка, то добавляется период для импорта до даты первой загрузки (rcParam.DateCalcFirst).… |
AllCP’sByPeriod Реализация |
AllCP’sByPeriod Реализация
Проект «AnaliticDB» |
Мониторинг предупреждений Delphi |
Мониторинг предупреждений Delphi
E:\_Projects\AgbisTest\AT_DelphiWarnings\AT_DelphiWarnings.dpr
Предназначен для мониторинга предупреждений компилятора Delphi и распределению работ среди программистов. |
Команды API трехзвенки Агента |
Команды API трехзвенки Агента
Команды предназначены для операций с базой данных, через промежуточное звено. Трехзвенка в нашем случае: клиентское приложение |
API-функция GetReplPrms |
API-функция GetReplPrms
Используется в программе ReplIn, для получения параметров, которые используются при настройке репликации.
Команда GetReplPrms выполняет те же задачи, что и команда GetReplParams. |
API-функция GetReplParams |
API-функция GetReplParams
Используется в программе ReplIn, для получения параметров, которые используются при настройке репликации.
Команда GetReplParams выполняет теже задачи, что и команда GetReplParams. |
API-функция IsDbActive |
API-функция IsDbActive
Проверяет в базе данных данных PC статус учетной записи базы данных подразделения.
Возвращает
* код ошибки равный нулю и REP_ID в случае упешной идентификации. |
TFIBSQLExecuter Исполнение SQL |
TFIBSQLExecuter Исполнение SQL
TFIBSQLExecuter предназначен для исполнение SQL-скриптов.
В процессе исполнения анализируется статус выполнения запроса: |
Реализация создания нового подразделения |
Реализация создания нового подразделения
Объект TCopyDep из unit rCopyDep служит для создания и настройки новой базы данных подразделения.
Параметры TCopyDep |
Тестирование репликационных параметров БД |
Тестирование репликационных параметров БД
Скрипты для проверки значений параметров
Проверка таблицы DEPS
deps
Глобальные настройки
Для просмотра |
Проверка скрипта |
Проверка скрипта
Проект Менеджер проектов
После сохранения скрипта на форма «Скрипт» в «Менеджере проектов» запускается проверка скрипта.
«»
Последовательность операций после нажатия кнопки |
Реализация импорта исключений |
Реализация импорта исключений
Блок Мониторинг исключений.
Агент «Менеджера проектов» загружает данные в БД «AgbisLog.fdb»
* Для импорта исключений в настройках |
Реализация отправки исключений |
Реализация отправки исключений
* Исключения записываются в «Локальный журнал исключений» mst_exceptions.
* Объем информации определяется настройками EurekaLog (В Delphi Project \ EurekaLog options |
Реализация добавления обязательных полей для агента |
Реализация добавления обязательных полей для агента
Сейчас проверка наличия полей разбросана по исполняемым модулям.
* TTasksMainForm.CheckDBData - проверяет и автоматически добавляет поля в базу данных, однако пополнение списка выполняется программно, и, следовательно, требует обновления агента.… |
Запуск команд в Агенте |
Запуск команд в Агенте
Процессы Агента запускаются в модуле GeneralDM.
В модуле GeneralDM
Декларирование функции обработки
Декларирование функции обработки ключа WEB-сервером |
Идентификация базы данных |
Идентификация базы данных
В случае работы основной базы данных и ее копии возникаю проблемы с потерей данных.
В связи с дублированием ключей в таблицах данных при репликации записи с копии перетирают данные с основной базы. |
Запуск процессов в Агенте |
Запуск процессов в Агенте
Процессы Агента запускаются в модуле TasksMain.
Для интегрирования нового процесса в список запускаемых требуется |
Типовые задачи |
Типовые задачи
Запуск процессов в Агенте
Запуск команд в Агенте
TFIBSQLExecuter Исполнение SQL
Билд Агента
Билд "сабов" Агента
Назад |
Настройка Delphi |
Настройка Delphi
* Установка AgbisControls
Установка AgbisControls
* Удаляем из Delphi старый AgbisControls и AlphaSkins
* Удаляем папку e:\_ComponentsXE\AlphaSkins
* Распаковываем архив из \ |
Реализация мониторинга сертификатов |
Реализация мониторинга сертификатов
Таблицы данных
certif
users
Операции
* Контроль срока действия сертификатов
* Рассылка уведомлений о просроченных сертификатах |
Создание базы данных для нового подразделения через DBMeta |
Создание базы данных для нового подразделения через DBMeta
В DBMeta на форме Создание нового подразделения (TCopyDepForm) и объекта TCopyDep выполняются следующие операции: |
Настройка подключения БДП к ЦБД |
Настройка подключения БДП к ЦБД
Для корректной настройки копии базы данных и настройки репликации требуется доступ к центральной базе данных. |
Создание репликационной структуры для всей базы через DBMeta |
Создание репликационной структуры для всей базы через DBMeta
Внимание! Если вам нужно добавить репликацию только для одной таблицы (не для всей базы), |
Реализация репликации |
Реализация репликации
Руководство разработчика
1. Если запись исправлена на центральной базе данных, то она рассылается на все приемные пункты
2. Если запись исправлена на приемном пункте А, то |
Автодокументирование программ |
Автодокументирование программ
Задача
Создание описания модулей на основе элементов текста модулей программных модулей с помощью pasdoc.exe. |
Комбинации клавиш в Delphi |
Комбинации клавиш в Delphi
Клавиши редактора в Delphi
Ctrl + J Выбор code-template. Вставка шаблона кода. Можно вставлять типовые шаблоны, а можно написать свои собственные. При нажатии Ctrl + J, будет показан список шаблонов. Либо можно набрать несколько букв из имени шаблона, чтобы ограничить выбор, либо полное имя шаблона и нажать комбинацию - шаблон сразу вставится.… |
GUI Приёмки |
GUI Приёмки
Многозадачность
Различные сценарии работы выполняются в отдельных задачах (Task). Задачи между собой никак не взаимодействуют, не получают уведомлений о завершении. Между задачами можно переключаться через меню задач.
Работа с задачами реализована в модуле MultiTaskInterface.pas, в объекте TaskManager.… |
Сетевой протокол Приёмки |
Сетевой протокол Приёмки
JSON-RPC
Для сетевого взаимодействия Приемки и Агента был выбран протокол JSON-RPC
Главное отличие JSON-RPC от RESTApi - это возможность |
URL |
URL
URL, которые используются в программном коде:
Агент для менеджера проектов - синонимы
http://offrepl.agbis.co - Updater
https://cl.agb.is - AgbisAgent
192.168.192.55:84 - ProjectsControl3
Список обращений
https://www.agbis.ru/support/ - Him
Сайт с обновлениями ПО
https://www.agbis.ru/Download/Updates/ - Him
Номер последней доступной версии
https://www.agbis.ru/Download/Updates/UpdatePack_vers.txt - Him
Информация о клиенте (проверка лицензии клиента)
https://cl.agb.is/cl… |
Технологии |
Технологии
Мобильные приложения
GUI Приёмки
Сетевой протокол Приёмки
GUI
Mobile GUI наследование
Mobile GUI вычисления |
Компоненты Delphi (VCL) |
Компоненты Delphi (VCL)
VirtualTree
Одни из самых классных контролов для построения деревьев и списков. Статья по использованию на русском:
Документация Virtual Tree
OmniThreadLibrary |
Оформление кода Pascal |
Оформление кода Pascal
Был соблазн написать именно про оформление кода Delphi, но мы изредка пишем в том числе и на Lazarus, поэтому речь именно про Pascal. |
Краткая памятка о том, как проектировать формы в программах Agbis |
Краткая памятка о том, как проектировать формы в программах Agbis
Каждая новая форма может быть или наследницей от TUniForm или не быть наследницей. В первом случае на новую форму автоматически добавляется панель нижнего края с кнопками ОК, Отмена и т.д. Наследуются также методы из базового класса TUniForm.… |
Реализация системы репликации |
Реализация системы репликации
Ключи
У всех систем репликации есть некоторый базис, который позволяет отличить записи одних подразделений от записей других подразделений. Нельзя допускать такого, чтобы могли создаваться записи с одинаковыми первичными ключами в разных подразделениях одновременно.… |
Закрытые команды API |
Закрытые команды API
!!!Закрытые команды API. Запрещается передавать клиентам или кому либо, кроме работников Компании АГБИС.
Квитанция мешка. ReceiptOnlineBag |
Регламент создания/изменения API функций |
Регламент создания/изменения API функций
----------
Общий регламент
Мы распространяем наш API для все большего и большего количества клиентов. |
Mercurial |
Mercurial
Из WikiPedia Mercurial :
Mercurial (с англ. — «ртутный, подвижный»), он же Hg (от обозначения химического элемента ртути) — кроссплатформенная распределённая система управления версиями, разработанная для эффективной работы с очень большими репозиториями кода. В первую очередь она является… |