03 ноября / 23
Язык 1С: плюсы и минусы для аналитических платформ
Язык программирования 1C — это язык для написания кода и создания алгоритмов при работе с технологической платформой «1С:Предприятие».
Это давно не только язык локальной бухгалтерской или финансовой программы, а мощное решение, проверенное огромным количеством компаний сектора enterprise. Например, в сервисе «1С:Фреш» тысячи предприятий и десятки тысяч пользователей, которые одновременно работают в облаке.
1С предназначен для:
А еще на нем написана часть нашей платформы - Modus ETL. 1С мы выбрали, в первую очередь, за скорость разработки, простую верстку интерфейсов, простейшее описание взаимодействия клиентской и серверной части. Эти особенности помогают сконцентрировать большую часть ресурсов на алгоритмах работы решения. Соответственно, мы снижаем себестоимость развития продукта, стоимость кастомизации и стоимость владения для заказчика.
Уточним, что мы используем 1С для решения только части наших задач, там, где он лучше всего справляется: в части хранения алгоритмов и правил работы с данными, описания мастеров сбора и преобразования, большинства интерфейсов пользователей, служебных отчетов, их рассылки.
Для специальных задач, например, визуализации ориентированных ациклических графов или выполнения многопоточных сборов данных у нас есть компоненты на JavaScript и Go.
У 1С есть плюсы и минусы, ниже поговорим про них.
Высокая скорость разработки
У 1С есть технологическая платформа – это и среда исполнения, и набор средств для разработки приложений и администрирования.
По большому счету, 1С – это большая low-code платформа для настройки доступных на этом уровне объектов. Поэтому с точки зрения frontend мы не программируем «с нуля» формы интерфейсов, а конфигурируем из доступных шаблонов, настраиваем получившийся элемент и передаем информацию в движок. Дальше за отображение элемента отвечает платформа.
Клиентская и серверная части кода описываются в одном месте, упрощая процесс отладки и передачи информации между клиентом и сервером. Так мы сосредотачиваем силы на реализации целей работы форм, а не на процессе программирования их взаимодействия.
Платформа сильно сокращает время на модификацию продукта. К примеру, перед нами стоит задача обеспечить ввод, модификацию и выполнение шагов преобразования данных, при этом нужно предоставить простой и понятный интерфейс пользователю, хранить историю изменений объектов и ограничить доступ к каким-то данным у части пользователей. Трудозатраты вырастут в 8-10 раз, если мы решим сделать задачу не в 1С, а в web-серверном приложении, где, например, серверная часть написана на Go, а клиентская на Reackt.
В качестве еще одного примера приведем антикейс другой компании. У них есть система управления внутренней инфраструктурой, которая написана на 1С. В 2022 году решили ее переписать: разработать backend на Python, frontend на JavaScript. Количество спринтов для реализации задач, решавшихся в 1С за один, выросло в несколько раз. В итоге, они вернулись к 1С.
Концентрация на архитектуре и функциональности, а не на коде
Язык 1С прост для описания логики работы приложения, а платформа за счет шаблонов дает возможность сконцентрироваться на логике выполнения программы, а не отслеживать каждую строку кода.
Поэтому 1С-программист меньше погружен в код и больше – в бизнес-процессы: управление производством (ERP), складом (WMS), бюджетирование, документооборот и т.п. Он должен понимать, как организованы и работают эти процессы, чтобы составить архитектуру будущего приложения.
Платформа берет на себя работу с кодом, облегчает решение прикладных задач и дает возможность погружаться в работу с предметно ориентированными объектами метаданных (справочниками, документами, регистрами и т.д.).
Более низкая стоимость владения и сопровождения продукта на 1С
Существенная часть стоимости владения для заказчика – это стоимость обслуживания аналитической системы, куда входит ФОТ сотрудников.
В современных реалиях сопровождать продукт на 1С легче, чем решения на других языках – обычно конфигурации поставляются с открытым для доработки кодом, и заказчик может сам кастомизировать его, если это нужно, не привлекая вендора.
И чаще всего, для этого не нужно нанимать дополнительного специалиста – в компаниях, как правило, уже есть разработчики 1С. И стоимость часа их работы ниже, чем программистов Java, С# и других.
Если такого специалиста в штате нет, то найти его тоже проще. Если посмотреть резюме, то количество кандидатов 1C – примерно 40% от общего количества соискателей, а оставшиеся 60% будут распределяться между 10-15 другими языками.
Например, на сайте hh.ru в Москве прямо сейчас ищут работу программиста около 490 000 человек. Из них по языкам: 172 328 программируют на 1С, 5 040 – на Go, 75 884 на JavaScript, 38 767 – на С#.
Минусы 1С
Конечно, 1С, как и большинство других языков, не может делать все, но в рамках того, что требуется для учетной системы, он может полностью решить необходимые задачи.
Приведем пример, что нельзя или неудобно делать на 1С:
Например, вот интерфейс рабочего списка из Modus ETL.
Мы не сможем здесь:
Мы сильно отходим от 1С как учетной системы для финансового блока и используем те же самые объекты метаданных, но в результате система генерирует SQL-сценарии, обновляет и собирает данные.
Недостающий функционал дописываем на другом стеке – выделяем части, которые не могут быть реализованы на 1С, и рассматриваем их, как отдельные сервисы или встраиваемые компоненты. Например, для высоконагруженных систем мы пишем сервис получения данных на Go. Часть, связанную с графическим проектированием, пишем на JavaScript.
Если бы у нас было много таких форм и элементов, не стоило бы использовать 1С – риски были бы слишком велики, нужно было бы долго отлаживать всю систему при добавлении новых компонентов. К примеру, связать 1C и JavaScript не так просто. Но т.к. у нас всего 2 такие формы, то 1С здесь оправдан.
Интеграция с другими системами
Есть несколько вариантов интеграции аналитической платформы, написанной на языке 1С, и учетных систем, написанных на других языках:
В последнее время набирает популярность способ интеграции через http-сервис.
Например, наш Агент ETL, который предназначен для сбора данных из различных источников, взаимодействует с 1С через http-сервис. Если нужно интегрировать аналитическую платформу с каким-то необычным ПО – например, мы работали с лабораторной системой, которая управляла всем технологическим процессом – мы подключаемся через API.
Подведем итог.
Спектр задач, которые можно решить на 1С, шире, чем кажется на первый взгляд. Учет в широком смысле этого слова может касаться совершенно любых предметов реального мира, будь то информация о финансах и товарах или информация о подключениях к базам данных и web- сервисах, правилах генерации кода или парсинга.
Зачастую, 1С недооценивают из-за предвзятого, в целом, отношения. Если адекватно взвесить плюсы и минусы, подобрать технологический стек, исходя из реальных бизнес-задач, а не предпочтений конкретных разработчиков, то 1С без сомнения может решать поставленные задачи.
Читайте нас на Хабр
Это давно не только язык локальной бухгалтерской или финансовой программы, а мощное решение, проверенное огромным количеством компаний сектора enterprise. Например, в сервисе «1С:Фреш» тысячи предприятий и десятки тысяч пользователей, которые одновременно работают в облаке.
1С предназначен для:
- описания внутренней логики работы приложений «1С: Предприятие»;
- ввода и вывода информации и ее изменения;
- работы с формами объектов и списков, описания их внешнего вида и поведения;
- работы с данными информационных баз: их получения, модификации и обновления.
А еще на нем написана часть нашей платформы - Modus ETL. 1С мы выбрали, в первую очередь, за скорость разработки, простую верстку интерфейсов, простейшее описание взаимодействия клиентской и серверной части. Эти особенности помогают сконцентрировать большую часть ресурсов на алгоритмах работы решения. Соответственно, мы снижаем себестоимость развития продукта, стоимость кастомизации и стоимость владения для заказчика.
Уточним, что мы используем 1С для решения только части наших задач, там, где он лучше всего справляется: в части хранения алгоритмов и правил работы с данными, описания мастеров сбора и преобразования, большинства интерфейсов пользователей, служебных отчетов, их рассылки.
Для специальных задач, например, визуализации ориентированных ациклических графов или выполнения многопоточных сборов данных у нас есть компоненты на JavaScript и Go.
У 1С есть плюсы и минусы, ниже поговорим про них.
Высокая скорость разработки
У 1С есть технологическая платформа – это и среда исполнения, и набор средств для разработки приложений и администрирования.
По большому счету, 1С – это большая low-code платформа для настройки доступных на этом уровне объектов. Поэтому с точки зрения frontend мы не программируем «с нуля» формы интерфейсов, а конфигурируем из доступных шаблонов, настраиваем получившийся элемент и передаем информацию в движок. Дальше за отображение элемента отвечает платформа.
Клиентская и серверная части кода описываются в одном месте, упрощая процесс отладки и передачи информации между клиентом и сервером. Так мы сосредотачиваем силы на реализации целей работы форм, а не на процессе программирования их взаимодействия.
Платформа сильно сокращает время на модификацию продукта. К примеру, перед нами стоит задача обеспечить ввод, модификацию и выполнение шагов преобразования данных, при этом нужно предоставить простой и понятный интерфейс пользователю, хранить историю изменений объектов и ограничить доступ к каким-то данным у части пользователей. Трудозатраты вырастут в 8-10 раз, если мы решим сделать задачу не в 1С, а в web-серверном приложении, где, например, серверная часть написана на Go, а клиентская на Reackt.
В качестве еще одного примера приведем антикейс другой компании. У них есть система управления внутренней инфраструктурой, которая написана на 1С. В 2022 году решили ее переписать: разработать backend на Python, frontend на JavaScript. Количество спринтов для реализации задач, решавшихся в 1С за один, выросло в несколько раз. В итоге, они вернулись к 1С.
Концентрация на архитектуре и функциональности, а не на коде
Язык 1С прост для описания логики работы приложения, а платформа за счет шаблонов дает возможность сконцентрироваться на логике выполнения программы, а не отслеживать каждую строку кода.
Поэтому 1С-программист меньше погружен в код и больше – в бизнес-процессы: управление производством (ERP), складом (WMS), бюджетирование, документооборот и т.п. Он должен понимать, как организованы и работают эти процессы, чтобы составить архитектуру будущего приложения.
Платформа берет на себя работу с кодом, облегчает решение прикладных задач и дает возможность погружаться в работу с предметно ориентированными объектами метаданных (справочниками, документами, регистрами и т.д.).
Более низкая стоимость владения и сопровождения продукта на 1С
Существенная часть стоимости владения для заказчика – это стоимость обслуживания аналитической системы, куда входит ФОТ сотрудников.
В современных реалиях сопровождать продукт на 1С легче, чем решения на других языках – обычно конфигурации поставляются с открытым для доработки кодом, и заказчик может сам кастомизировать его, если это нужно, не привлекая вендора.
И чаще всего, для этого не нужно нанимать дополнительного специалиста – в компаниях, как правило, уже есть разработчики 1С. И стоимость часа их работы ниже, чем программистов Java, С# и других.
Если такого специалиста в штате нет, то найти его тоже проще. Если посмотреть резюме, то количество кандидатов 1C – примерно 40% от общего количества соискателей, а оставшиеся 60% будут распределяться между 10-15 другими языками.
Например, на сайте hh.ru в Москве прямо сейчас ищут работу программиста около 490 000 человек. Из них по языкам: 172 328 программируют на 1С, 5 040 – на Go, 75 884 на JavaScript, 38 767 – на С#.
Минусы 1С
Конечно, 1С, как и большинство других языков, не может делать все, но в рамках того, что требуется для учетной системы, он может полностью решить необходимые задачи.
Приведем пример, что нельзя или неудобно делать на 1С:
- Визуальные формы для удобной работы с не специфичными для 1С объектами. Например, вот здесь я писал про WorkFlow. Мы подключили библиотеку GoJS и использовали JavaScript, внедрив ее в 1С.
- Выполнять большое количество математических расчетов с оптимальным потреблением памяти.
- Решать задачи, связанные с компьютерной графикой и т.д.
- Полностью кастомизировать шаблоны. Это не значит, что интерфейс будет «как в «1С:Бухгалтерия» 2000-х годов». Просто форма 1С всегда выдержана в одном стиле, который мы можем кастомизировать, но не полностью.
Например, вот интерфейс рабочего списка из Modus ETL.
Мы не сможем здесь:
- убрать или поменять лого 1С и обозначение меню тремя чертами в верхней части;
- отменить уведомления;
- изменить структуру размещения подсистемы;
- изменить «звездочку» на кнопке, чтобы добавить ее в избранное или вернуться назад, вбок и т.п.
Мы сильно отходим от 1С как учетной системы для финансового блока и используем те же самые объекты метаданных, но в результате система генерирует SQL-сценарии, обновляет и собирает данные.
Недостающий функционал дописываем на другом стеке – выделяем части, которые не могут быть реализованы на 1С, и рассматриваем их, как отдельные сервисы или встраиваемые компоненты. Например, для высоконагруженных систем мы пишем сервис получения данных на Go. Часть, связанную с графическим проектированием, пишем на JavaScript.
Если бы у нас было много таких форм и элементов, не стоило бы использовать 1С – риски были бы слишком велики, нужно было бы долго отлаживать всю систему при добавлении новых компонентов. К примеру, связать 1C и JavaScript не так просто. Но т.к. у нас всего 2 такие формы, то 1С здесь оправдан.
Интеграция с другими системами
Есть несколько вариантов интеграции аналитической платформы, написанной на языке 1С, и учетных систем, написанных на других языках:
- через http-сервис;
- через веб-сервисы (SOAP);
- через файловый обмен;
- через сервисы интеграции (новый функционал для поддержки брокеров сообщений, типа «1С: Шина» или Rabbit MQ).
В последнее время набирает популярность способ интеграции через http-сервис.
Например, наш Агент ETL, который предназначен для сбора данных из различных источников, взаимодействует с 1С через http-сервис. Если нужно интегрировать аналитическую платформу с каким-то необычным ПО – например, мы работали с лабораторной системой, которая управляла всем технологическим процессом – мы подключаемся через API.
Подведем итог.
Спектр задач, которые можно решить на 1С, шире, чем кажется на первый взгляд. Учет в широком смысле этого слова может касаться совершенно любых предметов реального мира, будь то информация о финансах и товарах или информация о подключениях к базам данных и web- сервисах, правилах генерации кода или парсинга.
Зачастую, 1С недооценивают из-за предвзятого, в целом, отношения. Если адекватно взвесить плюсы и минусы, подобрать технологический стек, исходя из реальных бизнес-задач, а не предпочтений конкретных разработчиков, то 1С без сомнения может решать поставленные задачи.
Читайте нас на Хабр