В статье рассмотрены недостатки типовых конфигураций с точки зрения программиста.
Проблемы в коде и архитектуре
Привязанность кода к конкретной задаче
Очень часто код располагается в формах, что делает его выполнение возможным только на клиенте.
Часто процедуры в формах и модулях не помечены как экспортные. Их можно сделать экспортными через расширение, но штатно они недоступны.
Функции плохо изолированы, всегда связаны друг с другом и часто с контекстом формы.
Примеры:
Загрузка выписки — только из формы
Заполнение организации и контрагента по ИНН — плотно привязано к форме. При создании организации программно приходится извлекать и дублировать код.
Святость галочки «Вызов сервера»
1С любит использовать серверные модули без галочки «Вызов сервера». При этом дублирует вызовы этих функций из других серверных модулей, но уже с этой галочкой, что загромождает код.
Смысл такого увлечения не понятен. Классический пример — модуль ОбщегоНачначения и все модули с суффиксом ВызовСервера. В типовых конфигурациях десятки таких модулей, что приводит программиста к деориентации.
Было бы логичнее помечать функции, которые вызываются только с сервера, как это сделано с ключевым словом Экспорт.
Святость извлечения данных запросами
1С молится на извлечение данных запросами в ущерб понятности и читаемости кода.
Запросы используются для извлечения данных из базы, у каждого документа в модуле менеджера есть метод, который извлекает его данные для печати, например.
Но даже для формирования движений документов используются запросы, но в силу специфики языков запросов получаются большие нечитаемые монструозные тексты с объединениями, описывающими движения при разных условиях.
Странные контейнеры и упаковки данных
Например, при печати данных несколько табличных документов объединяются в один и затем уже разделяются областями Документ1, Документ2, вместо передачи их в коллекции.
Коллекции пытаются имитировать объекты, но часто их логика состава полей очень странная.
Галлюциногенные цепочки асинхронных процедур
Если посмотреть, как 1С оформляет цепочки асинхронных процедур, то можно ужаснуться.
Их наименование совершенно не говорит о том, что в них происходит. Комментарии отсутствуют.
Не говоря уже о том, что такие длинные цепочки можно заменить процедурой-автоматом, которая на входе получает текущий статус и реагирует на него, вызывая нужную процедуру, переходя в другой статус.
Полюбоваться можно, отладив, например, пробитие чека.
Отсутствие «безопасных» вызовов
Если программист отлаживает такие серьезные вещи, как пробитие фискальных чеков, то у него нет возможности безопасной отладки. Нельзя сэмулировать ситуацию, что чек пробился, код ждет именно явного ответа от фискального регистратора. И так во всем, что касается отладки. Отсюда сложность выполнения виртуальных тестов кода.
Изменчивый naming
1С постоянно переименовывает прикладные объекты, названия модулей. Это говорит не о развитии, а о том, что архитектурные решения принимаются наспех, без обдумывания. В итоге часто приходится искать куда уехала та или иная функция и привыкать к новым названиям объектов и полей.
1С разрабатывает прикладные системы уже долго, но так и не могла определиться — партнеры или контрагенты, а может быть покупатели и т.п.?
Сущности тоже то объединяются, то разъединяются, например договора эквайринга сначала были отдельными, потом объединились с договорами, но получили отдельный вид:

Пример: ввести в конфигурации отбор по «Удалить«, будет выдано более сотни элементов.
Нарушение одинаковости
Одни и те же интерфейсные элементы могут иметь разное наименование, например кнопка добавить в табличной части Запасы имеет название ЗапасыДобавить или просто Добавить в УНФ.
Или правая колонка в документах может иметь название ПраваяКолонка или ШапкаПраво.
Неоптимальные решения
1С декларирует, что «борется» за производительность. Но во многих местах ее кода полно неоптимального кода.
Например, при печати счетов-фактур 1С получает все возможные макеты счетов-фактур и затем выбирает нужный. Объясняется это якобы тем, что в списке документов на печать могут понадобиться разные макеты, но вот тогда то их и надо получать, кэшируя затем. Так получается, что в 99% случаев получение макетов отрабатывает в холостую.
Клонирование функционала
1С часто дублирует один и тот же функционал, возможно, потому что разработкой конфигураций занимаются разные команды.
Например, для выполнения HTTP-запроса существует несколько методов (для директ-банка, для обмена с сайтом и т.п.), нет единой точки, где можно было бы перехватить HTTP-запрос и прописать ему прокси, например.
Недостатки функционала
Решил добавить раздел, где опишу недостатки функционала, потому что некоторые говорят мне — ну ладно, пусть типовые 1с это черный запутанный сложный, не поддающийся анализу ящик кода, но свои задачи решает?
Наверное, надо привести примеры, когда типовые 1С не решают возложенных на них задач. Причем проблемы заключаются обычно в том, что:
Методисты рассматривают задачу в тепличных условия, без сбоев и ошибок.
Методисты предлагают бизнесу только один вариант решения задачи, правильный на их взгляд, и предлагают бизнесу перестроиться под него.
Эти недостатки тоже влияют на программиста, потому что ему приходится решать проблемы плохого функционала.
Многострадальная себестоимость
В начальных версиях конфигурации себестоимость считалась по партиям или по среднему, с восстановлением границы последовательности, если пересчет был задним числом.
Теперь перешли на помесячное закрытие периодов, что хорошо только для больших компаний и производства, но уже плохо для компаний среднего размера и торговли.
Причем после такого перехода появилось требование, чтобы на конец периода не было минусов, что мало выполнимо для розницы, где минуса из-за пересортов — постоянное явление. Поэтому вместо того, чтобы получить расчет с погрешностью, нельзя получить расчет вообще, т.к. есть отрицательные остатки.
1С работает на стороне государственных органов
1С постоянно перекрывает в своем функционале вещи, которые используются для «оптимизации» налогов. Они были бы возможны технически, но 1С их закрывает. 1С играет против бизнеса на стороне государства.
Например, запрещает настраивать две кассы на одном рабочем месте.
Сгораемые бонусы в 1С считаются неправильно
Сгораемые бонусы, которые начисляются на определенный срок, а потом сгорают — это типичный пример партионного учета. Но в последние пятилетки 1С отказывается от партионного учета и пытается вместо него делать какие-то костыльные решения. Но природу бонусов не обмануть — она партионная.
Поэтому бонусы в 1С изначально рассчитывались плохо и с ошибками, а при переходе на бонусы 2.5 вообще стали бесполезным функционалом, который проще переписать, чем выслушивать претензии от клиентов о неправильно начисленных баллах.
Детская травма ролей доступа
В 1С с ролями плохо все. Потому что использование ролей рассчитано на «галочное» программирование, что когда-то было удобно, но теперь безнадежно устарело, т.к. код всегда гибче и оптимальнее.
Но у 1С есть еще одна родовая травма — полные права и права администратора не разделены. Обычно в организациях, где не сильно заморачиваются правами доступа, пользователям дают полные права, это было бы менее опасно, если бы полные права не включали права администратора. В итоге такие пользователи могут создавать новых пользователей, скачивать базу, устанавливать опасные доработки.

Комментарии (23)

economist75
29.03.2026 15:31Все это очень печально, позор одним словом. Но монопольное положение позволяет и не такое. А заполучила его 1С не на ровном месте, а за счёт удачной бизнес-модели и продуктов 7-й серии и методического единства с ФНС и Минфином. В те далёкие времена был доступ у многих, но присутствовали не все. И оказалось что новации 1С внедряет гораздо быстрее конкурентов.
Наверно проблемы надо решать, но монополистам спешить некуда.

fixin Автор
29.03.2026 15:31Самое важное, что нужно знать про 1С как фирму - им не нужна обратная связь и пожелания пользователей. У них свое "видение"... А пользователи должны колоться, плакать и кушать кактус.

MarkKino
29.03.2026 15:31В коробочных 1С действительно большие проблемы с кодом и просто невероятный техдолг. Ощущение, что с Сонаром они не дружат. Недавно решал какую-то тривиальную задачу: код зачастую нечитаемый - через один стэк процедура с когнитивной сложностью 1000. В итоге единственный способ что-то понять - гонять переменные по отладке и смотреть как они модифицируются. В итоге потратил несколько часов, чтобы найти место, которое нужно доработать.
Но часть ваших замечаний - довольно странные - про вызов сервера, например. Не сильно бы удивился, увидев в статье что-то типа: вместо понятного "Организация.Наименование" - пишется загадочный "ОбщегоНазначения.ЗначенияРеквизитаОбъекта(Организация, “Наименование”)". Некоторые вещи могут казаться неочевидными с позиции внедрения, но вполне логичны в контексте разработки коробочного решения.
Про безопасные вызовы - вообще не понял претензии. Поставьте эмулятор и будет вам безопасно. Как код взаимодействия с драйвером должен “безопасно” выполниться без взаимодействия с драйвером?

fixin Автор
29.03.2026 15:31Если вы про SonarQube (бывший Sonar[1]) — платформа с открытым исходным кодом для непрерывного анализа (англ. continuous inspection) и измерения качества программного кода (англ. Continuous Code Inspection).
То огорчу Вас, 1с еще не доросла до автоматизированного тестирования кода, ведь те ошибки, которые всплывают в ее релизах, частично не прошли бы фильтр авто-тестов.
Про вызов сервера 1С наплодило в конфигурации общих модулей ВызовСервера, ради поддержки одной фичи, которая никому не нужна. В итоге пострадало восприятие кода. Такое называется неформально "задроство", как это официально назвать, не знаю.
Про безопасные вызовы объясняю - из-за плохой функциональной изоляции нельзя получить текст чека в XML, например,не доводя дело до печати. Там все завязано на процесс печати чека. То есть и погонять без оборудования код и получить какие-до данные без физической печати прооблематично. Отлаживать и дорабатывать поэтому дорого. Эмуляторы оборудования есть не всегда.

Brawler
29.03.2026 15:31Некогда были эмуляторы фискального регистратора.
Потом пришла эра фискальных накопителей и пропали эмуляторы. Может у кого и есть они, но не у меня. У меня самодельный под УПП и УТ 10 есть тока, выводит просто XML на экран, который должен уйти в драйвер железа.

Naf2000
29.03.2026 15:31В смысле пропали?
1C: Эмулятор ККТ с передачей данных (54-ФЗ) c функций эквайринговых операций, версия 5.2.4.13 - лежит на ИТС от 05.02.2026

Brawler
29.03.2026 15:31Ну и прекрасно. Мне пока не надо. Лет 5 ККТ не трогал руками и надеюсь еще не скоро придется к ним лезть.

fixin Автор
29.03.2026 15:31только под 32-разрядную 1с, например. Не всегда удобно ставить себе 32-разрядного клиента только из-за необходимости что-то отладить. Проще использовать кассу без оборудования для отладки РМК, но если что-то касаемое чека, то да.

Naf2000
29.03.2026 15:31Достаточно проверить, что в архиве лежит как 32, так и 64-битный дистрибутив

fixin Автор
29.03.2026 15:31я пробовал на 64 разряда, не взлетало. Но может быть что-то не так делал. Суть претензии не в этом

Naf2000
29.03.2026 15:31А в чем претензия конкретно здесь? Эмулятор это mock-обьект, вполне распространённый паттерн

fixin Автор
29.03.2026 15:31перечитай статью. да и я уже выше повторял. Если не заметил, повторю еще раз "из-за плохой функциональной изоляции нельзя получить текст чека в XML, например,не доводя дело до печати. Там все завязано на процесс печати чека. То есть и погонять без оборудования код и получить какие-до данные без физической печати проблематично. Отлаживать и дорабатывать поэтому дорого "

Brawler
29.03.2026 15:31Меня сейчас больше удручает, то как растет сложность типовых и в частности ERP. Уже так навертели видов учета, что до конца ничего корректно не работает, а пробить службу поддержки порой невозможно. В платформе есть косяк например, в типе данных форматированный документ. Кидаем на форму реквизит этого типа. Запускаем базу. Лезем в окно установки межстрочного интервала и долбим там число 9999999999999999999 и еще мнооооооого много девяток,99 при этом платформа вылетает, но служба поддержки считает это нормальным. После таких кренделей от вендора опускаются руки вообще туда писать ибо пустая трата времени получается и лишние расстройства и неудовлетворенности.

fixin Автор
29.03.2026 15:31В этом как раз и есть особенность 1С, что она считает, что пользователи должны колоться, плакать, но кушать и ... платить...

Naf2000
29.03.2026 15:31В целом считаю, что статья написана ради хайпа. Все, кто работает с типовыми и так знают их больные места. Хотя некоторые вещи типа вызова сервера и запросов - откровенно странные.
Не написано главное - что делать, можно ли изменить? И вот тут при глубоком анализе видно, что проблема не в типовых как таковых, а в самой платформе 1С, с ее закрытостью.

fixin Автор
29.03.2026 15:31Нет, изменить нельзя. Это очевидно. С 1С у разработчиков нет обратной связи.
И проблема не в платформе, а в конкретной стиле писанины типовых.

dab85
29.03.2026 15:31Так постоянные изменения в коде - название процедур, параметров переменных - это способ обфускации кода, что мелко корпоративных подельцев расширов... Посмотрите на один только "жирный" ЭДО, его меняют в коде каждый релиз. Чтоб никто не мог вклиниться....

AlexOrgnet
29.03.2026 15:31Надо написать учебники для бизнес тренингов как такой плохой продукт смог захватить такую большую долю рынка

fixin Автор
29.03.2026 15:31всему виной гнилость капитализма, как общественного строя. Маркс писал, что капитализм вмегда стремится к монополии и 1С это подтверждает. А ФАС, которая должна боротся с монополиями, получается у нас для галочки.
iliabvf
Думаю все проблемы растут из факта, что 1С выдумала свой паттерн архитектуры, вразрез всем миру. Все решения как и сама платформа, рассчитаны на свое песпорядочное ноу-хау.
fixin Автор
У меня иногда такое ощущение, что архитектурой типовых занимаются откровенные неудачники...
Хотя 1С сильно навредило то, что торговлю, бухгалтерию и зарплату разрабатывали разные команды, было распыление сил и отсутствие единообразия. Потом они попытались это унифицировать, но такое себе.