Многие разработчики, накопив значительный опыт в среде 1С, задумываются о смене стека технологий. Часто этот процесс сопровождается поиском новых архитектурных подходов, которые сложно или невозможно реализовать в рамках текущей платформы. Давайте подробно разберем, какие фундаментальные различия существуют между 1С и классическим объектно-ориентированным программированием (ООП) и почему эти различия становятся определяющими при выборе карьеры.
Главный вопрос, который возникает при переходе: «Почему 1С ограничивает разработчика в создании собственных классов?» В классическом ООП мы оперируем объектами, наследованием и полиморфизмом. В 1С Модуль объекта и Экспортные переменные позволяют реализовать подобие инкапсуляции, однако отсутствие полноценного наследования значительно усложняет жизнь при проектировании сложных систем.
Рассмотрим пример с регистрами. В 1С при создании документов, которые должны совершать движения по остаткам, мы вынуждены дублировать логику. Если бы у нас была возможность реализовать базовый класс ДвигательОстатков, мы могли бы наследовать эту логику всеми документами:
// Пример концептуального подхода к наследованию движений
// В текущей 1С мы вынуждены собирать данные запросами:
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ... ИЗ Документ.Продажа КАК Т";
Результат = Запрос.Выполнить().Выгрузить();
// Далее мы накатываем результаты на регистры вручную
Принципы SOLID, в частности принцип открытости/закрытости, диктуют, что программные сущности должны быть открыты для расширения, но закрыты для модификации. В 1С мы часто сталкиваемся с тем, что для добавления нового разреза учета (например, характеристик или серий) нам приходится изменять множество запросов во многих документах. Это создает «огороды» из кода, которые сложно поддерживать и обновлять.
Если бы система поддерживала ООП-классы, мы могли бы применить следующий подход:
В 1С объекты конфигурации (Справочники, Документы, Регистры) жестко привязаны к внутренней системе управления базой данных (ORM). Разработчик не имеет прямого контроля над тем, как именно данные преобразуются в SQL-запросы внутри платформы. В мобильной разработке (Java/Kotlin/Swift) программист сам выбирает способ работы с данными, управляет жизненным циклом компонентов и архитектурой приложения (например, используя паттерн MVVM).
Переход из 1С в мобильную разработку — это не только поиск «красивого кода», но и выход на более широкий рынок:
Android или iOS не ограничена географией или конкретной учетной системой. Вы получаете возможность работать с международными проектами.Если вы решили сменить стек, не стоит ввязываться в дорогостоящие онлайн-курсы, которые не всегда дают актуальные знания. Опирайтесь на:
Dependency Injection (Hilt, Koin), Coroutines, Flow для Android.Помните, что выбор языка программирования — это вопрос профессиональных предпочтений. Главное — чтобы ваша работа приносила удовольствие и давала возможность развиваться, будь то 1С, Kotlin, Python или C.