Конструктор интерфейса базы данных

Обновлено: 02.05.2024

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

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

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

Если штатных средств программы недостаточно, вы можете воспользоваться расширениями и скриптами. В программу встроен скриптовый движок RemObject Pascal Script, который способен реализовать любую логику. Ваши возможности практически неограничены. Скрипты позволяют управлять почти любым элементом интерфейса программы, изменять внешний вид и поведение стандартных окон, создавать свои варианты окон, управлять другими приложениями с помощью OLE Automation, подключать DLL-библиотеки, создавать расширения и т. д. Вы можете составлять полноценные SQL-запросы к базе. К вашим услугам вся мощь Firebird SQL.

В рамках своих возможностей, DataExpress действительно позволяет вывести разработку приложений баз данных на новый уровень. Кроме того, что разработчику доступно визуальное конструирование форм, программа еще и сама увязывает интерфейс со структурой базы данных. Разработчику не надо задумываться о том, как связать источник данных с той или иной формой, не надо прописывать SQL-выражения с многочисленными join-ами. Формы уже имеют готовый набор команд для манипулирования и поиска данных. В программу уже встроены механизмы разрешения конфликтов при одновременном редактировании записи. Есть готовый механизм разграничения доступа. База данных без всяких изменений доступна в сети (нужен Firebird).

Приложение имеет встроенный дизайнер, в котором собственно и разрабатывается приложение базы данных. Это позволяет за считанные минуты внести изменения в базу и продолжать работу. В конструкторе предусмотрен механизм обновления конфигурации базы – импорт проекта.

Для кого предназначен DataExpress? Для разработчиков - людей, увлекающихся учетом и базами данных. И для этого совсем необязательно быть программистом.

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

Большинство реляционных баз данных, за исключением MS Access, состоят из двух отдельных компонентов: «back-end», где хранятся данные и «front-end» — пользовательский интерфейс для взаимодействия с данными. Этот тип конструкции достаточно умный, так как он распараллеливает двухуровневую модель программирования, которая отделяет слой данных от пользовательского интерфейса и позволяет сконцентрировать рынок ПО непосредственно на улучшении своих продуктов. Эта модель открывает двери для третьих сторон, которые создают свои приложения для взаимодействия с различными базами данных.

В Интернете каждый может найти много продуктов для разработки и администрирования баз данных MySQL. Мы решили собрать 10 самых популярных инструментов в одной статье, чтобы вы смогли сэкономить свое время.

1. Workbench

Первое место, по праву принадлежит инструменту Workbench (разработка компании Sun Systems/Oracle), который может работать на платформах Microsoft Windows, Mac OS X и Linux. Workbench объединяет в себе разработку и администрирование баз данных и является преемником DBDesigner4.

MySQL Workbench распространяется под свободной лицензией — Community Edition и с ежегодной оплачиваемой подпиской — Standard Edition. Последняя включает в себя дополнительные возможности, которые способны существенно улучшить производительность, как разработчиков, так и администраторов баз данных.

image

Что делает Workbench популярным?

  • возможность представить модель БД в графическом виде, а также редактирование данных в таблице;
  • наличие простого и функционального механизма по созданию связей между полями таблиц, среди которых реализована связь «многие-ко-многим» с возможностью создания таблицы связей;
  • функция Reverse Engineering позволяет восстанавливать структуру таблиц и связей из той, которая была реализована ранее и хранится на сервере БД;
  • наличие редактора SQL-запросов, который дает возможность при отправке на сервер получать ответ в табличном виде и другие возможности.

2. Navicat

Второе место занимает Navicat (разработка компании PremiumSoft CyberTech Ltd) — инструмент для разработки и администрирования баз данных, который работает на любом сервере MySQL, начиная с версии 3.21. Для MySQL, Navicat доступен для работы на платформах Microsoft Windows, Mac OS X и Linux.

Стоимость продукта варьируется от 199 до 379 долл. США.

image

Что делает Navicat популярным?

3. PHPMyAdmin

