О платформе в целом
1С:Предприятие — это отличная платформа для разработки бизнес-приложений.
Постараемся рассказать про это подробно и убедительно.
Что такое 1С:Предприятие? Мы говорим, что это система программ. Она состоит из платформы, приложений, экосистемы, различной методической информации и, конечно, специалистов, которые работают с этими технологиями и приложениями.
Но в основе лежит платформа, на которой пишутся бизнес-приложения и сегодня поговорим о том, почему платформа, зачем она нужна, чем она хороша и почему на ней разрабатывать лучше, чем на обычных универсальных языках программирования.
Зачем и почему платформа?
Платформенные решения стали модными.
Раньше приходилось объяснять — зачем вообще нужен платформенный подход?
Ускорение разработки, упрощение разработки и унификация разработки.
Зачем вообще нужны все инструменты разработки и фреймворки? Повышение уровня абстракции. Для того, чтобы ускорить и упростить разработку.
Платформа 1С:Предприятие решает эту задачу в области разработки бизнес-приложений.
Что есть платформа 1С:Предприятие?
Есть такая замечательная книга Станислава Лема, которая называется «Сумма технологии». Платформа 1С:Предприятие — это такая цивилизация в области разработки бизнес-приложений, которая является суммой технологий.
Если мы уже заговорили про литературу, то хочется еще сказать про замечательную книгу Эрика Эванса «Предметно-ориентированное проектирование» (DDD). В этой книге описывается взгляд на разработку бизнес-приложений со стороны моделирования предметной области. Предметно-ориентированное программирование позволяет ускорить разработку, упростить ее и, что важно, приблизить ее к конечному пользователю.
В нашем случае мы ведем разработку от метаданных, и это дает высокую наглядность проектного решения для разработчика.
Основные идеи платформы
Мы закрываем единым фреймворком все аспекты разработки.
Платформа предоставляет ответы на все вопросы, которые возникают у прикладного разработчика.
Это сильно отличается от того, как ведут разработку на обычных языках с использованием большого количества отдельных фреймворков.
Важно, что все фреймворки, которые входят в платформу, тесно интегрированы. То есть разработчик практически не видит швов между этими механизмами.
В нашей платформе разработчик работает с единой системой типов: одинаковый тип он использует и в базе данных, и во встроенном языке на сервере, и во встроенном языке на клиенте, и на мобильном устройстве — это существенно упрощает разработку.
Еще один аспект — это быстрая разработка от предметной области. Мы, кроме технологических инструментов, предоставляем разработчику высокоуровневые прикладные инструменты, которые приближены к объектам предметной области. Важно, что они отражают семантику самой предметной области. По сути, они решают типичные задачи автоматизации и из них, как из кубиков, разработчик собирает бизнес-приложения.
В качестве одного примера приведем механизм регистров накопления. По сути, это готовый инструмент для отражения любых операций по движению и остаткам каких-то средств: это могут быть материальные средства, денежные средства и так далее. Разработчику не нужно его создавать с нуля — можно пользоваться готовым инструментом, который соответствует задачам предметной области.
Все, что можно, описывается декларативно. Важно, что это — именно декларативное описание, потому что императивный код всегда более сложный: и в разработке, и в поддержке, и в наглядности.
Декларативное описание всегда позволяет повысить уровень абстракции и снизить сложность разработки. Все, что можно, работает из коробки и работает само.
Почему этого нет в большинстве других систем?
Потому что в нашей системе платформа знает о том, из чего состоит приложение. Прежде всего за счет того, что прикладные объекты включают знания о семантике тех аспектов, на которые они ориентированы.
По сути платформа после декларативного описания уже знает, зачем нужно приложение, из чего оно состоит, и многие механизмы, многие задачи она может решить сама в готовом виде из коробки, без участия прикладного разработчика.
В основе лежит модель. Бизнес-объекты знают семантику и платформа, зная семантику этих объектов, многие задачи решает сама без участия прикладного разработчика. На основании знания этой семантики платформа много чего выполняет самостоятельно.
Примеры того, что платформа может делать сама:
- журналирование;
- история данных и версионирование;
- пользовательский интерфейс;
- интеграционные интерфейсы (API);
- построение системы прав доступа и т. д.
Что включает в себя платформа?
Во-первых, собственно, то, что отражает данные предметной области и процессы — это хранимые данные и работающие процессы.
Во-вторых, все то, чтобы с этим работали пользователи и работали другие программы. Это пользовательский интерфейс и интеграционные механизмы.
И, в-третьих, это много разных полезных функций, которые поставляются уже в готовом виде и работают с использованием знания предметной области. Например, администрирование, диагностика, полнотекстовый поиск, чат-боты, механизмы печати.
Платформа позволяет не просто разрабатывать отдельные приложения, но и создавать целые композиции приложений — это механизмы для автоматической синхронизации данных, это шина данных, 1С:Шина — наш новый инструмент класса ESB, это интеграция работы пользователей, чаты, видео, эта система single sign-on для обеспечения единого входа в разные приложения.
По сути, каждое приложение может выступать в качестве микросервиса для организации композиции приложений. И у нас есть много реальных примеров: это и наши приложения, тиражируемые, которые мы поставляем, которые интегрированы между собой, это и интеграция приложений на местах — разрабатывается композиция приложений, которая нужна именно этому предприятию.
Для каких решений предназначена платформа? Когда ее имеет смысл использовать?
Платформа 1С:Предприятие — это инструмент для разработки решений для бизнеса.
С одной стороны, на всю ширину — это самые разные приложения: и для управления персоналом, и для управления финансами, и для производства, и для документооборота.
Но и на всю глубину: от самых малых предприятий — до самых крупных организаций.
По сути мы поддерживаем уникальную масштабируемость: с одной стороны, половина решений однопользовательские, но на этой же платформе автоматизированы крупнейшие отечественные коммерческие и государственные структуры.
Важно, что это дает возможность прикладным разработчикам начать от простейших задач: внедрение на уровне, например, маленького магазина, и развиться до решения сложных масштабных задач корпоративного рынка. Нам часто говорят: «Не может быть такого, что одно решение, одна технология закрывает такой большой scale потребностей бизнеса».
Мы считаем, что может.
Что важно для наших клиентов, для бизнеса?
Прежде всего, конечно, — это ускорение разработки и, соответственно, ускорение развития бизнеса этих предприятий.
Также для бизнеса очень важно, чтобы решения были по-настоящему сопровождаемыми.
То есть, можно просто передать заказчику исходные коды какого-то приложения. Но это не обеспечит реальную возможность сопровождения, например, передача проекта другой команде, расширение команды, подключение новых специалистов.
В нашем случае, при построении всех решений по единой методологии, на основе единой технологии и наличии более 300 тысяч специалистов это становится действительно возможным и, по сути, это защищает инвестиции наших клиентов, наших пользователей в разработку и развитие приложений.
В этом, кстати, очень помогает то, что система построена на основе моделей и, соответственно, она прозрачна для разработчика, который владеет этим инструментом, и он может быстро войти в новый проект, влиться в команду и начать развивать приложения.
Конечно, важно заметить, что все наши приложения поставляются в виде исходных кодов, и заказчик, клиент может посмотреть, как они устроены, анализировать и изменять, если ему это нужно.
Также важно, чтобы приложения были действительно кастомизируемыми.
Не просто номинально, потому что есть исходные коды, а чтобы можно было их адаптировать под развивающиеся потребности предприятия.
И тут помогает не только то, что у нас есть обученные специалисты, есть единая методология, но и то, что платформа содержит специальные инструменты для быстрой и удобной кастомизации, то есть изменения приложений, которые включают, в том числе, возможности автоматического объединения тех новых возможностей, которые добавляют вендор, то есть поставщик приложения, и тех кастомизаций, модификаций, которые делаются при внедрении — это очень важно.
И еще важно, что приложения автоматически развиваются вместе с развитием платформы. Например, система взаимодействия: когда мы ее разработали, наши пользователи сразу получили возможность общаться в чатах внутри своих приложений. Другой пример — это механизм истории данных. Когда мы его разработали, наши пользователи практически сразу получили возможность просматривать историю изменений.
Кто использует платформу, кто на ней разрабатывает приложения?
Об этом сейчас много говорят. Я бы сказал, что это специалисты по разработке бизнес-приложений. По-моему, это замечательная профессия.
Это люди, которые умеют понимать бизнес, умеют понимать пользователей, умеют понимать бизнес-логику. Они тоже разные: есть начинающие, есть очень опытные, есть те, кто разрабатывает тиражные решения, которые используют сотни тысяч и миллионы пользователей, есть те, кто делает заказные решения для конкретного предприятия.
Но у них общее качество — широкий кругозор, разносторонняя подготовка, понимание задач от предметной области до особенности конкретных технологий и дизайна пользовательского интерфейса.
У них может быть тоже свой какой-то уклон: у кого-то — в технологическую область, у кого-то — в особенности бизнес-логики, у кого-то — в юзабилити.
Но все-таки их отличает комплексный подход к решению задач.
Кто же разрабатывает саму платформу?
Есть крутые системные разработчики — «системщики». Системщики, которые разрабатывают компиляторы, технологии in-memory обработки данных, технологии искусственного интеллекта.
Есть те, кто хорошо понимает прикладную разработку, понимает, как ведется прикладная разработка.
Есть те, кто любит и умеет создавать инструменты для разработчиков.
Есть те, кто любит создавать низкоуровневые и высокотехнологичные решения.
Но все они любят создавать универсальные решения и фреймворки.
На наш взгляд, это одна из самых интересных задач для системных разработчиков, и в мире не так много тех, кто решает подобного рода задачи.
Хорошо, что у нас есть много направлений системной разработки и разработчики могут выбирать то, что им интересно.
Ну, например, это направление highload. Причем, это и highload для очень крупных предприятий, и highload для облачных решений, в которых работают сотни тысяч небольших предприятий.
Интересно построение распределенных систем, интересна разработка технологии искусственного интеллекта, интересно создание инструментов разработки. И список таких интересных направлений можно продолжать, и продолжать.
Наша платформа — это low-code или нет?
Это очень интересный и теперь модный вопрос.
Вообще, мы делали простые в использовании инструменты разработки очень давно. Но вот недавно оказалось, что это направление с очень модным современным словом low-code.
Конечно, мы относимся классу low-code технологий, мы поддерживаем model driven development и другие, более детальные, аспекты этого направления. Но хочется заметить, что у нас весьма масштабный low-code, то есть, на нашем low-code инструменте можно создавать не только небольшие, простые приложения, но и большие приложения вплоть до ERP-систем, систем управления огромными холдингами, федеральными госструктурами.
И важно, что наша low-code система позволяет вести разработку не только маленькими командами: одним человеком, двумя-тремя, но и десятками и даже сотнями разработчиков.
В чем уникальность нашей low-code системы?
Есть хорошие low-code системы, на которых делаются небольшие приложения для решения текущих потребностей бизнеса, уровня отдела предприятия, например. Но с их помощью не сделать большое, комплексное приложение.
Есть платформы разработки бизнес-приложений, крупных приложений, но их инструменты, в основном, используются для кастомизации поставляемых вендором приложений.
Есть очень немного технологий, которые позволяют, с одной стороны, кастомизировать приложения, поставляемые вендором, с другой стороны, использовать их как независимые инструменты разработки, на которых можно делать бизнес-приложения, в том числе и с нуля.
Но важно, что в отличие от большинства таких технологий, наша платформа позволяет разрабатывать приложения как для облака, так и для on-premise внедрений.
Что же под капотом платформы?
Что у нас крутого внутри?
У нас есть много серьезных технологических решений собственной разработки.
Например, отказоустойчивый масштабируемый распределенный кластер серверов. Дата акселератор — это in-memory база данных нашей разработки. Технологии искусственного интеллекта, компьютерное зрение, распознавание речи и так далее.
Есть и наши уникальные проектные решения. Конечно, мы здесь не говорим о всей платформе, которая тоже является уникальным проектным решением. Например, это наша технология multitenancy — это множественное владение данных, которые используется для облачных приложений.
Это технология системы компоновки данных, которые используются для отчетов, для сложных выборок данных и так далее.
Это механизм расширений, который используется для той самой кастомизации, про которую мы говорили.
Из новых технологий можно назвать 1С:Аналитику — это система класса BI, 1С:Шина, соответственно, это ESB, и технологию 1С:Предприятие.Элемент.
Важно сказать, что при этом весь комплекс — это очень большой продукт, который работает в самых разных условиях: в разных операционных системах, в разных браузерах, с разными СУБД.
Очень важно, что при этом он прост в установке и прост в обслуживании, в администрировании.
С одной стороны нам важно развивать технологию для наших существующих клиентов, чтобы реализовывать их текущие пожелания, потребности и так далее.
С другой стороны, нам важно ориентироваться на новых клиентов, а также на наших сегодняшних клиентов, у которых завтра могут появиться совершенно новые потребности.
Поэтому, с одной стороны, наши сегодняшние технологии становятся с каждым выпуском лучше — это и кластеризация, и работа с большими данными, и кроссплатформенность. С другой стороны, они развиваются, чтобы соответствовать современным трендам.
Конечно, нужно сказать о развитии
Развитие обязательно должно быть.
Среди трендов развития платформы есть достаточно очевидные, которые понятны в современном уровне развития IT — это облачность, мобильность, современные технологии искусственного интеллекта, in-memory обработки данных, развитие интерфейса UI/UX.
Но есть не совсем очевидные: например, развитие в сторону поддержки консьюмерских приложений, то есть, приложений не для бизнес-пользователей, работающих на предприятии, а для любых людей.
С другой стороны, появляется потребность в приложениях, которые работают на предприятиях, с которыми работают люди, сотрудники предприятия, которые совершенно не имеют опыта работы с бизнес-приложениями.
Еще один тренд — это работа больших команд разработчиков. Слаженная, нацеленная на создание больших сложных систем.
Другой тренд — это очень крупные внедрения.
Дальше — это повышение роли интеграции. Сейчас интеграция является очень важным аспектом бизнес-приложений, на которую нацелена чуть ли не половина усилий команд разработки.
И кроме того, появляется новый тренд — это коллаборация. Коллаборация людей, работающих с бизнес-приложениями и коллаборация самих приложений, самой системы с людьми. То есть, совместная работа людей и системы.
Примеры такого развития — система 1С:Аналитика, 1С:Шина, технологии
искусственного интеллекта, технология 1С:Предприятие.Элемент.
Подробнее про 1С:Предприятие.Элемент
Технология 1С:Предприятие.Элемент — это направление развития, которое расширяет использование платформы 1С:Предприятия в сторону парадигмы консьюмерски-ориентированных программ.
Например, на этой технологии мы создали приложение 1С:Кабинет сотрудника, которое позволяет любым сотрудникам организаций и предприятий получать различную кадровую информацию, оформлять отпуск, получать информацию о зарплате и т. д.
В технологии 1С:Предприятие.Элемент мы развиваем технологические решения, инструменты, с которыми работает разработчик и пользователь, например, язык программирования, технологию пользовательского интерфейса, облачную технологию, технологию модульной разработки и другие.
Очень важно, что новые технологии, такие как, искусственный интеллект, 1С:Предприятие.Элемент и другие, должны работать не отдельно, а в едином комплексе, например, в ERP-системе, в других наших приложениях, тогда они работают как единая экосистема, и за счет синергии разных технологий для пользователей появляется новое качество.
На чем написана 1С?
Зашел разговор про 1с и я услышал следующее мнение — что 1с написана на ЯП Русского разлива, т.е. даже буквы в этом ЯП Русские, так же этот гражданин приложил скрин (в конце поста). Проясните ситуацию, на чем написана 1с, и если она все такие написана на C++, то каким боком относиться к ней ЯП на Русский манер?
Вообще любая инфа на этот счет будет интересна.
![]()
На скриншоте язык не на котором написана платформа 1С, а язык на котором пишутся её конфигурации. Сама 1С написана на C++.
На самом деле, 1С написана на языке С++ в среде разработки MS Visual C++.
Это сведения разработчиков 1С:
Платформа 1С: Предприятия 8 написана на MS Visual C++.
При создании платформы использована собственная компонентная архитектура. Сервер 1С: Предприятия создан с использованием технологии COM+. Механизмы платформы содержат большое количество собственных технологических решений.
![]()
Платформа 1C:Предприятие — это система с открытым прикладным исходным кодом, написанным на проприетарном языке, официально его называют «Встроенный язык программирования 1С:Предприятие», неофициально и коротко – «язык 1С». Сама платформа 1С:Предприятие 8 — это большое (более 10 миллионов строк кода) приложение на C++ (клиент, сервер и т.д.), JavaScript (веб-клиент), и, с недавних пор еще и Java.
![]()
На скриншоте язык написания конфигураций 1С, как писали выше платформа базируется на C++ технологиях, английский синтаксис в данном примере появился из за того, что язык написания конфигураций поддерживает помимо русского ещё много вариаций (в т.ч. английский) поэтому можно написать даже в рамках одной функции строку на эстонском, название функции на румынском и т.д. (хотя смысла в этом абсолютно нет)
![]()
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.3.11.43304
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Платформа «1С: Предприятие» — что под капотом?
Привет, Хабр!
В этой статье мы начнем рассказ о том, как устроена внутри платформа «1С:Предприятие 8» и какие технологии используются при ее разработке.

