Обновить
1
0
Александр Олефиренко@Rupper

Пользователь

Отправить сообщение

Централизованное журналирование в MongoDB

Время на прочтение4 мин
Охват и читатели5.2K
От философий — к матчасти.
Мы занимаемся разработкой ERP системы, оптимизированной для высоких нагрузок. Как следствие — в системе присутствует кластеризация. И каждый из узлов кластера ведет свой лог. В логе пишутся сообщения об ошибках, различные сообщения о ходе выполнения программ от прикладных разработчиков и так далее.
Как мы реализовали журналирование — под катом.
Читать дальше →

Чем отличается ворона от письменного стола Или разница между «ихними» модулями и «нашими» компонентами

Время на прочтение3 мин
Охват и читатели6.6K
Собственно, настоящий текст служит развитием темы про сравнительные достоинства модульных и монолитных систем.

Обучательная практика в очередной раз родила интересный вопрос. «Вот вы почем зря бичуете недостатки модульных систем, а сами продаете компоненты. Собственно, в чем разница?»
Читать дальше →

Буриданов осел и композиция конфигурации

Время на прочтение4 мин
Охват и читатели6.9K
Сегодня немного лирики: как мы решаем, что попадает в базовый функционал решения, а что нет.
Тему настоящего текста дала известная (на хабре) статья про 1С, освещавшая помимо прочего, подход уважаемой корпорации к развитию функционала коробочных конфигураций.

Нашу платформу объединяет с 1С концепция монолита (в противовес модульной схеме некоторых коллег, что на слуху), а вот подход к композиции базовой конфигурации у нас по сравнению с 1С совершенно противоположный.
Читать дальше →

Highload: проверка ERP на прочность. Как это было

Время на прочтение4 мин
Охват и читатели4.8K
Приветствую, читатель!
В этой статье я расскажу, как мы тестировали производительность нашей платформы.
Читать дальше →

Версионирование в Ultima Businessware

Время на прочтение3 мин
Охват и читатели2.8K
В этой статье расскажем, какие есть механизмы для организации групповой работы в нашей платформе.
Проблемы, общие для всех групп разработчиков, по сложнообъяснимым причинам находятся на третьем плане важности в ERP системах, где, казалось бы, качество и надежность кода должны быть поставлены во главу угла.
Что, впрочем, позволяет нам (с нашей точки зрения) претендовать на лавры первопроходцев в данной области.
Читать дальше →

Монолит или кирпич?

Время на прочтение4 мин
Охват и читатели7.5K
Сегодня немного философии про архитектуру программных систем — монолитной или модульной. Когда и какая модульность полезна, всегда ли она благо или нет. Ну и более предметно про ERP системы как близкая нам тема.

Читать дальше →

Does Big Brother keep a close eye on you?

Время на прочтение6 мин
Охват и читатели3.2K
Сегодня будет про организацию отслеживания изменений в нашей платформе.

Любая нормальная ERP система обязана иметь возможность проведения расследования о внесенных изменениях. Без такой возможности невозможно действительно передать на программу функцию управления ресурсами компании. Таким образом, система отслеживания изменений должна позволять отслеживать все изменения, требовать минимального расхода памяти (оперативной и дисковой), накладывать минимальный overhead при операциях. Система отслеживания изменений должна предоставлять возможность поиска и просмотра изменений с датой, и описанием сделанного изменения, e.g. новое значение, кто сделал, какого рода изменение. В реальных условиях надо учесть, что отслеживать требуется только реально сделанные (зафиксированные в СУБД) изменения.

Сразу оговорюсь, что мы пробовали несколько подходов, в том числе самый очевидный для Oracle — Flashback Archive. Почему он не подошел, расскажу в конце статьи.
Читать дальше →

К вопросу расчета себестоимости

Время на прочтение5 мин
Охват и читатели6.3K
Несколько дней назад проводил партнерский семинар — обучение новых сотрудников. Касались вопроса расчета итогов (регистров) системы, в частности расчета себестоимости.
Вечером один из слушателей прислал ссылку на статью, подробно рассматривающую проблематику расчета себестоимости в MS Axapta.
С просьбой прокомментировать основные различия в подходах.

Автор честно потратил за два дня не менее 8-ми часов, разбираясь в тексте.
В результате был вынужден признать поражение — я НЕ смог разобраться как оно работает.
Невероятное количество специальных случаев, настроек, десятки страниц описания обработки особенностей работы с каждым счетом, процедуры переноса себестоимости, миграции партий.
Потратив два дня на попытки разобраться в этом тексте, я так и не получил ясного понимания, что же мне надо сделать, если я хочу учитывать товар не только на складе, а и, например, на водителе. Или же хочу считать себестоимость не только для товара (это могут быть рекламации в гарантии, объекты основных средств или еще что угодно — да те же деньги).
Кроме того, некоторое удивление вызвало наличие специальных разделов с описанием закрытия склада по услугам и описанием ошибок списания на округлении. Зачем вообще списывать услуги со склада?
Двух-этапная система для борьбы с остатками округления тоже не уложилась в голове.
Пассажи типа
Правильнее было бы накапливать сумму ошибок на каком-то выделенном счете, а потом, при трансформации баланса, закрывать этот счет в ручную. Для того чтобы добиться такого эффекта — необходимо подправить метод inventAdj::errorAccountOperation(), таким образом чтобы он возвращал нужный вам счет ошибок округления. Я бы, наверное, использовал для этого счета отклонений от стандартной себестоимости. Если standard costing используется — то на эти счета как раз и нужно отклонения списывать, а если не используется — то эти счета в настройке складских разносок не заняты и их можно приспособить под списание ошибок и округлений. Если эта схема вам подходит — достаточно поменять в методе InventAdj::errorAccountOperation() значения InventAccountType::InventProfit и InventAccountType::InventLoss на InventAccountType::InventStdProfit и InventAccountType::InventStdLoss соответственно.

с одной стороны — внушают уважение, с другой — вселяют ужас.

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

Расчет себестоимости, наверное, один из самых сложных для понимания процессов в нашей системе, и он же — один из самых упорядоченных. IMHO.

В качестве спойлера картинка:


Читать дальше →

Транзакционный ад

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

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

Читать дальше →

Мегатонны макулатуры легким движением руки

Время на прочтение6 мин
Охват и читатели10K
Добрый день. В этой статье расскажем о том, как устроена печать в нашей платформе.

Немного истории


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


Читать дальше →

Байки из склепа разработчиков платформы для ERP. Введение

Время на прочтение3 мин
Охват и читатели18K
Добрый день!

В этой серии статей мы хотим рассказать об Ultima Businessware — нашей платформе для построения ERP систем.
Это первая, вводная статья, в которой расскажем об эволюции (т.е. среде и взаимодействии с ней) платформы и перечислим основные и самые интересные возможности платформы.
В следующих постах мы планируем рассказать о подробностях устройства и реализации этих самых возможностей. Кроме того, по ходу изложения мы будем делиться с особенностями организации процесса разработки у нас.
Перейдем к делу
2

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность