LibreOffice Base — компонент офисного пакета для работы с базами данных. Он позволяет создать таблицы, связать их, построить форму для ввода и получить отчёт, не написав ни строчки кода. Для небольшого склада, каталога книг, учёта заявок или домашней коллекции этого достаточно. Ниже — практический маршрут от установки до резервной копии, с оговорками, о которых лучше знать заранее.

Чем Base отличается от Calc

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

Обратная сторона — дисциплина: структуру нужно продумать до ввода данных. Зато отчёты и выборки потом собираются за минуты. Для одного плоского списка на сотню строк Calc остаётся проще.

Установка и создание файла

В Debian, Ubuntu и Linux Mint модуль может не входить в базовую поставку. Проверьте пункт Base в меню, а если его нет — доустановите пакет. Мастер отчётов иногда поставляется отдельным расширением.

sudo apt update
sudo apt install libreoffice-base
libreoffice --base

В окне мастера выберите «Создать новую базу данных», затем «Встроенная база данных Firebird». Вариант HSQLDB оставлен для старых файлов. Сохраните файл с расширением .odb: внутри не только данные, но и формы, запросы и отчёты, поэтому это единая точка хранения.

Таблицы в режиме конструктора

Откройте раздел «Таблицы» и создайте таблицу в режиме конструктора. Для каждой колонки задайте имя, тип и признаки. Простые правила: первичный ключ — целое число с автоинкрементом; суммы — DECIMAL, а не FLOAT; даты — DATE; текстовые поля — VARCHAR с разумной длиной. Не храните в одной ячейке несколько значений через запятую: это первый шаг к хаосу.

Типичный набор для учёта заявок: clients (id, name, phone), requests (id, client_id, created_at, status, amount). Поле status можно ограничить списком значений, чтобы исключить опечатки.

Связи и целостность

В окне «Связи» соедините client_id таблицы requests с id таблицы clients. Включите обеспечение целостности и, если нужно, каскадное обновление. После этого Base не даст удалить клиента, у которого есть заявки, и не примет заявку со ссылкой на несуществующую запись.

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

Формы без программирования

Мастер форм создаёт экран для ввода за одну минуту: выберите таблицу, перенесите нужные поля, задайте расположение. Подчинённая форма удобна для схемы «клиент — его заявки»: главная часть показывает запись, табличная — связанные строки. Кнопки навигации и сохранения добавляются автоматически.

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

Запросы: конструктор и SQL

Раздел «Запросы» умеет работать в двух режимах. Конструктор подходит для отбора по условию и группировки: поля перетаскиваются мышью, условия вводятся в строку Criteria. Режим SQL даёт полный контроль над соединениями и подзапросами.

SELECT c.name, COUNT(*) AS cnt, SUM(r.amount) AS total
FROM clients c
JOIN requests r ON r.client_id = c.id
WHERE r.status = 'closed'
GROUP BY c.name
ORDER BY total DESC;

Запрос можно сохранить и использовать как источник для формы или отчёта. Параметрические запросы с :start_date позволяют вводить дату при запуске, не редактируя текст. Строковые значения в SQL заключаются в одинарные кавычки.

Отчёты и экспорт

Мастер отчётов строит печатную форму с заголовком, группировкой и итогами. Если расширения нет, выгрузите результат запроса в Calc: «Файл → Отправить → Calc» или скопируйте набор строк. Для регулярной рассылки удобнее экспорт в PDF из готового отчёта.

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

Импорт из Calc и CSV

Мелкие справочники быстрее завести в таблице и перенести в базу. Подготовьте лист: одна строка заголовков, без объединённых ячеек и пустых строк, даты в формате ГГГГ-ММ-ДД. Затем в Base выберите «Таблицы → Связать таблицы» или используйте мастер импорта.

libreoffice --headless --convert-to csv:"Text - txt - csv (StarCalc)":44,34,76 data.ods

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

INSERT INTO clients (name, phone)
VALUES ('ООО Ромашка', '+7 900 000-00-00');

Многопользовательская работа

Встроенный Firebird рассчитан на одного пользователя: файл .odb нельзя положить в общую папку и открыть с двух машин — получите повреждение или блокировку. Для совместной работы подключите внешний сервер PostgreSQL или MariaDB через JDBC/ODBC и создайте базу на нём.

Тогда .odb становится клиентской частью с формами и отчётами, а данные живут на сервере. Права доступа и резервное копирование настраиваются средствами СУБД, интерфейс остаётся знакомым.

Резервное копирование

Копируйте .odb только при закрытом приложении. Удобно хранить дату в имени и держать несколько поколений. Внутренняя структура — zip-архив, поэтому целостность можно проверить без запуска Base.

cp budget.odb budget-$(date +%F).odb
unzip -l budget-$(date +%F).odb | head

Для внешней СУБД используйте pg_dump или mariadb-dump по расписанию. Проверяйте восстановление на тестовой копии, иначе архив однажды окажется бесполезным. Храните копии не только на том же диске.

Типичные ошибки

  • Хранить суммы в FLOAT и удивляться расхождениям в копейках.
  • Не задавать первичный ключ, полагаясь на уникальность названия.
  • Держать файл на сетевом диске при работе вдвоём.
  • Забывать про резервные копии до первого сбоя.
  • Строить отчёт по несвязанным таблицам и получать декартово произведение.
  • Использовать «умные» форматы дат из локали вместо явного ГГГГ-ММ-ДД.

Итог

Base закрывает нишу небольших учётных систем, где не нужен веб-интерфейс и администрирование сервера. Начните с двух-трёх таблиц, опишите связи, соберите форму для ввода и один отчёт. Если данных станет много или понадобится одновременная работа, переезжайте на PostgreSQL — структура и формы при этом сохранятся. Главное правило простое: данные должны быть нормализованы, а копии — проверены.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.

Поделиться: Telegram ВКонтакте