Документ предназначен для администратора, который обслуживает серверную часть системы «Финансы без проблем» (сокращённо — ФБП), но ранее с этой системой не работал. Здесь описано, как устроен ФБП:Сервер, как его установить, запускать, наблюдать за его работой и действовать в нештатных ситуациях. Описание языка отчётных форм и запросов сюда не входит — администратору оно не требуется.
1. Введение: что это за система к оглавлению
1.1. Назначение системы
«Финансы без проблем» — учётная (бухгалтерская) платформа, существующая с 1995 года. Она построена по схеме «клиент–сервер»: на серверном компьютере работает программа ФБП:Сервер, а на рабочих местах сотрудников — клиентские программы. Все вычисления — регистрация хозяйственных операций, расчёт итогов (баланса), выполнение отчётов — выполняет сервер. Клиентская программа только передаёт серверу поручения пользователя и показывает готовые результаты; сама она никаких учётных вычислений не производит.
Клиентов может быть много (десятки рабочих мест), сервер на одну базу данных — всегда один. На одном серверном компьютере может работать несколько экземпляров сервера, каждый со своей базой (см. п. 2.4).
1.2. Состав серверной части
Администратор работает с двумя программами, которые поставляются и устанавливаются вместе, в один каталог:
| Программа | Назначение |
|---|---|
| Fbp.Server.exe | Сам сервер. Работает как служба Windows (возможен и запуск из командной строки для диагностики). Один экземпляр обслуживает одну базу данных. |
| Fbp.Server.Manager.exe | Менеджер серверов — оконная программа администратора. Позволяет вести список баз, устанавливать и удалять службы, запускать и останавливать серверы, наблюдать их состояние, просматривать журналы и управлять лицензией. Запускается с правами администратора. |
1.3. Главная особенность: обмен через общий каталог, а не через сеть
Сервер и клиенты обмениваются данными не по сетевым протоколам (ни TCP/IP, ни именованные каналы не используются), а через общий файловый каталог, называемый каталогом обмена. Клиент записывает в этот каталог файл-запрос, сервер забирает его, выполняет и записывает файл-ответ, который клиент читает. Чтобы клиенты на других компьютерах могли работать, каталог обмена должен быть доступен им по локальной сети как общий ресурс (сетевая папка).
1.4. Термины, используемые в документе
| Термин | Значение |
|---|---|
| База (база данных) | Вся учётная информация одной организации: план счетов, журналы операций, отчётные формы, список пользователей. Физически — набор файлов в одном каталоге (каталог базы). |
| Каталог обмена | Общий каталог, через который клиенты передают серверу запросы и получают ответы. Традиционное имя — BOX_. |
| Служба (служба Windows) | Зарегистрированный в операционной системе экземпляр сервера с автоматическим запуском. Стандартный способ эксплуатации. |
| Операция | Единица учёта: зарегистрированное хозяйственное действие (проводка с суммой, датой и комментарием). |
| Форма (отчётная форма) | Отчёт или экранный диалог. Хранится в каталоге базы в виде текстового файла *.rpt и выполняется сервером по запросу клиента. |
| Пересчёт баланса | Служебный процесс сервера, обновляющий итоговые остатки и обороты по счетам после изменения данных (см. п. 2.3). |
| Сигнал жизни | Файл _STATUS_.FBP, который работающий сервер регулярно обновляет, сообщая своё состояние (см. п. 6.1). |
2. Архитектура и принцип работы к оглавлению
2.1. База данных — набор файлов; сервер работает в памяти
База ФБП — это обычные файлы в каталоге базы: план счетов (ACNT.A3P), дерево видов операций (CAS.RUL), журналы операций — по одному файлу на каждый месяц (YYYYMM.F3P), отчётные формы (*.rpt) и другие (полный перечень — в приложении 10.1). Никакой внешней СУБД (SQL Server, Oracle и т. п.) система не использует.
При запуске сервер загружает базу с диска в оперативную память и далее вся работа ведётся в памяти — поэтому сервер быстр даже на больших базах. Журналы операций записываются на диск сразу при регистрации операций; изменения плана счетов сохраняются на диск автоматически — примерно через минуту после последнего изменения (в паузу между запросами клиентов) и обязательно при штатной остановке. Ориентировочное потребление памяти — около 2–2,5 ГБ на экземпляр сервера для крупной базы; на небольших базах заметно меньше. Для баз, которые используются непостоянно, память в простое можно освобождать — режимом гибернации (п. 5.7): сервер останавливается без запросов и поднимается автоматически по первому обращению клиента.
2.2. Цикл обработки запроса
Сервер в непрерывном цикле просматривает каталог обмена (включая его подкаталоги — каждый клиент может работать в своём подкаталоге). Один запрос проходит так:
- Клиент создаёт файл запроса под временным именем с расширением .REQ и, записав его целиком, переименовывает в .IN. Переименование — атомарный сигнал «файл готов»: сервер никогда не увидит недописанный запрос.
- Сервер обнаруживает файл .IN, выполняет содержащиеся в нём поручения, удаляет .IN, записывает ответ в файл .ANS и по завершении переименовывает его в .OUT.
- Клиент читает готовый .OUT и удаляет его.
Если сервер был остановлен, а клиенты продолжали подкладывать запросы, накопившиеся файлы .IN будут обработаны после запуска сервера — запросы не теряются. Если при обработке запроса возник технический сбой (например, не удалось создать файл ответа), сервер не теряет и не «зацикливается» на таком запросе: он откладывает его в карантин — файл с расширением .BAD — и пишет об этом в журнал (см. п. 8.2).
2.3. Пересчёт баланса
Итоговые остатки и обороты по счетам (баланс) сервер хранит в памяти в готовом виде, чтобы отчёты строились мгновенно. После каждого изменения данных (регистрация или удаление операций, изменение плана счетов) сервер пересчитывает баланс — сразу после обработки пачки запросов, а не в момент обращения к отчёту. Пересчёт помесячный и по возможности частичный: пересчитываются только затронутые месяцы. Ориентировочная длительность на крупной базе: частичный пересчёт — единицы секунд (обычно 4–9 с), полный пересчёт при запуске — десятки секунд.
Во время пересчёта обработка запросов приостанавливается: клиенты в эти секунды ждут ответа. Это нормальное поведение. Менеджер серверов показывает пересчёт отдельным состоянием с шкалой прогресса по месяцам (см. п. 5.3), поэтому паузу легко отличить от неисправности.
2.4. Один сервер — одна база; несколько баз на одном компьютере
Каждый экземпляр сервера обслуживает ровно одну базу. Запустить два экземпляра на одну и ту же базу невозможно — этому препятствует файл блокировки (_SRVNEW_.LCK, см. п. 6.4). Если организация ведёт несколько баз, на одном компьютере устанавливается несколько служб — по одной на базу; у каждой службы своё имя (см. п. 3.4) и свой каталог обмена. Менеджер серверов как раз и предназначен для управления такой группой серверов из одного окна.
2.5. Общая схема
Рабочие места (клиенты) Серверный компьютер
┌───────────┐ ┌───────────┐
│ Клиент 1 │ │ Клиент 2 │ … по локальной сети (общая папка)
└─────┬─────┘ └─────┬─────┘
│ файлы запросов (.IN) и ответов (.OUT)
▼ ▼
┌───────────────────────┐ ┌──────────────────────────┐
│ Каталог обмена │ ◄──► │ Служба Windows │
│ (BOX_) │ │ Fbp.Server.exe │
└───────────────────────┘ │ (база загружена в ОЗУ) │
└───────────┬──────────────┘
│ чтение/запись
▼
┌──────────────────────────┐
│ Каталог базы: ACNT.A3P, │
│ CAS.RUL, YYYYMM.F3P, │
│ *.rpt, журналы сервера │
└──────────────────────────┘
3. Установка и первый запуск к оглавлению
3.1. Требования
- Операционная система: 64-разрядная Windows или Windows Server (вплоть до Windows Server 2012 включительно).
- Для Windows Server 2012: установленный распространяемый пакет Microsoft Visual C++ 2015–2022 Redistributable (x64) (на новых версиях Windows он обычно уже есть).
- Оперативная память: ориентир — 2–2,5 ГБ свободной памяти на каждый экземпляр сервера с крупной базой, плюс память для операционной системы.
- Права администратора на компьютере — для установки служб и работы менеджера.
- Локальный диск для каталога базы и каталога обмена (размещать базу на сетевом диске не рекомендуется: сервер должен работать с файлами базы локально).
3.2. Размещение файлов поставки
Программы сервера и менеджера не требуют установщика: достаточно скопировать файлы поставки в выбранный каталог, например C:\FBP\Server. Обязательное условие: менеджер и сервер должны лежать в одном каталоге — менеджер устанавливает службы именно на тот Fbp.Server.exe, который находится рядом с ним. Рядом же впоследствии появятся файл лицензии FbpServer.lic и файл списка баз FbpManager.bases.json.
3.3. Выбор каталогов базы и обмена
Для каждой базы требуется два каталога:
- Каталог базы — где лежат файлы данных. Сюда сервер также пишет свои журналы и служебные файлы. Доступ к этому каталогу нужен только серверу и администратору (см. раздел 9).
- Каталог обмена — общая сетевая папка для клиентов. По умолчанию предлагается подкаталог BOX_ внутри каталога базы; это удобно, но не обязательно — каталог обмена может располагаться где угодно. Именно этот каталог предоставляется в общий доступ пользователям.
3.4. Установка сервера как службы Windows
Штатный способ эксплуатации — служба Windows. Установка выполняется из менеджера серверов (кнопка «Установить сервер БД» или флажок при добавлении базы, см. п. 5.2). При установке служба настраивается так:
- тип запуска — вручную: сервер запускает администратор кнопкой «Запустить сервер»; после перезагрузки компьютера база остаётся остановленной;
- перезапуска при сбое нет: упавший сервер остаётся остановленным, менеджер показывает «УПАЛ» — сначала разберитесь в причине (журнал базы), затем запустите сервер сами. Падение сервера — авария для базы данных; запускать его снова, не разобравшись, опасно;
- оба автомата — запуск при загрузке Windows и перезапуск при сбое (не более двух попыток: через 5 секунд и через 1 минуту) — включаются для нужных баз флажками в окне «Запуск службы…» (п. 5.4);
- имя службы: FbpServer для первой базы и FbpServer-<суффикс> для остальных (суффикс задаёт администратор, обычно по имени базы — например, FbpServer-SKLD);
- учётная запись — ограниченная (NT SERVICE\FbpServer-…): серверу доступны только папки, выданные в окне «Доступ серверов к данным» (п. 9.3). Если папка новой базы ещё не выдана, менеджер сразу после установки предложит выдать доступ к общей папке баз — согласитесь, иначе сервер не откроет базу.
На одну базу можно установить только одну службу: менеджер откажет в установке второй службы на тот же каталог базы. Две службы на одну базу мешают друг другу — вторая не запустится («база уже обслуживается»), а Windows сообщит лишь «служба не ответила на запрос своевременно».
Запуск сервера из командной строки (Fbp.Server.exe <каталог базы> <каталог обмена>) — вспомогательный режим для диагностики: сервер работает в окне консоли, остановка — клавишами Ctrl+C. Постоянно эксплуатировать сервер в таком режиме не следует.
3.5. Первый запуск
При запуске сервер последовательно:
- проверяет, не обслуживает ли базу другой экземпляр (файл блокировки, п. 6.4);
- открывает журнал FbpServer-ГГГГ-ММ-ДД.log в каталоге базы;
- проверяет лицензию (раздел 4);
- загружает базу в память и выполняет полный пересчёт баланса;
- переходит в рабочий цикл — начинает обслуживать клиентов.
Загрузка крупной базы занимает десятки секунд; всё это время менеджер показывает состояние «загрузка базы». Готовность к работе — состояние «работает» в менеджере. То же самое можно увидеть и без менеджера — по файлу сигнала жизни _STATUS_.FBP (п. 6.1) и по записям в журнале.
4. Лицензирование к оглавлению
4.1. Принцип
Лицензия выдаётся поставщиком на конкретный компьютер (не на базу и не на число пользователей) и не имеет срока действия. Лицензия — это файл FbpServer.lic, который кладётся в один каталог с Fbp.Server.exe. Файл подписан электронной подписью поставщика, поэтому подделать или перенести его на другой компьютер невозможно: при проверке сервер сверяет лицензию с кодом своего компьютера.
Менеджер серверов лицензии не требует — лицензируется только сервер.
4.2. Режимы работы сервера
| Режим | Условие | Поведение сервера |
|---|---|---|
| Полноценный | Файл FbpServer.lic действителен для этого компьютера | Работа без ограничений; при запуске в журнал пишется «Лицензия: <имя клиента>», в менеджере — «полноценная». |
| Ознакомительный (демонстрационный) | Файл лицензии отсутствует | Сервер работает полнофункционально 30 минут, затем останавливается штатно (с сохранением данных). После перезапуска отсчёт начинается заново. В менеджере — «demo, осталось N мин». |
| Отказ | Файл лицензии есть, но подпись не сошлась или лицензия выписана на другой компьютер | Сервер отказывается работать и завершается сразу (код завершения 4); в журнале — причина отказа и код компьютера. |
4.3. Получение и установка лицензии
- В менеджере серверов нажмите «Лицензия…». В окне будут показаны состояние лицензии и код компьютера вида XXXX-XXXX-XXXX-XXXX (его можно скопировать).
- Передайте код компьютера поставщику. Поставщик выпишет файл FbpServer.lic и передаст его вам.
- Нажмите «Установить лицензию…» и выберите полученный файл. Менеджер скопирует его в каталог программы (поверх старого, если он был).
- Перезапустите все серверы (кнопка «Перезапустить сервер» для каждой базы): лицензия проверяется при запуске.
4.4. Замена или переустановка серверного компьютера
Так как лицензия привязана к оборудованию, при переносе системы на другой компьютер (а в ряде случаев — и после существенной смены конфигурации) лицензия перестаёт действовать: сервер переходит в отказ. Порядок действий тот же, что при первичной установке: узнайте код нового компьютера кнопкой «Лицензия…», передайте поставщику, установите полученный файл. До получения лицензии сервер может работать в ознакомительном режиме — удалите недействующий файл FbpServer.lic, чтобы вместо отказа включился 30-минутный режим.
5. Менеджер серверов — основной инструмент администратора к оглавлению
5.1. Назначение и запуск
Менеджер серверов (Fbp.Server.Manager.exe) — единое окно управления всеми серверами (базами) данного компьютера. Через него выполняются все повседневные действия администратора: добавление баз в список, установка и удаление служб, запуск и остановка серверов, наблюдение за их состоянием, просмотр журналов, установка лицензии.
Менеджер запускается с правами администратора (они требуются для управления службами). Менеджер не запускает серверы как свои дочерние процессы и не нужен для их работы: он лишь управляет службами Windows и читает файлы состояния. Поэтому закрытие (полный выход) менеджера никак не влияет на работающие серверы.
На одном компьютере работает только один экземпляр менеджера. Повторный запуск не создаёт вторую копию, а поднимает на передний план уже открытое окно (в том числе свёрнутое в область уведомлений); если окно найти не удалось, будет показано сообщение «Менеджер баз уже запущен на этом компьютере». Это защита от конфликтов: из двух окон можно было бы одновременно запускать и останавливать одни и те же серверы.
Верхняя строка главного окна показывает версию серверной программы — ту же, что и окно активности сервера (п. 5.6).
5.2. Список баз: добавление, изменение, удаление
Менеджер ведёт собственный список баз («реестр баз»). Он хранится в файле FbpManager.bases.json рядом с программой; для каждой базы запоминаются: отображаемое имя, каталог базы, каталог обмена и суффикс имени службы.
Добавление базы (кнопка «Добавить базу…»):
- Имя базы — как база будет называться в списке (если оставить пустым, подставится имя каталога);
- Каталог базы — каталог с файлами данных (обязательно существующий);
- Каталог обмена — по умолчанию BOX_ внутри каталога базы;
- Суффикс имени службы — окончание имени службы Windows. Полное имя службы показывается в строке-подсказке: «Служба Windows будет называться: …». Имя службы обязано быть уникальным в списке — при совпадении менеджер предупредит и не даст сохранить;
- флажок «Установить службу Windows сразу» — служба будет установлена сразу при добавлении (включён по умолчанию).
Изменение базы (кнопка «Изменить базу…») открывает ту же форму. Если служба уже установлена, а вы изменили каталоги или суффикс, менеджер предложит переустановить службу с новыми параметрами (сервер будет остановлен и переустановлен). Если отказаться, служба продолжит работать со старыми каталогами до переустановки вручную.
«Убрать базу из списка» удаляет только запись в менеджере — ни база, ни служба не затрагиваются. Если служба ещё установлена, менеджер предупредит: «Служба <имя> ещё установлена — сначала удалите службу».
5.3. Главное окно: состояние серверов
Список в главном окне обновляется автоматически каждые 5 секунд (во время пересчёта — каждые полсекунды). Колонки:
| Колонка | Содержимое |
|---|---|
| База | Отображаемое имя базы. |
| Имя службы Windows | Полное имя службы (FbpServer или FbpServer-<суффикс>). |
| Служба Windows | Статус службы по данным операционной системы: «работает», «остановлен», «запускается», «останавливается», «пауза»; «не установлен» — если служба не установлена; «ИМЯ ДУБЛИРУЕТСЯ!» — если то же имя службы назначено нескольким базам; «НА ЭТУ БАЗУ ЕЩЁ: …» — на тот же каталог базы настроена ещё одна служба (п. 3.4; красный значок, если установлена и своя служба базы). |
| Состояние сервера БД | Состояние самого сервера по его сигналу жизни: «загрузка базы» (мигающая ячейка), «работает», «останавливается», «остановлен», «спит (ожидание старта)» — при включённой гибернации, если сервер уснул штатно (п. 5.7); «УПАЛ — разберитесь в причине» — служба остановлена не штатно (сбой или снятие процесса в диспетчере задач). Во время пересчёта здесь отображается «пересчёт: <месяц>» и рисуется шкала прогресса по месяцам года. При отсутствии данных — «—». |
| Гибернация | Настройка режима сна (п. 5.7): «Сон через N мин» или «—», если гибернация выключена. Сам факт сна показывают синий цвет кнопки «Гибернация базы…» и синяя строка базы. |
| Время запуска / Время работы | Момент запуска сервера и длительность работы. |
| Каталог базы | Путь к каталогу данных. |
| Запросов | Сколько запросов обработано с запуска. |
| Память, МБ | Потребление оперативной памяти процессом сервера. У остановленного и спящего сервера — «0»: процесса нет, память не занята. |
| Лицензия | «полноценная», «demo, осталось N мин» или «—». |
| Архив | Настройка архивирования (п. 7.4): «вкл/выкл, полный/ инкрементный» и время последнего архива; «архивируется…» — архив создаётся прямо сейчас; при сбое — текст ошибки; «—» — архивирование не настроено. |
| Запуск службы | Как Windows обращается со службой: «вручную» или «при загрузке Windows»; «перезапуск при сбое», если он включён; «СБОЕВ ЗА СУТКИ: N» — сколько раз служба завершалась неожиданно (по журналу событий Windows; сюда попадает и снятие процесса в диспетчере задач); «сервер из другого каталога: …» — служба запускает не ту программу сервера, что лежит рядом с менеджером (например, старую версию). |
Строки списка — двустрочные, длинные значения переносятся по строкам, а ширина колонок автоматически подгоняется под ширину окна: вся таблица видна без горизонтальной прокрутки.
Цвет текста строки — быстрый индикатор неполадок:
- обычный цвет — всё в порядке;
- красный — проблема: «работает, сигнал жизни устарел» (служба работает, но сервер давно не обновлял состояние), «работает, цикл завис (запросы ждут)» (рабочий цикл не продвигается, хотя запросы есть) или дублирующееся имя службы;
- синий — сервер спит (гибернация, п. 5.7): служба остановлена, но режим сна включён — менеджер запустит сервер автоматически при поступлении запроса;
- серый — служба не работает (остановлена или не установлена) — штатная ситуация, не требующая внимания.
Двойной щелчок по строке открывает окно активности сервера (п. 5.6).
5.4. Управление службами
Кнопки верхней строки действуют на выбранную в списке базу:
| Кнопка | Действие |
|---|---|
| Запустить сервер | Запуск службы (ожидание до 30 секунд). |
| Остановить сервер | Штатная остановка: сервер сохраняет данные и завершается (ожидание до 90 секунд). Это единственный правильный способ остановки — данные при ней не теряются. |
| Перезапустить сервер | Остановка и последующий запуск. Применяется после замены программы, установки лицензии и в других случаях, когда сервер должен перечитать своё окружение. |
| Обновить список | Внеочередное обновление показаний (обычно не требуется — список обновляется сам). |
Кнопки нижней строки:
| Кнопка | Действие |
|---|---|
| Установить сервер БД | Регистрация службы Windows для выбранной базы: запуск вручную, без перезапуска при сбое (п. 3.4). |
| Запуск службы… | Два флажка, по умолчанию выключены: «Запускать сервер при загрузке Windows» и «Перезапускать сервер при сбое» (не более двух попыток). Флажки показывают и меняют настройку самой службы Windows; переустановка службы (смена гибернации, «Изменить базу…») выбор сохраняет. |
| Удалить сервер БД | Остановка и удаление службы. Сама база и запись в списке остаются. |
| Открыть каталог базы | Открывает каталог данных в Проводнике. |
| Архивирование… | Настройка автоматического архивирования выбранной базы и запуск архива вручную (п. 7.4). |
| Гибернация базы… | Включение режима сна без запросов и настройка таймаута (п. 5.7). Кнопка окрашена синим, пока выбранная база спит. |
| Доступ серверов к данным… | Папки с базами и выгрузками, доступные серверам, и учётные записи служб (п. 9.3). |
| Лицензия… | Состояние лицензии и код компьютера (п. 4.3). |
| Установить лицензию… | Копирование файла лицензии к программе (п. 4.3). |
| Выход из менеджера | Полное завершение менеджера (с подтверждением). На работающие серверы не влияет. |
Если одно и то же имя службы назначено нескольким базам, менеджер блокирует управление такими строками и сообщает причину: такие строки запускали бы и останавливали один и тот же сервер. Уберите лишние записи из списка или задайте им разные суффиксы.
5.5. Ошибки операций
Если операция (запуск, установка службы и т. п.) завершилась ошибкой, менеджер показывает окно с подробным текстом, который можно выделить и скопировать целиком — этот текст следует прикладывать при обращении к поставщику (п. 8.6).
5.6. Окно активности сервера
Открывается двойным щелчком по строке базы; обновляется два раза в секунду. Предназначено для ответа на вопрос «что сервер делает прямо сейчас»:
- шапка: метка сервера (название, которое видят пользователи), момент запуска, длительность работы, потребление памяти (у остановленного и спящего — «0 МБ»: процесса нет);
- панель месяцев: число операций по каждому месяцу года и итого; лента года, закрашенная до последнего месяца с операциями; во время пересчёта — строка «Пересчёт баланса: <месяц> N%» (или «Подготовка к пересчёту баланса…») и плавная заливка ленты по ходу пересчёта. Цвет ленты показывает режим базы: ярко-зелёный — сервер работает, ярко-синий — база спит (гибернация, п. 5.7), без заливки — сервер остановлен насовсем;
- «лицо» сервера — таблица «пользователь × вид работы»: сколько каждый пользователь ввёл новых операций, удалял операции, запрашивал списки субсчетов, выполнял формы, добавлял счета и прочее; последняя команда каждого пользователя подсвечивается жёлтым и затухает за пару секунд — видно, кто и что делает в данный момент;
- кнопки «Запустить», «Остановить», «Перезапустить» (дублируют управление службой), «ЖурЗапросов» — журнал запросов за сегодня (п. 5.8), «Архивирование…» — настройки архивирования этой базы и запуск архива вручную (п. 7.4), и «Гибернация базы…» — настройка режима сна этой базы (п. 5.7; кнопка окрашена синим, пока база спит);
- строка состояния внизу: «Ожидание запросов», сведения о текущем или последнем пересчёте («Пересчёт баланса выполнен в … за N с»), «Запись счетов...» во время сохранения, а при неполадках — красное «СИГНАЛ ЖИЗНИ УСТАРЕЛ» или «Сервер остановлен».
5.7. Гибернация базы (сон без запросов)
Гибернация — режим экономии оперативной памяти для баз, которые используются непостоянно (архивные базы прошлых лет, резервные серверы и т. п.). Работающий сервер держит базу в памяти (п. 2.1), и при долгом отсутствии запросов эта память занята впустую. При включённой гибернации сервер, не получая запросов заданное время, останавливается сам: служба завершается штатно (с сохранением данных), память полностью освобождается, а база остаётся «спящей» до первого обращения.
Настройка — кнопка «Гибернация базы…» (в главном окне и в окне активности): флажок «Разрешить гибернацию…» и время «Останавливать через N мин без запросов» (от 1 минуты до суток). Настройка отражается в колонке «Гибернация» главного окна («Сон через N мин»). Таймаут записывается в параметры службы, поэтому при изменении настройки и уже установленной службе менеджер предложит переустановить службу (сервер будет остановлен и переустановлен); если отказаться, новая настройка подействует после переустановки службы вручную.
Как база просыпается. Менеджер следит за каталогом обмена спящей базы (опрос каждые 3 секунды): как только клиент присылает запрос, менеджер запускает службу, а будящий запрос сохраняется и выполняется после подъёма сервера — клиент лишь ждёт ответ дольше обычного. Будится только штатно уснувшая база (сервер сам ушёл в сон по таймауту): упавшую, остановленную администратором или ни разу не запускавшуюся базу менеджер не запускает — запрос сохраняется, менеджер показывает уведомление с причиной, после ручного запуска запрос будет выполнен. Разбудить базу можно и вручную — кнопкой «Запустить сервер». Поскольку сторож работает внутри менеджера, для автоматического пробуждения менеджер должен быть запущен (достаточно свёрнутого в область уведомлений).
Как выглядит сон. Спящая база окрашивается синим: строка в списке баз, кнопка «Гибернация базы…» (в обоих окнах) и лента года в окне активности. Состояние сервера — «спит (ожидание старта)», память — «0» (процесса сервера не существует — в диспетчере задач его нет, это нормально).
Ускоренное пробуждение — образ базы. При любой штатной остановке сервер записывает полный образ базы в файл _BASEIMG_.FBP в каталоге базы. Следующий запуск (в том числе пробуждение) восстанавливает базу из образа за секунды вместо десятков секунд полной загрузки. Образ действителен только для той же версии программы, неизменных файлов базы и того же дня (база, уснувшая вечером и разбуженная утром, стартует обычным, полным запуском — так же, как работающий сервер пересчитывает базу в полночь, п. 7.6): после обновления программы или изменения файлов первый запуск будет обычным (полным), а образ перезапишется при следующей остановке. Файл образа может быть большим — сотни мегабайт, по размеру базы в памяти; это нормально, вручную его удалять не нужно — непригодный образ сервер отбрасывает сам.
5.8. Журнал запросов
Окно «Журнал запросов» (кнопка «ЖурЗапросов» в окне активности) показывает сегодняшний журнал сервера FbpServer-ГГГГ-ММ-ДД.log из каталога базы: каждую обработанную команду — кто, что и за сколько миллисекунд. Показывается хвост журнала (до 300 последних строк), содержимое обновляется каждые 2 секунды. Вверху — строка поиска: по мере ввода найденное подсвечивается, клавиша Enter или кнопка «Найти» переходит к следующему совпадению по кругу; если ничего не найдено, поле подкрашивается розовым.
5.9. Сворачивание в область уведомлений и цвет значка
Менеджер рассчитан на постоянную работу фоном: закрытие окна («крестик») не завершает программу, а сворачивает её в область уведомлений (рядом с часами). Значок окрашивается в цвет суммарного состояния всех серверов:
| Цвет значка | Значение |
|---|---|
| Зелёный | Все установленные серверы работают нормально. |
| Жёлтый | Идёт запуск, остановка или пересчёт баланса — временное рабочее состояние. |
| Красный | Есть проблема: сервер упал (служба остановлена аварийно), завис, устарел сигнал жизни или дублируется имя службы. Требуется вмешательство (раздел 8). |
| Серый | Ни один сервер сейчас не работает (все остановлены штатно, спят или службы не установлены). |
Двойной щелчок по значку возвращает окно. Меню значка (правый щелчок) содержит сводку «работает / запуск-пересчёт / проблем / спит / остановлено» и пункт «Выход», полностью завершающий менеджер (то же делает кнопка «Выход из менеджера» в главном окне). Завершение менеджера не останавливает серверы — но помните: автоматическое пробуждение спящих баз (п. 5.7) без работающего менеджера не выполняется.
6. Наблюдение за работой и диагностика к оглавлению
6.1. Файл состояния _STATUS_.FBP (сигнал жизни)
Работающий сервер постоянно (обычно раз в 10 секунд, во время пересчёта — два раза в секунду) обновляет в каталоге базы файл _STATUS_.FBP. Это текстовый файл в кодировке UTF-8, строки вида «ключ=значение». Именно из него менеджер берёт все показания, и его же может читать любая внешняя система мониторинга. Основные ключи:
| Ключ | Значение |
|---|---|
state | Состояние: loading (загрузка базы),
serving (работает), stopping (останавливается),
down (остановлен), standby (уходит в сон —
гибернация, п. 5.7). |
server_time | Момент записи файла (по часам сервера). Если он старше ~30 секунд — сигнал жизни устарел, сервер, скорее всего, не работает. |
start_time, uptime_sec | Момент запуска и длительность работы. |
requests_total | Сколько запросов обработано с запуска. |
memory_mb | Потребление памяти, МБ. |
rebuilding, rebuild_month, rebuild_pct, rebuild_phase |
Признак и ход пересчёта баланса: текущий месяц и процент; фаза
prepare — подготовка (загрузка данных). |
last_rebuild_time, last_rebuild_start_month, last_rebuild_ms |
Когда завершился последний пересчёт, с какого месяца шёл и сколько занял. |
balance_dirty | Есть изменения, ожидающие пересчёта. |
license, demo_left_sec | Режим лицензии
(full/demo) и остаток демонстрационного времени, секунд. |
saving | Идёт запись плана счетов на диск. |
loop_tick | Счётчик итераций рабочего цикла; у живого сервера непрерывно растёт. По нему отличают зависание от простоя (п. 6.3). |
pending_requests | Число необработанных файлов запросов, ожидающих в каталоге обмена. |
ops, facts_flags, label | Число операций по месяцам, отметки о накопленных данных для отчётов, метка сервера — используются окном активности менеджера. |
loop_tick (п. 6.3).6.2. Журналы сервера
В каталоге базы сервер ведёт журнал FbpServer-ГГГГ-ММ-ДД.log — по файлу на каждый день; старые файлы не удаляются. В журнал попадают:
- строки сеанса: запуск, состояние лицензии, загрузка, остановка;
- каждая обработанная команда: пользователь, текст, длительность в миллисекундах;
- пересчёты баланса (начало, месяцы, длительность);
- транспортные сбои каталога обмена: карантин запросов, повторная обработка, доведение ответов при старте (п. 8.2);
- ошибки (включая ошибки самого журналирования — однократно, работа сервера при этом не прерывается).
Журнал удобно смотреть из менеджера (окно «Журнал запросов», п. 5.8) или открывать любым текстовым редактором — это обычный текст в кодировке UTF-8.
6.3. Как менеджер обнаруживает неполадки
| Ситуация | Как распознаётся | Что показывает менеджер |
|---|---|---|
| Падение сервера (процесс завершился аварийно) | Служба остановлена, а последний сигнал жизни говорит не «остановлен», т. е. сервер не успел остановиться штатно | Красный значок в области уведомлений, состояние «УПАЛ — разберитесь в причине» и однократное уведомление. Windows перезапускает службу, только если для базы включён перезапуск при сбое (п. 3.4); в колонке «Запуск службы» — число сбоев за сутки |
| Устаревший сигнал жизни | Служба работает, но _STATUS_.FBP не обновлялся дольше ~30 секунд | Красная строка «работает, сигнал жизни устарел» |
| Зависание рабочего цикла | Сигнал жизни свеж, состояние «работает», пересчёта нет, но счётчик цикла
(loop_tick) не меняется дольше 20 секунд при наличии
необработанных запросов (pending_requests > 0) |
Красная строка «работает, цикл завис (запросы ждут)» |
| Дублирование имени службы | Одно имя службы назначено нескольким базам в списке | «ИМЯ ДУБЛИРУЕТСЯ!» в колонке службы, красная строка, блокировка управления |
| Штатная остановка | Служба остановлена, сигнал жизни — «остановлен» | Серая строка; значок не краснеет — вмешательство не требуется |
Порог зависания (20 секунд) выбран с запасом выше обычной длительности пересчёта (4–9 секунд), а во время пересчёта и загрузки проверка зависания отключена — ложные срабатывания на штатной работе исключены.
6.4. Файл блокировки _SRVNEW_.LCK
При запуске сервер создаёт в каталоге базы файл _SRVNEW_.LCK и записывает в него номер своего процесса. Пока файл занят, второй экземпляр сервера на ту же базу не запустится (сообщение «База … уже обслуживается другим экземпляром сервера», код завершения 3). Это защита от порчи базы двумя одновременно работающими серверами.
7. Штатные операции обслуживания к оглавлению
7.1. Остановка и запуск сервера
Остановка — только штатная, кнопкой «Остановить сервер» в менеджере: сервер сохраняет план счетов на диск и завершается. Запуск — кнопкой «Запустить сервер». Возможна и остановка из клиентской программы (команда завершения работы сервера, доступная пользователю с соответствующими правами) — она равнозначна штатной.
Остановка кнопкой — остановка насовсем, даже при включённой гибернации (п. 5.7): по запросу клиента менеджер такую базу не запустит. В сон база уходит только сама, по таймауту гибернации.
7.2. Обновление программы (замена исполняемых файлов)
Порядок обновления на новую версию:
- В менеджере остановите все серверы (работающая служба блокирует файлы программы — заменить их «на живую» не получится).
- Замените файлы Fbp.Server.exe и Fbp.Server.Manager.exe в каталоге программы новыми. Остальные файлы каталога (лицензия, список баз) не трогайте.
- Запустите серверы. Службы переустанавливать не нужно — они указывают на тот же путь программы.
7.3. Резервное копирование базы
Резервная копия базы — это копия всего каталога базы. Гарантированно целостная копия получается при остановленном сервере: остановите сервер, скопируйте каталог, запустите сервер. Каталог обмена в резервной копии не нужен — сервер создаст его при запуске, а находящиеся в нём файлы запросов и ответов ценности для восстановления не имеют.
Копирование при работающем сервере («на живую») тоже допустимо: журналы операций (*.F3P) записываются на диск сразу, а план счетов (ACNT.A3P) сервер сохраняет автоматически примерно через минуту после последнего изменения — «живая» копия отстанет от текущего состояния не более чем на эту минуту. Для регулярного копирования удобнее встроенное архивирование менеджера (п. 7.4): оно не требует остановки сервера и само дожидается свежего сохранения плана счетов.
7.4. Автоматическое архивирование базы
Менеджер умеет сам архивировать базы по расписанию — сервер при этом не останавливается. Настройка — кнопка «Архивирование…» для выбранной базы:
- Что архивировать — список каталогов, файлов и масок (например, *.F3P — все журналы операций). Пустой список означает весь каталог базы целиком. Кнопки «Выбрать каталог…» и «Выбрать файл…» открывают проводник сразу в каталоге базы, откуда можно перейти в любое место компьютера (у базы могут быть свои подкаталоги — они выбираются так же). Дополнительно задаются исключения; если их не задавать, служебные и временные файлы сервера (блокировка, сигнал жизни, *.TMP) в архив не попадают автоматически.
- Каталог для записи архивов — куда записывать готовые архивы (создаётся автоматически); может быть и сетевой папкой.
- Тип архива — полный (всё выбранное) или инкрементный (только файлы, изменившиеся с прошлого архива).
- Расписание — раз в сколько дней и во сколько (например, «раз в 1 дн., в 03:00» — каждую ночь).
Каждый архив — отдельный ZIP-файл с именем вида ИмяБазы-20260926-030000.zip (у инкрементных — с окончанием -inc). Архивы никогда не удаляются автоматически: очистка каталога архивов — вручную администратором (архивы могут дополнительно копироваться в другие места другими программами).
Архивирование выполняет сам менеджер — в том числе будучи свёрнутым в область уведомлений. Если менеджер в назначенное время не работал, архив создаётся при ближайшем его запуске.
Архивная пауза. Чтобы в архив не попала наполовину записанная операция, работающий сервер на время копирования встаёт на короткую паузу: дописывает текущий запрос, сохраняет план счетов, дожидается конца пересчёта баланса и перестаёт брать запросы. Менеджер копирует файлы базы во временный каталог рядом с архивами, снимает паузу — и только потом, уже при работающем сервере, упаковывает копию в ZIP. Пауза длится столько, сколько идёт копирование: секунды (около 10 секунд для полного архива базы в 1 ГБ, меньше — для инкрементного). Запросы клиентов, пришедшие во время паузы, не теряются: они ждут в каталоге обмена и выполняются сразу после неё; клиент лишь получает ответ чуть позже обычного. В окне менеджера состояние сервера в это время — «пауза для архива (запросы ждут)».
- Если база спит или сервер остановлен, пауза не нужна — архив делается сразу, сервер ради архива не будится.
- Пауза ограничена сроком (30 минут): если менеджер был закрыт или завершился посреди архива, сервер снимет паузу сам и запишет это в свой журнал; при следующем запуске менеджер уберёт оставшиеся служебные файлы (_ARCPAUSE_.FBP в каталоге базы, временные копии .fbp-copy-* в каталоге архивов).
- Если сервер перезапустился или остановился во время паузы, архив не создаётся (копия могла получиться несогласованной) — он будет сделан при следующем запуске по расписанию; менеджер сообщит об этом.
- Старая версия сервера паузу не поддерживает: тогда архив снимается «на ходу», а в итоге архивирования стоит пометка «БЕЗ архивной паузы — согласованность журналов не гарантируется». Обновите программу сервера.
Для временной копии в каталоге архивов нужно свободное место размером с архивируемые файлы (на время архивирования). Файл, занятый в момент копирования, пережидается и копируется повторно.
Кнопка «Архивировать сейчас» в окне настроек создаёт архив немедленно, вне расписания. Колонка «Архив» в списке баз показывает настройку и время последнего архива; при сбое архивирования по расписанию менеджер показывает уведомление от значка в области уведомлений.
Если баз несколько и наборы файлов у них одинаковые, списки не нужно вводить заново для каждой базы: настройте их один раз, а в остальных базах нажмите «Скопировать списки из другой базы…» и выберите готовую. Копируются оба списка — и «что записывать в архив», и исключения. Если списки базы уже заполнены, программа спросит: заменить их скопированными или добавить недостающие строки к имеющимся. Скопированные списки дальше живут своей жизнью — изменение одной базы не влияет на другие.
7.5. Перенос базы на другой компьютер
- Остановите сервер на старом компьютере.
- Установите программы сервера и менеджера на новом компьютере (раздел 3).
- Скопируйте каталог базы целиком на новый компьютер. Каталог обмена копировать не обязательно — сервер создаст его при запуске; если копируете, удалите из него все файлы запросов и ответов.
- В менеджере на новом компьютере добавьте базу, укажите каталоги, установите службу.
- Настройте общий доступ к каталогу обмена для клиентов и перенастройте клиентские программы на новый путь.
- Запросите у поставщика лицензию на новый компьютер (п. 4.4) и установите её.
- Запустите сервер и проверьте работу клиентов. Только после этого снимайте старый сервер с эксплуатации.
7.6. «Текущий» месяц сервера и файл M_PLUS
Сервер считает «текущими» календарные день и месяц. Работающий круглые сутки сервер сам замечает смену суток: в полночь он обновляет дату и перезагружает базу знаний — так же, как по команде W OFF (сохраняет план счетов, перечитывает права и деревья, пересчитывает баланс). В журнале сервера появляется запись «Смена суток: ДД.ММ.ГГГГ -> ДД.ММ.ГГГГ», при смене месяца — с пометкой «новый месяц». Пока идёт пересчёт (на больших базах — до минуты), запросы клиентов ждут; счётчики запросов в окне менеджера обнуляются. Если в полночь сервер находится в состоянии W ON или клиент держит монополию (M ON), смена откладывается до их окончания (в журнале — запись «отложена»). Перезапускать сервер ежесуточно не нужно.
Вводить операции в будущем месяце сервер не даёт: клиент получает ответ «E-70: нельзя вводить операции в будущий месяц». Когда нужно заранее работать в следующем месяце (например, в конце сентября уже оформлять октябрь), в каталоге базы создаётся текстовый файл M_PLUS с единственным числом — на сколько месяцев вперёд сдвинуть «текущий» месяц. В обычной эксплуатации этот файл не нужен — не создавайте его без необходимости.
Как действует M_PLUS:
- Сдвигается и разрешение, и месяц «по умолчанию». При дате 25.09 и числе 1 текущим считается октябрь: в октябре вводить можно, в ноябре — нет. Операции, введённые без указания даты, регистрируются в октябре (25-м числом), а не в сентябре.
- Дальше декабря не сдвигается. Если сумма выходит за декабрь, текущей датой считается 31 декабря; на следующий год сдвиг не переходит.
- Только в рабочем году базы. Если год базы (по файлам ГГГГММ.F3P) не совпадает с календарным, сервер считает текущей датой 31 декабря года базы, и M_PLUS не действует.
- Когда читается. При запуске сервера и при каждой смене суток. Новое число начинает действовать с ближайшей полуночи (или после перезапуска); в течение суток правка файла ничего не меняет.
Убирать или уменьшать M_PLUS можно только тогда, когда календарь догнал месяцы, в которых уже введены операции. Пример: при M_PLUS = 1 в октябре успели ввести операции ноября, а затем файл удалили. С обычной датой ноябрь становится «будущим», а сервер не может строить баланс, если в базе есть файл будущего месяца (это правило программы, данные при этом не портятся). Что происходит:
- Работающий сервер в полночь не меняет дату: он продолжает работать с прежней датой и один раз пишет в журнал «Смена суток (…) не выполнена: есть файл будущего месяца ГГГГММ.F3P … Сервер продолжает работать с прежней датой …». Каждую минуту сервер проверяет снова.
- Остановленный или перезапущенный сервер не запустится: «Недопустимая ситуация: есть файл будущего месяца — ноября — ГГГГ11.F3P». Поэтому, увидев такую запись в журнале, не перезапускайте сервер, пока не исправите причину.
- Как исправить: верните в M_PLUS прежнее число — работающий сервер в течение минуты выполнит отложенную смену суток (в журнале появится обычная запись «Смена суток: …»). Убрать файл можно будет, когда наступит последний из месяцев, в которых есть операции. Ту же картину даёт и неверная дата на часах компьютера (например, переведённая назад) — проверьте её.
7.7. Обновление отчётных форм (*.rpt)
Отчётные формы лежат в каталоге базы как файлы *.rpt и обновляются простым копированием новых версий в этот каталог. Сервер замечает новые и изменённые формы сам (по дате и размеру файла) — перезапуск не требуется. Исключение — изменения в базовых библиотеках форм: они подхватываются перезапуском сервера. Правила написания форм — отдельная тема (руководство по языку форм), администратору достаточно уметь доставлять готовые файлы в каталог базы.
8. Неполадки и восстановление после сбоев к оглавлению
8.1. Отключение электропитания, аварийное завершение, сбой сервера
Система проектировалась с расчётом на внезапные сбои. Что происходит с данными:
- Журналы операций (*.F3P) записываются на диск в момент регистрации операции — зарегистрированные операции не теряются.
- План счетов (ACNT.A3P) сохраняется автоматически примерно через минуту после последнего изменения и при штатной остановке. При аварийном завершении теряются лишь изменения плана счетов, сделанные за последнюю минуту; файл на диске остаётся целым — сервер пишет его через временный файл с резервной копией (ACNT.BAK), поэтому полу-записанный файл счетов невозможен. Если основной файл всё же повреждён внешними причинами, предыдущая версия есть в ACNT.BAK.
- Если авария случилась посреди обработки запроса, при следующем запуске сервер сам доводит начатое до конца: готовые, но не доставленные ответы превращает в .OUT, а незавершённые запросы обрабатывает повторно (п. 8.2).
- Если рабочий цикл сервера завершился внутренней ошибкой и на момент сбоя были несохранённые изменения плана счетов, сервер записывает их в отдельный аварийный файл ACNT.EMG в каталоге базы (основные файлы при этом не трогаются). ACNT.EMG никем не читается и не удаляется автоматически — это материал для ручного восстановления; его появление — повод обратиться к поставщику (п. 8.6), самостоятельно ничего с ним делать не нужно.
Действия администратора после сбоя питания: просто запустите сервер (если для базы включён запуск при загрузке Windows — он запустится сам). После падения самого сервера (а не питания) сначала прочитайте журнал базы и выясните причину, и только потом запускайте. Сервер сам проверит целостность журналов, при необходимости откатит незавершённые служебные операции, загрузит базу и пересчитает баланс. Контроль: состояние «работает» в менеджере, отсутствие ошибок в сегодняшнем журнале.
8.2. «Застрявшие» файлы в каталоге обмена
| Что видно | Что это значит | Что делать |
|---|---|---|
| Файлы .IN накапливаются, сервер работает | Клиенты присылают запросы быстрее, чем сервер успевает (или идёт пересчёт) | Ничего — сервер разберёт очередь сам. Следите за
pending_requests в файле состояния |
| Файлы .IN лежат при остановленном сервере | Запросы подложены, пока сервер был выключен | Ничего — после запуска сервер обработает их в первую очередь |
| Файлы .BAD | Карантин: сервер не смог обработать запрос технически (не удалось создать файл ответа — например, сбой диска или антивирусная блокировка). Запрос не потерян, но и не выполнен; событие записано в журнал | Устраните причину (диск, права, антивирус), разберите содержимое .BAD (это текстовый файл запроса) и при необходимости выполните его повторно с клиентского рабочего места, затем удалите файл |
| В журнале «…будет обработан повторно» | Редкий сбой при удалении отработанного запроса: тот же запрос выполнится ещё раз. Для изменяющих операций это может дать дубль операции | Найдите в журнале запись о повторе, проверьте журнал операций на дубль и удалите лишнюю операцию штатными средствами клиента |
| Файлы .OUT копятся, клиенты не забирают ответы | Клиентские программы закрыты, а их ответы остались | Безвредно; можно удалить старые .OUT вручную |
8.3. Сервер работает 30 минут и останавливается
Это ознакомительный режим: файл лицензии отсутствует. Установите лицензию (п. 4.3). Промежуточная остановка штатная, данные не страдают.
8.4. Сервер отказывается запускаться (отказ лицензии)
В журнале — «Сервер не лицензирован для этого компьютера (причина). Код компьютера: …», код завершения 4. Причины: лицензия выписана на другой компьютер (в том числе после переустановки Windows или замены оборудования) либо файл повреждён. Порядок действий — в п. 4.4.
8.5. Сервер остановился сам / не запускается
Последовательность разбора:
- Откройте сегодняшний журнал FbpServer-ГГГГ-ММ-ДД.log в каталоге базы и прочитайте последние строки — там записана причина.
- Проверьте типовые причины по таблице кодов завершения (приложение 10.3): демонстрационный таймер, отказ лицензии, двойной запуск, ошибка каталогов.
- Если причина неясна — сохраните журнал и обратитесь к поставщику (п. 8.6).
8.6. Сводная таблица «симптом → причина → действие»
| Симптом | Вероятная причина | Действие |
|---|---|---|
| Красный значок менеджера, строка «работает, сигнал жизни устарел» | Процесс сервера завис или еле работает; перегрузка диска/процессора | Проверьте загрузку компьютера; если не проходит — остановите сервер из менеджера (если не останавливается — перезапустите службу) и запустите снова; сохраните журнал |
| Строка «работает, цикл завис (запросы ждут)» | Рабочий цикл не продвигается при наличии запросов | Перезапустите сервер кнопкой «Перезапустить сервер»; передайте журнал поставщику — зависание цикла не считается нормой |
| Служба остановлена, хотя её никто не останавливал | Аварийное завершение (перезапуск при сбое по умолчанию выключен) либо штатная остановка (демо-таймер, команда из клиента) | Смотрите журнал: конец сеанса всегда объяснён. Разберитесь в причине, затем запустите сервер; при повторении — поставщик |
| Запуск службы: «Служба не ответила на запрос своевременно» (ошибка 1053) | Сервер отказался работать ещё до связи с Windows: база уже обслуживается другим экземпляром (код 3) или отклонена лицензия (код 4) | Проверьте колонку «Служба Windows» («НА ЭТУ БАЗУ ЕЩЁ: …») и диспетчер задач — нет ли второй службы или консольного сервера на ту же базу; проверьте лицензию (п. 4.3) |
| «demo, осталось N мин» в колонке лицензии | Нет файла лицензии | Установить лицензию (п. 4.3) |
| Сервер не стартует, код 4 | Лицензия чужая или повреждена | Перевыпуск лицензии (п. 4.4) |
| Сервер не стартует, код 3 | Базу уже обслуживает другой экземпляр | Найдите и остановите лишний экземпляр (вторая служба, консольное окно) |
| Сервер не запускается: «Недопустимая ситуация: есть файл будущего месяца»; или в журнале работающего сервера — «Смена суток (…) не выполнена» | Удалён или уменьшен файл M_PLUS, когда операции «вперёд» уже введены; либо часы компьютера переведены назад | Верните прежнее число в M_PLUS (п. 7.6), проверьте дату компьютера; до этого работающий сервер не перезапускайте |
| Сервер не запускается или сразу останавливается; в журнале базы — «отказано в доступе» (или журнала нет совсем) | У ограниченной учётной записи службы нет прав на папку базы, каталог обмена или папку программы | Откройте «Доступ серверов к данным…»: у базы не должно быть «ВНЕ СПИСКА»; добавьте папку и нажмите «Применить» (п. 9.3) |
| После перезагрузки Windows сервер не запускается; каталог обмена — на виртуальном диске | Диск создан заново, без папки обмена и прав; сервер стартовал раньше менеджера | Запустите сервер из менеджера: он восстановит права и папку обмена перед запуском (п. 9.3); запись об этом — в журнале менеджера |
| Форма не может выгрузить файл в папку («отказано в доступе») | Папка выгрузки не внесена в список папок, доступных серверам | Добавьте её в окне «Доступ серверов к данным…» и нажмите «Применить» |
| Клиенты не получают ответы, сервер «работает» | Обрыв доступа клиентов к каталогу обмена; антивирус задерживает файлы | Проверьте сетевой доступ к папке и права (раздел 9); исключите каталог обмена из активной проверки антивируса |
| Файл ACNT.EMG в каталоге базы | Было аварийное завершение с несохранёнными изменениями плана счетов | Обратитесь к поставщику, приложите ACNT.EMG и журнал |
| Менеджер: «Не удалось прочитать реестр баз…» | Повреждён файл списка баз FbpManager.bases.json | Откройте файл в редакторе и исправьте ошибку (это текстовый JSON; рядом лежит резервная копия .BAK) либо подтвердите сброс при сохранении |
8.7. Обращение к поставщику
Чтобы обращение было результативным, приложите:
- текст ошибки из окна менеджера (он копируется целиком, п. 5.5) или точное описание симптома с моментом времени;
- журнал сервера за день сбоя (FbpServer-ГГГГ-ММ-ДД.log из каталога базы);
- файл _STATUS_.FBP (если сбой происходит в момент обращения);
- при аварийном завершении — файл ACNT.EMG, если он появился;
- при проблемах лицензии — код компьютера из окна «Лицензия…».
9. Безопасность и права доступа к оглавлению
9.1. Два уровня прав
В системе два независимых уровня разграничения доступа, и важно их не путать:
- Права пользователей внутри ФБП — кто из сотрудников какие операции и отчёты может выполнять. Этим управляют штатными средствами (через клиентскую программу), список хранится в файле _RIGHTS_.FBP в каталоге базы. Задача администратора сервера здесь одна: не редактировать этот файл вручную — он целиком обслуживается системой.
- Права файловой системы Windows — кто из пользователей и программ может читать и писать каталоги сервера. Это целиком зона ответственности администратора (см. ниже).
9.2. Рекомендуемые права на каталоги
| Каталог | Сервер (служба) | Администратор | Пользователи (клиенты) |
|---|---|---|---|
| Каталог базы | Изменение (выдаёт менеджер, п. 9.3) | Полный доступ | Доступа быть не должно — иначе данные можно изменить или повредить в обход сервера |
| Каталог обмена | Изменение (выдаёт менеджер, п. 9.3) | Полный доступ | Создание и запись файлов запросов, чтение и удаление своих ответов. В целях порядка каждому клиенту рекомендуется свой подкаталог внутри каталога обмена — сервер обслуживает подкаталоги наравне с корнем |
| Каталог программы (exe, lic, json) | Чтение (выдаёт менеджер) | Полный доступ | Не нужен |
9.3. Учётная запись службы и доступ серверов к данным
Зачем. Отчётные формы умеют записывать, переименовывать и удалять файлы по любому пути. Под системной учётной записью Windows (так службы ФБП работали раньше) у сервера, а значит и у любой формы, полные права на компьютер: ошибка или злой умысел в форме может повредить что угодно. Поэтому службы ФБП работают под ограниченными учётными записями — у каждой службы своя запись NT SERVICE\<имя службы>. Пароля у неё нет, Windows создаёт её сама; по умолчанию прав у неё почти нет.
Как выдаются права. Менеджер создаёт на компьютере группу «Серверы ФБП» и включает в неё записи всех служб ФБП. Права выдаются группе — поэтому каждый сервер видит все разрешённые папки, и формы, выгружающие данные из других баз, работают как прежде. Всё делается из окна «Доступ серверов к данным…» (кнопка в главном окне):
- в список вносятся общие папки с базами (например, папка, в которой лежат папки по годам, а в них — базы) и папки, куда формы выгружают данные. Кнопка «Предложить по списку баз» сама подбирает общие папки для баз из списка менеджера (корень диска, системные папки и папки профилей пользователей не предлагаются);
- «Применить»: группе выдаются права на изменение папок списка вместе со всем содержимым — новые годы и базы внутри подхватываются сами, повторно ничего делать не нужно; на папку программы — только чтение (там Fbp.Server.exe и лицензия); службы переводятся на ограниченные записи. Работающие серверы получают новую запись после перезапуска — менеджер спросит, перезапустить ли их сейчас (по умолчанию — нет);
- в нижней части окна видно для каждой базы: какая у службы запись (системная выделена оранжевым) и есть ли у серверов доступ к папкам базы. Строка «ВНЕ СПИСКА» означает, что папки базы ещё не выданы: такой сервер под ограниченной записью базу не откроет;
- «Убрать из списка…» снимает права серверов с папки (менеджер предупредит, если в ней есть базы).
Права меняются только на папках из списка: доступ сотрудников, архивов и других программ не затрагивается. Неизбежное свойство межбазовой работы: форма одной базы может изменить файлы другой базы из списка — страховка от этого — архивы (п. 7.4).
Каталоги обмена на другом диске, в том числе виртуальном. Каталог обмена часто держат на отдельном диске — нередко на виртуальном диске в памяти, чтобы обмен шёл быстрее. Серверу нужен доступ и к нему, поэтому папка обмена тоже должна быть в списке: «Предложить по списку баз» подбирает для неё отдельную строку (в списке она помечена «каталог обмена»). Особенности виртуального диска в памяти:
- диск размечен в FAT или exFAT — прав доступа на нём нет вовсе, доступ есть у всех программ; менеджер показывает «диск … без прав доступа» и ничего не выдаёт;
- диск размечен в NTFS и при каждой загрузке Windows создаётся заново — пустым, без папки обмена и без выданных прав. Менеджер сам восстанавливает уже выбранные администратором права: при своём запуске, раз в минуту, перед «Запустить сервер» / «Перезапустить сервер» и перед пробуждением спящей базы. Пропавшая папка обмена создаётся заново. Каждое такое действие записывается в журнал менеджера (FbpManager-ГГГГ-ММ-ДД.log) и показывается в области уведомлений. Каталоги баз менеджер не создаёт никогда;
- если сервер такой базы запускается вместе с Windows (флажок в окне «Запуск службы…»), он может стартовать раньше менеджера — до восстановления прав. На новом диске Windows обычно и так разрешает изменение всем учётным записям, прошедшим проверку, и сервер сам создаёт папку обмена; если же сервер не запустился (в списке — «остановлен» или «УПАЛ»), запустите его из менеджера — права будут восстановлены перед запуском.
Если сервер под ограниченной записью не работает, а причину сразу устранить нельзя, кнопка «Вернуть системную запись…» в том же окне возвращает всем службам ФБП прежнюю системную запись (действует после перезапуска серверов). Сообщите о случае поставщику. Переустановка службы (смена гибернации, «Изменить базу…») выбранную запись сохраняет.
Службы, установленные файлом Install-FbpServer.BAT или предыдущими версиями менеджера, работают под системной записью; их переводит на ограниченные записи кнопка «Применить».
9.4. Антивирус
Каталог обмена — точка постоянного создания и переименования мелких файлов; активная проверка антивируса может заметно замедлять обмен и даже вызывать сбои (запросы уходят в карантин .BAD). Рекомендуется добавить каталог обмена в исключения активной защиты. Каталог базы сканируйте по расписанию вне рабочих часов.
10. Приложения к оглавлению
10.1. Состав каталога базы
| Файл / шаблон | Содержимое | Можно ли трогать |
|---|---|---|
| ACNT.A3P | План счетов (счета и субсчета) | Нет. Обслуживается только сервером |
| ACNT.BAK | Предыдущая версия плана счетов (автоматическая резервная копия) | Нет; используется для отката при повреждении основного файла |
| ACNT.EMG | Аварийное сохранение плана счетов при падении сервера | Не удалять до разбора с поставщиком (п. 8.1) |
| CAS.RUL | Дерево видов операций | Нет |
| YYYYMM.F3P | Журнал операций одного месяца (например, 202609.F3P — сентябрь 2026) | Нет |
| YYYYMM.F3P.BAK | Временная резервная копия журнала месяца при служебной реорганизации; сервер убирает её сам при следующем запуске | Нет |
| EXTRD.DAT | Дисковые дополнительные параметры объектов учёта | Нет |
| *.rpt, *.lib | Отчётные формы и библиотеки форм (текст, кодировка CP866) | Обновлять — да (копированием, п. 7.7); редактировать — только специалисту по формам |
| *.txa | Шаблоны первичных документов | Как формы |
| _RIGHTS_.FBP | Список пользователей и их прав (до 1000 пользователей) | Нет — управляется через клиентскую программу |
| FIN.LBL | Метка (название) сервера, которое видят пользователи; первая строка, CP866 | Можно изменить текстом в кодировке CP866 при остановленном сервере |
| M_PLUS | Сдвиг «текущего» месяца (п. 7.6) | Только осознанно; действует после перезапуска |
| _STATUS_.FBP | Сигнал жизни сервера (п. 6.1) | Только чтение |
| _BASEIMG_.FBP | Полный образ базы для ускоренного запуска (гибернация, п. 5.7); записывается при каждой штатной остановке сервера, может занимать сотни мегабайт | Нет; непригодный образ сервер отбрасывает сам |
| _SRVNEW_.LCK | Блокировка от двойного запуска (п. 6.4) | Нет; сервер управляет ей сам |
| FbpServer-ГГГГ-ММ-ДД.log | Журнал сервера за день (UTF-8); старые файлы не удаляются | Чтение и периодическая архивация/чистка старых файлов — на усмотрение администратора |
| *.TMP (рядом с файлами данных) | Незавершённая запись после внезапного сбоя; сервер убирает такие файлы при следующем сохранении/запуске | Нет |
10.2. Состав каталога обмена
| Расширение | Кто создаёт | Назначение |
|---|---|---|
| .REQ | Клиент | Запрос в процессе записи (ещё не готов; сервер его не видит) |
| .IN | Клиент | Готовый запрос; сервер забирает и удаляет его по выполнении |
| .ANS | Сервер | Ответ в процессе записи (клиент его не видит) |
| .OUT | Сервер | Готовый ответ; клиент читает и удаляет его |
| .BAD | Сервер | Карантин: запрос, который не удалось обработать технически (п. 8.2) |
Имя файла (до точки) — случайный набор букв и цифр, выбираемый клиентом («канал» обмена). Подкаталоги внутри каталога обмена обслуживаются наравне с корнем — их используют клиенты для разделения своих файлов. Подкаталоги standby\<имя службы> создаёт менеджер: в них он на время запуска спящей базы укрывает пришедшие запросы (п. 5.7) — после подъёма сервера файлы возвращаются на место, вручную их трогать не нужно.
10.3. Коды завершения сервера
| Код | Значение | Замечание |
|---|---|---|
| 0 | Штатное завершение: остановка из менеджера/SCM, Ctrl+C в консоли, команда завершения из клиента, истёк демонстрационный таймер | Автоперезапуск службы не срабатывает |
| 1 | Ошибка запуска: неверные параметры, не найден каталог базы, не удалось создать каталог обмена | Причина — в сообщении на консоли/в журнале |
| 2 | Аварийное завершение рабочего цикла (внутренняя ошибка) | При несохранённых изменениях счетов создаётся ACNT.EMG; служба перезапускается автоматически, только если включён перезапуск при сбое (п. 3.4); передайте журнал поставщику |
| 3 | Двойной запуск: базу уже обслуживает другой экземпляр сервера | Найдите работающий экземпляр (п. 6.4). Службой Windows такой отказ выглядит как «служба не ответила своевременно» (1053) |
| 4 | Отказ лицензии: файл есть, но не действителен для этого компьютера | Перевыпуск лицензии (п. 4.4) |
10.4. Параметры командной строки сервера
Fbp.Server.exe <каталог базы> <каталог обмена> [--log <каталог|файл>] …
| Параметр | Назначение |
|---|---|
<каталог базы>, <каталог обмена> |
Обязательные. При установке службы подставляются из данных базы в менеджере. |
--log <путь> | Другое расположение журнала (по умолчанию — каталог базы, файлы FbpServer-*.log). |
--idle-exit-min N | Штатная остановка после N минут без запросов — гибернация (п. 5.7). Менеджер прописывает этот параметр в службу автоматически по настройке «Гибернация базы…»; вручную не задавайте. |
--once, --date, --factmonths,
--hdbios, --servername, --no-base-image |
Диагностические и проверочные режимы; в обычной эксплуатации не используются. Не добавляйте их в параметры службы без указания поставщика. |
При работе службой параметры видны и меняются в свойствах службы (путь запуска), но правильнее менять каталоги через менеджер: «Изменить базу…» → переустановка службы.
10.5. Глоссарий
| Термин | Значение |
|---|---|
| Баланс | Итоговые остатки и обороты по всем счетам, которые сервер держит в памяти в готовом виде и пересчитывает после каждого изменения данных. |
| Директива | Одна команда в файле запроса (например, «зарегистрировать операцию», «выполнить форму»). Администратору синтаксис не нужен. |
| Гибернация | Режим сна без запросов: сервер останавливается при простое и поднимается автоматически по первому запросу клиента (п. 5.7). |
| Карантин | Перемещение технически необрабатываемого запроса в файл .BAD с записью в журнал (п. 8.2). |
| Каталог обмена | Общая сетевая папка, через которую клиенты и сервер передают друг другу файлы запросов и ответов (п. 1.3). |
| Менеджер серверов | Оконная программа администратора Fbp.Server.Manager.exe (раздел 5). |
| Ознакомительный режим | Работа сервера без файла лицензии: 30 минут, затем штатная остановка (п. 4.2). |
| План счетов | Список всех счетов и субсчетов базы — файл ACNT.A3P. |
| Сигнал жизни | Файл _STATUS_.FBP, регулярно обновляемый работающим сервером (п. 6.1). |
| Служба Windows / SCM | Механизм фонового автозапуска программ в Windows; SCM (диспетчер управления службами) следит за службой и перезапускает её после сбоя. |
| Форма | Отчёт или диалог, файл *.rpt в каталоге базы, выполняемый сервером по запросу клиента. |