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

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

«1С:Розница» — недорогая программа от 1С для розничной торговли, на которой работает очень большой процент розничных магазинов России. Стоит она 4.000₽, если дорабатывать нельзя и 17.600₽ с возможностью доработки.

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

Но, наверное, конфигурации 1С пишут студенты, потому что в этой простой задаче «наломали дров».

Проблема оказалась в том, что для управления очередью 1С решила использовать систему взаимодействия, т.е. обмен онлайн-сообщениями с сервисом «1С:Диалог».

Причем, механизм работы без очереди сообщений был оставлен:

Но включить его можно только вмешавшись в код простеньким патчем модуля РаспределеннаяФискализация:

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

Интересно, а какой сценарий пробития чеков планировался для точек, где нет онлайн? Там вообще «1С:Розница» не работает?

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

Когда ресурсы 1С начали подвергаться DDos-атакам, система взаимодействия «легла», а вместе с ней легла и Розница.

На скриншоте видно, что проблемы в пробитии наблюдаются именно когда система взаимодействия (Обсуждения) не доступна:

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

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

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


  1. IvanSTV
    10.06.2024 11:39
    +3

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


  1. makapohmgn
    10.06.2024 11:39

    Честно говоря, не понимаю, как у вас после возврата код выполняется


    1. fixin Автор
      10.06.2024 11:39

      а он и не выполняется.


  1. asatost
    10.06.2024 11:39

    Я, как программист 1С, постоянно работаю с этой программой

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

    А ведь за каждым архитектурным решением стоит методист

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

    чего стоит такой онлайн пользователю

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

    И, конечно же, никаких извинений перед пользователями 1С не понесла.

    А должна была? Где Вы видели ПО, поставляемое не по принципу AS IS?


    1. DvoiNic
      10.06.2024 11:39

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

      Смотришь на их код, и вспоминаешь сказку: "было у отца три сына: старший умный был детина, средний был и так и сяк, младший вовсе был дурак...". Вот они втроем и писали типовые.


      1. fixin Автор
        10.06.2024 11:39

        кстати, меня брали в свое время на разработку УТ в 1С. Но я подумал и решил, что не буду вкладываться в создание этого монстра.
        Потому что мое внутреннее чувство перфекционизма протестовала против распыления сил на БП, УТ, УПП. Какая-то софт-мастурбация.


        1. DvoiNic
          10.06.2024 11:39

          "младшим" брали?

          Все-таки, есть в жизни элемент везения...


          1. fixin Автор
            10.06.2024 11:39

            не знаю, там не было градаций. На УПП не взяли, там сильно мотивированные нужны были.


            1. DvoiNic
              10.06.2024 11:39

              я имел ввиду тем самым "младшим сыном". Коммент это только подтверждает.

              Да, пользователям повезло - ты их спас.


              1. Areke
                10.06.2024 11:39

                Сарказм не выкуплен)


    1. fixin Автор
      10.06.2024 11:39

      Чеки из Розницы уходят и в ОФД. Там нет скрытости...
      А на сервер 1с уходят только идентификаторы сообщений, без содержания.
      Паранойю разводить не стоит.

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


      1. asatost
        10.06.2024 11:39

        А на сервер 1с уходят только идентификаторы сообщений, без содержания.
        Паранойю разводить не стоит.

        "Если у вас нет паранойи это не значит, что за вами не следят".

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

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

        "<...> при 300 процентах нет такого преступления, на которое он не рискнул бы, хотя бы под страхом виселицы <...>"


        1. fixin Автор
          10.06.2024 11:39

          в рознице нет лицензий по количеству чеков.


          1. asatost
            10.06.2024 11:39

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

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


  1. Naf2000
    10.06.2024 11:39

    По хорошему надо было переопределить метод

    РаспределеннаяФискализацияПереопределяемый.ДоступноРаспределеннаяФискализация


    1. fixin Автор
      10.06.2024 11:39

      Возможно, но мне не платят за глубокий анализ...
      Главное, чтобы работало.


    1. HADGEHOGs
      10.06.2024 11:39

      Вы слишком многого хотите от крестьянина - ремесленника.


      1. fixin Автор
        10.06.2024 11:39

        мы, христиане, люди простые.

        автоматизировать бизнес - наше ремесло!


  1. artemshag
    10.06.2024 11:39

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

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

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

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


    1. fixin Автор
      10.06.2024 11:39

      Замечательно. Но почему оно используется в 2.3.18 для обычной фискализации? И как отвязать сервер взаимодействия от фискализации настройками? Я так понимаю, только патчем, в настройках нет?


      1. artemshag
        10.06.2024 11:39

        Уточните, у вас подключена система взаимодействия и возникли проблемы с пробитием чеков в новом РМК?


        1. fixin Автор
          10.06.2024 11:39

          в старом, классическом, РМК. Это 2.3.

          да, система взаимодействия подключена, но она нам не нужна для фискализации.


    1. asatost
      10.06.2024 11:39

      И решение вполне себе красивое было - создать сообщение для объекта
      Касса с сервера и передать его на клиент для запуска фискализации.

      Почему бы не применить стандартную схему периодического опроса?

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


      1. fixin Автор
        10.06.2024 11:39

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