Pull to refresh
36
0
Send message

Как мы перевели 10 миллионов строк кода C++ на стандарт C++14 (а потом и на C++17)

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

Для тех кто не знает, 1С:Предприятие – это среда для быстрой разработки кросс-платформенных бизнес-приложений и runtime для их выполнения в разных ОС и СУБД. В общих чертах в состав продукта входят:


Мы стараемся по максимуму писать один код для разных ОС — кодовая база сервера общая на 99%, клиента — примерно на 95%. Технологическая платформа 1С:Предприятие преимущественно написана на C++ и ниже приведены приблизительные характеристики кода:

  • 10 миллионов строк С++ кода,
  • 14 тысяч файлов,
  • 60 тысяч классов,
  • полмиллиона методов.

И все это хозяйство надо было перевести на C++14. О том, как мы это делали и с чем столкнулись в процессе, мы сегодня и расскажем.

image
Читать дальше →
Total votes 76: ↑74 and ↓2+72
Comments171

Интеграция HTML движка в нативное Windows приложение – выбор и архитектура

Reading time10 min
Views21K
Как мы перевели работу с HTML в 1С:Предприятии с Internet Explorer на WebKit

Возможность отображать HTML в формах 1С появилась в платформе 1С:Предприятие в 2003 г. версии 8.0. Для работы с HTML в платформе использовался движок браузера Internet Explorer (1С:Предприятие на тот момент работало только под Windows). Движок браузера использовался платформой для утилитарных целей. Например, писать с нуля полноценный элемент для редактирования текста а-ля Word – с возможностью различных цветовых и шрифтовых решений, вставки картинок и т.д. – весьма непростая задача. А если задействовать для этих целей HTML и использовать в качестве средства отображения движок интернет-браузера, то задача сильно упрощается. Также при помощи движка был реализован ряд других механизмов (например, отображение справочной информации) и элементов (например, Планировщик).

Ну а возможность для разработчиков прикладных решений отображать с помощью HTML нестандартный, по меркам мира учетных систем, дизайн позволяла иногда привносить разнообразные приятные изюминки в интерфейс бизнес-приложений.

Время шло, платформа стала поддерживать сначала Linux, а потом и macOS. Для работы с HTML в этих ОС Internet Explorer не подходил по понятным причинам; в Linux нами был задействован WebKitGTK+, а в macOs — библиотека на основе Cocoa. Таким образом, единство кодовой базы для разных ОС (которое мы стараемся поддерживать для клиентского кода на уровне 95%) в этой области было нарушено. Ну и движок IE к этому времени стал источником ряда проблем.
image
Total votes 16: ↑15 and ↓1+14
Comments44

Как и зачем мы написали высоконагруженный масштабируемый сервис для 1С: Предприятия: Java, PostgreSQL, Hazelcast

Reading time16 min
Views29K
В этой статье расскажем о том, как и для чего мы разработали Систему Взаимодействия – механизм, передающий информацию между клиентскими приложениями и серверами 1С:Предприятия – от постановки задачи до продумывания архитектуры и деталей реализации.

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

СВ использует распределенное хранилище Hazelcast и поисковую систему Elasticsearch. Еще речь пойдет о Java и о том, как мы горизонтально масштабируем PostgreSQL.
image
Читать дальше →
Total votes 13: ↑12 and ↓1+11
Comments85

Как мы в «1С: Предприятии» решаем системы алгебраических уравнений

Reading time5 min
Views16K
Работа с числовыми матрицами в целом и решение систем линейных алгебраических уравнений в частности — классическая математическая и алгоритмическая задача, широко используемая при моделировании и расчёте огромного класса бизнес-процессов (например, при расчёте себестоимости). При создании и эксплуатации конфигураций «1С:Предприятия» многие разработчики сталкивались с необходимостью вручную реализовывать алгоритмы расчёта СЛАУ, а после — с проблемой длительного ожидания решения.

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

