Программисты 1C не любят типовые конфигурации.
Объясню на одном примере и станет понятно, что 1C не заботится о тех, кто использует ее код в своих решениях.
В одном месте кода получали основной банковский счет организации при заполнении документа:
БанковскийСчетОрганизации = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(СтруктураПараметров);
Стала возникать ошибка, что не заполнено поле КорреспондирующийСчет.
Ошибка возникала в процедуре Справочник.БанковскиеСчетаОрганизаций.ПолучитьБанковскийСчетПоУмолчанию:

Раньше не нужно было передавать параметры КорреспондирующийСчет и ИсключитьСчетаВВалюте, теперь они стали обязательными. Но зачем, если ниже в коде проверяется, и если параметр не заполнен, то он игнорируется:

Если бы просто проверяли наличие необязательных параметров в структуре, это не приводило бы к ошибке.
В итоге я сделал заплатку:
&Вместо("ПолучитьБанковскийСчетПоУмолчанию") Функция дор_ПолучитьБанковскийСчетПоУмолчанию(СтруктураПараметров) Если НЕ СтруктураПараметров.Свойство("КорреспондирующийСчет") Тогда СтруктураПараметров.Вставить("КорреспондирующийСчет", Неопределено); КонецЕсли; Если НЕ СтруктураПараметров.Свойство("ИсключитьСчетаВВалюте") Тогда СтруктураПараметров.Вставить("ИсключитьСчетаВВалюте", ложь); КонецЕсли; Результат = ПродолжитьВызов(СтруктураПараметров); Возврат Результат; КонецФункции
При переходе с 11.5 на 11.6 разработчики типовой конфигурации УТ решили полностью переписать код, даже там, где можно было бы не плодить ошибки, наплодили. Абсолютно не подумали о тех, кто пользуется их кодом. Для костылестроительной фирмы это было бы еще допустимо, но для фирмы, пишущей на всю страну — ПОЗОР.
Вот из таких «мелочей», которые объясняются плохим методическим построением процесса разработки типовых конфигураций и складывается «нелюбовь» программистов к типовым конфигурциям.
В мире «большого» программирования для такой проблемы есть четкая терминология:
Breaking Changes (Ломающие изменения / Нарушение обратной совместимости)
Главная причина боли. Это ситуация, когда обновление функции или API ломает существующий код, который до этого успешно работал. В зрелых экосистемах принято сохранять Backward Compatibility (обратную совместимость): если в функцию добавляются новые параметры, их делают необязательными (указывают значения по умолчанию) или создают новую функцию, оставляя старую рабочей.Tight Coupling (Жесткая связность)
Проблема, когда внешний код слишком сильно зависит от внутренней реализации функции (в данном случае — от точного состава полей структуры параметров). Изменение одного винтика в модуле приводит к каскаду ошибок по всей системе.Defensive Programming Violation (Нарушение принципов защитного программирования)
Код платформы или типовой конфигурации ожидает «идеальный» вход и сразу падает в ошибку, вместо того чтобы безопасно обработать отсутствие необязательных ключей (как раз то, что пришлось исправлять черезСвойство()).API Rot / Code Smells (Деградация API и «Дурной код»)
Ситуация, когда разработчики базового продукта хаотично меняют сигнатуры функций от версии к версии без соблюдения стандартов проектирования (например, правил семантического версионирования SemVer), превращая работу с экосистемой в постоянную латание дыр.
Среда: УТ 11.6.1.53.
Комментарии (14)

KoIIIku_PuJI9IT
22.08.2026 06:26Уж сколько раз твердили миру,
А воз и ныне там! ©
Абсолютно не подумали о тех, кто пользуется их кодом
Они, как раз, подумали! Они только об этом и думают. Безжалостно и беспощадно. - Ошибка вендора, или Сказка про Курочку Рябу / Хабр -
всё то, что мы видим в Снеговике, — это работа над ошибками, чтобы свободных художников в этой среде больше не осталось, а была бы только одна‑единственная и проприетарная экосистема, замкнутая на вендоре.
з.ы. Спасибо, что лишний раз подтверждаешь мои выводы и аргументы.
з.з.ы. Только когда в следующий раз будешь меня цитировать:
превращая работу с экосистемой в постоянную латание дыр.
не забывай копирайты указывать ...

fixin Автор
22.08.2026 06:26Вам бы написать убийцу 1С, чтобы не платить 1С за платформу 77.
Почитал статью, она немного фанатичная. Проблема 8х не в том, что платформа хуже, а в том, что типовые конфигурации стали более монструозными. Не в последнюю очередь, потому, что 8х позволяет контролировать более сложный код.В 77 нет расширение, сравнение конфигураций сложнее, чем в 8х.
Так что все же 77 сбитый летчик. Несмотря на все его возможности.

KoIIIku_PuJI9IT
22.08.2026 06:26Почитал статью
Почитал - хорошо. Плохо, что ничего не понял ...

fixin Автор
22.08.2026 06:26Если кто-то что-то не понимает в передаче информации, то не всегда проблема на стороне приемника. Помедитируйте над этим.

Naf2000
22.08.2026 06:26Справедливости ради, если бы изначально структура параметров была получена из типовой функции, то ничего изменять бы не пришлось:
СтруктураПараметров = ДенежныеСредстваСервер.ПараметрыЗаполненияБанковскогоСчетаОрганизацииПоУмолчанию(); СтруктураПараметров.Организация = Объект.Организация; СтруктураПараметров.Валюта = Объект.Валюта; Объект.БанковскийСчет = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(СтруктураПараметров);Ну и если делать "заплатку", то хотя бы более универсально, а не до следующего изменения:
&Вместо("ПолучитьБанковскийСчетПоУмолчанию") Функция дор_ПолучитьБанковскийСчетПоУмолчанию(СтруктураПараметров) СтандартнаяСтруктураПараметров = ДенежныеСредстваСервер.ПараметрыЗаполненияБанковскогоСчетаОрганизацииПоУмолчанию(); ЗаполнитьЗначенияСвойств(СтандартнаяСтруктураПараметров, СтруктураПараметров); Возврат ПродолжитьВызов(СтандартнаяСтруктураПараметров); КонецФункцииЗаодно и лаконичнее вышло.

fixin Автор
22.08.2026 06:26Это надо знать, где эта структура формируется... Нет уж, эти кошмары разума и вялые попытки в ООП оставлю разработчикам 1С.

Naf2000
22.08.2026 06:26ООП тут вообще нет. А чтобы знать - достаточно заглянуть в процедуру. В новой версии так вообще вынесли в описание к методу

fixin Автор
22.08.2026 06:26Ну как нет, все эти структуры с полями, похожие на описание классов. Но нет приведения входной структуры к классу, где заполнялись бы необходимые поля. Да, ООП к сожалению в 1С нет. ггг
Убого все это выглядит.
Dhwtj
Сломали совместимость, бида
fixin Автор
и не говори... из таких вот мелких ложек дегтя портится бочка желтого 1с-мёда.
Dhwtj
Не ешь жёлтый снег©
fixin Автор
Я сам не ем, но лечу тех, кто его потребляет.