Не так давно был очередной пост с критикой 1С. Пост хороший, но… как то мимо. Стоит поддержать коллегу, и дополнительно указать на некоторые важные моменты.




Перед тем как начать


Разработчики 1С проделали огромную работу и прошли долгий путь. На сегодня мы имеем широкий набор средств, для достаточно быстрой реализации разнообразных решений под разные операционные системы. Масса готовых разработок зачастую является лучшим выбором для малого и среднего бизнеса. Данный продукт тестируется, сопровождается и широко документирован. Читаешь руководство разработчика и диву даёшься – насколько добротно всё продумано.

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

Мои пять копеек про «тормоза 1С-ки»


Я стою перед доской (аджайл), и мой взгляд цепляет пять задач с разными формулировками, но одинаковой причиной. Вот одна из этих задачек, наиболее примечательная:
В обработке загрузок прайсов, остатков и новинок — выдается ошибка — Конфликт блокировок… и не могу загрузить новинки…

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

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

Печаль не в том, что есть такое явление, а в том, что когда я, например, первый раз с этим столкнулся, я вообще не знал с чего начать – в 1С-ке нет штатного средства для борьбы с этим недугом. Хотя явление довольно частое. Я думаю, многие со мной согласятся, что в меню конфигуратора должен быть пункт, посвящённый этой проблеме.



На сегодня мы имеем средство, но оно где-то в недрах «Центра управления производительностью», который входит в состав «Корпоративного инструментального пакета», который стоит, в общем-то недёшево. Кроме того, документация на него доступна только по подписке ИТС (Техно достаточно). Есть, конечно, сторонние средства, например вот это.

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

Вариант 1. Часть разработчиков 1С заменяют на разработчиков SQL. Из конфигурации выдирается всё, что связано с БД. Пишется новая БД, где содержится вся логика. А формы общаются с новой БД только посредством вызова хранимых процедур. Обмен с другими БД налаживается через тот же Service Broker. В результате это всё работает очень быстро. Остаётся одна неприятная мелочь — из 1С-ки нельзя передать в хранимую процедуру таблицу значений. Вместо этого передают XML или JSON.

Здесь есть продолжение. Когда приходит время покупать очередной пакет лицензий на 300 рабочих мест, возникает понимание, что и разработчики 1С стоят недёшево. В результате возникает идея заменить «морду» 1С на PHP или C#.

Вариант 2. Компания пытается внедрить SAP.

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

Обмен данными и конфигурации


Модульность лучше, чем монолит. Так? Хорошо, когда получается при разработке разбить целое на части. Когда в 1С работает 20+ пользователей, уже было бы неплохо развести всех по разным углам. Сделать так, чтобы у каждого направления была своя конфигурация. Например, у склада своя, у контента своя, у курьеров своя и у бухгалтерии, понятно, тоже. Так и блокировок меньше. Много маленьких конфигураций лучше, чем одна здоровенная. Развивать проще и т. п.

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

У меня реально уходит дофига времени, чтобы состыковать конфигурации, даже которые крутятся на одной версии платформы. Я не говорю про состыковку типовых конфигураций, в которых уже написан обмен. Хотя и здесь есть порой чему удивиться. Например, если бухгалтер загружает документы к себе в базу раз в квартал (вот так бывает удобней человеку), то время выгрузки и загрузки измеряется часами. Из одной типовой в другую типовую. Я как-то раз посматривал за обменом, который длился более десяти часов. А представляете, если бы возникла какая-то ошибка? Это ты устранил, поставил снова загрузку… бац! Опять.
Такое бывает. Например, ставлю чисто ради статьи выгрузку из типовой УТ11.3 через универсальный формат с настройками по умолчанию (Другая программа…). Спустя три часа:
Во время отправки данных возникли ошибки(см. журнал регистрации).

Путь к менеджеру обмена не указан (пусто, значит используется менеджер по умолчанию). Смотрим журнал:
Событие: Отправка.
Объект: Статья движения денежных средств, Убыток от курсовых разниц (e1cib/data/Справочник.СтатьиДвиженияДенежныхСредств?ref=ae8500259075533411e7205499471b7a).

{ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(4605)}:
Не найдено ПОД для объекта метаданных.
Объект метаданных:.
ВызватьИсключение ТекстОшибки;

Что это? Почему? За что? Допустим, что ПОД – это правила обмена данными…

Ничего не хочу говорить про обмен с интернет-магазином. Просто дам пару советов, для тех, у кого дофига номенклатуры и/или свойств, вдруг кто не знает: чтобы он не «молотил» часами, первым делом нужно отключить передачу картинок. Картинки нужно закачивать отдельно на ресурс сайта (например, FTP-сервер картинок). Для этого делается регламент, в нём отслеживаем изменения в картинках (например, по версии данных) и передаём. В разных компаниях я видел разные реализации, но суть такая.

Итак, состыковка прикладных решений. Существует специальная конфигурация «Конвертация данных 3.0». Однако, чтобы всё получилось, необходимо указать такую мелочь, как файл с текстом модуля «МенеджерОбменаЧерезУниверсальныйФормат» (для УТ11.3 модуль содержит 46+ тыс. строк кода). Где запрятан генератор этого модуля? А если у тебя новая пустая конфигурация?

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

Тогда так. Вот было бы здорово, если бы функция «ПланыОбмена.ВыбратьИзменения» принимала максимальный размер выбираемой пачки. Не сразу всё, что там накопилось, а например пачку в 100 штук. На следующей итерации – ещё 100 штук. И так далее. Она и отрабатывать будет быстрее, если изменений много образовалось. И блокировать будет недолго.

Совместимо с 1С




Изобретать велосипед плохо. Особенно если не собирался этого делать. Вместо того, чтобы вкладываться в разработку собственного продукта, выгоднее купить готовое тиражное решение. Это может быть анализ продаж, подсистема логистики, там маршруты, адреса, курьерское приложение, да что угодно. Вот здесь описаны правила на возможность получить значок «Совместимо с 1С». Часто готовые решения предлагаются на базе отличных от 1С платформ. В правилах о таких решениях сказано немного:
К сертификации принимаются следующие группы программных продуктов:
...
8. программы, поддерживающие обмен данных с 1С: Предприятием на уровне файлов;
9. программы, имеющие другие способы взаимодействия с 1С: Предприятием (рассматривается индивидуально).

Общие требования

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

Требования к продуктам, интегрированным на основе обмена файлами.

Программные продукты, интегрированные с системой “1С: Предприятие” на базе обмена файлами (загрузки / выгрузки) должны со стороны 1С: Предприятия использовать штатные средства 1С: Предприятия, предназначенные для работы с файлами формата TXT и DBF.

И всё. Разработчик решения получает значок. Ваш заказчик читает материалы стороннего продукта, видит что есть интеграция с 1С, покупает, а потом начинается «внедрение». Не редко за это нужно доплатить. Некоторые продукты содержат действительно простой способ интеграции, например внешнюю обработку или расширение конфигурации.

Есть же EnterpriseData? Это как раз тот инструмент, который и нужно применять для сопряжения с не 1С-ными решениями. Там уже учтено всё, что нужно. Если не учтено — как раз добавится в новую версию формата. Не надо никаких обработок для сопряжения с API, и тем более доработок конфигурации.

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

А в другом решении чуваки решили не заморачиваться и просто выдают ошибку при попытке передать отредактированные данные.

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

Но самое неприятное, когда лейбла «Совместимо с 1С» нет. А написано что-то вроде:
Есть типовая интеграция для 1С:
— Управление торговлей 10.3 и 11.3
— Комплексная автоматизация 2.0
— Управление производственным предприятием
— ERP

Я однажды получил такой ответ от техподдержки подобной компании, когда их обработка стала регулярно выдавать ошибку:
Компания X предоставляет типовую обработку для обмена данными между 1С: УТ и X на бесплатной основе…

Вот и весь разговор. Построже нужно с такими ребятами. Гайки бы подзакрутить. Интересно узнать у юристов — могут ли у себя на сайте кто попало писать, что у него есть «интеграция с 1С»?

Управляемые формы


Насколько классный конструктор по созданию управляемых форм! Есть недочёты (например штатную строку поиска нельзя использовать для всех табличек, или при отображении бывает всякое), но в целом создавать формочки очень удобно. Разгул творчества максимально ограничен. Разработчик защищён от ошибок проектирования интерфейса (можно только сделать слишком перегруженную форму). Они у разных разработчиков получаются одинаковые. Формочки получаются красивые. За это хочется сказать спасибо всем, кто это придумал. Ребята – это классно, так и должно быть.

Возможность это всё опубликовать и открывать в браузере – открывает широкие возможности и вообще, просто здорово. Есть некоторые недочёты, но со временем они уйдут.



То, что касается кода – так уж получилось, что архитектура управляемых форм замедлила разработку. У меня есть кое-какая статистика, в зависимости от разработчика и от назначения формы, если не учитывать простые, где нужно просто реквизиты на форму накидать – то замедление составляет где-то в 2-4 раза. Это касается только самих форм + асинхронность. Но с этим видимо ничего не поделаешь.

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