Он оптимизирован для использования на данных, имеющих разреженную структуру (то есть содержащие не более 10% ненулевых коэффициентов в уравнениях) и в среднем и в лучшем случаях демонстрирует асимптотику Θ(n⋅log(n)⋅log(n)), где n — количество переменных, а в худшем (при заполненности системы ~100%) его асимптотика сопоставима с классическими алгоритмами ( Θ(n3)). При этом на системах, имеющих ~105 неизвестных, алгоритм показывает ускорение в сотни раз по сравнению с реализованными в специализированных библиотеках линейной алгебры (например, superlu или lapack).

image
Важно: статья и описанный алгоритм требуют понимания линейной алгебры и теории графов на уровне первого курса университета.
Читать дальше →
Total votes 9: ↑9 and ↓0+9
Comments62

Автоматизация при разработке платформы «1С: Предприятие»

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

Платформа работает на различных версиях ОС и БД:

  • ОС: Windows, Linux, macOS
  • СУБД: MS SQL, PostgreSQL, IBM DB2, Oracle, файловая СУБД собственной разработки
  • Мобильные ОС: Android, iOS, Windows

Поддерживает несколько видов клиентов:


Учитывая, что надо поддерживать целый ряд версий вышеперечисленных ОС, СУБД и браузеров, тестирование платформы становится нетривиальной задачей.

image
Total votes 18: ↑17 and ↓1+16
Comments23

«Открытое Воскресенье» на партнерском семинаре «1С»

Reading time2 min
Views3.4K
Стало уже доброй традицией организовывать «Открытое воскресенье» в рамках осеннего партнерского семинара «1С». В этот день мероприятие могут посетить все, кому интересны наши технологии и решения. В этом году мы также будем ждать всех желающих, зарегистрировавшихся на мероприятие, 1 октября в концертном зале гостиницы «Космос» (Москва, проспект Мира, дом 150).

В рамках «Открытого воскресенья» специалисты, занимающиеся внедрениями и разработкой программных продуктов, смогут прослушать доклады ведущих разработчиков платформы, прикладных решений и сервисов «1С: Предприятия», а также лично пообщаться на вернисаже с разработчиками фирмы 1С и партнерами, авторами тиражных решений 1С-Совместно.
Читать дальше →
Total votes 5: ↑5 and ↓0+5
Comments3

Отчетность в 1С: Система Компоновки Данных (СКД), идея и архитектура

Reading time9 min
Views98K
Одна из самых важных областей бизнес-софта – это отчетность. От того, насколько легко настроить под меняющиеся потребности бизнеса (и законодательства) существующий отчет или сделать новый, может зависеть (причем не в переносном смысле!) судьба бизнеса, будь то отчет для налоговой инспекции или диаграмма зависимости спроса на товары от сезона и других факторов. Мощная и гибкая система отчетности, позволяющая легко извлечь из системы нужные данные, представить их в доступном для понимания виде, позволяющая конечному пользователю перенастроить стандартный отчет так, чтобы увидеть данные в новом свете – это идеал, к которому должна стремиться каждая бизнес-система.

В платформе «1С:Предприятие» за построение отчётов отвечает механизм под названием «Система компоновки данных» (сокращенно СКД). В этой статье мы постараемся дать краткое описание идеи и архитектуры механизма СКД и его возможностей.

image
Читать дальше →
Total votes 24: ↑21 and ↓3+18
Comments75

Как мы в 1С: Предприятии работаем с моделями данных (или «Почему мы не работаем с таблицами?»)

Reading time10 min
Views36K
В этой статье мы хотим рассказать о том, какая модель работы с данными выбрана в платформе 1С:Предприятия и почему.

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

Здесь (в этой статье) мы говорим не о техническом аспекте хранения и манипулирования данными, а об описании данных как способе проектирования приложения. Почему же данные так важны для бизнес-приложений?
Читать дальше →
Total votes 18: ↑18 and ↓0+18
Comments59

История одного приложения: мобильное «1С: Управление нашей фирмой»

Reading time9 min
Views23K
На примере мобильного приложения «1С:Управление нашей фирмой» (сокращенно УНФ) я хочу показать эволюцию мобильного бизнес-приложения от его возникновения и выхода самой первой версии до сегодняшнего дня. Сейчас у этого приложения более 220 000 скачиваний; приложение бесплатное, но в нем есть платные опции (реализованные через встроенные покупки).

image
Читать дальше →
Total votes 11: ↑10 and ↓1+9
Comments12

Опрос по качеству платформы «1С: Предприятие 8»

Reading time1 min
Views6.9K
Коллеги, нужна помощь тех из вас, кто работает с платформой «1С: Предприятие 8». Платформа 8.3.9 вышла довольно давно, многие из вас уже работают с ней, а некоторые успели попробовать и недавно вышедшую 8.3.10. Примите, пожалуйста, участие в опросе по качеству платформы версий 8.3.8, 8.3.9, 8.3.10: ссылка.

Ваши отзывы важны для нас, будем использовать их в работе над улучшением качества наших продуктов.

Заранее спасибо за помощь!
Total votes 21: ↑6 and ↓15-9
Comments24

Как разрабатываются отраслевые и специализированные решения для 1С:ERP

Reading time12 min
Views22K
В этой статье мы попытаемся рассказать, как с помощью удаленных и территориально распределенных команд мы наладили процесс выпуска прикладных решений, расширяющих функциональность нашего продукта «1С:ERP Управление предприятием 2».
Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments29

Про multitenancy

Reading time6 min
Views16K
К сожалению, у этого термина нет хорошего русскоязычного аналога. «Википедия» дает перевод «мультиарендность, множественная аренда». Иногда это называют «множественным владением». Эти термины могут несколько путать, так как предмет не связан по сути ни с арендой, ни с владением. Это вопрос именно архитектуры программного обеспечения и организации его эксплуатации. Причем последнее не менее важно.

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

image
Читать дальше →
Total votes 13: ↑13 and ↓0+13
Comments21

Eclipse как технологическая платформа для 1C:Enterprise Development Tools

Reading time17 min
Views22K
Наверное, Eclipse давно уже не нуждается в особом представлении. Многие знакомы с Eclipse благодаря Eclipse Java development tools (JDT). Именно эта популярная open-source Java IDE ассоциируется у большинства разработчиков со словом “Eclipse”. Однако Eclipse – это и расширяемая платформа для интеграции средств разработки (Eclipse Platform), и целый ряд IDE, построенных на ее основе, в том числе JDT. Eclipse – это и Eclipse Project, проект верхнего уровня, координирующий разработку Eclipse Platform и JDT, и Eclipse SDK – поставляемый результат этой разработки. Наконец, Eclipse – это open-source Foundation с огромным сообществом проектов, далеко не все из которых написаны на Java или имеют отношение к средствам разработки (например, проекты Eclipse IoT и Eclipse Science). Мир Eclipse очень многообразен.

В данной статье, обзорной по своему характеру, мы попробуем рассмотреть некоторые основы архитектуры Eclipse как платформы для построения интегрированных средств разработки и дать начальное представление о компонентах Eclipse, образующих фундамент технологической платформы для «нового Конфигуратора» 1C: Предприятие, 1C:Enterprise Development Tools. Разумеется, такое рассмотрение неизбежно будет во многом поверхностным и довольно ограниченным, в том числе и потому, что мы ориентируемся не только на Eclipse-разработчиков в качестве целевой аудитории. Впрочем, надеемся, что даже опытные разработчики Eclipse смогут найти в статье интересную для себя информацию. Например, мы расскажем об одном из «секретов Eclipse», относительно новом и малоизвестном пока проекте Eclipse Handly, который был основан и поддерживается фирмой 1C.
image
Читать дальше →
Total votes 16: ↑14 and ↓2+12
Comments5

Кастомизации в 1С

Reading time11 min
Views38K

О кастомизациях вообще


Потребность в кастомизации программного обеспечения, т.е. его изменения под нужды конкретного пользователя, появилась, наверное, одновременно с самим программным обеспечением. Трудно написать программу, которая удовлетворит всех, а потому заложить в нее возможность изменений без привлечения производителя программы – хорошая идея. Особенно если дело касается бизнес-приложений, т.к. бизнес-процессы даже в одних и тех же областях могут отличаться в разных организациях.

image
Читать дальше →
Total votes 13: ↑12 and ↓1+11
Comments68

ВИДЕО: Atlassian User Group в гостях у «1С»

Reading time1 min
Views4.2K
Видеозапись встречи Atlassian User Group, прошедшей 8 декабря 2016 г. в офисе «1С».
Доклады:
  • Григорий Кнеллер, Polygran — «Расширение возможностей JIRA с помощью плагина JJUPIN» — Как лёгким движением руки можно расширить стандартные возможности JIRA по построению бизнес-процессов (workflows).
  • Анастасия Козлова, Toolstrek — «Документирование изменений» — Как не потерять управляемость изменениями, когда несколько администраторов работают в одном инстансе.
  • Андрей Шовкопляс, Reasoning Mind — «Монитор разработки»
  • Ольга Николаева, AUG — JIRA Automation Plugin, рассказ про этот небольшой, но чрезвычайно полезный плагин, с примерами.

Читать дальше →
Total votes 9: ↑9 and ↓0+9
Comments2

Atlassian User Group в гостях у «1С»

Reading time2 min
Views5.6K
Друзья, мы продолжаем цикл встреч о кастомизации JIRA и инфраструктуры продуктов Atlassian.

8 декабря в гостях у «1С» мы обсудим расширение возможности управления бизнес-процессами в JIRA с помощью плагина JJupin, интересная тема: как описать настройки системы и передать заказчику (или коллегам, если у вас несколько админов). Отдельно поговорим о примере мониторинга разработки, реализованного в компании Reasoning Mind.
Читать дальше →
Total votes 11: ↑8 and ↓3+5
Comments4

Про веб-клиент 1С

Reading time9 min
Views109K
Одной из приятных особенностей технологии 1С:Предприятие является то, что прикладное решение, разработанное по технологии управляемых форм, может запускаться как в тонком (исполняемом) клиенте под Windows, Linux, MacOS X, так и как веб-клиент под 5 браузеров – Chrome, Internet Explorer, Firefox, Safari, Edge, и все это – без изменения исходного кода приложения. Более того – внешне приложение в тонком клиенте и в браузере функционирует и выглядит практически идентично.
Найдите 10 отличий (под катом 2 картинки):
Читать дальше →
Total votes 33: ↑29 and ↓4+25
Comments167

1С в облаках

Reading time12 min
Views48K
Идею облачных сервисов применительно к бизнес-приложениям можно сформулировать так: перенос сервера приложений из локальной сети организации в Интернет. Пользователи продолжают использовать привычный софт, запуская нативный или веб-клиент на своем компьютере, но для работы теперь им достаточно иметь только подключение к Интернету, и не нужно входить в локальную сеть организации (физически или через VPN). А в случае варианта SaaS провайдер облачных услуг, на чьих вычислительных мощностях развернут сервер приложений, также берет на себя и всю работу по администрированию и обновлениям приложений, избавляя конечного пользователя от этих забот.

Картинка для привлечения внимания: автор статьи с помощью подручных средств (облака, флаг, самолет, парашют) иллюстрирует тезис «1С в облаках».


Читать дальше →
Total votes 18: ↑16 and ↓2+14
Comments57

Партнерский семинар «1С» – Открытое Воскресенье — доступна полная программа

Reading time12 min
Views7.1K
Стала доступна полная программа Открытого Воскресенья — дня на партнерском семинаре 1С, который может посетить (за плату) любой желающий, а не только сотрудник нашего партнера или франчайзи.

image
Читать дальше →
Total votes 16: ↑11 and ↓5+6
Comments29

Партнерский семинар «1С» – Открытое Воскресенье

Reading time1 min
Views5.2K
На прошлом осеннем партнерском семинаре 1С мы сделали целый день Открытым воскресеньем для всех, кому интересны наши технологии и решения. Эксперимент был удачным, и на грядущем партнерском семинаре 1С воскресенье, 2 октября, также будет открытым днем, который смогут посетить все желающие.

В прошлый раз участники Открытого воскресенья посетили секции по развитию технологической платформы 1С:Предприятие и прикладных решений 1С; в рамках круглого стола по платформе 1С:Предприятие был продемонстрирован новый кластер серверов 8.4 и примеры написания плагинов к среде 1C:Enterprise Development Tools.

image
Читать дальше →
Total votes 15: ↑11 and ↓4+7
Comments5

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Works in
Registered
Activity