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

image

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

Итак, приступим. В этой статье мы дадим обзор некоторых технологий, которые применяются в платформе, обрисуем ландшафт, без глубокого погружения в реализацию. Ведь для многих механизмов подробный рассказ потянет на отдельную статью, а для некоторых — на целую книгу!
Для начала стоит определиться с базовыми вещами — что такое платформа «1С:Предприятие» и из каких компонентов она состоит. Ответ на этот вопрос не так прост, ведь под термином «Платформа» (для краткости будем называть ее именно так) понимают и средство разработки бизнес-приложений, и среду исполнения, и средства администрирования. Условно можно выделить следующие составляющие:
  • кластер серверов
  • «тонкий» клиент, способный подключаться к серверу по http и собственному бинарному протоколу
  • клиент для работы в двухзвенной архитектуре с БД, размещенной на жестком диске или сетевой папке
  • веб-клиент
  • средства администрирования сервера приложений
  • среда разработки (известная как Конфигуратор)
  • среда исполнения для iOS, Android и Windows Phone (мобильная платформа 1С)

Все эти части, за исключением веб-клиента, написаны на C++. Кроме того, существует недавно анонсированный Конфигуратор нового поколения, написанный на Java.

Нативные приложения


Для разработки нативных приложений используется C++03. Под Windows в качестве компилятора используется Microsoft Visual C++ 12 (профиль совместимый с Windows XP), а под Linux и Android — gcc 4.8, для iOS — clang 5.0. Стандартная библиотека используется единая для всех ОС и компиляторов — STLPort. Это решение позволяет снизить вероятность ошибок, специфичных для реализации STL. Сейчас мы планируем переход на реализацию STL, поставляемую с CLang, так как STLPort прекратил свое развитие и несовместим с включенным режимом поддержки C++11 в gcc.
Кодовая база сервера при этом общая на 99%, клиента — процентов на 95%. Более того, даже мобильная платформа использует тот же C++ код, что и «большая», хотя там процент унификации несколько ниже.
Как большинство пользователей С++ мы не претендуем на использование 100% возможностей языка и его библиотек. Так, у нас практически не используется Boost, а из возможностей языка — динамическое приведение типов. При этом мы активно применяем:
  • STL (в частности, строки, контейнеры и алгоритмы)
  • множественное наследование, в т.ч. множественное наследование реализации
  • шаблоны
  • исключения
  • умные указатели (собственная реализация)

За счет использования множественного наследования интерфейсов (полностью абстрактных классов) становится возможной компонентная модель, речь о которой пойдет ниже.

Компоненты


Для обеспечения модульности весь функционал разделен на компоненты, представляющие из себя динамические библиотеки (*.dll под Windows, *.so — под Linux). Всего компонентов более полутора сотен, приведем описания некоторых из них:
backend Содержит «движок» метаданных платформы
accnt Объекты, которые прикладные разработчики используют для построения бухгалтерского учета (планы счетов и регистры бухгалтерии)
bsl Движок исполнения встроенного языка
nuke Собственная реализация аллокатора памяти
dbeng8 Движок файловой базы. Простая файл-серверная машина баз данных, основанная на ISAM, включающая также простой SQL-процессор
wbase Содержит базовые классы и функции для реализации пользовательского интерфейса Windows — оконные классы, доступ к GDI и т. п.

Разделение на множество компонент полезно с нескольких точек зрения:
  • Разделение способствует лучшему проектированию, в частности лучшей изоляции кода
  • Из набора компонентов можно гибко собирать разные варианты поставки:
    • Например, инсталляция тонкого клиента будет содержать wbase, но не будет backend
    • а на сервере wbase, наоборот, не будет
    • оба варианта будут, конечно, содержать nuke и bsl

Все нужные для данного варианта запуска компоненты загружаются при старте программы. Это, в частности, нужно для регистрации SCOM-классов, речь о которых пойдет ниже.

SCOM


Для декомпозиции на более низком уровне используется система SCOM — схожая по идеологии с ATL библиотека. Для тех, кто с ATL не работал, кратко перечислю основные возможности и особенности.
Для специально оформленного класса SCOM:
  • Предоставляет фабричные методы, позволяющие создать класс из другой компоненты, зная только его название (без раскрытия реализации)
  • Предоставляет инфраструктуру умных указателей с подсчетом ссылок. За временем жизни SCOM-класса не нужно следить вручную
  • Позволяет узнать, реализует ли объект конкретный интерфейс, и автоматически привести указатель на объект к указателю на интерфейс
  • Создать объект-сервис, всегда доступный через метод get_service и т.д.

Например, можно описать в компоненте json.dll вот такой класс для чтения JSON:
//////////////////////////////////////////////////////////////////////////////
// JSONStreamReader - Класс для чтения данных JSON
class ATL_NO_VTABLE JSONStreamReader :
    public SCOM_ObjectRoot,
    public SCOM_Class<JSONStreamReader, &SCOM_CLSIDOF(JSONStreamReader)>,
    public IJSONStreamReader
{
public:
    BEGIN_COM_MAP( JSONStreamReader)
        COM_INTERFACE_ENTRY(IJSONReader)
        COM_INTERFACE_ENTRY(IJSONStreamReader)
    END_COM_MAP()
... члены класса ...  
     
}

Классы, экземпляры которых можно создавать из других компонент, нужно зарегистрировать в SCOM-машине:
SCOM_CLASS_ENTRY(JSONStreamReader)

Этот макрос опишет специальный статический класс-регистратор, конструктор которого будет вызван при загрузке компоненты в память.
После это можно создать его экземпляр в другой компоненте:
IJSONStreamReaderPtr jsonReader = create_instance<IJSONStreamReader >(SCOM_CLSIDOF (JSONStreamReader ));

На основе компонентной модели 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С на мобильном устройстве

Интерфейс 1С на других платформах
image
Интерфейс 1С на ОС Windows

image
Интерфейс 1С — веб-клиент


Open source


Хотя мы и не используем стандартные для С++ разработчика библиотеки под Windows (MFC, контролы из WinAPI), не все компоненты мы пишем сами. Уже упоминалась библиотека wxWidgets, а еще мы используем:
  • cURL для работы с HTTP и FTP.
  • OpenSSL для работы с криптографией и установки TLS соединений
  • libxml2 и libxslt для разбора XML
  • libetpan для работы с почтовыми протоколами (POP3, SMTP, IMAP)
  • mimetic для разбора сообщений электронной почты
  • sqllite для хранения журналов работы пользователей
  • ICU для интернационализации

Список еще можно продолжать.
Кроме того, мы используем сильно модифицированную версии Google Test и Google Mock при разработке юнит-тестов.
Библиотеки потребовали адаптации для совместимости со SCOM-моделью организации компонент.
Распространенность 1С делает платформу отличной проверкой на прочность для используемых в ней библиотек. Разнообразие пользователей и сценариев быстро обнаруживает ошибки даже в самых редкоиспользуемых участах кода. Мы исправляем их у себя и стараемся отдавать обратно авторам библиотек. Опыт взаимодействия оказывается очень разный.
Разработчики cURL и libetpan быстро откликаются на pull-request, но патч, например, в OpenSSL нам так и не получилось отдать.

Заключение


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

Как реализована мобильная платформа 1С?
Описание внутреннего устройства веб-клиента?
Или, может быть, Вам интересен процесс выбора фич для новых релизов, разработки и тестирования?

Пишите в комментариях!

