Код
#статьи

Что не так с 1С и стоит ли его изучать

Погружаемся в загадочный мир русскоязычного программирования. Бывший 1С-разработчик рассказал, как устроена платформа и что изменилось за 20 лет.

tesla / youtube

Фёдор Езеев

об эксперте

Фёдор Езеев, в Twitter @fezeev. Индивидуальный предприниматель, пишет на 1С и Python. Увлекается яхтингом и самогоноварением.


Я начал программировать на 1С в 1998 году. Довольно долго поработал на версиях 7.5, 7.7 и немного с восьмой, но она не легла на душу. Именно тогда я ушёл из 1С. Сейчас только помогаю поддерживать конфигурацию одного проекта на семёрке.

Особенности 1С

Сколько бы ни ругали экосистему «1С», у неё есть ряд достоинств.

Платформа хорошо продумана и структурирована. Есть чёткий шаблон Model-View-Controller, визуализированная база данных и свой объектно-ориентированный язык. Правда, несмотря на объектоориентированность, создавать свои объекты можно с большими ограничениями.

Упрощает вход в разработку русскоговорящему человеку. Язык хоть и специфичный, но в целом не хуже и не лучше других. Операторы 1С и документация написаны на русском. Кстати, именно это не нравится большинству ненавистников 1С.

Изображение: Public Domain

Я думаю, не важно, на каком языке писать команды: на русском или английском, на Python или С. Когда разработчик уверенно владеет синтаксисом, он просто берёт и программирует. А если плавает, то постоянно будет ошибаться и тратить время на поиски правильного варианта в документации. И, конечно, многое зависит от внимательности: пропустить табуляцию или точку с запятой можно в любом языке.

Для тех, кто не любит программировать на русском, в 1С есть англоязычные аналоги операторов. Однако я считаю, что их использование снижает поддерживаемость кода — большинство 1С-программистов пишут и читают только на русском.

Из 1С несложно перейти на другой стек. Платформа хоть и специфическая, но во многом похожа на другие популярные языки. Сейчас я работаю в проекте на Flask и скажу, что 1С вполне можно сравнить с Python. Там, например, похожая «утиная типизация»: если объект крякает, значит, это утка.

Удобно собирать проекты. Интеграция моделей и контроллера в 1С реализована по-человечески: просто накидываете в конфигураторе поля — и никакой головной боли. Конфигуратор — это такая «одинэсная» IDE, в которой есть все нужные модули. Не нужно собирать кучу маленьких файликов: одна неделимая конфигурация управляет компонентами и автоматически их связывает. Иногда мне этого не хватает в остальных IDE и языках, где надо прописывать взаимосвязи модулей вручную.

Самодостаточная платформа. На самом деле это палка о двух концах. С одной стороны, 95% типовых задач в 1С можно решить без напряга и сторонних модулей — это заметно ускоряет разработку. С другой — закрытость уменьшает свободу действий, а в редких 5% случаев приходится собирать костыли и велосипеды либо прикручивать сторонние компоненты. В некоторых случаях проблему просто невозможно решить.

Почему расцвет «1С» пришёлся на седьмую версию

Семёрка была более открытой, чем нынешняя восьмая версия. Это позволяло хакерам-энтузиастам писать многочисленные внешние компоненты, которые существенно расширяли возможности седьмой версии. Я, например, участвовал в разработке 1С++ и ряда других дополнений.

1С++ — это независимая от компании внешняя компонента, которая расширяла возможности седьмой версии. В частности, появилось полноценное объектно-ориентированное программирование: разработчики теперь могли создавать свои классы.

Ещё добавили прямые запросы к базе данных, что заметно ускорило построение отчётов. В стандартном 1С нужно использовать специальную «прокладку»: писать запрос на языке системы, который потом транслируется в SQL. Появилась компонента FormEx, которая давала свободу в работе с экранными формами — раньше, например, в 1С нельзя было программно поменять форму.

Потом разработчики залезли внутрь конфигуратора, расширили его возможности, добавили автокомплит и навигацию по методам. Постепенно собралось сообщество, которое дорабатывало седьмую версию. Проекты выпускали под лицензией GPL. Кажется, бизнес и разработчики были счастливы.

Я, как мог, помогал ребятам организационно: администрировал форум и репозиторий, куда разработчики коммитили свои доработки, и был техническим менеджером. В то время я знал несколько десятков разработчиков, которые развивали платформу.

Что не так с восьмёркой

Скриншот: интерфейс программы «1С:Бухгалтерия 8.3»

В 2002 году вышла восьмая версия, а с ней — новые правила пользования.

Компания поменяла лицензионное соглашение. Если точнее — они его просто написали. В предыдущих версиях формального лицензионного соглашения вообще не было.

Пользователи знали, что права на движок принадлежат «1С», а на кастомную конфигурацию — разработчикам конфигурации. В новом лицензионном соглашении движок 8.x и конфигурация стали чем-то неделимым, а значит, права на все конфигурации тоже становились собственностью компании «1С». Возможно, сейчас что-то изменилось, но вряд ли.

«1С» стала ещё более закрытой платформой. В восьмёрке появилось много новых фич, и мне понравилось, что создатели пошли по этому пути, но по-моему, компания так и не довела это до логического конца. Экосистема «1С» достаточно закрытая, и, судя по всему, это осознанная политика компании. Именно поэтому у других программистов может возникать несколько снисходительное отношение к 1С-разработчикам: они варятся в своём котле, и у них нет ни желания, ни потребности выходить за рамки 1С.

