1. Наполнение платформы программами на внутреннем языке.
Зачем нужены программы на внутреннем языке? Прикладные решения создается путем наполнения платформы программами на внутреннем языке. Программы на внутреннем языке могут различными способами взаимодействовать с платформой. В простейшем случае платформа осуществляет запуск программы и более не взаимодействует с ней. Платформа может передавать значения входных параметров программам на внутреннем языке и получать значения выходных параметров.
1.1. Простой запуск программ.
Простой запуск программ на внутреннем языке происходит из пунктов меню или из иерархически организованного списка программ. Программы, предназначенные для простого запуска, не принимают параметров или принимают единственный входной параметр типа строка. Значение этого строкового параметра может быть задано в параметрах пункта меню или иерархического списка.
Самая простая программа может быть записана следующим образом:
СООБЩЕНИЕ(«Самая простая программа»)
Бухгалтерская программа QuickBooks
Простая программа с получением строкового параметра будет выглядеть не намного сложнее:
ВЫЧИСЛИТЬ(СТРОКА: парам)
СООБЩЕНИЕ(«Принят параметр: » + парам)
Получение параметра позволяет организовывать похожие действия в виде одной программы.
С помощью функции ВЫПОЛНИТЬ можно осуществить запуск одной программы из другой:
На платформе Инфо-Бухгалтер 8 простой запуск программ известен как запуск ibx-программ из меню и с помощью функции СТАРТ_ПРОГ. Специальные случаи вызова бланка или типовой операции из меню в Инфо-Бухгалтер 10 отсутствуют, есть просто запуск программ. Если программа показывает бланк — это бланк, если таблицу отчета — то отчет и т.д.
1.2. Обработчики на сервере и клиентском месте.
Платформа Инфо-Бухгалтер 10 содержит широкие возможности настройки своего поведения, основанные на программировании обработчиков различных действий. Такие действия можно разделить на две группы: клиентские и серверные. Инфо-Бухгалтер 10 использует трехзвенную архитектуру. Сервер — это отдельная программа, которая может в процессе своей работы исполнять программы на внутреннем языке.
Обработка различных действий построена на обмене параметрами между платформой и программой-обработчиком на внутреннем языке. Как правило, платформа предоставляет обработчику входную информацию, а обработчик должен принять решение или произвести вычисление, о результатах которого сообщает платформе в выходных параметрах.
В клиентской программе многие обработчики работают по аналогии с диалоговыми окнами. На вход им подается информация об элементе списка (элементе справочника, операции из журнала и т.п.), выбранного пользователем. Программный код обработчика может изменить редактируемую информацию и передать ее обратно платформе с признаком сохранения или отмены.
Это в большой степени напоминает редактирование информации в диалоговом окне с кнопками «ОК» и «Отмена». Обычно такие программы-обработчики как раз показывают диалоговые окна, внешний вид и возможности которых ориентированы на конкретную прикладную задачу. Уровень специализации таких диалоговых окон не оставляет платформе ни единого шанса, заменить их стандартным диалогом без использования обработчиков на внутреннем языке. Подробнее об клиентских обработчиках журналов и справочников см. раздел 6.
СОЗДАЁМ КАЛЬКУЛЯЦИЮ И ТЕХКАРТУ на мясное блюдо
Другие клиентские программы-обработчики отвечают за отображение информации. Их работа — формирование текста расчетных столбцов, расчетных таблиц, задание графического оформления и т.п. Какие бы изощренные встроенные способы отображения информации ни предлагала платформа, но с помощью программирования обработчиков можно сделать неизмеримо больше.
В серверной программе обработчики используются для обеспечения сложных взаимосвязей в базе данных и выполнения сложной обработки при фильтрации и группировке данных. Проверка записываемых данных и поддержание актуальности сложных взаимосвязей осуществляется серверными алгоритмами модификации. Эти обработчики вызываются в контексте транзакции изменения тех данных, к которым они привязаны. Алгоритмы модификации вызываются при любых изменениях данных, в т.ч. сделанных с помощью вызова функций внутреннего языка. Подробнее о серверных обработчиках см. раздел 5.
В Инфо-Бухгалтер 8 есть обработчики на вход/выход и для замены стандартных диалогов операции и счета — это аналогия некоторых клиентских обработчиков. Отображение информации в стандартных окнах в Инфо-Бухгалтер 8 никак не программируется, а при изменении данных ничего не вызывается.
2. Программа на внутреннем языке.
В этом разделе вкратце рассматриваются ступени создания программы на внутреннем языке. Также дается обзор инструментария для быстрого создания и организации проектов.
2.1. Проект.
Проект — это набор данных, описывающий, как и из чего создается исполняемый код программы на внутреннем языке. Проект включает список исходных файлов, параметры компилятора, инструкции размещения исполнимого кода и др. Физически проект хранится в файле с расширением *.ibp. Создание проекта осуществляется на основе шаблона см. подраздел 2.4.
В Инфо-Бухгалтер 8 нет файлов проектов. Неявно роль проектов исполняют бланки. В файле бланка хранится информация о режиме интерпретатор/компилятор и опции компиляции. Для исходных файлов (*.src) и типовых операций индивидуальное хранение опций компиляции не предусмотрено.
2.2. Основной файл и библиотеки.
Один из исходных текстов проекта является основным — с него начинается компиляция. Такой файл имеет расширение *.ipp. Основной файл должен содержать точку входа в программу, обозначаемую ключевым словом ВЫЧИСЛИТЬ:
После ключевого слова ВЫЧИСЛИТЬ и до ключевого слова КОНЕЦ располагаются операторы тела программы. Эти операторы могут обращаться к переменным и функциям, объявленным вне тела, например до слова ВЫЧИСЛИТЬ. Если таких функций и других объявлений много или они используются в различных проектах, то их выносят в отдельные файлы, называемые библиотеками. Библиотеки являются файлами исходного текста с расширением *.ibl. Подключение библиотек осуществляется с помощью ключевого слова ИСПОЛЬЗОВАТЬ.
Простой пример показывает принцип взаимодействия основного файла и библиотеки:
ФУНКЦИЯ ЧИСЛО: Квадрат(ЧИСЛО: арг)
РЕЗУЛЬТАТ = арг * арг
КОНЕЦ_ФУНКЦИИ
// основной файл: Пример.ipp //////////
ИСПОЛЬЗОВАТЬ(«Арифметика.ibl»)
В Инфо-Бухгалтер 8 используется сходный способ организации исходного кода в виде библиотек. Тело программы между ключевыми словами ВЫЧИСЛИТЬ и КОНЕЦ сохранилось лишь в типовых операциях. Для бланков телом программы является формульный раздел, а для файлов *.src – все содержимое файла. В отличие от Инфо-Бухгалтер 8, в Инфо-Бухгалтер 10 применять ключевое слово ИСПОЛЬЗОВАТЬ можно только вне тела программы или функции.
2.3. Компиляция исполнимого файла.
Компилятор обрабатывает основной файл и все подключенные библиотеки, при этом генерируется исполнимый байт-код. Исполнимый код записывается в файл с расширением *.ibx. Выполнением программы на внутреннем языке является обработка инструкций байт-кода специальным проигрывателем — виртуальной машиной.
В зависимости от настроек компилятора в исполнимом коде может содержаться или отсутствовать отладочная информация. Без отладочной информации в коде невозможна пошаговая отладка и отображение имен переменных, функций и т.д.
После успешной компиляции платформа, если того требуют настройки проекта, может сохранить исполнимый код в базу данных или в файл на сервере.
Компиляция может осуществляться несколькими способами:
- для открытого в среде разработки проекта
- для проекта в составе открытого пакетного проекта
- при вызове функции ЛКФ_КОМПИЛЯЦИЯ для обычного или пакетного проекта.
В Инфо-Бухгалтер 8 общий принцип создания и исполнения байт-кода такой же. Для бланков и типовых операций компиляция выполняется автоматически при устаревании или отсутствии исполнимого файла. В текущей версии Инфо-Бухгалтер 10 такой режим отсутствует. Задача массовой компиляции проектов в Инфо-Бухгалтер 10 решается созданием пакетных проектов.
2.4. Шаблоны проектов.
Шаблоны проектов — это специальные текстовые файлы, на основе которых среда разработки генерирует файл проекта и исходные файлы с заготовками кода. Например, шаблон «Диалог» создает проект с диалоговым окном, содержащим кнопки «ОК» и «Отмена». Простейший шаблон называется «_По умолчанию» и создает исходный файл с пустым телом программы ВЫЧИСЛИТЬ/КОНЕЦ.
Шаблоны широко используются при создании проектов программ-обработчиков. Такие шаблоны создают тело программы со списком параметров, соответствующих типу обработчика. В настройки проекта добавляются необходимые опции. Программисту остается реализовать тело программы.
В Инфо-Бухгалтер 8 нет аналогов шаблонов проектов. Шаблоны документов хорошо известны по офисным программам.
2.5. Пакетные проекты.
Для логической группировки обычных проектов используется специальный тип проектов — пакетный. Физически пакетный проект представлен файлом с расширением *.ibw. Он содержит список проектов: обычных или пакетных. Таким образом, можно организовать логическую иерархию проектов путем вкладывания пакетных проектов нижнего уровня в пакетные проекты верхнего уровня.
Основная польза от пакетных проектов — это групповая компиляция. Причем компиляцию можно проводить с той степенью избирательности, с какой построена иерархия пакетных проектов. Возможность программного запуска компиляции открывает возможности для автоматического обновления исполнимого кода прикладной конфигурации.
В Инфо-Бухгалтер 8 есть пакетная компиляция всех бланков/типовых операций/исходных текстов и бланков с избирательностью по разделу. Пакетная компиляция запускается только вручную. Компиляция «по требованию» снимает остроту проблемы, но переносит момент компиляции с этапа начального конфигурирования/обновления на момент работы конечного пользователя.
3. Создание диалоговых окон.
Диалоговые окна — основное средство взаимодействия программы с пользователем. Платформа предоставляет библиотеку элементов пользовательского интерфейса (GUI), на основе которой можно строить диалоговые окна от простейших до весьма сложных. Работу с диалоговыми окнами обеспечивает модуль FC. Об использовании элементов пользовательского интерфейса в печатных формах см. раздел 4.
Кроме возможности создания произвольных диалоговых окон, платформа позволяет вызывать некоторые стандартные диалоговые окна Windows: диалоги сообщений и вопросов (message boxes), диалоги выбора файла, папки, шрифта, цвета.
Также платформа предоставляет специальные диалоги для отображения массивов данных. О вызове специальных диалогов платформы см. раздел 6.
3.1. Представление форм в исходном тексте.
Для диалоговых форм (а также бланков и, отчасти, табличных форм, см. раздел 4) внешний вид сохраняется в исходном тексте. Поэтому создать внешний вид любого диалога или бланка можно вручную в текстовом редакторе. Однако наглядность и удобство такого способа оставляет желать лучшего. Наглядное редактирование и возможность сохранения изменений в исходный текст предоставляет редактор форм (см. подраздел 3.2). Тем не менее важно понимание того, как формы представляются во внутреннем языке и как сделать руками то, что делает автоматически редактор форм.
Задание внешнего вида форм и элементов управления построено на наследовании и задании значений полей. Значение любого типа в языке имеет состояние по умолчанию. Например, строковое значение по умолчанию равно «», а значение типа дата — 01.01.2001. Для объектных типов данных также имеется понятие значения по умолчанию, которое складывается из значений всех его полей. Причем значение строкового поля в составе описания объектного типа может отличаться от «». Поясним сказанное на примере простого типа Шрифт (выдуманного и упрощенного):
СТРОКА: имя = «Arial»;
ЧИСЛО: размер = 8;
ЛОГИКА: жирный;
Значения типа Шрифт будут создаваться с заданными значениями полей. Это начальные значения полей или, иначе говоря, значения по умолчанию. Их совокупность составляет значение по умолчанию для объектного типа. Для поля «жирный» не задано явно значение и будет использоваться значение по умолчанию для логического типа, т.е. НЕТ.
В производном объектном типе можно заменить некоторые или все значения полей:
ТИП ЖирныйШрифт(Шрифт)
ЛОГИКА: жирный = ДА;
Здесь объявляется новый объектный тип ЖирныйШрифт, который наследует поля типа Шрифт. Для поля «жирный» заменяется значение по умолчанию с НЕТ на ДА. В результате при создании значения типа ЖирныйШрифт поля будут иметь следующие значения:
Источник: www.ib.ru
Программа учета в торговле на базе программного конструктора
В своей первой статье я довольно сумбурно и весьма кратко изложил идею «программного конструирования». Краткое вступление, пару слов о первичных элементах механизма и ссылки на скачивание программы – понятно, что из этого судить об идее практически невозможно. Поэтому я принимаю общую канву критики, что это – новый велосипед.
И для того, чтобы идея была понята на минимальном уровне, я решил привести самый простой пример: как за 30 минут создать проект, который может использоваться частным предпринимателем или малой организацией для ведения управленческого учета в торговле.
AlexeyTeacher/home_money
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Switch branches/tags
Branches Tags
Could not load branches
Nothing to show
Could not load tags
Nothing to show
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Cancel Create
- Local
- Codespaces
HTTPS GitHub CLI
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more about the CLI.
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
Latest commit message
Commit time
readme.md
Реализована попытка создать легкую программу для ведения домашней бухгалтерии. При старте программы открывается приветственное окно. После нажатия кнопки ‘ОК’ начинается работа программы. По умолчанию для пользователя заведен «основной» счет. При желании можно добавить еще.
Суть программы заключается в добавлении доходов и расходов, и проведении небольшой аналитики в разделе «Отчеты». Все расчеты производятся в рублях.
База данных создана в SQLite называется data.db В случе проблем резервная копия пустой базы данных находится в папке reserve
Дизайн интерфейса создан при помощи QT Designer. Оригинальный файл называется design_home_money.ui. Файл с дизайном был перекодирован в python с помощью pyuic в файл design.py. В процессе работы над программой файл был немного изменен вручную.
Программа написана на Python 3.8 библиотеки для запуска находятся в файле requirements.txt.
Иконки в программе созданы автором Pixel perfect с www.flaticon.com.
Логотип отрисован автором программы.
Для удобства запуска программа была собрана в pyinstaller в один EXE-файл. Файл находится в папке dist.
- спроектировать базу данных
- продумать логику программы
- разработать дизайн приложения
- реализовать идеи в коде
Источник: github.com