Комментарии (111)


  1. kolesnevg
    27.10.2015 14:22
    +3

    Если не сложно напишите историю развития самой платформы, кто и когда начал её пилить. И второе — опишите Ваше мнение по поводу развития платформы, какую архитектуру считаете наиболее перспективной.
    Спасибо за статью, давно хотелось узнать подробности, простота и функционал 7-ки всегда поражали, 8-ка немного потеряла в простоте на мой взгляд, но я не 1С-ник ))


  1. Melex
    27.10.2015 15:26
    +2

    Реально было бы узнать про мобильную платформу, а именно — тонкости реализации на Android, iOS и WinPhone.
    Например, на сколько сильно вообще они отличаются структурно, и какая дальше будет спираль их развития.
    Стационарная платформа — максимально идентична что под линукс, что под виндовс. Но с мобильными такой финт не прокатит, как же вы собираетесь решать вот эти вопросы.

    Ну к примеру — работа с интентами, бродкастами, та и вообще — полная интеграция внутри мобильной системы, т.е. взаимодействие не только 1С с внешним миром (интенты, в случае Андроида), но и внешнего мира с самой 1С.

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

    И почему нет тонкого клиента. Т.е. все понимают, что раз не сделали, то это не значит, что не хотели, а что возникли некие сложности, которые не позволяют реализовать проект вообще, или позволяют, но есть задачи важнее.

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


    1. o4karek
      28.10.2015 12:16
      -1

      Для мобильной платформы тоже реализуется принцип идентичности: Андроид, яОсь и Винда предоставляют примерно одинаковые возможности, с точностью до ограничений конкретной платформы. Платформа для мобильной Винда немного не показатель, она еще в слишком юном возрасте :)
      Но, например, работа с пушами и локальными уведомлениями есть и для Андроида и для яОси. А для упрощения работы — предоставляется еще и специальный промежуточный интерфейс, чтобы сделать работу с пушами на яОси более пригодной для использования с платформой.
      Клиент на мобильном устройстве — это понятное желание. Оно нами понимаемо и обдумываемо регулярно.
      Но «можно сделать все, однако нельзя сделать всего» :)


      1. Melex
        28.10.2015 12:34

        Для мобильной платформы тоже реализуется принцип идентичности: Андроид, яОсь и Винда

        До версии 8.3.5 — так и было, а вот после нее, все пошло по другому пути. Вы почитайте сколько всего не доступно на iOS, часть из-за технической реализации, вторая часть — из-за лицензионных ограничений AppStore и т.д.
        Я про это говорил.


        1. o4karek
          28.10.2015 12:40

          Так я вроде изначально об этом говорил, когда писал «с точностью до ограничений конкретной платформы» (наверное было некорректно использовать тут термин «платформа», тут не правильнее написать «конкретной мобильной ОС»).
          Мы не можем обходить требования каждого вендора, иначе никогда в магазины не попадем.
          Из какого-то особого различия сходу видится только печать и невозможность управлять качеством фото/видео на яОс.
          Или вы о чем-то другом говорите?


          1. Melex
            28.10.2015 13:21

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

            Вот и вопросы отсюда — планируется ли сделать бродкасты? Видь они (или ближайшие аналоги, скажем так) отличаются от ОС к ОС.

            Т.е. фото с выбором качества, это такая мелочь, что даже не интересно.
            Интересно именно то — как 1С планируется интегрироваться в мобильную среду. Т.е. я например могу установить камеру Focal, и вызвать ее из 1С, что бы сделать фото.
            Но вот смогу ли я когда то, получив на телефоне почту, в которой будет pdf с счетом — нажать отправить, выбрать 1С, и сразу в 1С создать документ.

            Вот именно такие вопросы интересуют, видь этот функционал можно реализовать на каждой из ОС, но принцип реализации там значительно отличаться будет. Отсюда и вопрос — планируется ли такой функционал? Если нет, то все понятно. А если да — то вот тут мне кажется тема для отдельной статьи на хабре :)


            1. o4karek
              28.10.2015 13:43
              -1

              Чтобы реализовать ту или иную возможность — над понимать, зачем она нужна. Причем не абстрактно, как разработчику универсальному, который старается использовать все возможности мобильной ОС, а с точки зрения потребностей разработчика бизнес-приложений. Ведь платформа является в первую очередь системой разработки бизнес-приложений.
              Если у вас есть примеры того, для решения каких задач вам нужны броадкасты или какие-то другие возможности мобильных платформ — это надо до нас разными способами доносить. Т.е. интеграция интересует в первую очередь с этой точки зрения.
              ЗЫ: А как 1С узнает, в каком формате счет в pdf? ;)


              1. Melex
                28.10.2015 18:08

                По первой части — написал в личку.

                А на счет того, как 1С узнает какой формат — так ей и не надо знать, ей достаточно получить URI на файл, что бы его забрать и загрузить в себя. Т.е. вопрос не в распознавании файлов, а вопрос в оповещении 1С о чем либо из других приложений.

                Пример с файлом я привел, т.е. пришла накладная, я ее хочу привязать в 1С, я конечно могу ее сохранить, потом зайти в 1с, выбрать файл (причем очень аккуратно, так как 1С не умеет работать с контентом, надо именно полный путь) или написать свой файловый менеджер, и только потом выбрать файл и загрузить. Но этого можно избежать, т.е. пользователю достаточно будет отправить файл в 1С, и 1С откроется, появится окно, где 1С спросит — что это? РКО, ПКО, заявка и т.д., я нажимаю на что-то — и сразу создается документ в 1С с вложенными файлами.


                1. o4karek
                  28.10.2015 18:18

                  По первой части — написал в личку.

                  Спасибо
                  А на счет того, как 1С узнает какой формат — так ей и не надо знать, ей достаточно получить URI на файл, что бы его забрать и загрузить в себя.

                  Мы говорим об одном и том же? Я имею ввиду: на основании pdf-документа создать документ конфигурации, с заполненным контрагентом, табличной частью и т.д. и все это на основании pdf-ки. Я правильно понял?
                  По поводу вложений: коллекция Вложения объекта ИнтернетПочтовоеСообщение, метод Получить() и т.д. Или есть какие-то проблемы, которые вам очевидны, а мне нет?


                  1. Melex
                    28.10.2015 18:42

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

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


                    1. o4karek
                      28.10.2015 22:15

                      У меня был один вариант и я его привел :) И если я прав мы говорим об одном и том же — мой вопрос с форматами загружаемого файла остается в силе.
                      А про вложения — это был комментарий к тому, что в платформе сейчас, как кажется, есть нужные средства для работы с вложениями почты.
                      Если почта получается в другом клиенте, то как интерфейсно должно выглядеть действие по импорту из почты? Сейчас посмотрел GMail-клиента — там просто нет стандартного интерфейса расшаривания письма. Говоря о тех объектах, для которых доступен стандартный интерфейс «Поделиться» — да, понятно, как сделать. А с почтой как?


                      1. Melex
                        28.10.2015 22:29

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

                        С другой стороны, сказать «поделиться» с приложением, тоже не совсем.
                        Но главное, что мы поняли друг друга :)


                        1. o4karek
                          28.10.2015 22:46

                          Да кажется, что нет :)
                          Давайте еще раз:
                          1. (простое) делиться в 1С картинками и прочими постами из Pocket`а (например) — более-менее понятно как предлагается. Стандартная кнопка и там есть Предприятие. Тут вроде все понятно.
                          2. (сложное) есть почта, в которую пришло письмо. В письме вложение и надо это затащить в мобильное приложение. И вот тут — непонятно: сходу не видно, как поделиться письмом в Предприятие (тот же gmail-клиент это не умеет). Сходу не понятно, как этот пресловутый pdf уверенно преобразовать в документ платформы и т.д. Но если использовать для рабочего ящика мобильное приложение в качестве почтового клиента, то вопрос о том, как доставить письмо в приложение кажется вполне решенным. А вопрос «как pdf конвертировать в документ» — совсем за рамками мобильного приложения лежит.


                          1. Melex
                            28.10.2015 23:21

                            Ок. Последний каммент :)
                            А то все обретает весьма запутанный вид.
                            Забудьте про почту вообще, и про все что с ней связано.

                            Представим себе, что у меня есть некий файл на телефоне, и вообще не важно то, как он туда попал. Просто файл, совсем не важно какой он.
                            Моя задача — поместить файл в мобильную 1С.
                            Тут есть два варианта решения:
                            1. Я его каким-то образом забираю из 1С; Например пишу в 1С uri к этому файлу, и она забирает его с телефона, и сохраняет у себя в базе. Что уже можно сделать, хотя и костыльно.
                            2. Я его каким-то образом «отправляю» в 1С. Например, как я прикрепляю этот файл к письму, или отправляю в дропбокс, гуглдрайв и т.д.

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


                            1. o4karek
                              29.10.2015 09:07

                              Ну с этого надо было начинать :) А то — почта-почта :)
                              Да, это понятно, спасибо.
                              Осталось только понять — для чего (с точки зрения бизнес-приложения) такое надо (помещение любого файла в приложение на 1С)?
                              Какая типичная задача не решается без такой фичи?


                              1. Melex
                                29.10.2015 13:04

                                Моя задача — поместить файл в мобильную 1С.
                                Тут есть два варианта решения:
                                1. Я его каким-то образом забираю из 1С; Например пишу в 1С uri к этому файлу, и она забирает его с телефона, и сохраняет у себя в базе. Что уже можно сделать, хотя и костыльно.
                                2. Я его каким-то образом «отправляю» в 1С. Например, как я прикрепляю этот файл к письму, или отправляю в дропбокс, гуглдрайв и т.д.


                                1. o4karek
                                  29.10.2015 14:08

                                  Это техническая проблема. А какую бизнес-проблему вы решаете такой конструкцией — непонятно.
                                  В варианте со сканером вы это изложили отлично: инвентаризация, с которой не справляется текущая реализация сканера ШК (по удобству и скорости).


                                  1. Melex
                                    29.10.2015 14:37

                                    В личку


  1. EvilBeaver
    27.10.2015 16:13
    +1

    Хочется немного про внутреннюю архитектуру веб-клиента. Как организационно добиваетесь идентичности поведения с тонким клиентом?


  1. RusVicious
    27.10.2015 16:15

    Интересная статья. Хотелось бы узнать, а для чего в платформе 1С 8.3 для Linux в зависимостях платформы и тонкого клиента находится сервер, и планируется ли их разделить?


    1. PeterG
      28.10.2015 10:13

      Коллеги подсказывают: дело в том, что толстый клиент и сервер разделяют большое количество компонент, поэтому данную зависимость можно трактовать как «зависимость толстого клиента от компонент, содержащихся в пакете сервера». Разделить их, конечно, планируется, но существенной разницы в наборе устанавливаемых компонент все равно не будет.
      А тонкий клиент, наоборот, не зависит ни от одного пакета платформы и является самодостаточным пакетом.


  1. vladon
    27.10.2015 16:23
    +1

    Интересно узнать про вашу GUI-библиотеку (wbase).


  1. zag2art
    27.10.2015 16:28
    +1

    Хорошее начало, надеюсь на продолжение. Огромный продукт, миллионы технических решений. Уверен вам есть о чем рассказать.


  1. PQR
    27.10.2015 16:55

    «интересен процесс выбора фич для новых релизов, разработки и тестирования?» — глосую за этот пункт!

    И ещё интересно, используете ли вы какие-то статические анализаторы кода (типа PVS Studio) или «санитайзеры» (о которых часто слышу упоминания в новостях про исправленные баги в Chrome)?

    Смотрели ли вы на такие свежие и модные технологии, как Rust и Go? (безопасная работа с памятью и хорошая поддержка параллелизма)

    bsl — движок исполнения встроенного языка — медленно, очень медленно товарищи! Стоит ли вопрос производительности в планах и с каким приоритетом? Как насчёт многопоточности?


    1. o4karek
      27.10.2015 17:31

      движок исполнения встроенного языка — медленно, очень медленно товарищи!

      Из общего интереса — есть прецеденты, когда конфигурацию тормозит именно встроенный язык, а не работа с базой данных?
      Если «да» — что это за прецеденты?


    1. khim
      27.10.2015 17:34
      +1

      О каких «модных» технологиях может идти речь если в статье явно описано, что они планируют только отказываться от STLport? Уже даже Android от него отказался!

      В таких вещах всё планируется годами — уж очень высока цена неправильно сделанного выбора… а rust только-только вышел…


  1. anderston
    27.10.2015 17:21
    +2

    Интересно было бы узнать о реализации встроенного языка. Что он из себя представляет в архитектурном плане, что-то похожее на JavaVM или что-то ещё? То есть язык компилируется в байт-код своего формата или там другой механизм? По какому принципу добавляются новые конструкции и происходит разделение на то, что помещать на уровень платформы (что на клиент, что на сервер, что и и туда, и туда), а что вообще переносить на уровень БСП?


    1. EvilBeaver
      27.10.2015 21:30
      +1

      Там стековая машина с собственным байт-кодом


    1. utyv
      28.10.2015 06:03

      (что на клиент, что на сервер, что и и туда, и туда)

      этим управляет прикладной разработчик, который пишет код на встроенном языке. Выставляет соответствующие атрибуты в общих модулях, ставит директивы препроцессора.


      1. anderston
        28.10.2015 10:40

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


        1. EvilBeaver
          28.10.2015 11:29

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


  1. DikSoft
    27.10.2015 20:46
    +2

    Два вопроса:

    Скажите, пожалуйста, что именно не даёт Вам возможности собрать Win x64 «толстого» клиента для 8.3. Большое количество конфигураций просто нереально перенести на управляемые формы, а многие, в том числе типовые, отчёты на Win x86 просто не влезают по памяти!
    Когда ждать прогресса в этом направлении?

    Второй вопрос: 1С уже потихоньку появляется в Azure, а вот нормальную отказоустойчивость из-за «особенностей подключения» так и не получается реализовать. Планирется дли наконец использовать Native MS SQL client?
    Спасибо.


    1. EvilBeaver
      27.10.2015 21:28

      отчёты на Win x86 просто не влезают по памяти

      Простите, а что за отчет такой, который не влезает по памяти? Его человек потом анализирует?


      1. lexar
        27.10.2015 21:47
        +1

        не знаю какие отчеты имел ввиду DikSoft, но по своему опыту скажу, что не все отчеты формируются для того, чтобы «человек его потом анализировал», есть отчеты, которые нужно «распечатать, сшить, положить в шкаф и хранить 5 лет», и иногда на такой отчет не хватает пачки бумаги, ситуации разные бывают и не все зависит от наших с вами взглядов, есть начальство, которое говорит что нужно, есть политика ведения учета, архивов (в том числе и на бумаге)


        1. EvilBeaver
          27.10.2015 21:59

          Согласен, но тогда это серверный код, а сервер есть в x64. Впрочем, если я ничего не напутал, то DikSoft уже ответил мне в Google+ и привел пример, когда это нужно в клиенте.


          1. lexar
            27.10.2015 22:56

            в моем случае это было еще в файл-серверной 7.7, которая, кстати, до сих под жива


      1. DikSoft
        27.10.2015 22:02
        +2

        Размер данных, которые используются может быть существенно больше, чем то, что этот отчёт выводит. Неожиданно, да?

        Пример из типовых: отчёт по НДС. Клиент выжрал 2 Гб и выпал по ошибке. Бухгалтера «шаманят» убирая и консолидируя что-то вручную, чтобы влезло. Это ненормально.

        Про «перепишите и оптимизируйте» писать не нужно. В курсе. Вопрос в ресурсах. В 8.2 работало. В 8.3 не работает. В то же время не переходить нельзя, т.к. часть регламентированной отчётности может работать _только_ под 8.3.6.

        Вопрос: Что мешает 1С собрать Win x64 толстого клиента?


      1. MentOS
        28.10.2015 11:15

        Решение на базе ERP 2.0. Конфигуратор при сравнении\объединение в процессе обновления на ERP 2.1 постоянно падал с ошибкой нехватки памяти (то при просто разворачивании какой-то ветки метаданных в окне сравнения\объединения, то при вызове сравнения структуры двух модулей). Попытались обновиться в Linux x64, но там конфигуратор падал на гораздо более банальных вещах. В итоге удалось обновиться в Windows, но с настройками установленными автоматически, без внесения каких-либо правок при сравнении\объединении, а затем переносить все изменения вручную. Операция на которую рассчитывали потратить день растянулась на неспешную неделю :) Нам очень нужен Win x64 конфигуратор.


        1. EvilBeaver
          28.10.2015 11:24

          Ну «Конфигураторский» merge — это отдельный адский ад, плачъ и стенания ((( Надеемся только на выход Eclipse-версии и адекватную поддержку git. То, что предлагается для слияния кода сейчас (в 2015 году и на масштабах ERP) — это даже не смешно.


    1. o4karek
      28.10.2015 09:27
      +1

      Планирется дли наконец использовать Native MS SQL client?

      Версия 8.2.17:
      Для работы с Microsoft SQL Server возможно использование Native Client. При использовании Native Client возможно использование протокола SHARED MEMORY, если оба сервера находятся на одном компьютере.
      Пруф: downloads.v8.1c.ru/content//Platform/8_3_7_1633/1cv8upd.htm#79789069-b207-11e1-b815-e61f135f174b


      1. DikSoft
        28.10.2015 10:05

        — Спасибо, я как-то упустил это из вида. www.gilev.ru/non_8_2_13


  1. mvs
    27.10.2015 22:26
    +1

    Мы не используем стандартные контролы Windows, наши элементы управления реализованы напрямую на Windows API. Для Linux-версии сделана прослойка, работающая через библиотеку wxWidgets.
    Библиотека элементов управления не зависит от других частей «1С: Предприятия» и используется нами еще в нескольких небольших внутренних утилитах.
    Вот за это вам гореть в аду. Остальное ok.


    1. VasiliyKudryavtsev
      27.10.2015 23:41

      Простите, а почему эта особенность вызвала у вас такую нервную реакцию?


      1. 121212121
        28.10.2015 02:27
        +4

        Как пользователь 1с разделяю мнение mvs. Много боли и страданий приходится претерпеть в попытках кастомизировать интерфейс. Мне вообще непонятно такое маниакальное стремление использоватьь везде свои контролы. Уж лучше сосредоточились бы на бэкэнде, к фронтэнд отдали юзерам. Битрикс — прекрасный пример, что эта схема работает.


        1. VasiliyKudryavtsev
          28.10.2015 09:40
          +2

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

          А какой именно кастомизации Вам не хватает?


          1. 121212121
            28.10.2015 14:03
            +1

            Мне не хватает:
            — Сортировки окон в толстом клиенте как в браузере (зачем то есть только по алфавиту и все, и то, только через меню).
            — Чекбокса просмотра по умолчанию при добавлении изображений в хранилище дополнительной информации (он есть, но по умолчанию поставить нельзя – лишний клик).
            — Хотелось бы переделать направленный поиск (вообще, поиск – слабое место в 1с, к примеру: ставим пробел после значения в Ведомости по товарам на складах – ничего не найдем, а в номенклатуре при тех же раскладах ищет).
            — Какая-то странная реализация работы с HTML в почтовом клиенте.
            — Всплывающие подсказки выводятся только в тех ячейках, в которые не влез текст целиком. Изменить это нельзя. Вывести свои подсказки тоже нельзя. Изменить цвет подсказок — нельзя.
            — Указывать контактными лицами существующих контрагентов.
            — При работе с табличным документом, при фокусе в ячейке, выделять и строку и столбец.
            — В некоторых таблицах это нужно при наведении мышки.
            Ну еще много чего, что бегло вспомнилось.


            1. VasiliyKudryavtsev
              28.10.2015 14:10

              Вы очень сильно смешиваете платформу и конфигурации.

              К платформе относится, пожалуй, только

              "— Сортировки окон в толстом клиенте как в браузере (зачем то есть только по алфавиту и все, и то, только через меню)."
              "— При работе с табличным документом, при фокусе в ячейке, выделять и строку и столбец."
              " Всплывающие подсказки выводятся только в тех ячейках, в которые не влез текст целиком. Изменить это нельзя. Вывести свои подсказки тоже нельзя. Изменить цвет подсказок — нельзя"


              Что такое «направленный поиск» я, признаться, не понял


              1. 121212121
                28.10.2015 22:09

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

                Для чего я все это написал? Чтобы показать, что вы никогда не решите все за всех. Потребности разные. Отдайте фронтэнд.


                1. Melex
                  28.10.2015 22:41
                  -1

                  Направленный поиск — только вверх или только вниз ищет по столбцу.

                  Ну как бы если не надо это — используйте полнотекстовый поиск, в чем проблема? Тут вам поиск и по вхождению, и сразу по всем словам и т.д. и т.п.

                  На счет табличного документа — я даже не могу придумать задачи, где требуется выделить сразу и столбец и строку, а там где мне это реально надо было, так же слезно просили — я реализовал эту функцию за пять минут. Опять таки, где проблема?

                  Про всплывающие подсказки вообще не понял — зачем и к чему.

                  Но есть проблемы и приходится вникать, ибо я не мог поверить сначала кодерам, кому ставил ТЗ

                  А на основании чего поверили? Если не секрет. Т.е. вы нашли реально признанных в наших кругах гуру 1С, съездили на конференцию, выцепили там элиту, спросили у них, и они сказали что так нельзя? И вообще никак по другому тоже нельзя?

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


                  1. 121212121
                    28.10.2015 23:23

                    Ну если вы не можете придумать задачи, где это требуется, тогда конечно да — это никому не нужно.


                    1. Melex
                      28.10.2015 23:50

                      Не обрезайте смысл.
                      Если вы не можете поставить задачу так, что бы ее можно было решить, то тогда ее не имеет смысла решать, возможно именно по этому ваши программисты и говорят, что что-то там сделать нельзя. Задумайтесь над этим, а то напоминает тот ролик, где просили нарисовать 7 красных линий перпендиклярно друг другу, 3 синим цветом и 2 прозрачные.

                      Это конечно не оправдывает платформу, но и те проблемы которые вы описали — являются больше надуманными, чем реальными. Хотя в ней и более реальных проблем хватает :)


                      1. 121212121
                        28.10.2015 23:58

                        И только вы один Дартаньян. Ок.


                        1. Melex
                          29.10.2015 13:03

                          Почти. Я не один, но нас мало, увы.


                1. VasiliyKudryavtsev
                  28.10.2015 22:42

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

                  Вообще, изначально речь шла о кастомизации интерфейса, а это тема программиста.

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

                  Для чего я все это написал? Чтобы показать, что вы никогда не решите все за всех. Потребности разные. Отдайте фронтэнд.


                  А, собственно, никто не мешает. Вот, например, что партнеры делают:
                  www.oknosoft.ru/metadata


                  1. 121212121
                    28.10.2015 23:17
                    +1

                    «Вообще, изначально речь шла о кастомизации интерфейса, а это тема программиста».

                    Вот и я про то же, в 1с программисты разрабатывают интерфейс. А было бы лучше, если бы этим занимались GUI- дизайнеры.


                    1. VasiliyKudryavtsev
                      28.10.2015 23:26

                      Вот и я про то же, в 1с программисты разрабатывают интерфейс. А было бы лучше, если бы этим занимались GUI- дизайнеры.


                      Никто не заставляет именно программиста разрабатывать интерфейс конкретного прикладного решения.


                  1. EvilBeaver
                    29.10.2015 10:39

                    Василий, интересно, кстати, услышать Ваше мнение про metadata.js в вашей ссылке. Оно взлетит?


                    1. VasiliyKudryavtsev
                      29.10.2015 10:41

                      Боюсь, у меня нет мнения. Чтобы оценить, нужно попробовать поработать более 10 минут.


                      1. EvilBeaver
                        29.10.2015 10:44

                        Ну это тоже ответ, спасибо.


      1. mvs
        28.10.2015 10:42

        У меня точно такая же реакция на тех, кто норовит стилизовать input'ы и другие контролы в вебе, Android-приложениям делает iOS-образный внешний вид, а Windows-приложения (к примеру) темезирует так, что их не узнать.
        Если что-то выглядит как утка и крякает как утка, значит это утка. Но если утка выглядит как лось, а крякает соловьём, это уже нифига не утка.

        Короче, есть пользовательский опыт при работе в ОС и есть пользовательские привычки и ожидания при работе в каком-либо приложении и, если это приложение по-своему реагирует на Enter, располагает привычные кнопки в непривычных местах, либо не имеет их вовсе, то такое приложение вызывает боль и страдание.

        В конце-концов, если хочется выпендриться с оформлением, то давно есть интерфейс Ribbon (начинания с Microsoft Office 2010 и Windows 8). Более-менее удобен, более-менее стандартен как для ОС, так и для многих приложений, пользователи так или иначе привыкают к нему, поскольку он используется во всей ОС в целом, а не в отдельном приложении.


        1. VasiliyKudryavtsev
          28.10.2015 11:12

          А вы работали с 1С: Предприятие?

          Если используется другая реализация контролов, то это не значит, что нарушается логика стандартная логика приложения Windows или даже логика внешнего вида.


          1. mvs
            28.10.2015 11:29

            Работал.


            1. VasiliyKudryavtsev
              28.10.2015 11:56

              И что именно вас смущало и было непривычным?


        1. o4karek
          28.10.2015 12:09
          -2

          Основная цель интерфейса Предприятия — обеспечение единого пользовательского опыта на всех платформах, где пользователь может использовать прикладное решение, разработанное на платформе. Другими словами, человек, который привык/научился работать с какой-то конфигурацией, работающей под Виндой, то этот опыт (практически без изменений) пригодится ему в Linux и в веб-клиенте и, отчасти, на мобильных устройствах (хотя тут, очевидно, прямого переноса опыта не может быть, что называется by design).
          Можно обсуждать, насколько хорош такой подход, но сейчас он такой. Собственно излишняя кастомизация интерфейса такому подходу изрядно мешает. Излишняя кастомизация — это значит, что пользователю каждый раз надо вникать и привыкать.
          Глобальная задача при разработке платформы — обеспечение единого поведения интерфейса на всех поддерживаемых платформах. Ну и плюс узнаваемость этого интерфейса.


          1. 121212121
            28.10.2015 14:08
            +1

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


            1. o4karek
              28.10.2015 14:14
              -1

              Это не мантра, а текущий подход.

              По такой логике все сайты должны быть одинаковыми.

              По какой логике? Я не слышал, чтобы кто-то пытался пропагандировать такой подход. Однако тот же Google пытается выстраивать интерфейсы своих приложений так, чтобы пользовательских опыт сохранялся при переходе между Андроидом и вебом. Наверное они не зря переделывают свои веб-приложения в Material Design.
              Думаю, тут очевидно, что такой подход давно устарел.

              Можете привести причины?


          1. mvs
            28.10.2015 17:30

            Извините, но нахрена вот это вот всё? ЦА 1С (и БП, и УТ, и Предприятия в целом) — бухгалтерия, руководители и менеджеры непонятного уровня. Выберите один из двух вариантов поведения указанной ЦА в работе:

            1. Утром работаю на Windows, вечером на Mac OS, иногда делаю красные галаза и включаю Linux. Мне жизненно нужна абсолютно одинаковая 1С для каждой ОС, пусть даже в ущерб логике работы самой ОС.
            2. Работаю на Windows XP/7/8 с 1С, Excel, Word, клиент-банком в офисе; вечером или в выходные по срочным вопросам использую бук с Windows 10 и таким же набором ПО. Мне не важна консистентность интерфейса 1С для разных платформ, но я хочу удобную работу в ней наравне и с другими привычными программами.

            Очевидный для меня вариант выделен.


            1. o4karek
              28.10.2015 17:38

              Извините, но нахрена вот это вот всё?

              Возможно потому, что есть еще другие варианты, кроме перечисленных. Например, на работе Windows, дома (иногда) Mac на веб-клиенте. Иногда какое-то мобильное устройство. Или, например, в офисе Windows, вне офиса iPad/планшет на Андроиде через мобильное приложение или веб-клиент.
              Возможно потому, что наши данные о применении системы показывают, что наш подход оправдан.
              Возможно потому, что жизнь на монохромная, и вариантов использования чуть больше, чем 2.


  1. Dementor
    27.10.2015 23:45

    Какие темы были бы интересны Вам в следующих статьях?

    Все три!


  1. derwin
    28.10.2015 06:33

    Пример со своего предприятия. Раз в неделю приходится перезагружать серверные процессы 1С (ест-но версия x64) — банальная утечка памяти за неделю кушает 100Гб оперативы, когда выедает полностью — процесс перестаёт отвечать. Размер баз MsSQL — 350Гб, крутятся отдельно.
    Очень интересно услышать, как происходит разработка и тестирование кода, и как он попадает в новые релизы.


    1. Infactum
      28.10.2015 07:33

      А интервал перезапуска рабочих процессов в свойствах кластера почему не выставите?
      Подозреваю, что утечка памяти в проектах на си — один из самых больных вопросов. А про процесс тестирования и покрытия кода тестами тоже услышать хотелось бы.


      1. utyv
        28.10.2015 07:36

        Утечки памяти на сервере может вызывать и прикладной код на встроенном языке. Управление памятью происходит через подсчет ссылок, циклические ссылки между объектами могут приводить к появлению «потерянных объектов» на которые нет ссылок.


        1. Infactum
          28.10.2015 07:37
          +1

          Это можно отследить по технологическому журналу платформы.


  1. Elisy
    28.10.2015 08:48
    +3

    Интересно узнать про Native API. Понятно, что для Linux нужен был принципиально другой подход. Но он стал ограниченнее COM API: поддерживает только простейшие типы, а поддержку IDispatch не сделали. Native API в Windows не интегрируется с .Net framework, как раньше COM API. /CLR-реализация интеграции через С++ приводит к Loader Lock.


  1. vladislav_starkov
    28.10.2015 15:55

    PeterG, коллеги!

    Объясните пожалуйста зачем вы всё это делаете?

    Вот это всё: «Движок исполнения встроенного языка», «Собственная реализация аллокатора памяти», «Простая файл-серверная машина баз данных, основанная на ISAM, включающая также простой SQL-процессор», для чего? Когда есть уже давно написанные и отполированные библиотеки и быстрые RDBMS SQL и noSQL.

    Почему вы не придерживаетесь принятой во всем Мире терминологии, а вместо этого придумываете все эти свои «Платформа», «Конфигурация», «Тонкий клиент», «Толстый клиент»? Которые понять _что_это_такое_ ВООБЩЕ не представляется возможным, потому что армия ваших «программистов» не в состоянии даже объяснить это, т.к. они сами не владеют методологическими знаниями, а вместо этого располагают фактологической информацией и научились «тыкать куда надо, чтобы оно заработало»?

    Как так вышло, что аккаунты на users.v8.1c.ru и its.1c.ru совершенно разные и не зависят друг от друга, и это при том, что для установки и работы с вашими продуктами требуется регистрация и там и там? У вас кто-то это вообще продумывает? Посмотрите на Apple ID или Microsoft Live ID.

    Зачем писать бухгалтерскую программу на C++?

    Почему вы не делаете свои приложения на Ruby, Python или Java, по всем понятной архитектуре клиент-сервер? И ведь можно было бы сделать backend и предоставить к нему доступ по REST API, написать свои клиентские приложения, которые общались бы с этим API, выпустить SDK под разные платформы, начиная от web-браузера и заканчивая iOS. Кроме того, можно было бы дать доступ к этому API любому стороннему разработчику, который, не сильно мучаясь и напрягаясь, мог бы интегрировать ваше «1С: Предприятие» в свою существующую инфраструктуру или написать собственный модуль, который делает что-то очень полезное и облегчит жизнь многим предприятиям.

    Почему у вас все так сложно, медленно и невозможно работает?!

    Потратив 2 недели на поиск специалиста, способного установить «1С: Предприятие» на Linux, нам в итоге пришлось справляться самим. В конечном счете качество работы системы оказалось совершенно неприемлемым: всё мега тормозит, «web-клиент» съедает 100% CPU и вешает браузер, потому-что он что-то там делает. КАК ЭТО ВОЗМОЖНО? Кто все это проектировал и писал?

    К слову сказать, ни один из 3-4 диллеров, к которым мы обращались за тех.помощью по установке системы на Linux, не знает как это сделать. Все что мы слышали в трубке, это какое-то бормотание про «Платформа», «Конфигурация», «Тонкий клиент» в рандомном порядке. Люди на том конце провода ВООБЩЕ не имеют представления, как работает и устроен продукт, которым они торгуют. Никто даже внятно не смог объяснить, что такое ИТС и зачем оно нужно.

    Если так вышло, что вы постоянно дописываете код вокруг написанной когда-то в конце 90-х / начале 00-вых программы, то неужели это не очевидно, что следует немедленно все остановить, перепроектировать на современный лад (микросервисы и пр.) и переписать все заново с нуля?

    Ведь если этого не сделаете ВЫ, то найдется кто-то другой.

    И в заключении, должен сказать, что 1С: Предприятие, на мой взгляд, гарантированно выполняет только одну, при этом самую важную функцию – держать все формы документов up-to-date в соответствии с текущим законодательством, чтобы у гос-ва было меньше оснований вмешиваться в деятельность организации.И это, пожалуй, единственное, что получается хорошо.

    На дворе конец 2015-го года! Так обеспечьте же наконец приемлемое качество своего продукта.

    Буду рад конструктивным ответам на критику.

    Спасибо.


    1. khim
      28.10.2015 16:18
      +1

      Ну сколько можно переливать из пустого в порожнее?

      Если так вышло, что вы постоянно дописываете код вокруг написанной когда-то в конце 90-х / начале 00-вых программы, то неужели это не очевидно, что следует немедленно все остановить, перепроектировать на современный лад (микросервисы и пр.) и переписать все заново с нуля?
      Человек, которому это «очевидно» должен быть уволен сразу и немедленно. Про это писалось уже 1000 раз.

      Ведь если этого не сделаете ВЫ, то найдется кто-то другой.
      Несомненно. Но продукцию этого вот «другого» не сможет поддерживать армада людей, которые «не владеют методологическими знаниями, а вместо этого располагают фактологической информацией и научились «тыкать куда надо, чтобы оно заработало»!» И всё: это значит, что он проиграет. Ведь именно они — это и есть вся история! Вокруг них всё вертится! А если сделать так, как вы говорите, то они «выпадут из игры» — что и будет концом 1C.

      Точно также как отказ от Win32 и переход на .NET стал «началом конца Windows» (хотя ещё лет 10 это будет очевидно не всем) отказ от C++ и переписывание всего этого хозяйства «на Ruby, Python или Java» будет концом 1C. Единственный вариант — это всё делать аккуратно и не спеша. Конфигуратор нового поколения на Java, к примеру, появился. Постепенно люди к нему привыкнут — и можно будет что-то ещё изменить.

      Вот и вся история, в сущности. Если смотреть на неё не глазами программиста, а глазами бизнесмена.


    1. o4karek
      28.10.2015 16:44
      +2

      Как-то даже сложно отвечать :)
      Давайте вспомним, когда вышла первая версия текущей, 8-й версии, платформы? Это август 2002 года. Теперь вспомним о том, что все это надо было разработать и откинем от этого примерно еще несколько лет, пусть это будет 4 года. Итого: 1998 год. А теперь давайте вспомним, какие отлаженные, отполированные и т.д. настольные движки под Windows тогда были доступны, желательно во встраиваемом варианте? Чтобы можно было в режиме Next > Next > Next > Ok установить такой движок и начать работать, и который еще жив до сих пор…
      Что касается терминов, так вроде ничего нового не изобретено: тонкий клиент, толстый клиент и т.д.
      И все время давайте помнить о том, что разработка началась достаточно давно. Тогда с популярностью и отлаженностью всех современных технологий было немного по-другому. И развивая платформу (и прикладные решения на ее основе) обеспечение обратной совместимости — это огромная задача. Т.к. в разработку на платформе вложены огромные средства. И все заинтересованы в сохранении этих инвестиций. У клиентов работает огромное количество систем, с ними работает большое количество пользователей, ведется разработка и доработка новых систем и т.д.
      А теперь представим, что фирма «1С» берет и говорит — всем стоять! Мы немедленно останавливаем всю доработку текущей платформы (да и поддержку тоже останавливаем, т.к. нам надо все быстро переписать) и начинаем делать другую платформу, которая будет современной и т.д. (прямо как в той шуточной истории про средства доступа к данным от Майкрософт :)). И есть у меня подозрение, граничащее с уверенностью, что к моменту окончания это новой разработки мы получим следующее:
      1. разработка устареет, т.к. за время разработки сменятся технологии
      2. текущие клиенты уйдут на другие платформы, т.к. людям надо иметь стабильную платформу для автоматизации и с предсказуемым и стабильным развитием и поведением

      Ведь если этого не сделаете ВЫ, то найдется кто-то другой.

      Значит у нас появится новый конкурент, к имеющимся сейчас SAP, Microsoft, Галактика и т.д.
      К слову сказать, ни один из 3-4 диллеров, к которым мы обращались за тех.помощью по установке системы на Linux, не знает как это сделать.

      Осталось только понять, как это замечание относится к собственно платформе :)
      Может быть это связано с непопулярностью Линукса, как ОС для корпоративного применения? Может быть это связано с тем, что наши партнеры не видят [пока] перспектив для вложений в Линукс-компетенции своих сотрудников? Т.е. это проблема платформы или положения Линукса в корпоративной среде? Я сейчас не оцениваю качества Линукса, я просто задаю качественный вопрос.

      Ошибки… это больной вопрос. В системе есть ошибки. Это математический факт. Протестировать всю возможную совокупность программно-аппаратных комплексов, использующихся у клиентов — невозможно по определению. Прикладывает-ли 1С усилия у повышению качества продукта? Да, прикладывает! Хватает этих усилий? Скорее всего не хватает, раз есть такой напористый негативный фидбэк.

      И да, когда все резко переписывается, получается переход 7.x -> 8.x. Те, кто помнит то время, могут вспомнить, что тогда говорилось в адрес компании :)


      1. DikSoft
        28.10.2015 17:03
        +1

        И да, когда все резко переписывается, получается переход 7.x -> 8.x. Те, кто помнит то время, могут вспомнить, что тогда говорилось в адрес компании :)

        К сожалению, не только «когда всё резко переписывается».
        Толстого клиента Win x64 просто «потеряли по дороге» при «плавном переходе» с 8.2 на 8.3. Будет он вообще собран или нет?


        1. o4karek
          28.10.2015 17:11
          -1

          Он не потерян, он не рождался.
          Увы, в данный момент ничего внятного про клиент Win64 сказать не могу.


          1. DikSoft
            28.10.2015 17:46
            +1

            А есть, тот, кто может?
            Так, чтобы без маркетинговых лозунгов «мы всё равно движемся в сторону классической трёхзвенки и тонких клиентов, поэтому решили, что вопрос через некоторое время станет неактуальным и не стали тратить ресурсы...» понятно описал, в каких именно библиотеках случился «затык». Явно же не от лени? Что случилось, что при всей расписанной выше универсальности и компоновке «вдруг» не получилось собрать на «родной» платформе достаточно востребованный компонент экосистемы?


            1. PeterG
              29.10.2015 17:19
              -2

              Задача разработки клиента под Win64 нам известна; но на данный момент у нас есть более приоритетные с нашей точки зрения задачи.


              1. DikSoft
                29.10.2015 21:01
                +2

                Спасибо за ответ. Лихо, однако…

                есть более приоритетные с нашей точки зрения задачи.

                По Вашему обеспечить честно купившим не самую дешёвую x64 версию сохранение прежней функциональности это «ерунда и не стоит беспокойства, дело-то житейское» ???

                И, кстати, раз уж та тема заявлена, как «что под капотом», может раскроете, в чем техническая сложность?


                1. EvilBeaver
                  30.10.2015 11:51

                  Помнится мне в блоге PVS-studio была отличная статья про то, почему нельзя просто так взять и пересобрать под x64.


                  1. DikSoft
                    30.10.2015 12:42

                    Видимо, речь про эту статью: habrahabr.ru/company/pvs-studio/blog/264021?
                    Дык, там понятно, что «с нуля» переносили. А здесь же имеется:

                    Кодовая база сервера при этом общая на 99%, клиента — процентов на 95%

                    + достаточно проработанная компонентная модель. (см. описание в статье).
                    В чем смысл кидания на произвол судьбы большого количества пользователей, погоня за новыми сегментами и клиентами? Или всё таки какие-то технологические сложности (устаревание MVS 2012, как средства для написания x64 приложений, с большими затратами на смену платформы разработки)?


                    1. EvilBeaver
                      30.10.2015 15:26

                      Да, статья PVS эта. И еще ссылки в ней. Спасибо.

                      Кодовая база сервера при этом общая на 99%, клиента — процентов на 95%

                      Лично я эту фразу понял так: "кодовая база общая между windows и linux. Для сервера на 99%, для клиента на 95%"
                      Из этого тезиса нельзя сделать вывод, что 95% клиента уже совместимы с x64.


                1. PeterG
                  30.10.2015 13:13

                  По Вашему обеспечить честно купившим не самую дешёвую x64 версию

                  Это х64 версия сервера, в прайс-листе так и написано.

                  сохранение прежней функциональности

                  Поясните пожалуйста, о чем речь? Про прежнюю функциональность.

                  может раскроете, в чем техническая сложность?

                  Сложность скорее не техническая; она — в объеме работ: введение нового компонента (х64 клиент) в структуру, встраивание в билд, создание тестов, документация, дистрибуция и т.д. и т.п. Все это — существенный объем работ. На который нужны ресурсы. А перед нами стоят и другие задачи, со своей стоимостью реализации и приоритетом. И вот на данный момент у других задач приоритет выше, чем у задачи создания клиента х64 под Windows.
                  Спасибо за понимание.


                  1. DikSoft
                    30.10.2015 14:18

                    Это х64 версия сервера, в прайс-листе так и написано.
                    Согласен, версия сервера в первую очередь. Более дорогая. Под тяжёлые задачи. Так? А какой клиент был в 8.2 для больших и ресурсоёмких задач? — x64. В том числе и для огромных типовых отчётов.
                    Поясните пожалуйста, о чем речь? Про прежнюю функциональность.
                    Теперь плавно переходим к прежней функциональности. С утерей толстого клиента Win x64 для 8.3. потребитель потерял возможность без дополнительной (и очень дорогой!) доработки получить результат, который был доступен в 8.2. Тяжёлые отчёты перестали работать, упираясь во что? В то, что потребителя лишили толстого x64 клиента, но при этом заставили перейти на 8.3 той же типовой отчётностью! Крайне не люблю повторяться, но пришлось. Всё это уже написано выше.
                    … в объеме работ: введение нового компонента (х64 клиент) в структуру
                    Вы несколько противоречите написанному в этом же топике, говоря про написание с нуля «нового компонента». А как же модульность, 95% одинакового кода у клиентов «и вот это всё»?

                    Как-то ясности больше не стало. <грустный смайл> Как ИТ руководители должны аргументировать владельцам бизнеса покупку «допиливания» типовых отчётов у сторонних организаций, если они до этого писали, что покупается более дорогая 1С x64 именно по причине больших объёмов и тяжёлых задач?
                    Что можно сказать главбуху по поводу смысла продолжать покупать подписку ИТС, решающую важные текущие задачи, если задача не решается? Наличие типовых отчётов? Так их всё равно приходится фактически покупать у сторонней поддержки.

                    Вы сами-то признаёте, что проблема есть?


                    1. o4karek
                      30.10.2015 15:12
                      +1

                      В 8.2 не было 64-битного клиента. Именно поэтому я ранее и написал, что он не утерян, он не рождался.


                      1. DikSoft
                        30.10.2015 16:25

                        … т.е. причина бОльшей требовательности клиента к памяти не в смене среды выполнения (x64-->x86), а в том, что 8.3 существенно сложнее внутри и поэтому больше памяти требует под свои нужды?


                        1. o4karek
                          30.10.2015 16:39

                          Не очень понятно.
                          Я отвечал на ремарку:

                          А какой клиент был в 8.2 для больших и ресурсоёмких задач? — x64.

                          С утерей толстого клиента Win x64 для 8.3.

                          Одной из причин повышения потребностей в памяти служит существенное усложнение прикладных решений. Я думаю, что если написать на 8.х аналог конфигурации 7.7 (полностью эквивалентный, без расширения возможностей!) — получится маленькое и быстрое решение. Это ИМХО, возможно безосновательное :)


    1. EvilBeaver
      29.10.2015 10:50

      Ну вы жжоте, коллега! две трети того, что вы хотите в 1С давно есть. А если те к кому вы обращались не имеют прямых рук и не следят за развитием платформы, ну напишите здесь, кто это был и что именно не смог сделать. Думаю, если они будут продолжать в том же духе, то вылетят с рынка и все дела.


  1. Dimadze
    28.10.2015 16:48
    +1

    Расскажите лучше как у вас работает сборщик мусора, так как заметил что некоторые объекты невозможно удалить из памяти, а сборщик мусора вылезает когда памяти уже нет и надо что-то с этим сделать.

    Например

    ЭлементыФормы.ПолеКартинки.Картинка = Новый Картинка("ДИСК:\картинка.бмп");

    То есть каждом присваивании память всегда занимается, но не очищается… печаль


    1. PeterG
      29.10.2015 12:38

      Если у вас есть действующий договор ИТС — пришлите пожалуйста описание проблемы на v8@1c.ru.
      Вы как используемую память отслеживаете? Каким софтом?


  1. rut
    29.10.2015 10:56

    Хочется также узнать и о:
    — работе 1С с СУБД Oracle. Из недавних примеров: типовой Документооборот КОРП 1.4 на Oracle жутко тормозит, а под MS SQL уже шевелится
    — работе механизма RLS в Документообороте, точнее о скорости вычисления прав


  1. Elisy
    29.10.2015 11:14
    -1

    1С-молодцы, конечно. Но при всех достоинствах системы есть несколько негативных, на мой взгляд, моментов:
    1. Отсталость среды разработки по сравнению с Eclipse, VS
    2. Неразвитость языка программирования 1С. В него долгое время не вводились новые конструкции.
    3. Отсутствие модульного подхода, все решения получаются монолитными
    4. Официальная политика 1С на закрытость системы. Например, запрет и гонения за прямой доступ к базе данных, за декомпиляторы 1С, внешние средства-дополнения к конфигуратору.


    1. PeterG
      29.10.2015 16:23

      1С-молодцы, конечно

      Спасибо! Мы стараемся)

      Но при всех достоинствах системы есть несколько негативных, на мой взгляд, моментов

      Nobody's perfect

      1. Отсталость среды разработки по сравнению с Eclipse, VS

      Мы работаем в этом направлении, как вы наверное уже знаете.

      2. Неразвитость языка программирования 1С. В него долгое время не вводились новые конструкции.

      Чего именно не хватает в языке? Можно примеры?

      3. Отсутствие модульного подхода, все решения получаются монолитными

      Есть такое. У отсутствия модульного подхода есть как плюсы, так и минусы. Мы думаем в этом направлении, но планами пока делиться не готовы.

      4. Официальная политика 1С на закрытость системы. Например, запрет и гонения за прямой доступ к базе данных, за декомпиляторы 1С, внешние средства-дополнения к конфигуратору.

      Это типичная политика большинства вендоров. Надеюсь, вы понимаете, чем она вызвана. В особенности вот это:
      "гонения за прямой доступ к базе данных"


      1. Elisy
        30.10.2015 09:35
        +1

        Мы работаем в этом направлении, как вы наверное уже знаете

        Я знаю об этом. Ваша работа в этом направлении и открытый XML-формат конфигурации безусловно очень позитивные шаги. Они делают ненужными всякие парсеры cf-формата.
        Чего именно не хватает в языке? Можно примеры?
        Не хватает развития. Вы в статье перечислили много технологий и языков программирования. Как вы сами думаете язык 1С приближен по выразительности и возможностям к языкам C++, C#, Java или он остался на одном уровне с Ассемблером? Даже JavaScript, с оглядкой на который создавался 1С-язык, получил развитие в виде классов, пространств имен, анонимные callback-функции, а 1С- нет.
        Это типичная политика большинства вендоров. Надеюсь, вы понимаете, чем она вызвана. В особенности вот это:
        «гонения за прямой доступ к базе данных»

        В том-то и дело, что перестал понимать. Эта политика устарела. С одной стороны она противоречит законодательству РФ, с другой стороны она противоречит вашей политике в отношении иностранных разработчиков:
        1c-dn.com/library/data_structure_in_1c_enterprise_8
        Судя по этой ссылке, у вас появилось неравное отношение к разработчикам СНГ и разработчикам из дальнего зарубежья. Для иностранцев — возьмите данные, они лежат там-то и там-то, для местных — запрещено лицензионным соглашением. Я так понимаю, ваша стандартная российская политика не работает в более развитых странах и чревата реакцией государств Евросоюза со штрафами. Хотелось бы видеть равное отношение.


        1. o4karek
          30.10.2015 09:52
          +2

          С одной стороны она противоречит законодательству РФ

          Можете привести ссылку на конкретный параграф закона?
          , с другой стороны она противоречит вашей политике в отношении иностранных разработчиков:

          Почему?
          Для «местных» есть вот эта статья: Размещение данных 1С: Предприятия 8, есть метод получения структуры базы (во встроенном языке), есть описание того, что можно делать не нарушая лиц.соглашения (тут).
          Смотреть можно, чинить базы можно, анализировать структуру данных и принимать адекватные решения по разработке — тоже можно. Нельзя делать продуктивные решения, построенные на прямом доступе к данным СУБД.


          1. Elisy
            30.10.2015 10:38

            Можете привести ссылку на конкретный параграф закона?

            Конечно:
            ГК РФ Статья 1334. Исключительное право изготовителя базы данных
            Изготовителю базы данных, создание которой (включая обработку или представление соответствующих материалов) требует существенных финансовых, материальных, организационных или иных затрат, принадлежит исключительное право извлекать из базы данных материалы и осуществлять их последующее использование в любой форме и любым способом...

            ГК РФ Статья 1280. Свободное воспроизведение программ для ЭВМ и баз данных. Декомпилирование программ для ЭВМ
            1. Лицо, правомерно владеющее экземпляром программы для ЭВМ или экземпляром базы данных (пользователь), вправе без разрешения автора или иного правообладателя и без выплаты дополнительного вознаграждения:
            1) внести в программу для ЭВМ или базу данных изменения исключительно в целях их функционирования на технических средствах пользователя и осуществлять действия, необходимые для функционирования таких программы или базы данных в соответствии с их назначением, в том числе запись и хранение в памяти ЭВМ (одной ЭВМ или одного пользователя сети), а также осуществить исправление явных ошибок, если иное не предусмотрено договором с правообладателем;


            1. o4karek
              30.10.2015 10:53
              -1

              А почему во второй цитате не выделено «если иное не предусмотрено договором с правообладателем»?


              1. Elisy
                30.10.2015 11:05
                +1

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


                1. khim
                  30.10.2015 14:17

                  Ничего не понял. Где нарушение? Какое нарушение?

                  Вы можете залезть в свою базу чем угодно и для чего угодно — и с этим правом разработчики 1C вполне согласны.

                  Пока это просто база и дальнейшее её использование совместно с 1C не предполагается. Тут, собственно, Статья 1280 вообще ни к селу ни к городу. База ваша — делайте что хотите. Но вот если предполагается использовать базу совместно с продуктом 1C — тут уже требуется лицензионное соглашение в котором чётко написано что руками лазить в базу — нельзя.


                  1. Elisy
                    31.10.2015 08:43

                    Ваше мнение тоже имеет право на существование. Но оно не убедительно. Простыми словами: база данных моя, что хочу с ней то и делаю. Хочу копирую, хочу удаляю, хочу пускаю кого-то в нее со стороны. Кстати, в одной базе данных у меня могут работать несколько приложений в т.ч. 1С. Никто не вправе со стороны говорить мне, что мне делать со своей собственностью. Все равно, что вы купили квартиру, а интернет-провайдер добавил пункт в договор, что в вашу квартиру вообще никакие провода кроме его идти не должны.

                    К разработчикам 1С как раз претензий нет. Они проделали огромную работу и продолжают работать. Есть претензии к пункту лицензии про прямой доступ. Потому что де-юре прямой доступ запрещен, а де-факто уже на средних предприятиях и базах данных без прямого доступа не обойтись. Прямой доступ убыстряет операцию в 80-100 раз по сравнению со штатными средствами (на примере пометки на удаление). И если штатными средствами операция будет длиться 3 суток, то прямым доступом она завершится за 45 минут.


                    1. khim
                      31.10.2015 15:24

                      Все равно, что вы купили квартиру, а интернет-провайдер добавил пункт в договор, что в вашу квартиру вообще никакие провода кроме его идти не должны.
                      Ну если вы подписали такой договор — то кто ж вам теперь судья? Эксклюзивные договоры — штука вполне логичная. И вообще как раз пример квартир очень хорошо показывает, что «кто-то со стороны» очень даже вправе указывать, что вам делать со своей собственностью: нарушение кучи правил приведёт к штрафам или к чему похуже и никакие отговорки на тему, что это типа моя собственность не канают. Практически любая перепланировка требует согласований — теоретически вплоть до остекления балкона! А отказ в обслуживании всё-таки больше похож на отказ предоставлять интернет в случае установки железной двери (перекрывающей «ввод» в квартиру). Тут уж вам придётся выбирать чего вы хотите — железную дверь или интернет.

                      И если штатными средствами операция будет длиться 3 суток, то прямым доступом она завершится за 45 минут.
                      Это скорее повод обратиться к разработчику и попросить сделать нужный вам API, а не повод лезть «грязными ручками» в базу из которой потом финансовые документы порождаются.

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


                      1. Elisy
                        02.11.2015 06:50

                        Ну если вы подписали такой договор — то кто ж вам теперь судья? Эксклюзивные договоры — штука вполне логичная.

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

                        Вы до сих пор верите в отзывчивость 1С? У 1С очень циничный подход. Компания занимается только тем, чем выгодно. И разработчики здесь не при делах. Разработчики подчиняются руководству 1С. АПИ вы будете ждать до «ишачьей пасхи», а результат нужен завтра.
                        А так всё просто: вы залезли в базу (нарушив тем самым лицензию), целостность её состояния более не гарантируются, так что никаких претензий к 1C больше быть не может.

                        Нужно посмотреть документы. Уверен, что в них явно прописан отказ от претензий. Что-то в виде используете ПО 1С на свой страх и риск. 1С сама не гарантирует целостность данных. Убираешь режим совместимости — пропадают узлы обмена из списка. Ставишь разделение итогов на регистр бухгалтерии — пропадают субконто за все годы. В последнем случае как без прямого доступа восстанавливать базу данных?


                        1. khim
                          02.11.2015 14:41

                          1С же фактически монополист и подобные запреты дело антимонопольных органов.
                          Возможно. Но пока антимонопольные органы своего веского слова не сказали — вы ничего сделать не можете. Dura lex, sed lex.

                          Нужно посмотреть документы. Уверен, что в них явно прописан отказ от претензий. Что-то в виде используете ПО 1С на свой страх и риск.
                          Конечно прописано. Более того — как всем известно иначе и быть не может, если повесить на 1C не только права, но и обязанности — небо упадёт на землю и мы все будем покупать операционки по 10миллинов долларов за штуку. Вы этого хотели? Кушайте, пожалуйста, не обляпайтесь.

                          Вы до сих пор верите в отзывчивость 1С? У 1С очень циничный подход. Компания занимается только тем, чем выгодно. И разработчики здесь не при делах. Разработчики подчиняются руководству 1С. АПИ вы будете ждать до «ишачьей пасхи», а результат нужен завтра.
                          Я вас очень хорошо понимаю. Но, тем не менее, есть закон. Если он не даёт людям жизнь, то это повод его изменить и не повод на него наплевать, уж извините. Изменять его никто не хочет (смотри дискуссию по вышеприведённой ссылке), так что придётся жить с чем есть.


                          1. Elisy
                            02.11.2015 16:32

                            Смысла не вижу продолжать дискуссию. Вы начали себе противоречить.

                            Сначала вы утверждали, что 1С не сможет отвечать после прямого доступа в базу данных, но сейчас согласились, что 1С и так ни за что не отвечает. Так в чем принципиальная разница? Не отвечала 1С раньше и не отвечает она после.
                            В конце вообще вы сожалеете о каком-то законе, «не дающем людям жизнь». Но закон явно говорит о защите прав на прямой доступ к базе данных. Ссылки на конкретные статьи я привел в посте выше
                            habrahabr.ru/company/1c/blog/269611/?reply_to=8637909#comment_8634219


        1. VasiliyKudryavtsev
          30.10.2015 09:54
          +2

          Добавлю, что бесплатно и не нарушая законодательства статьи можно прочитать, скачав документацию в составе демо-версии платформы вот тут:

          online.1c.ru/catalog/programs/program/18610119


          1. Elisy
            30.10.2015 14:46

            Статья стала ценной не только содержанием, но и комментариями, где можно для себя по ссылкам много нового и интересного найти.


  1. Elisy
    30.10.2015 09:34

    Ошибся веткой


  1. svcoder
    31.10.2015 08:52

    Хотелось бы получить ответ на следующие вопросы.
    1. С чем связан отказ от тонкой кастомизации работы с БД. Ваша цель понятна — одинаковая работа приложения на всех 4-х СУБД, включая файловую версию. Но моя многолетняя практика работы на крупных проектах показывает, что смена БД в течение эксплуатации не происходит никогда. Разумеется, что MS SQL Server развивается гораздо быстрее файловой ИБ, но ведь клиент покупает вместе с 1С лицензии на MS SQL Server вместе со всеми своими функциями, но пользоваться ими не может. Вот некоторое из того, чего реально не хватает:
    1.1. Добавление нескольких индексов по произвольным полям
    1.2. Получение номера строки выборки ROW_NUMBER в MS SQL Server
    1.3. Коррелированные подзапросы

    Все это могло бы решаться некоторыми профилями тонкой настройки, которые выполняются вендором у конкретного клиента

    2. Добавление бинарной трансляции p-кода. Вас не расстаивает, что Java-Script на веб-клиенте выполняется в тысячи раз быстрее встроенного языка?

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

    4. Судя по ERP 2 произошел крутой поворот в сторону выполнения всей логики на СУБД. На мой взгляд это шаг назад, так как алгоритмические языки всегда более понятные и удобные для поддержки/доработки чем скрипты на SQL. Так и до PL/SQL можно дойти

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