Код 1С обречен на неуспех?
Когда я решал задачу по изменению порядка печати чеков коррекции, столкнулся с одним интересным нюансом построения кода в 1С.
Вот стек вызовов при печати чека коррекции:
Из формы документа вызывается метод ПробитьЧек.
Далее функция вызывает ПроверитьКодМаркировки.
И вот тут — парадокс — именно из функции маркировки и идет пробитие чека в функции НачатьФормированиеЧекаКоррекции.
То есть нарушается базовый принцип модульности, когда каждый модуль делает то, что ожидается от него по названию.
Если функция занимается проверкой кодов маркировки, то почему ее побочным эффектом является пробитие чека? Почему его нельзя пробить в отдельной функции, после проверки кодов маркировки?
Как вы догадываетесь, ранее, когда кодов маркировки не было, пробитие чека было явно не в этой функции.
Причем, если в чеке товары без кодов маркировки, то функция выполняется на холостом ходу. Но все равно пробитие чеков почему-то находится там.
Получается, что на ходу сделали заплатку и влепили пробитие чека в удобное для разработчика место, на скорую руку, абсолютно не подумав о принципе модульности, читаемости кода.
Так пишут код в фирме 1С. Напомню, это монопольная в плане программного обеспечения для учетных программ компания. И она позволяет себе такую небрежность в архитектуре кода.
Интересно, все большие системы пишутся таким образом или это просто особенности национального кодописательства? Ходили слухи, что код 1С пишут студенты, после таких вот архитектурных решений начинаю бояться, что это не слухи…
Я понимаю, язык ограничен, нет возможности создавать объекты. Но можно сохранять хоть какую-то корректность в построении модулей, не допускать подобную небрежность? Это не перфекционизм, это здравый смысл.
Из-за подобной организации кода я искал место пробития чека один час и нашел его только когда устал изучать коды модулей и прошелся отладчиком на реальном чеке. Лишенное логики построения модулей — прямой ущерб для клиента.
Попробовал обсудить эту тему на Мисте. Но ветку удалили.
А что думаете вы о том, может ли колосс долго простоять на глиняных ножках?
1С в последнее время замахивается на ERP:
Судя по ценам, вы видите, как растут аппетиты кампании.
Но проводился ли аудит качества написания кода в этих конфигурациях? Благо, код открытый и любой покупатель может запросить код на аудит перед покупкой.
Или там все то же лапшевидное нагромождение бессвязных модулей с ужасной архитектурой, как в УТ 11.5, но за 10х прайс?
Среда: УТ 11.5 актуальная
Ну если метод называется НачатьФормированиеЧекаКоррекции то видимо какие-то шаги по чеку ожидаемы.
А так налицо нарушение single responsibility принципа.
да… и вот на этом поделии сидит вся страна…
Пересади всех на своё решение — базуху.
Базуха пока еще в проекте.