Из основного вроде бы всё


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

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


  1. vis_inet
    11.01.2018 12:47

    Поправьте «пачичку»


    1. 1div0 Автор
      11.01.2018 13:06

      Поправил.


  1. anderston
    11.01.2018 12:56

    Хаб «1С-Битрикс», по-моему, лишний для данной статьи.


    1. 1div0 Автор
      11.01.2018 13:07

      Убрал.


      1. anderston
        11.01.2018 13:09
        +1

        есть хаб «ERP-системы». Мне кажется, имеет смысл добавить его.


        1. 1div0 Автор
          11.01.2018 13:14

          Хм… а и верно


          1. Apatic
            12.01.2018 17:35

            С одной стороны да, с другой стороны 1С — это, в общем случае, совсем не ERP


  1. Neikist
    11.01.2018 12:59
    +1

    Тогда так. Вот было бы здорово, если бы функция «ПланыОбмена.ВыбратьИзменения» принимала максимальный размер выбираемой пачки. Не сразу всё, что там накопилось, а например пачичку в 100 штук. На следующей итерации – ещё 100 штук. И так далее. Она и отрабатывать будет быстрее, если изменений много образовалось. И блокировать будет недолго.

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


    1. 1div0 Автор
      11.01.2018 13:07

      Можно. Делаю так же.


    1. pfihr
      11.01.2018 20:20

      а запрос по изменениям с "первые н" не получается?


      1. vis_inet
        11.01.2018 20:28

        А как потом выбрать с N+1?


        1. erwins22
          11.01.2018 20:31

          Снять с регистрации.


          1. vis_inet
            11.01.2018 20:40

            Снять с регистрации
            — возможна проблема, если выгрузка прервётся, а вся регистрация уже снята…


            1. erwins22
              11.01.2018 20:45

              Снятие надо делать после выгрузки файла.


              1. vis_inet
                11.01.2018 20:52

                Да, поэтому вариант

                а запрос по изменениям с «первые н»
                не подходит


                1. erwins22
                  11.01.2018 21:00

                  Почему?
                  Я выгружаю в ТЗ «первые н».
                  Выгружаю это все в файл.
                  После закрытия прохожу и удалитьрегистрациюизменений.


                  1. vis_inet
                    11.01.2018 21:07

                    При таком подходе встаёт вопрос — будет ли корректно воспринята такая частичная загрузка в целевую систему


                  1. Neikist
                    11.01.2018 21:12

                    Ну ок, выгрузили в файл (впрочем с мобилкой файлы использовать очень странно, логично когда обмен напрямую через http), а файл кто то повредил или удалил. И что делать с потерянными данными?


                    1. vis_inet
                      11.01.2018 21:15

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


                      1. Neikist
                        11.01.2018 21:19

                        Вот мы и вернулись к тому что все равно где то нужно фиксировать какие данные мы выгрузили и как то получать информацию что загрузка прошла успешно. И тут можно прикрутить что то свое, но лучше для упрощения все же платформенные методы использовать.


        1. pfihr
          11.01.2018 20:34

          удалитьрегистрациюизменений по обработанным в предыдущей пачке


          1. Neikist
            11.01.2018 21:14

            Для этого нужно получить подтверждение от мобилки что предыдущая пачка загружена, к тому же это может произойти не скоро, нужно хранить где то (либо ключи с мобилки возвращать) какие данные с регистрации снять. Да еще и убедиться что с прошлой выгрузки эти данные снова не менялись… В общем механизм тех же планов обмена с нумерацией сообщений и т.п. переизобретать. Зачем?


            1. pfihr
              11.01.2018 21:58

              а не надо лениться, риб избаловал


              1. vis_inet
                11.01.2018 22:05

                А разве он чем-то глобально плох?


  1. alexey-lustin
    11.01.2018 14:01

    Читаю и удивляюсь очередной раз


    Про тормоза


    • на доске 5 одинаковых карточек — ага походу канбан, так как был бы SCRUM — владелец продукта обязан бы взять PBI и FEATURE в работу на спринт, связав их с 5 тасками. вижу у вас в публикации TFS, значит вы знаете что такое PBI.


    • конфликт блокировок говорите — ну да, вне зависимости от языка программирования вам придется думать о блокировках и дедлоках, в пустой платформе без прикладного кода — блокировок то нету. написали прикладной код — конфликты блокировок появились… хм причина скорее всего в прикладном коде. Или опять виноваты абстрактные платформы — наверное плохой MSSQL и PostgreSQL


    • чистые решения без доработок — если система живет более 3-ёх месяцев и пользователи её используют, давно пора привыкнуть что дорабатывать придется, плагинами, патчами, расширениями ( на СиДиез, на PHP и на 1C — неважно). Чистая система бывает только в вакууме.


    • ServiceBroker как средство интеграции и хранимые процедуры — архитектурное решение из зоны 2000-2008: работать работает, но дорого и неподдерживаемо. Мне интересно как вы автотестирование будете на таком решении делать.


    • SAP — это для капитализации, а не для пользователей. Его покупают не чтобы внедрить, а чтобы капитализировать компанию.


    • ERP на PHP мы уже видели, есть даже на Python — проблемы теже и и чаще еще хуже.

    Все тормоза 1С связаны только с одной вещью — дефектами прикладного кода допускаемыми программистами. НУ и еще с неумением проектировать "нормальные" метаданные.


    Делюсь цифрой — блокировки можно разрулить за 40 чавов в первый раз, второй раз за 24, третий раз за 16, финальный раз за 8. После 4 разруливаний следующие разруливания идут всегда за 8 часов включая тестирование через ТестКлиент и накат на продуктив.


    Про обмен данными


    Кто вам сказал что модульность это лучше чем монолит. Слово лучше опасное. Модульность просто другая. Живет по другим законам и в другой концепции.


    Есть примеры компаний в которых 90+ конфигураций 1С, под каждое ЦФО — оно не лучше и не хуже, оно другое. Там много маленьких серваков 1С в горизонте, а не один большой сервер. И отдельное решение для интеграции и трансформации и это не КонвертацияДанных


    И вообще неважно будет это монолит на PHP и микросервисы на PHP, или на С# — архитектура и проблематика будет одинаковая


    Ну и вообще — не надо грузить обмены данных за квартал: снижается гранулярность до минут и секунд. А формат можно и EDI.


    Кстати порционность изменений в ПланахОбмена — это насколько я помню уже имеющаяся давно функциональность, вплоть до "одного изменения". Главное транспорт данных выбрать не файлы и FTP, а использовать штатный сервис SOAP:GetMessages и т.д.


    Про 1С совместимо


    там есть отдельный пункт — не менее 20 продаж, то есть продукт должен иметь реальных пользователей
    плюс продукт при сертификации проходит статический анализ кода
    при выборе продукта 1С Совместимо стоит смотреть на поддержку последних версий платформы и linux. ну и сам сертификат проверять надо: он же может в 1997 году выдан был.


    но на самом деле все эти маркетиновые заявления "МЫ интегрируемся с AmoCRM" — они как бы для любой технологии применительны: пока пилот не построишь не поймешь реально ли вообще это работает или нет. Mailchimp например — все указывают что умеют с ним интегрироваться, однако там же может быть 30-50 разных API объектов, и вот сколько из этих объектов задействовано неизвестно.


    Про управляемый интерфейс в браузере


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


    В порядке финала — все что вы описали — не имеет отношения к 1С как к платформе, а имеет отношения только к компетенциям людей её использующих. При переходе на C#, PHP, SAP вы поимеете теже проблемы что и сейчас.


    Повышайте компетенцию людей которые стоят с вами перед доской ;-).


    1. 1div0 Автор
      11.01.2018 14:38

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


      1. EvilBeaver
        12.01.2018 00:41

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


        1. 1div0 Автор
          12.01.2018 09:10

          Да Вы гений. Наверное проверка синиаксиса тоже не нужна.
          Вот прибегает к Вам человек, мол вот такая ошибка появляется при записи документа.
          И на что Вы собрались беглый взгляд бросать? Обработчики записи формы документа? Модуля объекта? А если и там всё "чисто"?


    1. 1div0 Автор
      11.01.2018 14:47

      не надо грузить обмены данных за квартал: снижается гранулярность до минут и секунд

      Было бы неплохо. А ещё было бы неплохо, если бы обмен работал побыстрее.


      1. Gamm
        11.01.2018 18:37

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


        1. 1div0 Автор
          12.01.2018 09:12

          Так речь шла из одной типовой в другую. Это как бы уже готовое решение. Почему пользователь должен ещё что-то решать?


          1. vis_inet
            12.01.2018 09:14

            При обмене между типовыми через XML за большой период времени объём выгружаемых данных действительно получается достаточно большой.
            Тут можно только чаще делать обмен…


          1. Gamm
            12.01.2018 10:43

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


            1. 1div0 Автор
              12.01.2018 11:34

              Так ведь типовые конфигурации используют механизмы платформы («бест практикс»).


        1. 1div0 Автор
          12.01.2018 10:11

          С обменом полный порядок. Но можно улучшить. Даже если ничего особенного не менять, можно повысить скорость обмена в n-раз. Просто разбив на n потоков.

          Попробуйте написать такой код, используя менеджер регистрации изменений. Получилось?
          Теперь покажите пожалуйста всего одну строку — где удаляется регистрация изменений и чему у Вас равен номер сообщения?


          1. Gamm
            12.01.2018 10:58

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

            Также, для высоконагруженных систем или если производительность работы объектов платформы недостаточна для нужного процесса, всегда можно спуститься до уровня базы данных и решить задачу прямой записью в СУБД — это позволяет решить все возникающие проблемы с производительностью обмена.
            Для меня, средств программного комплекса 1С-SQL, достаточно для решения любых вопросов с обменом.


            1. vis_inet
              12.01.2018 11:12

              всегда можно спуститься до уровня базы
              правда лицензионное соглашение прямо запрещает это


              1. Gamm
                12.01.2018 17:17

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


                1. vis_inet
                  12.01.2018 18:28

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


                  1. Gamm
                    12.01.2018 22:15

                    Компания софтпоинт использует решения с прямой записью в базу — также коммерческое решение давно присутствует на рынке.


                    1. vis_inet
                      13.01.2018 11:21

                      Я не спорю — технически это непросто, но возможно.
                      Просто противоречит лицензионному соглашению 1С.


                      1. FyvaOldj
                        13.01.2018 15:29

                        Нет. В России реверс инжиниринг уже купленных тобой вещей не запрещен. В отличие от США


                        1. vis_inet
                          13.01.2018 19:23

                          Т.е. вы считаете, что их лицензионное соглашение незаконно?


                          1. FyvaOldj
                            14.01.2018 10:31

                            Почему? Согласно законодательству РФ вы можете использовать то за что заплатили. Любым способом.
                            Но только то за что платили.
                            Крякать можно. Добавлять количество подключений — нельзя


            1. 1div0 Автор
              12.01.2018 11:42

              Тому номеру который требуется исходя из логики конкретного решения

              Это Вы в уме прикинули. Как нибудь, всё-таки попробуйте написать код параллельной передачи данных.
              Если хотите, можно здесь в комментах попробовать.
              Я за конструктив. Вполне может быть, что я где-то ошибаюсь. Пока нового ничего не услышал. А было бы здорово получить какое-то новое понимание того, как правильно делать.


              1. Gamm
                12.01.2018 17:11

                У меня есть реализованный обмен где выгрузка была распаралелена через выполнение фоновых заданий. Алгоритм в кратце:
                Разбиваем обмен по сущностям — xml строка по выгрузке каждого объекта метаданных формируется отдельно.
                Выборку изменений используем только для присвоения номера сообщений текущим записям в таблицах изменений.
                Выгрузку проводим по каждому объекту метаданных запуском отдельного фонового задания с указанием номера сообщений для выборки.
                Возвращенные строки XML склеиваем в результирующий файл обмена.


                1. vis_inet
                  12.01.2018 18:26

                  Какой объём файла обмена обычно получается?
                  Перечни изменений в какой момент очищаются?


                  1. Gamm
                    12.01.2018 22:19

                    Чем чаще обмен, тем меньше порции — обычно несколько КБ при ежеминутном обмене.
                    Очистка стандартная после подтверждения от источника об успешной загрузке.


                1. 1div0 Автор
                  12.01.2018 22:07

                  Хорошо работает?
                  Смотрите: вот в поток 1 выбрал 100 изменений. Им допустим был присвоен номер сообщения 51.
                  Вот поток 2 выбрал ещё 100 изменений. Им бы присвоен номер сообщения… какой? 52?
                  Ок. Допустим 52. Поток 2 закончил работу. Вызвана функция УдалитьИзменения(52), которая благополучно удалит и изменения с номером 51.
                  Поэтому я и спросил ранее про номер сообщения.


                  1. Gamm
                    12.01.2018 22:17

                    И первый и второй поток выбирают изменения для сообщения 51 — в моем случае распаралеливалась выборка данных. Удаление регистрации в данном случае никаких конфликтов не вызывало.


                    1. 1div0 Автор
                      14.01.2018 11:43

                      Так а в чём плюс такого подхода? Почти всё время передачи занимает непосредственно формирование сообщения и его чтение. Это и нужно параллелить.


                    1. 1div0 Автор
                      14.01.2018 11:57

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


                      1. vis_inet
                        14.01.2018 12:24

                        Получается, что у вас загрузка полученного файла нестандартная?


                        1. 1div0 Автор
                          14.01.2018 12:35

                          А что поделать? Загрузка процентов 65-70 времени занимает от всей передачи.
                          Но это только там, где стояла задача по скорости. В основном стараюсь классические схемы применять, строго по букве руководства, второй том.


              1. Fragster
                12.01.2018 17:43
                +1

                Я в таком случае регистрировал на фэйковые узлы через раунд робин и выгружал/загружал параллельно. А «основной» узел только для передачи конфигурации был.


                1. 1div0 Автор
                  12.01.2018 22:09

                  Вариант


    1. 1div0 Автор
      11.01.2018 14:48

      Просто поставлю две цитаты рядом:

      порционность изменений в ПланахОбмена — это насколько я помню уже имеющаяся давно функциональность

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


    1. 1div0 Автор
      11.01.2018 15:26

      все что вы описали — не имеет отношения к 1С как к платформе

      Мне кажется Вы не очень внимательно прочитали просто.


      1. laughman
        11.01.2018 17:30

        Просто он дилер 1С.
        А еще, для меня фразы типа «Все тормоза 1С связаны только с одной вещью — дефектами прикладного кода допускаемыми программистами. НУ и еще с неумением проектировать „нормальные“ метаданные.» пахнут маркетингом. 2й свежести.


        1. EvilBeaver
          12.01.2018 08:06

          Уберите из предложения буквы 1С и фраза не потеряет актуальности :)


        1. alexey-lustin
          12.01.2018 09:59

          Фу как не культурно. Лично персонально Я дилером 1С не являюсь. Своим комментарием я в очередной раз предлагаю убрать слово 1С оставив остальные тезисы критики. И все тезисы критики будут подходить для любого фреймворка и любой технологии.


    1. 1div0 Автор
      11.01.2018 16:36

      И отдельное решение для интеграции и трансформации и это не КонвертацияДанных

      Про это было бы интересно по подробнее. Что за решение?


      1. alexey-lustin
        12.01.2018 10:02

        На выбор — WSO2, IBM BlueMix, Axelot Data Integration… есть примеры использования Shutle.ESB, BizTalk, а также облачных Microsoft Flow и Zapier

        Есть даже ZatoESB интеграция для 1C

        Про RabbitMQ говорить не буду — он просто транспорт, а трансформацией не занимается.


  1. Segate
    11.01.2018 14:55

    С точки зрения блокировок: Есть системы с ~5000 одновременных пользователей(25к в целом)
    и они работают и проблем с блокировками не испытывают. но там каждый запрос, и каждая процедура проходит ревью на предмет избыточных блокировок.
    Так что я пришел к выводу, что в большинстве случаев «специалисты 1с» не особо заморачиваются и дергают данные довольно бездумно, а это порождает те самые пресловутые «Блокировки».


    1. 1div0 Автор
      11.01.2018 15:07

      В 1С запросы бывают только на чтение. Запросы на запись изолированы от разработчика.

      каждый запрос, и каждая процедура проходит ревью

      «специалисты 1с» не особо заморачиваются и дергают данные довольно бездумно

      Я бы так не сказал. Давайте напишем:
      ДокументОбъект.Записать();

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

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


      1. alexey-lustin
        11.01.2018 15:27

        Автоматическая проверка конфигураций он называется — если из бесплатных.


        1. 1div0 Автор
          11.01.2018 16:10

          нужен, простой и доступный, для поиска и анализа блокировок


          1. ek159ea
            11.01.2018 16:38

            Как Вы себе представляете работу такого инструмента, как в Вашем скрине?
            В простом случае, например, у меня есть блокировки, а у Вас на тех же данных нет, что даст такой инструмент? Что он покажет?


            1. 1div0 Автор
              11.01.2018 16:49

              Есть вот замер производительности. Он пишет происходящее в отлаживаемом сеансе. Просто нажал, поработал, отпустил, изучаешь результат.

              Есть технологический журнал — он пишет то, что происходит во всех сеансах.
              Собственно, ничего нового я не ожидаю. Должно показать, что Вы или кто-то ещё ожидали там-то на блокировке столько-то, в другом месте — столько то. Может быть также — нажал, подождал, отпустил, изучаешь. Тыкаешь в строку и видишь причину (или список причин), из-за которого происходило удержание на блокировке.
              Что-то такое.


              1. ek159ea
                11.01.2018 16:57

                ИМХО, анализ блокировок не является функцией среды разработки.
                Скорее относится к СУБД и сильно от этого зависит.


                1. 1div0 Автор
                  11.01.2018 19:17

                  Вы большой молодец. Еслиб мог поделиться шоколадкой, угостил бы. Поставлю плюсик тогда.
                  Вот вам инструмент БД показал, что запрос, что-нибудь вроде "INSERT INTO ##T436(_Fld0298, _Fld0292)… и так далее блокируется такого же вида запросом. Я знаю MS SQL вам даже визуальную схему нарисует. И чего дальше?
                  А управляемые блокировки?
                  Да и почему не иметь всё в одном месте? Особенно если взаимодействие с кодом не помешает.


                1. Dementor
                  13.01.2018 22:13

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


                  1. vis_inet
                    14.01.2018 09:40

                    Да, так, безусловно, было бы гораздо удобнее настраивать отборы для ТЖ.


          1. VSOP_juDGe
            11.01.2018 17:49

            А от Гилева сервис чем плох?


            1. 1div0 Автор
              11.01.2018 18:54

              Этот сервис хорош. Поэтому и привёл его как пример стороннего решения на эту тему.
              Но в нём результаты не сразу отображаются. Иногда на следующий день только можно что-то увидеть. Плюс установка двух конфигураций. Плюс их настройка.
              Хотелось бы типа такого же прямо в среде разработки. И чтоб взаимодействовало с кодом в модулях и с объектами.
              Если даже стажёр начнёт находить источники блокировок, я уверен, выиграют от этого многие.


              1. VSOP_juDGe
                12.01.2018 09:40

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


                1. erwins22
                  12.01.2018 09:52
                  +1

                  Тут затраты для 1с не велики. А профит может быть существенен.


                  1. 1div0 Автор
                    12.01.2018 09:58

                    Ваш комментарий весьма кстати. Меня уже почти убедили, что цвета формочек важнее.


          1. alexey-lustin
            12.01.2018 10:10

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

            * для начала включается статический анализатор чтобы исключить гарантированные ошибки в части работы с объектными блокировками и избыточным чтением в запросах
            * затем включается любой из существующих эмуляторов многопользовательской нагрузки: мы используем Vanessa Behavior для этого, чтобы еще и тестами покрыть

            в итоге точка контроля подобного будет лежать в стороне
            * APDEX — там в БСП встроен штатный отчет
            * журнал регистрации — даже на двух пользователях вы сразу словите Exception
            * ну и СУБД конечно — для MSSQL BrentOzar сразу покажет где вы ошибаетесь в коде

            То есть — суть в том, что инструмент анализа блокировок в ПРОДУКТИВЕ, это инструмент пост-реакции на аварии, а тот подход который пропагандируем мы — в продуктив должна уходить проверенная система, и в продуктиве ничего анализировать не надо: только мониторинг и алертинг.


            1. 1div0 Автор
              12.01.2018 11:55

              Спасибо за конкретику. Про инструменты «Vanessa Behavior» и «BrentOzar» не знал.
              За ваш (кто это мы?) подход голосую двумя руками.


            1. dmagin
              13.01.2018 01:16

              Алексей, судя по количеству и длине твоих комментариев тебе (вам?) пора запланировать цикл статей на хабре о зарекомендовавших себя практиках применительно к разработкам на 1С. Давай делитесь тем, что накопили ).
              А на автора зря вы тут набросились. Одна из немногих статей по 1С-ной тематике на хорошем языке от адекватного автора. Я прочитал с интересом.


      1. Segate
        12.01.2018 15:41

        ДокументОбъект.Записать()
        как минимум тянет за собой все процедуры и подписки которые срабатывают при записи этого документа… и если там все нормально, и написано не криво, то все будет проходить довольно быстро просто и даже таблица документов не будет блокироваться исключительно… так что тут никаких проблем не будет, блокировкам взяться неоткуда.(еще раз, это при условии что при записи документа ничего не происходит.)


        1. pfihr
          12.01.2018 21:46
          +1

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


        1. 1div0 Автор
          12.01.2018 22:31

          )) если…
          Если заниматься разработкой нофой конфы с нуля, есть такая роскошная возможность, как проведение ревью с самого начала. Я так и понял, что Вы под таким углом зрения проблему рассматриваете, когда написали про "окинуть взглядом".
          А представьте, что конфа уже написана и такая, какая есть.
          Нет автотестов. Нет никакой уверенности, что там всё хорошо.
          Вот на такой случай было бы неплохо иметь простенький инструмент по поиску источника блокировок, если они таки случились.
          А можно и без, обходились без него всё это время, и дальше обойдёмся.


    1. pfihr
      11.01.2018 20:28

      попробуйте создать и записать большой набор записи в регистр сведений без вообще каких либо индексов и посмотрите в скуль аналайзер. и для хохмы замерьте время исполнения пустого цикла от 1 до 100000000. дефекты внутри платформы — есть, и каким бы ни был семи пядей во лбу 1сник, ничего он с этим не сделает. а на 5000 пользователей системы разбиты на базы и с помощью сторонних технологий.


      1. vis_inet
        11.01.2018 20:37

        для хохмы замерьте время исполнения пустого цикла от 1 до 100000000
        — а в чём смысл этого?
        1С это не универсальный ЯП, а предметно-ориентированный.


        1. pfihr
          11.01.2018 22:05

          а смысл, что в даже самых примитивных интерпретаторах примитивных языков типа бейсика это было поправлено еще в 90-е, но программистам ядра 1с этот опыт не пригодился


          1. EvilBeaver
            12.01.2018 00:35

            Потому что в 1С кода, который бы вращал циклы от 1 до 1000000000, практически не бывает в реальной жизни. А жечь человеко-часы, чтобы ускорить синтетические тесты… Ну я бы, например, не стал, будь я 1С.


            1. vis_inet
              12.01.2018 06:09

              Для прикола засёк — у меня такой цикл выполнялся 22 сек.
              Но, действительно, в практике я ни разу не встречал потребности крутить такие циклы.
              Как я уже писал, 1С это не универсальный ЯП, а предметно-ориентированный.
              Работа ведётся большей частью с бизнес-объектами.


              1. pfihr
                12.01.2018 21:35

                Да любая примитивная расчетная задача от этого страдает. Пустой цикл — это лишь один пример. Все конструкции языка такие. А все потому, что внутри используются COM-объекты. А на клиенте еще и 32 бита! Потому и клиент до сих пор 32-битный (Карл!). Тут половина комментариев на тему, что «мы особенные — предметный язык». Прекрасно распиаренная идея самой фирмой 1С в головы программеров и внедренцев, лишь бы не исправлять ядро. И никому не пришло в голову, что у 1сников отбили желание и возможность кодить на языке именно потому, что интерпретатор неэффективен, и кроме как запросами (на чтение) к СУБД дело не исправить. Но это не заслуга «предметного» языка, это беда интерпретатора. Python, Javascript и Lua — такие же предметно-ориентированные скриптовые языки (python реализует это, а js и lua непосредственно работают со своими объектами, как и 1С).


                1. erwins22
                  12.01.2018 23:29

                  Клиент давно 64 битный.
                  А сом объекты давно не используются. В качестве доказательства клиент под линукс.


                1. vis_inet
                  13.01.2018 11:17

                  Многолетний опыт показывает, что куда более существенное время тратится именно на работу с данными.
                  Скорость выполнения именно операторов языка при этом роли не играет.


            1. Neikist
              12.01.2018 07:37

              Был как то случай, из ком объекта массив байтов получали в кривой кодировке, так что в цикле их крутили, немного меняли значения. Бывало цикл со сложением внутри выполнялся несколько часов на 20-30кк операций.


              1. vis_inet
                12.01.2018 07:43

                Точного примера кода не осталось?


                1. Neikist
                  12.01.2018 08:05

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


                  1. vis_inet
                    12.01.2018 08:09

                    Ком-объект сам по себе медленный, возможно, это из-за него было


              1. FyvaOldj
                12.01.2018 10:44

                Был как то случай, из ком объекта массив байтов получали в кривой кодировке, так что в цикле их крутили, немного меняли значения. Бывало цикл со сложением внутри выполнялся несколько часов на 20-30кк операций.

                Я бы просто написал бы мааааааленькую утилитку конвертации на C/Go/Rust/Python/по вкусу. А будучи скомпилированной с безконсольными ключиками она даже на экране не мелькает.


                Или 1С не умеет вызывать внешние процессы?


                1. vis_inet
                  12.01.2018 10:46

                  Умеет, конечно


                1. Neikist
                  12.01.2018 12:34

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


      1. znsoft
        12.01.2018 03:43

        А вы запишите этот цикл от 1 до 100000000 в одну строчку.
        ПС. В режиме отладки платформа 1С выполняет много всего на каждый перевод строки.


      1. alexey-lustin
        12.01.2018 10:22

        Дефектами прикладного кода допускаемыми программистами. НУ и еще с неумением проектировать «нормальные» метаданные.


        Ну вот зачем вы так — цикл от 1 до 100000000: если я покажу такой цикл скажем питонисту, он на меня посмотрим как на дурака и спросит: «А зачем ты делаешь такие переборы, почему не через базу данных? Почему не многопоточно ?» И что мы ему ответим — я 1С-ник, я по другому не умею и ли что-то про синтетический тест.

        РегистрСведений же — тупой прикладной объект для хранения сведений, причем реализованный достаточно грамотно для доступа к сведениям согласно концепции регистров правил (Ключ-Детерминант) описанный в книге Фаулера «Архитектура корпоративных приложений».

        НО: Я знаю что бывают дефекты платформы — они были, есть сейчас и будут я думаю. Один из фееречиных я запомнил на всю жизнь — когда объект АнализДанных математически неправильно считал дисперсию, вот это была подстава.


  1. domix32
    11.01.2018 15:31

    Вот куда б блокчейна капнуть


    1. vis_inet
      11.01.2018 15:33

      Куда именно???


      1. domix32
        12.01.2018 02:07

        Да хоть те же неблокирующие выгрузки. Теоретически этим же можно решать проблемы передачи объектов в разные конфигурации. Но это сильно абстрактные прикидки.


        1. vis_inet
          12.01.2018 06:10

          Можно поподробнее пояснить, чем именно это могло бы помочь?


          1. domix32
            12.01.2018 20:52

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


        1. alexey-lustin
          12.01.2018 10:27

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

          Для концептов использовались blockstack.org


          1. domix32
            12.01.2018 20:25

            Ну, вот, да, так что остается дальше ждать полетов на Марс


  1. mgis
    11.01.2018 17:40

    Из собственного опыта.
    1С хороша тогда, когда используются проверенные временем типовые конфы вроде УТ10, БП2, БП3, УПП1.3 и т.д. То есть когда, надо вести бизнес и не париться — все хорошо. Но настает момент когда компания «вырастает». И тут начинается самое интересное.
    Если стоит задача идти в ногу со временем, BigData, ИИ, HighLoad и прочее, то тут начинаются проблемы, и проблемы настолько серьезные, что проше написать с нуля на привычном для вас языке (Java, Python, C#).
    Возможно у меня руки кривые, но всегда когда дело имел с переработанными конфигурациями, то все «хотелки» заказчика, только запутывали «паутину» все хуже. И латание одной дыры непременно создавала одну, а то и две новые.
    В таком случае приходится держать штат собственных квалифированных программистов, а что если их нет?
    В общем не так все просто с 1с, хотя и стоит признать, что ситуация налаживается. Платформа 8.3 так это вообще глоток свежего воздуха, для любителя «нативных» интеграций.


    1. EvilBeaver
      12.01.2018 00:34

      Ну это вообще характерно для кровавого энтырпрайза. Тут не в 1С дело, а вообще, специфика жизни.


    1. FyvaOldj
      12.01.2018 10:51

      1С хороша тогда, когда используются проверенные временем типовые конфы вроде УТ10, БП2, БП3, УПП1.3 и т.д. То есть когда, надо вести бизнес и не париться — все хорошо. Но настает момент когда компания «вырастает». И тут начинается самое интересное.

      Это проблема квалификации. Только и всего.
      Обновлятор типовой конфигурации на следующую типовую вообще не программист. Это и бухгалтера умеют делать.


      Если стоит задача идти в ногу со временем, BigData, ИИ, HighLoad и прочее, то тут начинаются проблемы, и проблемы настолько серьезные, что проше написать с нуля на привычном для вас языке (Java, Python, C#)

      А при чем здесь вообще язык?
      BigData — это проблема не в языке а в архитектуре.


      И, минуточку, как это так у вас в мгновение ока случился переход с типовой конфы на БигДату, что вы не успели даже понять что тут нужны совсем другой специализации ИТшники?


      1. mgis
        12.01.2018 13:55
        +1

        Это проблема квалификации. Только и всего.
        Обновлятор типовой конфигурации на следующую типовую вообще не программист. Это и бухгалтера умеют делать.

        Собственно я о том же.

        BigData — это проблема не в языке а в архитектуре.

        А она у 1с идеальная?

        И, минуточку, как это так у вас в мгновение ока случился переход с типовой конфы на БигДату, что вы не успели даже понять что тут нужны совсем другой специализации ИТшники?


        Я разве говорил, что у нас случился переход с типовой конфы на БигДату? Хотя думаю, таких компаний хватает.

        Это проблема квалификации. Только и всего

        Кстати это какой квалификацией надо обладать чтоб правильно готовить 1с?
        Я на пальцах могу пересчитать из своего окружения ребят, которые правильно «готовят» 1с. Не бегут править типовые модули, и добавлять свои реквизиты в регистры, а используют это в крайних случаях, а в большинстве своем используют либо внешние обработки, расширения, либо подстраиваются под типовой бизнес процесс.
        Это я к тому, что если все сводится к наличию хороших прогеров, то все тоже самое сделать практически на любом стеке, благо хороших программистов c#, python, java не развелось, только еще не надо будет платить за 1с. В общем баян…


  1. Fragster
    11.01.2018 17:50

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

    дальше правильный путь — Центр поддержки крупных внедрений. Да и вообще без него видел внедрения на 700-1000 онлайн пользователей. А то, что написано в варианте 1 и 2 — дорого и без гарантированного результата. Да еще и с резким удорожанием поддержки.
    А без ЦПКВ можно часто сделать базу распределенной (причем на платформе 1с это сделано очень хорошо) и получить вместо одной большой базы на одного килопользователя 4 базы по 250 пользователей на разных серверах с актуальностью данных от «фуллонлайн» для части данных до 10-15 минут для данных, к которым нет таких требований. Делить можно как функционально (склад отдельно, финансы отдельно), так и территориально (питер отдельно, москва отдельно).


  1. 1div0 Автор
    11.01.2018 19:06

    Плюсую. Единственно, по двум вариантам я имел ввиду, что это пример свершившегося выбора в разных компаниях. Насчёт попытки применения ЦПКВ в них ничего не знаю. Может быть и не пытались.


  1. erwins22
    11.01.2018 20:03

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

    Но в целом 1с — Хороша. Без кавычек. Хотелобы конечно создавать массив вот так

    a=[1,2,5,4]
    

    а не так
    а= новый Массив;
    а.Добавить(1);
    а.Добавить(2);
    а.Добавить(5);
    а.Добавить(4);
    


    Хотелось бы в запросах делать накопительные поля
    Выбрать Т.Измерение, НакопительнаяСумма(Т.ресурс)
    из Справочник как Т
    Упорядочить по Т.Измерение
    

    И
    Выбрать Т.Измерение, НакопительнаяСумма(1) как ТутПорядокНомеровПоВозростанию
    из Справочник как Т
    Упорядочить по Т.Измерение
    


    1. vis_inet
      11.01.2018 20:13

      Асинхронность в 1с это боль и кошмар
      — совершенно верно.
      Мне кажется не по верному пути 1С пошла


      1. EgorZanuda
        12.01.2018 11:58

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


        1. vis_inet
          12.01.2018 12:26

          А разве я путаю?
          Поясните вашу мысль.


  1. EvilBeaver
    11.01.2018 22:47

    то проше написать с нуля на привычном для вас языке (Java, Python, C#)

    О да, вы серьезно? Прямо вот все-все взять и переписать? И UI и Reporting и ORM… Ну т.е. надо конечно взять все готовое из опенсорса, а потом долго все это сопрягать. И постойте… бизнес-логику с 1С тоже надо портировать. И все сущности базы, и алгоритмы… Это точно «проще», чем отпрофилировать тормозные запросы, починить и все же оставить 1С?


  1. dgr
    11.01.2018 23:07

    Все кто надо уже в комментах, накину еще своего мнения:
    — тормозной интерпретатор, ну правда и не говорите что это не важно. Кроме прочитать — вставить в 1С еще куча вычислений, переборов и прочего и порой эти тормоза очень даже заметны;
    — отсутствие кастомных индексовю Нет я конечно могу поставить «индексировать» на атрибут, но а если мне надо сразу по двум полям или сделать inсlude? Легко вводится дополнительным метаданным к документам и справочникам;
    — ну и стабильности


  1. Dessloch
    12.01.2018 06:33

    Некоторое время назад администрировал 7.7, жутко тормозила. В целях сомообразования установил ODBC+Firebird и нарисовал простейший интерфейс для работы с БД sql-запросами. После этого всё стало понятно.


    1. vis_inet
      12.01.2018 06:38

      Ну так, поэтому 1С и развивается дальше: 8.1, 8.2, 8.3 и т.д.


    1. FyvaOldj
      12.01.2018 11:10

      Разумеется любой программист средней руки может написать УЗКОспециализированное решение которое даже летать будет.


      Но так делают не часто. Наверное это просто не выгодно по сравнению с типовыми универсальными пусть и не быстрыми решениями от 1С?


      Иначе бы балом правила не 1С а множество программистов с очень шустрыми наколенными УЗКОспециализированными решениями.


  1. Maxtremum
    12.01.2018 09:59

    ВыдИрается туда же )


    1. 1div0 Автор
      12.01.2018 09:59

      Спасибо. Поправил.


  1. arperam
    12.01.2018 10:00

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


    1. Fragster
      12.01.2018 11:01

      А лепить свои кнопки вместо платформенных, если хотим задать вопрос перед записью, это нормально?


    1. bonv
      13.01.2018 00:43

      Асинхронность тоже хороша, если её осознать, а не пытаться использовать со старой меркой...
      Это вы про ее наличие вообще или про реализацию в 1С в частности?


      1. erwins22
        13.01.2018 10:48

        В 1с она не засахарена.
        Это ее минус.


  1. nclockworker
    12.01.2018 10:00

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

    Переписывать все нужно с нуля, причем с открытым исходным кодом и без всякого русского языка в синтаксисе, а на общедоступных скриптовых языках. Это я говорю как программист 1С с 5 летним стажем знающим ассемблер, С++, C#, JavaScript.


    1. FyvaOldj
      12.01.2018 10:58

      Переписывать все нужно с нуля, причем с открытым исходным кодом и без всякого русского языка в синтаксисе, а на общедоступных скриптовых языках. Это я говорю как программист 1С с 5 летним стажем знающим ассемблер, С++, C#, JavaScript.

      То есть вы не знаете что у языка 1С есть английский синтаксис уже больше 20 лет?


    1. bonv
      13.01.2018 00:45

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


      1. FyvaOldj
        13.01.2018 15:43

        И главное — почему уже не сделано.
        Сделаны то только примитивные вещи для склада.

        За бухгалтерию опенсоурсному сообществу взяться слабо.
        А бухгалтерам сесть на опенсоурс для сдачи отчетов — стремно. Штраф за неправильные или не вовремя сданные налоги…

        Но это не мешает очередному шапкозакидателю.
        nclockworker покажите нам пример. Сделайте уже.
        Это же так просто…


    1. Dementor
      14.01.2018 02:48

      Переписывать все нужно с нуля, причем с открытым исходным кодом и без всякого русского языка в синтаксисе, а на общедоступных скриптовых языках. Это я говорю как программист 1С с 5 летним стажем знающим ассемблер, С++, C#, JavaScript.

      Судя по качеству комментариев, то тут все со значительным 1С-стажем и знанием линейки «ассемблер, С++, C#, JavaScript», но только вы хотите избавится от платформы и перейти на что-то другое. Так в чем же дело, что вас останавливает? Ваш выбор Odoo (бывшая OpenERP), которая и опенсурс, и на популярном питончике, и на котором уже много бухгалтерских и прочих конфигураций создано — все как вы и хотели. Их типовые решения даже на русский язык локализированы, но никто не мешает вам писать «с нуля» и продавать свою поделку.

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


  1. Rar_xxx
    12.01.2018 10:00

    Очередная бесполезная статья на хабре… Мне кажется перед тем как критиковать, необходимо знать что ты собрался критиковать;) Пройдите курс специалиста 1С, научитесь основам программирования в 1С, пройдите курс конвертации данных получите ответы на обмен между базами 1С. Пройдите курс эксперта 1С, получите ответы на причины появления блокировок и как с ними бороться, кстати в версии 8.3 было много сделано для устранения блокировок. Посмотрите на рейтинг экспертов и какие проекты они вели Про SAP JDE и т.д. как сказал недавно один мой товарищ работающий руководителем отдела логистики одной крупной компании SAP это те же лютики только в профиль. Важно не какая система выбрана, важна ровность рук ее внедренцев, щедрость заказчика внедрения и хорошее знание системы которую они внедряют и поддерживают! лично нахожусь рядом с системой JDE… скажу так фин. директор компании и еще н-ое количество менеджеров сотрудников склада и т.д. были бы рады поменять JDE на 1С, только это стоит денег…


    1. 1div0 Автор
      12.01.2018 10:01

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


      1. FyvaOldj
        12.01.2018 11:03

        Я тоже согласен с вашим оппонентом: считаю что грабли как правило находятся в безграмотности конкретного внедренца/админа/программиста 1С там где эксплуатируется ПО 1С.


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


      1. Rar_xxx
        12.01.2018 11:24

        Ок вот вам полезный комментарий: Вместо того чтобы тратить свое ценное время на написание подобных статей, разберитесь с блокировками. Для этого настройте ТЖ, научитесь использовать регулярные выражения perl и парсите ТЖ. Сервис Гилева построен именно на парсинге ТЖ именно поэтому IT отдел крупных компаний не очень заинтересован его использовать, а именно налево сливать какую то инфу. Научитесь использовать SQL profiler, научитесь использовать APDEX, настройте сбор логов Perfomance monitor, пройдите курс оптимизации запросов, научитесь использовать трассировку запросов и т.д… еще много чего. Вот после всего этого прочитайте свою статью и статью на которую вы сослались вначале.


        1. 1div0 Автор
          12.01.2018 12:05

          Спасибо, научился. Я то про другое хочу донести — Вам не кажется, что это должно быть немного проще?


          1. FyvaOldj
            14.01.2018 10:53
            -1

            А оно и есть проще.

            Большинству инсталляции 1С и программист то вовсе не нужен — типовое обновление на типовую конфигурацию 1С может и бухгалтер накатить сам.

            Ппри этом есть и другие, более навороченные инсталляции.
            Именно они и нуждаются в присмотре КВАЛИФИЦИРОВАННЫХ спецов.

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

            Квалифицированному специалисту платят хорошо за то что он решает проблемы.

            Если же вы ожидаете что фирма 1С обязана сделат волшебную кнопку для программистов «решить все проблемы» — то возникает вопрос: а за что вам как профессионалу платить будут? Эту волшебную кнопку бухгалтера и сами нажать смогут.

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


            1. 1div0 Автор
              14.01.2018 12:49

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


        1. 1div0 Автор
          12.01.2018 12:07

          Вот пример полезного комментария:
          habrahabr.ru/post/346324/#comment_10611770


  1. krovlads
    12.01.2018 12:08

    Ещё вот эту штуку забыли image


    1. vis_inet
      12.01.2018 12:28

      А что именно?


      1. krovlads
        12.01.2018 12:32

        Вы видите в выпадающем списке с именами процедур и функций 3 процедуры с одинаковым началом названия «РаспределитьКорректировкуП...» так вот это поле не растягивается.
        На скриншоте пример с 3мя процедурами, но есть типовые общие модули где таких процедур 20 и работа превращается в ад.
        Что собственно мешало разработчикам сделать этот список растягивающимся?


        1. vis_inet
          12.01.2018 12:36

          Думаю, что тоже приоритеты.
          Трудности работы разработчиков не приносит дохода 1С, в отличие от добавления «котиков» в Бухгалтерию 3.0, к примеру )


          1. FyvaOldj
            12.01.2018 17:56

            Котики тоже не приносят денег.

            Приносят деньги постоянная адаптация под изменения в законодательстве. И только. За это заказчики готовы платить регулярно фирме 1С регулярно.

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

            И все


            1. bonv
              13.01.2018 01:26

              Котики тоже не приносят денег.
              Ну почему же. Можно же начать продавать футболочки там всякие и т.п.)


              1. FyvaOldj
                14.01.2018 12:33

                Ваш совет запоздал лет на 15.
                Подобные ништяки со своей символикой 1С уже очень давно раздает.
                Совершенно бесплатно.