IMS — Подсистемы
Система состоит из нескольких подсистем, каждая из которых отвечает за свою область работы. Все подсистемы связаны через документы и справочники — данные введённые в одной подсистеме автоматически доступны в остальных.
Документы
Центральная подсистема. Всё что происходит в компании с товаром и деньгами — оформляется документом. Документ содержит шапку (номер, дата, контрагент, склад) и строки (товар, количество, цена).
Типы документов
Типы документов определяются справочником операций. Каждая операция имеет направление — приход, расход, денежная, заказ — и своё название. Одних только приходов может быть несколько видов: «Приход от поставщика», «Приход возврат», «Приход безвозмездный». Система различает их и позволяет строить отчёт по каждому виду отдельно.
Что можно делать с документом
Что можно делать:
- Создавать документы любого типа
- Добавлять, редактировать и удалять строки
- Обрабатывать документ — в этот момент изменения отражаются в складских остатках
- Откатывать обработку — если нужно исправить ошибку
- Печатать накладные и счета
- Просматривать историю изменений документа
- Привязывать серийные номера к товарам
- Резервировать товар под конкретного клиента
Жизненный цикл документа
Документ до обработки — черновик, его можно менять свободно. После обработки — только через откат.
При создании документа пользователь выбирает операцию из справочника. Операция определяет какие поля нужно заполнить: для прихода — поставщик и склад, для расхода — склад и клиент, для денежной операции — банковский счёт.
Если в справочнике операций задан автоматический номер — система сама присвоит номер документу и увеличит счётчик для следующего.
Заказы покупателей
Когда клиент заказывает у нас — создаётся заказ. Заказ сам по себе не перемещает товар и не движет деньги. Это контрольная точка: заказано столько, отгружено столько, осталось столько.
Заказ объединяет несколько документов под одним номером. Например: клиент заказал 100 единиц, мы отгрузили 60 одной накладной и 40 другой — оба документа привязаны к одному заказу, и система показывает что заказ исполнен полностью.
Что можно делать:
- Видеть список активных заказов
- Отслеживать статус исполнения каждого заказа
- Открывать привязанные документы (приходы, отгрузки)
- Создавать новые документы из заказа
Заказы поставщикам
Зеркальная ситуация — когда мы заказываем у поставщика. Форма заказа поставщику — одна из самых развитых в системе.
Позиции заказа — что именно заказываем: товар, количество, цена, единица измерения. Можно сохранять варианты заказа для сравнения — например, один вариант с дешёвыми комплектующими, другой с качественными — и загружать любой из них.
Связанные документы — какие приходы уже оформлены по этому заказу. Видно: что пришло, что ещё в пути.
Компоненты — автоматическое разложение заказа по спецификации (BOM). Если заказано 10 изделий, и каждое состоит из 4 деталей — система покажет что нужно 40 деталей. Для каждого компонента видно:
- сколько требуется по заказу
- сколько есть на складе
- сколько уже заказано у поставщиков
- сколько зарезервировано
Это позволяет точно определить что нужно докупить.
Матрица компонентов — сводный отчёт: по строкам — компоненты, по столбцам — заказы. На пересечении — сколько нужно. Внизу — итого по каждому компоненту. Незаменим когда одновременно в работе несколько заказов с общими деталями.
Что можно делать:
- Создавать и редактировать позиции заказа
- Автоматически разворачивать спецификацию в компоненты
- Обновлять данные по остаткам и резервам
- Вручную добавлять или удалять компоненты
- Сохранять и загружать варианты заказа
- Печатать заказ поставщику
- Обрабатывать заказ
Отчёты
89 отчётов (актуально на 2026-07-31, число растёт), покрывающих все аспекты работы. Каждый отчёт перед построением запрашивает параметры — период, склад, контрагент, операция — и строится заново из текущих данных.
Складские отчёты:
- Остатки на складе — текущие и на любую дату в прошлом
- Обороты — движение товара за период (приход, расход, остаток)
- Карточка товара — полная история одного товара: все операции, все документы
- Инвентаризация — лист для физической сверки склада (слепой пересчёт,
без вывода системного количества)
- Реестр перемещений — по складу, отдельно «отдал»/«принял» за период,
с расшифровкой по документам и позициям
Документные отчёты:
- Реестры документов — список документов за период по типу операции
- Накладные — печатная форма документа
- Счета-фактуры — для выставления клиенту
Финансовые отчёты:
- Банковские операции — движение денег по счетам
- Доходы — выручка за период
- Задолженности — кто сколько должен / кому мы должны
- Обороты клиентов — сколько купил каждый клиент за период
Отчёты по заказам:
- Обороты по заказам — исполнение заказов за период
- Матрица компонентов — сводная таблица потребностей в деталях
Прочие:
- Сотрудники и исполнители
- Скидки и прайс-листы
- Корректировки
Отчёт на прошлую дату — особая возможность. Система берёт текущие остатки и математически откатывает все операции после нужной даты. Реальные данные не затрагиваются. Это позволяет увидеть состояние склада на любой момент в прошлом.
Точка продажи
Кассовый модуль для розничных продаж. Быстрый интерфейс для работы продавца: найти товар, добавить в чек, оформить продажу.
Что можно делать:
- Быстрый поиск товара по названию или артикулу
- Добавление товара в чек с указанием количества
- Автоматический расчёт суммы
- Применение скидок из прайс-листов — система автоматически подбирает скидку по клиенту и товару
- Оформление продажи — создаётся документ продажи
- Печать чека
Скидочные прайс-листы позволяют задавать разные цены для разных клиентов или групп клиентов. При продаже система сама находит подходящий прайс.
История
Просмотр истории изменений. Кто, когда, что менял — по документам и по товарам.
Что можно делать:
- Посмотреть историю конкретного товара — все операции с ним: приходы, расходы, по каким документам, от каких поставщиков
- Просмотреть журнал событий системы
Инструменты
Сервисные функции для управления данными и настройки системы.
Резервирование — пометить товар на складе как «обещанный» конкретному клиенту или под конкретный заказ. Товар физически на месте, но система показывает сколько реально доступно для других.
Размещение — указать где именно на складе лежит товар: стеллаж, полка, ячейка. Помогает быстро находить при отгрузке.
Серийные номера — привязать уникальный номер к единице товара. При приходе — ввести номер, при расходе — выбрать из имеющихся.
Спецификации (BOM) — описать из чего состоит изделие. Продукт = список компонентов с количествами. Используется при производстве и при разложении заказов на компоненты.
Распределение расходов — разнести стоимость доставки, таможни и других дополнительных расходов по позициям прихода пропорционально их стоимости. После распределения цена товара на складе отражает реальную стоимость приобретения.
Дополнительные суммы — услуги, налоги и итоговые суммы, которые добавляются к документу поверх стоимости товаров.
Просмотр склада — текущие остатки по любому складу с возможностью поиска.
Произвольные запросы — для опытных пользователей: построить собственный запрос к данным с произвольными условиями и группировками.
Журнал событий — системный лог: какие операции выполнялись, кем и когда.
Управление доступом — назначение прав пользователям: кто может видеть какие разделы, работать с какими складами.
Сотрудники — справочник персонала компании.
Откат — отмена обработки документов. Можно откатить один документ или все документы после указанной даты.
Управление отчётами — настройка шаблонов отчётов: какие отчёты доступны, к какому типу операции привязаны.
Справочники
Нормативно-справочная информация — всё к чему обращаются документы и отчёты. Работа в системе начинается с заполнения справочников.
Основные справочники:
- Товары — всё что приходует и отпускает компания: детали, материалы, продукция, услуги
- Контрагенты — поставщики и клиенты. Одна компания может быть и тем и другим
- Склады — физические места хранения товара
- Операции — виды документов: «Приход от поставщика», «Продажа розница», «Перемещение» и т.д.
- Банковские счета — для денежных операций
- Единицы измерения — штуки, килограммы, метры, упаковки
- Договоры — привязка документов к договорам с контрагентами
- Виды оплаты — наличные, безналичные, карта и т.д.
- Спецификации — рецептура изделий (из чего состоит)
- Прайс-листы — скидочные и специальные цены для клиентов
Всего в системе более 50 справочников (реестр — таблица sysfl, 52 записи). Все они работают одинаково: поиск, просмотр, добавление, редактирование. Удалённые записи не исчезают а помечаются как неактивные — чтобы не ломать ссылки из старых документов.
Безопасность и вход в систему
Вход (Login). Пользователь вводит логин/пароль. Пароль в базе хранится
как bcrypt-хеш (не открытым текстом) — сравнение идёт через password_verify,
не прямым совпадением строк. При успешном входе сервер создаёт сессию —
случайный токен реально записывается в базу (таблица сессий: токен → кто
вошёл → срок действия, 12 часов), а не просто выдаётся клиенту "на слово".
Каждый запрос к серверу. Приложение автоматически прикладывает токен
текущей сессии к любому действию — это сделано в одном центральном месте, не
в каждой форме по отдельности, поэтому все разделы программы получили это
одинаково.
Проверка на сервере. Перед выполнением любого действия (создание
документа, удаление, отчёт — что угодно) сервер проверяет: есть ли валидный
токен, существует ли такая сессия, не истёк ли срок. Нет валидной сессии —
действие не выполняется вообще. Исключение — сам вход и проверка токена
(иначе войти было бы нечем).
Обязательность входа. Раньше в тестовом режиме приложение открывало меню
сразу, без входа. Теперь это убрано — без входа нет сессии, без сессии сервер
откажет в первом же действии, так что вход стал не просто первым экраном, а
фактически обязательным условием работы.
Что пока не проверяется. Сервер сейчас проверяет только "вошёл ли
пользователь вообще", но не "может ли именно этот пользователь выполнять
именно это действие". Права по ролям сейчас видны только в интерфейсе
(скрытие недоступных кнопок) — сервер их не перепроверяет. Это следующий шаг
развития системы, ещё не сделан.
Как подсистемы связаны
Всё сходится к документам и справочникам:
- Заказ покупателя порождает документ расхода при отгрузке
- Заказ поставщику порождает документ прихода при получении
- Точка продажи создаёт документ продажи
- Резервирование привязывается к строкам на складе
- Спецификация разворачивается в компоненты заказа или в операции производства
- Отчёты строятся из документов и справочников
- История показывает все документы по товару или контрагенту
Данные вводятся один раз и используются повсюду. Нет дублирования — есть единый источник истины.