Когда конфигурации «1С» стали очень большими, понадобились инструменты коллективной разработки. Вместо того чтобы осуществить интеграцию с CVS, SVN, Git или Mercurial, в «1С» решили создать своё хранилище конфигураций, которое не поддерживало ни один популярный инструмент. Поэтому 1С-программисты работают внутри одной экосистемы, которая полностью изолирует их от внешней среды.

Как устроен бизнес «1С»

Бизнес «1С» полностью построен на франшизе. Компания выпускает платформу, а её продажей, доработкой конфигураций и внедрением в конечных организациях занимаются франчайзи. Компании подписывают с «1С» договор франшизы и получают скидки на коробки с софтом. Если собираетесь стать 1С-программистом, то лучше сразу идти в фирму-франчайзи.

Но франчайзи тоже бывают мелкие и крупные, плохие и хорошие. И среди десятков компаний нужно выбрать лучшую (ну, или не самую плохую). Нельзя напрямую пойти учиться в «1С». Сначала нужно устроиться к франчайзи, а потом компания направит вас на курсы, по окончании которых нужно сдать двухступенчатый экзамен.

Организации тоже не могут напрямую обратиться в «1С» с заказом — там только дадут список франчайзи. Есть ещё много независимых 1С-программистов. Обычно это опытные специалисты с репутацией и наработанной клиентской базой.

Когда я начинал, в 1998–2000 годах, «1С» была на подъёме, а 1С-разработчиков не хватало. Даже человек, который просто ездил по фирмам и обновлял регламентную отчётность, мог вполне неплохо заработать. А если он решал большие задачи для бизнеса, то получал 20–30 долларов в час. Тогда франчайзи забирали около половины заработанных денег.

Где используют «1С» и какие перспективы у 1С-разработчика

Основная ниша «1С» — автоматизация бизнеса: различные виды учёта (в первую очередь бухгалтерский) и управленческие задачи. Там есть инструменты для управления денежным потоком, товарооборотом, кадровым и налоговым учётом. Поскольку в России бизнес ведут по разным схемам, платформа позволяет их реализовать и отслеживать, чтобы менеджмент видел всю картину.

Думаю, если глубоко погружаться в суть задач, а не просто писать код по техзаданию, можно достаточно быстро вырасти до продакт-менеджера. Дело в том, что 1С-разработчику ставят задачи в терминах бизнеса, а он их транслирует на язык программирования. Поэтому мне кажется, что 1С-программисты гораздо быстрее вникают в бизнес-процессы, лучше понимают язык бизнеса и задачи. Как только вы это почувствуете, начнёте очень быстро расти, а окружающие полюбят вас и зауважают.

Фото: 4Max / Shutterstock

На 1С реализованы довольно крупные проекты с большим количеством пользователей и объёмом данных. Там всегда найдутся задачи для работы в команде: например, оптимизация алгоритмов и работы с базой данных, прокачка user experience (да, формы в «1С» тоже должны быть удобными). В этом язык 1С похож на другие стеки — задачи одни и те же, просто инструменты разные.

Куда движется «1С» и какие перспективы у разработчиков

Сейчас вся разработка переезжает в веб. «1С» — это в первую очередь тяжёлые приложения в классическом понимании — на компьютере у бухгалтера. Но постепенно экосистема движется в сторону тонкого клиента и веб-версий. Приложения можно размещать в облаке, и тогда даже серверы будут не нужны.

Но рынок «1С» очень локальный и в первую очередь заточен на Россию, немного на Украину и Казахстан. Если вы уверены, что никогда не захотите выйти на международный IT-рынок, то можно смело осваивать 1С. Скорее всего, как минимум 10–20 лет у вас будет много работы.

С другой стороны, IT-рынок тем и интересен, что, находясь в условной Пензе, можно работать в американских корпорациях, получать американскую зарплату и чувствовать себя хозяином жизни. С 1С это труднее представить.

Есть альтернативный путь — вырасти в продакт-менеджера, бизнес-аналитика или системного архитектора. По крайней мере, мой опыт показывает, что лучше двигаться в сферу на стыке бизнеса и программирования. Потому что этого добра в «1С» более чем достаточно, это то, с чего всё начинается.

Братья Нуралиевы (основатели «1С») создали огромную корпорацию, но в какой-то момент потеряли интерес к производству бизнес-софта и ушли в дистрибуцию мультимедиа и компьютерных игр. Тем не менее начальный задел и энергия франчайзи продолжают толкать этот поезд вперёд и будут толкать его ещё довольно долго.

Начинающим программистам советую не принимать свою первую работу близко к сердцу, соблюдать work-life balance и не верить песням вроде «наша компания — это дружная семья». Вы работаете, чтобы зарабатывать деньги и помогать в этом другим. Соблюдайте формальные отношения, не бойтесь отстаивать свои интересы и личные границы, даже если это может обидеть работодателя. И ещё — не замыкайтесь внутри экосистемы «1С». Чаще выглядывайте наружу: изучайте веб, OLAP-кубы и другие системы учёта — всё что угодно. Подобных задач довольно много, и через них можно легко войти в большое IT.

Если Python и Java — это парадный вход в IT, то 1С — небольшая калитка, на которую редко обращают внимание. А зря, ведь бизнес и бюджетные организации высоко ценят толковых 1С-программистов. Записывайтесь на курс «Профессия 1С-разработчик» и входите в IT с минимальной конкуренцией.

Изучайте IT на практике — бесплатно

Курсы за 2990 0 р.

Я не знаю, с чего начать
Научитесь: Профессия 1С-программист Узнать больше
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована