1с на чем написана

от admin

О платформе в целом

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++, то каким боком относиться к ней ЯП на Русский манер?

Вообще любая инфа на этот счет будет интересна.

Михаил Р.'s user avatar

На скриншоте язык не на котором написана платформа 1С, а язык на котором пишутся её конфигурации. Сама 1С написана на C++.

На самом деле, 1С написана на языке С++ в среде разработки MS Visual C++.

Это сведения разработчиков 1С:

Платформа 1С: Предприятия 8 написана на MS Visual C++.

При создании платформы использована собственная компонентная архитектура. Сервер 1С: Предприятия создан с использованием технологии COM+. Механизмы платформы содержат большое количество собственных технологических решений.

Ver Nick's user avatar

Платформа 1C:Предприятие — это система с открытым прикладным исходным кодом, написанным на проприетарном языке, официально его называют «Встроенный язык программирования 1С:Предприятие», неофициально и коротко – «язык 1С». Сама платформа 1С:Предприятие 8 — это большое (более 10 миллионов строк кода) приложение на C++ (клиент, сервер и т.д.), JavaScript (веб-клиент), и, с недавних пор еще и Java.

Eugene's user avatar

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

Vadim Popov's user avatar

Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.3.11.43304

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Платформа «1С: Предприятие» — что под капотом?

Привет, Хабр!
В этой статье мы начнем рассказ о том, как устроена внутри платформа «1С:Предприятие 8» и какие технологии используются при ее разработке.

image

  • кластер серверов
  • «тонкий» клиент, способный подключаться к серверу по 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С:Предприятие».

    image
    Интерфейс 1С на ОС Linux

    image
    Интерфейс 1С на мобильном устройстве

    image
    Интерфейс 1С на ОС Windows

    image
    Интерфейс 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С.

    Слишком хорошо, чтобы быть правдой? Это зависит только от того, насколько сильно вы хотите сказку сделать былью.

Похожие статьи