PHPMyAdmin — бесплатное приложение с открытым кодом, предназначенное для администрирования СУБД MySQL. PHPMyAdmin представляет собой веб-интерфейс с помощью которого можно администрировать сервер MySQL, запускать команды и просматривать содержимое таблиц и БД через браузер.

Что делает PHPMyAdmin популярным?

  • возможность управлять СУБД MySQL без непосредственного ввода SQL команд;
  • как панель управления PHPMyAdmin предоставляет возможность администрирования выделенных БД;
  • интенсивное развитие;
  • возможность интегрировать PHPMyAdmin в собственные разработки благодаря лицензии GNU General Public License и другие возможности.

4. dbForge Studio for MySQL

dbForge Studio for MySQL — инструмент, представляющий интерес как для пользователей MySQL, так и для разработчиков БД. С его помощью вы сумеете легко автоматизировать рутинную работу и сэкономить время. Сегодня dbForge Studio for MySQL представлен в трех редакциях: Express, Standard и Professional, что позволяет выбрать тот инструмент, который нужен именно вам. Пользоваться dbForge Studio for MySQL можно как коммерческой, так и бесплатной версией.

Существует как бесплатная, так и платная версии, цена последней составляет 49,95 долл. США (стандартное издание ) и 99,99 долл. США (профессиональное издание).

image

Что делает dbForge Studio популярным?

  • наличие средств для централизованного администрирования;
  • инструменты для сравнения БД;
  • визуальный профилировщик запросов;
  • возможность управлять привилегиями пользователей;
  • наличие Дизайнера БД, который позволяет строить визуальные диаграммы;
  • улучшенная работа с проектами БД и другие возможности.

5. HeidiSQL

HeidiSQL — бесплатный инструмент для управления базами данных. Достойная альтернатива PHPMyAdmin, которая позволяет создавать и редактировать таблицы, представления, триггеры, процедура, а также просматривать и редактировать данные. Также HeidiSQL предоставляет возможность экспорта данных как в SQL файл, так и в буфер обмена на других серверах.

Что делает HeidiSQL популярным?

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

6. SQL Maestro для MySQL

SQL Maestro для MySQL — инструмент для администрирования, разработки и управления наиболее востребованных СУБД. Удобный графический интерфейс дает возможность выполнять SQL запросы и скрипты, управлять привилегиями пользователей, экспортировать и создавать резервные копии данных.

В зависимости от выбранной лицензии и варианта использования, стоимость данного инструмента варьируется от 99 до 1949 долл. США.

Что делает SQL Maestro для MySQL популярным?

7. EMS SQL Manager для MySQL

EMS SQL Manager для MySQL — инструмент для разработки и администрирования баз данных, который поддерживает различные функции MySQL и работает со всеми версиями MySQL старше 3.23. С его помощью у вас есть возможность визуально редактировать, импортировать и экспортировать БД, выполнять сценарии SQL, управлять привилегиями пользователей, визуально проектировать базы данных MySQL.

Существует платная и бесплатная версии приложения. Последняя имеет ряд функциональных ограничений. Стоимость платной версии варьируется в пределах 95 – 245 долл. США.

image

Что делает EMS SQL Manager for MySQLпопулярным?

8. SQLyog

SQLyog — один из наиболее мощных инструментов, который сочетает в себе возможности MySQL Administrator, PHPMyAdmin и некоторые другие инструменты для администрирования и разработки баз данных. SQLyog работает на платформах Microsoft Windows, Windows NT. и Linux с помощью Wine.

Доступна как бесплатная, так и платная версия SQLyog. Стоимость платной версии — от 99 до 1499 долл. США (варьируется в зависимости от количества пользователей и лицензии, с поддержкой или без нее).

image

Что делает SQLyog популярным?

9. DBTools Manager

DBTools Manager — приложение для управления данными, с встроенной поддержкой MySQL, PostgreSQL, MSAccess, MSSQL Server, Oracle и других БД. Поддерживаемые платформы: Windows 2000, XP, Vista, 7.