- кластер серверов
- «тонкий» клиент, способный подключаться к серверу по http и собственному бинарному протоколу
- клиент для работы в двухзвенной архитектуре с БД, размещенной на жестком диске или сетевой папке
- веб-клиент
- средства администрирования сервера приложений
- среда разработки (известная как Конфигуратор)
- среда исполнения для iOS, Android и Windows Phone (мобильная платформа 1С)
Нативные приложения
- STL (в частности, строки, контейнеры и алгоритмы)
- множественное наследование, в т.ч. множественное наследование реализации
- шаблоны
- исключения
- умные указатели (собственная реализация)
Компоненты
- Разделение способствует лучшему проектированию, в частности лучшей изоляции кода
- Из набора компонентов можно гибко собирать разные варианты поставки:
- Например, инсталляция тонкого клиента будет содержать wbase, но не будет backend
- а на сервере wbase, наоборот, не будет
- оба варианта будут, конечно, содержать nuke и bsl
- Предоставляет фабричные методы, позволяющие создать класс из другой компоненты зная только его название (без раскрытия реализации)
- Предоставляет инфраструктуру умных указателей с подсчетом ссылок. За временем жизни SCOM-класса не нужно следить вручную
- Позволяет узнать реализует ли объект конкретный интерфейс и автоматически привести указатель на объект к указателю на интерфейс
- Создать объект-сервис, всегда доступный через метод get_service и т.д.
Этот макрос опишет специальный статический класс-регистратор, конструктор которого будет вызван при загрузке компоненты в память.
После это можно создать его экземпляр в другой компоненте:Для поддержки сервисов SCOM предлагает дополнительную, достаточно сложную инфраструктуру. Центральным в ней является понятие SCOM-процесса, который служит контейнером для запущенных сервисов (т.е. выполняет роль Service Locator), а также содержит привязку к локализуемым ресурсами. SCOM процесс привязывается к потоку ОС. Благодаря этому внутри приложения можно вот так получать сервисы:
Более, того переключая логические (SCOM) процессы привязанные к потоку, можно получить практически независимые с точки зрения информационного пространства приложения, выполняющиеся в рамках одного потока. Так устроен наш тонкий клиент, работающий с файловой базой — внутри одного процесса ОС находятся два SCOM-процесса, один связан с клиентом, а второй — с сервером. Такой подход позволяет унифицировать написания кода, который будет работать как на локальной файловой базе, так и в «настоящем» клиент-серверном варианте. Цена за такое единообразие — накладные расходы, но практика показывает, что они того стоят.
На основе компонентной модели SCOM реализована и бизнес-логика и интерфейсная часть 1С: Предприятия.
Пользовательский интерфейс
Кстати, об интерфейсах. Мы не используем стандартные контролы Windows, наши элементы управления реализованы напрямую на Windows API. Для Linux-версии сделана прослойка, работающая через библиотеку wxWidgets.
Библиотека элементов управления не зависит от других частей «1С:Предприятия» и используется нами еще в нескольких небольших внутренних утилитах.За годы развития 1С:Предприятие внешний вид контролов менялся, но серьезное изменение принципов произошло только один раз, в 2009 году, с выходом версии 8.2 и появлением «управляемых форм». Помимо изменения внешнего вида, фундаментально изменился принцип компоновки формы — произошел отказ от попиксельного позиционирования элементов в пользу flow-компоновки элементов. Кроме того, в новой модели элементы управления работают не напрямую с доменными объектами, а со специальными DTO (Data Transfer Objects).
Эти изменения позволили создать веб-клиент «1С:Предприятия», повторяющий С++ логику контролов на JavaScript. Мы стараемся поддерживать функциональную эквивалентность между тонким и веб клиентами. В том случае, когда это невозможно, например, из-за ограничений доступных из JavaScript API (например, возможности работы с файлами очень ограничены), мы часто реализуем нужную функциональность при помощи расширений браузеров, написанных на C++. На данный момент мы поддерживаем Internet Explorer и Microsoft Edge (Windows), Google Chrome(Windows), Firefox (Windows и Linux) и Safari (MacOS).Кроме того, технология управляемых форм используется для создания интерфейса мобильных приложений на платформе 1С. На мобильных устройствах отрисовка контролов реализована с использованием «родных» для операционной системы технологий, но уже для логики компоновки формы и реакции интерфейса используется тот же код, что и в «большой» платформе «1С:Предприятие».
Интерфейс 1С на ОС Linux
Интерфейс 1С на мобильном устройстве
Интерфейс 1С на ОС Windows
Интерфейс 1С — веб-клиентOpen source
-
для работы с HTTP и FTP. для работы с криптографией и установки TLS соединений для разбора XML для работы с почтовыми протоколами (POP3, SMTP, IMAP) для разбора сообщений электронной почты для хранения журналов работы пользователей для интернационализации
Заключение
В статье мы коснулись нескольких основных аспектов разработки платформы «1С: Предприятие». В ограниченном объеме статьи мы затронули лишь некоторые интересные, на наш взгляд, аспекты.
Общее описание различных механизмов платформы можно посмотреть тут.
Какие темы были бы интересны Вам в следующих статьях?Как реализована мобильная платформа 1С?
Описание внутреннего устройства веб-клиента?
Или, может быть, Вам интересен процесс выбора фич для новых релизов, разработки и тестирования?На каком языке написана платформа 1С
Если вы уже начали изучать 1С, то я за вас рад. Это правильный выбор и правильное вложение сил и средств в ваше безбедное будущее.
Если так и не решились, то я вас тоже пойму. И не буду больше донимать вас советами начать изучение 1С. Поэтому сегодня речь не об этом.
Как вы понимаете, сама программа 1С написана тоже на каком-то языке. Как вы думаете, на каком?
Я не говорю о конфигурациях 1С. Понятно, что они написаны на языке 1С. А вот на каком языке написана платформа 1С? Не догадались?
На каком-то из сайтов я видел опрос посетителей, которым был задан именно этот вопрос. И каково же было моё удивление, когда я увидел, что 66% опрошенных считают, что 1С написана на языке АЛГОЛ 68.
О боже! Как такое в голову могло прийти стольким людям? Ведь это давно уже мёртвый язык!
На самом деле, 1С написана на языке С++ в среде разработки MS Visual C++.
И если вы ещё не знакомы с этим языком и не читали мою книгу “Основы С++”, то самое время это сделать:
И кто знает, может быть лет через 10 (а может и раньше) вы явите миру какую-нибудь свою программу, которая затмит своей популярностью 1С.
Слишком хорошо, чтобы быть правдой? Это зависит только от того, насколько сильно вы хотите сказку сделать былью.