← Вернуться на NodaLogicДмитрий Воронцов · 2026-09-29
NodaLogic · Trade Demo

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

Код открыт

В качестве учебного решения для изучения кода и архитектуры NodaLogic предлагается конфигурация Trade Demo — пример решения для небольшой торговой фирмы с основными бизнес-процессами. Это по большей части намеренно упрощённое решение создано для изучения подходов и механизмов платформы. При этом оно охватывает всю инфраструктуру и даже имеет своё оффлайновое мобильное рабочее место.

Возможности

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

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

Контроль рентабельности продажи по нормативной наценке. Для товара задается минимальная допустимая наценка; при проведении заказа система сравнивает цену продажи с текущей FIFO-себестоимостью и не позволяет провести экономически недопустимую продажу.

Несколько схем обеспечения заказа клиента. Заказ может быть обеспечен существующим свободным остатком, зарезервирован на складе либо переведен в схему продажи «под заказ», когда необходимый товар сначала требуется закупить у поставщика.

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

Резервирование товара под конкретные заказы клиентов. Свободный складской остаток и уже зарезервированный товар разделяются, поэтому один и тот же остаток не может одновременно обеспечивать несколько заказов.

Автоматическое снятие резерва при отгрузке. После реализации резерв заказа уменьшается одновременно с физическим остатком товара.

Учет товаров в пути по заказам поставщикам. Заказанный, но еще не поступивший товар участвует в анализе обеспеченности клиентских заказов и закупочном планировании.

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

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

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

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

Формирование рекомендаций к закупке с возможностью ручной корректировки. Система рассчитывает потребность, но закупщик может изменить рекомендуемое количество перед созданием заказов.

Автоматическое формирование заказов поставщикам по результатам планирования. Рассчитанная потребность группируется по поставщикам и превращается в реальные заказы без повторного ручного ввода.

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

План-факт приемки и отгрузки. Склад работает не просто с документом, а сравнивает ожидаемое и реально принятое/отгруженное количество по каждой позиции.

Приемка и отгрузка как отдельные мобильные рабочие места. Кладовщик видит только релевантные ему задания: еще не обработанные заказы и уже созданные рабочие документы.

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

Сканирование штрихкодов при складской обработке. Поддерживается аппаратный сканер и камера; найденный товар автоматически сопоставляется со строкой документа, после чего вводится фактическое количество.

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

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

Анализ доступности товара. Можно видеть не только физический остаток, но и реально доступное количество с учетом резервов и ожидаемых поставок.

Анализ продаж и маржинальности. Продажи можно анализировать по клиентам, товарам и документам с расчетом выручки, фактической себестоимости и маржи на каждом уровне.

Принципы

Кто-то скажет, что этого мало, и что возможности конфигурации отличаются от потребностей конкретного бизнеса. Но у меня по поводу этого принципиальная позиция.

Можно сказать, что N-Reactor «делает срез» из множества возможностей и функциональных опций под конкретное техническое задание, при этом сохраняя особенности и фичи продукта. Естественно, это цельная и связанная архитектура, а не набор блоков, она как бы выращена из ДНК продукта. Как если бы делался коробочный продукт и он, совершенно случайно вам подошел на 100%.

Эту конфу можно менять и достраивать под себя. Вы можете вооружить обычный ИИ-чат этой конфой, ссылкой на документацию и попросить доделать то, что вам нужно. Т.е. это база. Да, это не N-Reactor, но конкретно в этой конфе нет специализированной методологии. Пока N-Reactor может делать WMS, позже я планирую пройти путь сначала по отдельности в различных функциональных блоках – CRM, MPR2, HR, MES, логистика и т.д. и туда войдет в итоге «торговая часть» и они объединятся в единую ERP. Естественно, на принципах «генерируемого продукта» а не коробкой с миллионами строк кода.

Особенности реализации

Эта конфигурация, как и все мои продукты, вышла с ИИ-конвейера готовых решений N-Reactor (которым можете воспользоваться и вы, создав себе идеальную конфигурацию). Она создана под конкретные требования, с учетом стандартов учетных и операционных решений NodaLogic. Т.е. это образец «как надо делать» чтобы серверное и мобильное решение были быстродействующими, простыми, надежными и читаемыми. Тут используются такие механизмы как QuantLedger, контракты, асинхронные процедуры и т.д. В NL много конкурирующих механизмов и выбор конкретно этих обусловлен особенностями задачи, а не тем что они принципиально лучше.

Движения документа
Движения документа

Серверные документы создаются в статусе Черновик, это означает что они не оказывают влияние на учет (т.е. не «проводятся»), а в статусе Проведен, они проводятся по различным разрезам учета и это можно посмотреть на закладке «Движения»

Статусы документов и движения
Статусы документов и движения

Проведение (как и обратное действие – Черновик/Отменен) контролируется по правилам бизнес-логики. Например, нельзя отменить поставку, если с нее уже списан товар или на нее распределены расходы.

Склад простой, не адресный. Для адресного склада есть отдельная демо “WMS” и N-Maker умеет делать большие и сложные WMS со стратегиями, оптимизациями, волнами и прочими штуками (см. статью по генерируемым продуктам выше). В этом складе все примитивно до нельзя: отсканировал товар, указал фактическое количество.

Склад работает по статусам, т.е. заказ не уйдет на склад если он не готов к отгрузке (нет товара). При этом это полноценный offline-first т.е. он работает с узлами локально и отсылает по мере необходимости данные.

Установка

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

Открыть демо-продукты

Установка редактируемой копии
Установка редактируемой копии

Далее перейдите в клиент. Если конфигурация не подключена, откройте репозиторий и добавьте её. В клиенте может быть подключено несколько разных конфигураций — вы сами выбираете, какая будет работать. Серверная база относится к вашему экземпляру конфигурации: создавая конфигурацию, вы создаёте экземпляр решения. Установка из «Демо-продуктов» делает этот шаг за вас.

Прежде всего рекомендую зайти в Сервис-«Начальное заполнение» и «Создать/восстановить демо данные». Это сэкономит время

Начальное заполнение
Начальное заполнение

После этого уже можно смотреть отчеты и, например пользоваться механизмом «Планирование закупок»

Мобильное рабочее место

Для того, чтобы заработало рабочее место на складе нужно сделать такие вещи:

Интеграция и QR-коды
Интеграция и QR-коды
  1. В мобильном приложении NodaLogic в Настройках вбить API пользователь и API пароль. Это те же учетные данные что и в nmaker.pw
  2. Открыть Сервис-Интеграция. На мобильном устройстве запустить NodaLogic – Репозиторий конфигурации – Добавить через QR и отсканировать “QR конфигурации”
  3. Приложение перезапустится и конфигурация будет доступна (должен появиться раздел «Склад: мобильная работа»)
  4. В «Интеграция» нажать «Подготовить контракт и показать QR». В приложении в Настройки-Контракты нажать «Добавить» и отсканировать контракт. Далее в меню можно нажать Загрузка и также можно поставить в настройках интервал для периодической загрузки.

После этого все должно работать. Но если у вас аппаратный сканер (Терминал Сбора Данных) и вы хотите сканировать им (альтернатива – через камеру), то также в Настройках надо настроить Использовать подписку на сканер и как минимум надо указать Сообщение подписки и Переменная подписки. Где их взять – зависит от производителя оборудования. Обычно достаточно зайти в приложение «Настройка сканера» или что то подобное и там сделать вывод «через Интент» и там либо будет указана строка Action/переменная Extras либо ее вообще можно задать самому. В некоторых случаях строка передается в виде byte array и тогда нужно еще указывать длину (для этого есть соотвествующее поле в настройках)

Комментарии

Комментарии видны всем; оставлять их могут зарегистрированные пользователи NodaLogic.

Комментариев пока нет.
Чтобы оставить комментарий, войдите или зарегистрируйтесь в NodaLogic.