DBTools Manager представлен в бесплатном (Standard) и платном варианте (Enterprise). Стоимость составляет 69.90 долл. США за одну лицензию, при покупке нескольких лицензий предусмотрены скидки.

image

Что делает DBTools Manager популярным?

  • управление базами данных, таблицами;
  • наличие редактора запросов;
  • наличие мастера создания форм и отчетов;
  • возможность импорта и экспорта данных из различных источников, среди которых MSAccess, MSExcel, Paradox, FoxPro, DBF, ODBC таблицы, текстовые и XML файлы;
  • конструктор диаграмм и другие возможности.

10. MyDB Studio

MyDB Studio — бесплатный инструмент для администрирования БД MySQL, который позволяет создавать, редактировать и удалять записи, таблицы и базы данных. Работает исключительно на платформе Windows.

Практически каждый человек сталкивается с ведением какого-либо учета, сбором и анализом данных: от использования таблиц в экселе до работы с данными в клиент-банковском приложении. Повсеместно для такого учета используются различные системы управления базами данных (СУБД).

В статье я хотел бы рассказать о своем пути поиска такой системы.

Сталкиваясь подобными СУБД (клиент-банки, системы ФСЗН, расчетно-кассовые приложения) с точки зрения пользователя, я всегда удивлялся, почему даже крупные компании с достаточными финансовыми возможностями часто не могут реализовать действительно удобный интерфейс в своих приложениях.

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

1С: Предприятие

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


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

Django Admin

После анализа и изучения отзывов я выбрал фреймворк Django с его генератором admin-интерфейсов. При этом пришлось перенести некоторые идеи, заложенные в 1С, на код Python. В итоге получались примерно такие интерфейсы:


Однако, при больших объемах данных стали проявляться недостатки такого подхода.

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

Во-вторых, работать с создаваемыми Django Admin интерфейсами было не достаточно удобно, ввод данных был затруднителен и не оперативен. Хотелось интерактивности хотя бы на уровне 1С, чтобы интерфейс не перегружал страницу каждый раз, когда отправляются данные, а использовал такие технологии, как Ajax или WebSocket.

MySQL, Navicat и другие

В результате пришлось полностью отказаться от использования модуля Django Admin и клиентскую часть писать самостоятельно на JavaScript с использованием вышеуказанных технологий. Так был решен вопрос с интерактивностью, но время, которое стало уходить на создание интерфейсов, было неоправданно большим. Иногда, чтобы сэкономить время, для сбора и анализа данных я использовал чистый Mysql с клиентской частью в виде Navicat. Как оказалось, благодаря триггерам и видам, это не самое плохое решение, а огромное число задач решаются таким образом довольно просто (что не удивительно, ведь, согласно википедии, Mysql и создавался первоначально для решения подобных задач).

Критерии оптимального инструмента разработки СУБД

Со временем я сформулировал для себя перечень субъективных пожеланий к инструменту для разработки СУБД. Он должен:

  • Позволять быстро и автоматически создавать интерфейсы для работы с данными на основе их моделей.
  • Предлагать не только механизмы взаимодействия объектов между собой, но и механизмы отображения этих взаимодействий в интерфейсе.
  • Предоставлять возможность выбора: разрабатывать интерфейс либо его часть быстрее (но менее гибко) либо функциональнее (но медленней).
  • Работать с различными источниками данных.
  • Базироваться на веб-технологиях, быть кроссплатформенным и иметь открытый исходный код.

Ничего, что бы отвечало этим требованиям, я найти не смог. Поэтому решил написать свой фреймворк, решающий поставленные задачи. В качестве основных технологий были выбраны TypeScript в связке с Angular2. При этом фреймворк проектировался так, чтобы его можно было использовать для разработки приложений не только с применением Angular, но и с помощью других JavaScript-библиотек. Хотелось бы поделиться тем, что получилось: возможно, кому-то пригодится.

Структура нового фреймворка

Фреймворк заточен на быстрое создание интерфейсов для СУБД. Он состоит из нескольких частей (модулей). Некоторые могут использоваться отдельно, некоторые — только совместно с остальными.

Модуль core содержит механизмы описания моделей, взаимодействия объектов (записей) данных между собой, механизмы описания запросов к базе данных. Модуль core обращается к источникам данных через модуль backend.

Модуль backend — это прослойка между модулем core и базой (источником) данных. В качестве источника данных может выступать как непосредственно сервер баз данных, вроде SQL, так и прослойка для доступа к моделям других фреймворков, таких как Django или Sequelize.

Модуль model-ui отвечает за генерацию интерфейса: он визуализирует данные, предоставляемые модулем core, используя элементы управления, предоставляемые модулем ui.

Модуль ui содержит базовые элементы управления, которые используются модулем model-ui при генерации интерфейса. Эти элементы могут использоваться также и независимо от фреймворка.

Модуль windows-manager управляет контейнерами для отображения пользовательских интерфейсов. В зависимости от типа windows-manager приложения можно разворачивать как на компьютерах, так и на мобильных устройствах.

Модели и работа с данными

Особенностью фреймворка, в отличие от того же Django, является то, что для описания списков записей и самих записей используются разные типы моделей: ListModel и RecordModel. Такой подход позволяет в списках отображать записи не только от одной, но и от разных моделей, а также нередактируемые строки (являющиеся, например, результатом работы над этими записями).

Хоть фреймворк и содержит необходимые для этого механизмы, описывать модели при разработке приложения не требуется. Модуль backend автоматически формирует внутренние модели на основании тех, которые уже существуют и описаны в других средах (таких как Django, Sequelize, SQL и иные).

У фреймворка есть сходства работы с Django. Например, классы для работы с выборками и запросами (QuerySet и Query) являются эквивалентами одноименных классов Django, адаптированными из кода Python в код TypeScript. Например, для выборки данных из источника данных необходимо написать примерно следующий код:

Ещё одна отличительная особенность фреймворка — поддержка виртуальных полей. Когда изменяется виртуальное поле, оно может менять реальные поля объектов, а когда меняются значения реальных полей, могут изменяться и виртуальные. Что-то похожее есть и в Django, когда через объект мы имеем доступ к данным, не хранящимся в базе данных в том виде, в котором они доступны в этом объекте,— это получение ссылающихся на объект других объектов через свойство xxxxxx_set либо получение доступа к объекту через свойство, когда в базе данных хранится лишь id этого объекта.

На иллюстрации ниже поля product_id и product_name — реальные, а поле product — виртуальное.

Во фреймворке реализована «ленивая загрузка зависимых записей». В отличие от Django, здесь разработчик может решать, в каких случаях этот механизм лучше не применять, а получать данные сразу, тем самым уменьшая количество запросов между клиентом и сервером. Так, в примере выше у продукта product есть поле supplier, которое ссылается на поставщика. По-умолчанию, поставщики будут запрашиваться из базы данных только при обращении к полю product['supplier']. Однако, если вышеприведенный пример модифицировать следующим образом: . getRows('supplier').subscribe(products => ); — то каждый продукт из списка products уже будет содержать данные о поставщике и при обращении к ним не будет происходить запроса к базе данных.

Интерфейс

Для ускорения разработки приложений фреймворк позволяет использовать встроенный интерфейс на базе модулей model-ui и ui. Это удобно, когда нет потребности в специфическом интерфейсе либо необходимо развернуть приложение максимально быстро. Однако, отказавшись от этих модулей, можно использовать и произвольный интерфейс (написанный, скажем, на базе Bootstrap или Angular Material).

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

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

Если рассмотреть поле ввода числа, то в нем, кроме самого числа, можно вводить математические выражения.

Поле выбора другого объекта также имеет несколько способов ввода: оно позволяет выбирать объект как из выпадающего списка по вхождению слов, так и из отдельной всплывающей формы.

Что касается ошибок некорректности ввода, то они отображаются не текстом под элементом управления, а специальным маркером. Такой подход позволяет сохранять плотность элементов формы и не менять их положение при выводе ошибок. Аналогичным образом выводятся ошибки для ячеек таблицы с этим элементом управления.

Взаимодействие интерфейса и данных

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

При изменении записи на форме она автоматически обновляется в списке.

Если же запись одновременно редактируется с разных компьютеров, то у пользователя появляется предупреждение.

В интерфейсе фреймворка также реализован механизм сортировки строк зависимых записей (если это предусмотрено моделью и модулем backend).

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

Планы на будущее

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

Так, например, на данный момент существует backend, который позволяет фреймворку работать только с базой данных MySQL, из-за чего его можно запустить только на Electron. Также не реализован интерфейс для работы на мобильных устройствах и ряд других возможностей.

Ближайшие планы по развитию фреймворка:

  • Реализовать механизмы объединения и группировок в запросах в классе Query.
  • Добавить элементы управления для работы с объединениями и группировками.
  • Разработать backend для преобразования объекта Query в json или xml, а также разработать серверную часть для работы с моделями Django.
  • Реализовать механизм кеширования запросов к серверу данных.
  • Воплотить в жизнь большое количество других идей.

Как попробовать?

Если у вас возникло желание опробовать фреймворк в работе, вы можете посмотреть пример приложения, написанного на нем. Его можно установить следующим образом:

Далее необходимо установить зависимости:

Затем открыть файл app.module.ts и настроить доступ к любой базе данных MySQL, после чего собрать приложение:

и запустить его командой:

Фреймворк доступен на github.

Пример более сложного приложения, в котором реализованы базовые концепты разработки, находится здесь (инструкция по установке в файле README.md).

Титул

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

Ключевые возможности

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

Шаблоны документов. Создавайте шаблоны документов в привычном для вас приложении. DataExpress заполняет шаблон и на выходе получается готовый документ. Поддерживаются следующие популярные форматы: Microsoft Word (*.docx, *.docm, *.xml), OpenOffice Writer (*.odt), OpenOffice Calc (*.ods) или HTML (*.html).

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

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

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

Диаграммы. Для графического представления информации и визуальной аналитики в программе предусмотрены диаграммы. На выбор пользователя имеется несколько представлений: гистограмма, линейная, круговая, линейный график, и график с областями

Работа в локальной сети и сети Интернет. Ядром базы данных служит сервер баз данных Firebird. Благодаря клиент-серверной технологии с базой данных могут работать удаленно по локальной сети или сети Интернет неограниченное число пользователей.

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

Скрипты. Начиная с DataExpress 3 в программу встроен скриптовый движок RemObject Pascal Script. Скрипты для тех кому выражения немного жмут :). Возможности скриптов очень широки: управление почти любым элементом интерфейса программы, управление стандартными окнами, создание своих вариантов окон, автоматизация OLE, подключение внешних DLL-библиотек, полноценные SQL-запросы и т. д.

SQL-запросы. В скриптах можно составлять полноценные выражения SELECT. Вам доступна вся мощь Firebird SQL.

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

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

Титул

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

Выберите подходящий вариант установки DataExpress:




Программа установки



Портативная версия



Linux версия

  • Программа установки (рекомендуется) - установка приложения с помощью мастера. Возможно подключение одним кликом к базам в облаке.
  • Портативная версия - простой zip-архив, достаточно распаковать в нужное место. Работает даже с флешки.

Веб-сервер (альфа-версия)

Установите веб-сервер на компьютер или в облако и работайте с базой данных с любого устройства через браузер. Подробнее.



Windows-версия



Linux-версия

Дополнительное программное обеспечение

Для работы с базой данных в сети требуется установить СУБД Firebird 2.5 на компьютер, выполняющий роль сервера. Более подробную информацию о СУБД смотрите на официальном сайте.



СУБД Firebird 32-bit



СУБД Firebird 64-bit

Версия 22.3.12
1. Исправлена ошибка с выводом на печать последней записи пустого запроса (Выгрузка данных в Word из запроса).
2. Переход на сокращенный вариант нумерации версий программы.

Читайте также: