TGViewer
Журнал инженера-программиста Журнал инженера-программиста @software_engineer_notes · 247 subscribers
Post #253 258
В следствии отсутствия на платформе 1С наследований, интерфейсов и прочих имплементаций контрактов поведения, на разработчиков падает дополнительная нагрузка по реализации проверок для своей же функциональности. Ну, как падает - при желании они могут добавить такие проверки, но чаще их не делают и потом:

- в вашей программе ошибка и она не работает!
- чего же вы хотели, если не сделали настройки!
- какие еще настройки? в интерфейсе только одна кнопка!
- так они не тут, а в регистре НастройкиОбработок - я их описал в документации в пункте 31.7 в подпункте 2
- у нас есть документация???
- есть! она устарела, но этот пункт все еще актуален...


О каких контрактах речь? Речь про обязательство наличия у объектов и модулей некоторой функциональности, без которой система в целом будет работать неправильно: список реквизитов с указанными именами и типами, обработчики определенных типов оповещений, экспортирование требуемых публичных методов и так далее.

Пример проблемы. Один программист реализовывает проверку документов с запретом продажи ниже себестоимости - это просто подписка на определяемый тип с вызовом экспортной функции из модуля документа, которую он добавил во все документы из подсистемы продаж. Второй программист разрабатывает новый документ отгрузки со склада, который в целом правильно работает согласно ТЗ, но аналитики при запуске решают, что отгрузка же ведь может быть на покупателя и потому новый документ нужно включить к остальным в определяемый тип "продажным документов". И тут внезапно документ перестает работать и выдает ошибку несуществующей экспортной функции.

👆 Можно ли избежать подобных проблем?

1) Использовать регрессионное тестирование при подготовке релиза.
2) Добавить юнит-тесты при старте, которые перепроверяют выполнение системных контрактов.
3) Программировать в безопасном стиле - т.е. в самих функциях контролировать их применимость: проверить через метаданные существование реквизитов объектов, а внешние методы вызывать через Try/Except.

✍️ С одной стороны так нарабатываются технические практики, которые свидетельствуют о зрелости команд разработки. А с другой стороны, это же просто искусственные ограничения самоконтроля для платформы 1С, которые годами не устраняют с аргументацией: "вам это не надо!".

#1С #пятница - посвящается дню отправки пожеланий на @platform_suggestions
  • 👍 7
  • 🔥 3
More from @software_engineer_notes
  1. Oct 3, 2026"Вы автоматизируете хаос" - этим страхом любят пугать своих бизнес-заказчиков консалтеры,…
  2. Sep 28, 2026Уже второй проект на работе делаю в методике "парного программирования" с Claude Code. И с…
  3. Sep 13, 2026За последний месяц произошло много событий, но наиболее интересным является использование…
  4. Sep 1, 2026Самая обычная бумажная книга учета - это пока лучший инструмент фиксации проектных изменен…
  5. Aug 31, 2026Очень показательная причина моей нелюбви реализации сравнения/объединения конфигураций в 1…
  6. Aug 29, 2026О концепции LLM-Wiki я впервые прочитал на X (Twitter). Чтобы позже ознакомится детальнее,…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →