Еще 10 мифов о платформе 1С

08.10.25

Разработка - Механизмы платформы 1С

Что работает быстрее – http- или web-сервисы? Действительно ли снижается нагрузка на сервер при использовании веб-клиентов? Каковы преимущества использования микросервисов в 1С? Что лучше – XML или JSON? И почему перепроведение одним сотрудником документов на файловой базе, опубликованной на веб-сервере, подвешивает работу остальных пользователей? Докопаемся до сути и разберемся, что скрывает в себе платформа 1С.

Продолжим тему предыдущего доклада «15 мифов в платформе 1С» и дополним его еще десятком новых проверок и исследований платформы.


Миф №1. «""+Строка(Ссылка)» медленнее, чем «""+Ссылка»
Подтверждено


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

 


Давайте разберемся – когда вообще используется конструкция «""» (две кавычки), и для чего она может понадобиться?

Когда 1С обрабатывает сложение значений, она сначала получает первое значение и определяет его тип, а потом пытается привести к тому же типу все остальные суммируемые. То есть, когда мы используем «""+Ссылка» для второго значения происходит неявное преобразование к строке. Таким образом теоретически никакого замедления быть не должно, потому что в обоих случаях происходит преобразование к строке.

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

Мы считаем, что это происходит из-за двойного преобразования к строке и наличия в коде дополнительного оператора – на его выполнение тратится время. Небольшое, но, тем не менее.


Миф №2. Расширения работают медленнее
Подтверждено


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

 

 

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

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

 

 

В первый раз мы запустили этот код в конфигурации, во второй раз – в расширении, а в третий раз – во внешней обработке. И получили такой результат: код в расширении выполняется на 5,78% медленнее, а во внешней обработке – еще медленнее.

И этому есть реальное объяснение, которое дается на сайте ИТС в статье https://its.1c.ru/db/metod8dev/content/5940/hdoc.

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

 

 

И если запустить нагрузочный тест на 100 пользователях, для каждого из которых последовательно вызываются пустые методы модуля обработки (32000 строк) и модулей 120 ее различных форм, расширение покажет на 39% больше загрузку процессора и замедление времени выполнения на 26%. Поэтому миф считается подтвержденным.

Фирма «1С» исходя из этого дает следующую рекомендацию:

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


Миф №3. Использование http-сервисов снижает нагрузку на сервер
Подтверждено
 


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


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

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


Представьте, что ваш сервер – это кафе, в котором есть всего четыре места под кассы.

Кассиров там изначально нет.
 


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


Кассир обслужил посетителя, но не уходит, а остается на кассе в ожидании следующих гостей.
 


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

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


Если посетителей становится больше, открываются новые кассы.
 


Так происходит до тех пор, пока все кассы не будут заняты.
 


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


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


Теперь давайте посмотрим, как это можно визуально изобразить уже применительно к HTTP-сервисам. Представим, что у нас есть некий сервер, который способен одновременно обслуживать не более 4 сеансов.

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

Какое-то время пользователь ждет, а затем выполняет к сервису второй и третий запрос.

То есть, в случае, когда с сервисом работает один пользователь, загрузка сервера распределяется так: запрос-пауза-запрос-пауза-запрос и так далее.
 


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

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


Если же несколько пользователей отправляют запросы сервису одновременно, то поднимается второй сеанс, третий и так далее.

Количество сеансов в диспетчере задач начинает увеличиваться. И когда “придет пятый посетитель”, он просто не поместится. Ему придется подождать, пока один из сеансов не освободится, и тогда за тем сеансом, который закончил работу быстрее других, следом пойдет сеанс пятого пользователя.

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


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

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

Причем работу HTTP-сервисов можно ускорить еще сильнее, если:

  • увеличить ресурсы сервера;

  • сократить количество запросов;

  • уменьшить время выполнения каждого запроса
     


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

Сокращение количества запросов также дает ощутимый эффект, потому что каждый Http-запрос, помимо передачи полезных данных, тратит время на установку соединения – оно здесь помечено заштрихованными промежутками. То есть, если пользователь записывает документ и относящиеся к нему файл с картинкой отдельными запросами, это создает избыточные задержки. А если объединить эти три запроса в один, можно сэкономить время на соединении – в приведенном примере выигрыш составил две единицы времени. На первый взгляд это немного, но именно этих двух единиц не хватило предыдущему клиенту, чтобы получить результат без ожидания. Поэтому такая оптимизация тоже позволяет ускорить запросы и улучшить удобство работы пользователей.
 

Миф №4. Http-сервисы оптимальнее web-сервисов
Подтверждено с оговорками
 


Нельзя однозначно сказать, что http-сервисы лучше web-сервисов. Это равнозначно ответу на вопрос: «Что вкуснее – пельмени или торт Наполеон?» Мне нравится и то, и другое: пельмени на второе, торт – на десерт. То же самое и с сервисами.
 


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

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

Поэтому:

  • Web-сервисы нужно использовать, когда требуется поддержка стандартов и строгая структура, а также при взаимодействии 1С с другими базами на 1С.

  • А http-сервисы – при работе с внешними веб-приложениями
     


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

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

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


Если подать на вход такому методу web-сервиса два параметра, мы получим сообщение об ошибке.
 


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


На слайде приведена цитата с одного из форумов, где четко описано, в чем состоит различие между web-сервисами и http-сервисами. Обратите внимание на важное замечание в конце: «Web-сервис – это всего лишь частный случай http-сервиса, а именно - это POST-запрос строго определенного формата».
 


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

Но важно помнить: нельзя однозначно утверждать, что http-сервисы оптимальнее web-сервисов. Преимущество http-сервисов только в объеме передаваемых данных. А реальная оптимальность метода обмена информацией определяется не только скоростью, но и другими зачастую более значимыми факторами. Поэтому здесь решение остается за разработчиком: в одних случаях удобнее применять web-сервисы, в других – http-сервисы.
 

Миф №5. При передаче данных между базами 1С через http и web-сервисы обязательно преобразование данных в тип «Строка»
Не подтверждено


Считается, что при обмене данными между базами 1С через http- и web-сервисы обязательно преобразовывать все значения в строковый тип. Давайте разберемся, правда ли это необходимо.
 


Возьмем предыдущий пример и немного его модифицируем: поменяем тип возвращаемого значения для функции GetVersion со строки на ValueStorage – теперь функция GetVersion возвращает массив, в котором есть строка, число и ссылка на справочник «Номенклатура».
 


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

Конечно, чтобы ссылка была передана корректно, базы должны быть идентичными (например, копии одной и той же базы). Если в другой базе уже есть эта ссылка, мы ее получим, и нам не потребуется никакого преобразования значений. А это очень большой плюс для обменов между базами 1С – достаточно просто поднять web-сервис и передавать данные напрямую.
 


То же самое работает и в обратную сторону – через хранилище значения мы можем передать в качестве параметра структуру или массив, практически что угодно. Потому что хранилище значения можно использовать в 1С для того, чтобы не приводить данные к строковому типу. Преобразование там в любом случае происходит, но делает это уже сама платформа неявно. Поэтому миф о необходимости при передаче данных через http- и web-сервисы всегда преобразовывать их в строку считаем неподтвержденным.

Здесь, естественно, есть определенные ограничения, описанные на ИТС в статье https://its.1c.ru/db/metod8dev/content/2597/hdoc. Передавать через веб-сервис объекты с типом ХранилищеЗначения (ValueStorage) можно только для тех данных, которые сериализуются. При этом поддерживается передача объектов типа Картинка и Двоичные данные, а также таблиц значений и структур.

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

Миф №6. JSON оптимальнее XML
Подтверждено с оговорками
 


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


На первый взгляд JSON действительно выглядит привлекательнее: он проще читается и визуально воспринимается лучше, чем XML. Видно, что объем передаваемых данных в JSON меньше, поэтому веб-разработчики чаще выбирают JSON, а 1С-ники – почему-то XML. Давайте разберемся, почему.
 


Если сравнить основные параметры сообщения, упакованного в JSON и XML, первые три строки – все в пользу JSON. Но последние три – все в пользу XML.

Дело в том, что XML – это не только формат передачи данных, это еще и полноценный инструмент для их обработки. XML можно загрузить в объектную модель DOM и поработать с его элементами – добавить или переименовать узлы, найти нужные данные по идентификаторам, используя XPath и другие механизмы. Поэтому в платформе 1С XML применяется гораздо шире.
 


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


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


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



Поэтому JSON мы используем при взаимодействии с внешними приложениями, а XML – при взаимодействии с другими конфигурациями 1С.

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

Миф №7. Методы GET, POST и прочие путать нельзя
Не подтверждено с оговорками
 


Согласно стандартам, метод GET необходимо использовать только для получения информации, POST – только для добавления, DELETE – для удаления и так далее. Если перепутаешь – тебя ждет кара. Но на практике все не так однозначно.
 

Рассмотрим стандартный пример GET-запроса для поиска картинок.
 



GET-запрос состоит из адреса и набора параметров в формате «ключ=значение», упакованных в одну строку.


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

Мы с этим в свое время столкнулись. Пробовали все запросы отправлять в свою систему 1С через GET-запрос, и в какой-то момент обратили внимание, что без вложений файлов запрос выполняется без проблем, а с вложениями – ломается.
 


Это происходило потому, что у GET-запросов есть ограничение по длине – 4 килобайта. А у нас запрос получился длиной 195 килобайт.

Поэтому мы решили, что будем использовать POST-запросы везде. Тем более, что сама 1С при работе web-сервисов использует только этот метод.
 


Вот так теперь выглядит применяемые у нас методы HTTP-запросов – везде POST и все.
 


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

У GET-запросов еще и с безопасностью могут быть проблемы, потому что они иногда кэшируются браузерами. А если мы передаем через GET-запрос логин и пароль, то, даже несмотря на HTTPS, их потом оттуда можно извлечь, что является большим минусом.
 

Миф №8. Файловая база виснет при работе через веб-сервер
Не подтверждено с оговорками
 

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


На стороне сервера это выглядит вот так: одно ядро загружено на 100%, а остальные простаивают, но запросы от других пользователей не обрабатываются.
 


С точки зрения пользователя это выглядит примерно вот так.
 

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


Причина в том, что база 1С, работая через веб-сервер (Apache, IIS и др.) использует единую точку входа для всех запросов. Попадая туда, «тяжелый» запрос занимает очередь и блокирует работу остальных, пока не завершится.
 


Но это лечится. На Инфостарте есть разработка, которая так и называется – «Решение проблемы однопоточности модуля веб-сервера при работе с файловой базой».

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


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

Поэтому миф не подтвержден с оговорками – т.е. проблема есть, но она решается.
 

Миф №9. 32-битный клиент медленнее 64-битного
Подтверждено
 


Здесь мы опять использовали алгоритм, с помощью которого уже сравнивали скорость выполнения кода в расширении и конфигурации, и запустили его в 32 и 64-битном клиенте.

Получилось, что 32 бита действительно медленнее.
 


Здесь перечислены причины, почему так происходит.
 


Особенно ярко эта разница проявляется на сервере:

  • Слева – результаты тестирования на 32 битах, с файловой базой без проблем могли работать только 6 пользователей. Как только заходил седьмой, система начинала тормозить. На SQL базе максимальное количество пользователей – 30.

  • Справа – на той же версии платформы, но уже в версии приложения 64 бит, уже могло без проблем работать 170 и 1000 пользователей в файловом и SQL варианте – просто потому что поменяли версию приложения.

Поэтому данный миф считается подтвержденным.
 


Кроме этого, мы еще сравнивали расход памяти: был момент, когда 32-битное приложение больше памяти занимало, но чаще всего больше памяти отъедает все-таки 64-битное приложение. Это тоже факт.

Итого: миф подтвержден – 64-битный клиент работает быстрее, хотя и может расходовать больше ресурсов.
 

Миф №10. В платформе 1С нет модульности
Не подтверждено
 

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


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

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


У нас был клиент, у которого база весила 500 гигабайт, причем 95% занимали присоединенные файлы, 3% – документы «Электронное письмо», и только 2% – остальные данные. Мы просто вынесли документы «Электронное письмо» и присоединенные файлы в отдельную базу и настроили работу с этой базой через http-сервисы: пользователи подключаются в основную мастер-базу, а дополнительная информация получается из других баз через http-запросы.
 


На слайде – пример работы такого подхода. В этот веб-интерфейс кабинета сотрудника выведены данные из баз Документооборот и ЗУП:

  • Из Документооборота – задачи.

  • А из ЗУП мы берем информацию об остатках отпусков и все остальные данные.

У распределенной конфигурации 1С есть особенности:

  • Скорость разработки и ее удобство снижаются, причем существенно.

  • Но работать такая система будет быстро, как минимум, не медленнее. Проверяли.

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

  • Зато у такой базы существенно повышается живучесть: недоступность одного сервера не всегда влечет за собой полный отказ системы
     


Пример: вот так выглядит в нашем кабинете карточка сотрудника.

Обратите внимание: база ЗУП в данный момент временно недоступна, но пользователь все равно видит 90% другой нужной ему информации. Как только мы восстановим доступ к базе ЗУП, пользователь вернется и посмотрит то, что ему нужно.

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

Вопросы и ответы


Можно ли настроить время ожидания http-сеансов – сколько времени сеанс открывается, и через какое время он потом закроется?

На то, чтобы поднять сеанс http-сервиса, обычно тратится 2-3 секунды – это время зависит от используемой конфигурации.

А после того, как сеанс выполнил первый http-запрос, он обычно живет 20 минут – эту настройку можно поменять в конфигураторе: «Администрирование» – «Публикация на веб-сервере». Там в параметре «Время жизни соединения» по умолчанию установлено значение 1200 секунд. Это оно и есть. Вы его можете менять – как в сторону уменьшения, так и в сторону увеличения.

Параметр «Таймаут проверки» не влияет на создание http-соединения?

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

Есть ли разница с точки зрения ресурсов сервера у стандартного веб-клиента и тонкого клиента?

С точки зрения ресурсов сервера – скорее всего, нет. Это наше предположение, но скорее всего, нет.

Однако мы предполагаем, что с точки зрения нагрузки на клиентскую машину веб-клиент более ресурсоемкий, потому что весь исполняемый код нужно преобразовать в JavaScript – нарисовать интерфейс, дополнить его обработчиками, все это на JS.

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

Мы в свое время исследовали, что и веб-клиент, и тонкий клиент, подключенный к веб-серверу через http отправляют на сервер одни и те же запросы и получают одни и те же данные. Поэтому для сервера с высокой долей вероятности разницы нет, а для клиента есть и существенная.

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

Есть ли разница между тонким клиентом, подключенным к серверу через http, и тонким клиентом, который подключен к серверу напрямую?

Здесь точно есть различия, потому что у прямого подключения нет промежуточного звена в виде веб-сервера.

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

 

*************

Статья написана по итогам доклада (видео), прочитанного на конференции INFOSTART TEAMLEAD & CIO EVENT.

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Механизмы платформы 1С Программист Бесплатно (free)

Разберем 15 мифов о работе платформы «1С:Предприятие 8» – как распространенных, так и малоизвестных. Начнем с классики: «Код, написанный в одну строку, работает быстрее, чем многострочный». Так ли это на самом деле?

16.07.2025    21549    TitanLuchs    106    

136

Механизмы платформы 1С Работа с интерфейсом Программист Стажер 1С v8.3 Бесплатно (free)

Про ООП в 1С и о том, как сделать свой код более кратким и выразительным при помощи использования текучего интерфейса (fluent interface).

03.02.2025    12326    bayselonarrend    126    

64

Механизмы платформы 1С WEB-интеграция Программист 1С v8.3 Бесплатно (free)

В платформе 8.3.27 появилась возможность использовать WebSocket-клиент. Давайте посмотрим, как это все устроено и чем оно нам полезно.

14.01.2025    21062    dsdred    77    

134

Механизмы платформы 1С Программист Стажер 1С v8.3 1C:Бухгалтерия Бесплатно (free)

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

23.06.2024    21176    bayselonarrend    22    

169

Механизмы платформы 1С Программист Стажер 1С v8.3 1C:Бухгалтерия Бесплатно (free)

Пример использования «Сервисов интеграции» без подключения к Шине и без обменов.

13.03.2024    11897    dsdred    22    

84

Механизмы платформы 1С Программист Стажер 1С v8.3 Бесплатно (free)

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

24.01.2024    43410    YA_418728146    35    

75
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Cocky_Idiot 11 09.10.25 02:03 Сейчас в теме
Есть подозрение, что вы не понимаете, что измеряете
Миф №1
2980 ms vs 3040 ms - это 2%. Сколько запусков вы выполняли? Оценивали ли среднее время?
Миф №2
Вы реально меряли чистое время выполнения цикла? Или таки меряли время Обработка.<Имя Обработки>.Создать()? Понятно, что работа с массивом занимает ноль целых, хрен десятых от всего времени выполнения. Основное время уходит на чтение кода обработки из базы по сети(или на поднятие кода этой же обработки из кэша).
Ну и вдогонку: вы понимаете, как работает Массив.Добавить()?
Массив не предназначен для добавления элементов. Это крайне дорогая операция, связанная с реаллокацией памяти. Основное время уйдет на выделение памяти под новый элемент массива: машине нужно найти на куче(heap) место для нового элемента. С хорошей долей вероятности, это место не найдется "в конце" указателя текущего массива. Придется искать кусок памяти, в который новый массив влезет целиком: скопируем старый массив в новую область памяти, удалим старый массив. В итоге, вы меряете не скорость 1С, а скорость аллокатора машины. Увеличьте первый счетчик цикла до миллиона и будете мерять скорость файла подкачки. Но при чем здесь 1с?

Вы вообще не понимаете, что именно меряете. Примерно во всех случаях вы меряете сеть. Иногда - диск. И никогда - сервер 1С.
qwinter; Dem1urg; BaphoBush; Sashares; +4 Ответить
3. RustIG 1923 09.10.25 09:17 Сейчас в теме
(1)
Ну и вдогонку: вы понимаете, как работает Массив.Добавить()?
Массив не предназначен для добавления элементов. Это крайне дорогая операция, связанная с реаллокацией памяти. Основное время уйдет на выделение памяти под новый элемент массива: машине нужно найти на куче(heap) место для нового элемента. С хорошей долей вероятности, это место не найдется "в конце" указателя текущего массива. Придется искать кусок памяти, в который новый массив влезет целиком: скопируем старый массив в новую область памяти, удалим старый массив. В итоге, вы меряете не скорость 1С, а скорость аллокатора машины. Увеличьте первый счетчик цикла до миллиона и будете мерять скорость файла подкачки. Но при чем здесь 1с?


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

Если вы об этом знаете, просто подарите знания этому миру... И смените логин - может и характер изменится в лучшую сторону ...
13. Cocky_Idiot 11 09.10.25 14:18 Сейчас в теме
(3)
да и при разработке алгоритмов для бизнес-нужд компаний о таком даже не думаешь - "Как будет добавляться элемент в массив"


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

Ну или стоит уже разобраться с базовыми вещами: структурами данных, оценкой сложности алгоритмов. На Радченко computer science не заканчивается. Читайте статьи и книги, смотрите видео, растите в профессиональном плане.
15. RustIG 1923 09.10.25 15:21 Сейчас в теме
(13)
Возможно, вам просто не стоит заниматься разработкой алгоритмов для бизнес-нужд компаний?

согласен с вами, Коки_Идиот...
...давно хочу соскочить с этой темы
19. starik-2005 3198 10.10.25 17:32 Сейчас в теме
(3)
"Как будет добавляться элемент в массив"
Не напрягайся так сильно. Если у тебя 1С работает давно и там в памяти много дыр накопилось, то в момент создания объекта (и массива - тоже) система вытащит из памяти какой-то кусок и отдаст его массиву. Кусок этот вряд ли будет равен по размеру одному элементу (фактически, указателю, т.е. 64 бита = 8 байт). Обычно этот кусок куда больше. Дальше ты добавляешь элемент в массив. И если бы 1С писали студенты, то можно было бы подумать, что каждый раз динамический массив переносится на новое место. Но пацаны там не зря какао пьют, поэтому сделали все по уму и перенос массива делается далеко не каждый раз, как хотелось бы этого вашему оппоненту. Могу даже предположить, что массив может фрагментироваться, но вряд ли, т.к. это убивает основное его преимущество - вставка и доступ к элементу за О(1).
user1827801; bulpi; RustIG; +3 Ответить
18. starik-2005 3198 10.10.25 17:26 Сейчас в теме
(1)
Массив не предназначен для добавления элементов.
Вот прям серьезно? А для чего он предназначен?

А еще соответствие для этого не предназначено, т.к. оно вообще не только память каждый раз аллоцирует, а еще и хеш-функцию меняет.
Трактор; almierm; +2 Ответить
22. Cocky_Idiot 11 11.10.25 04:23 Сейчас в теме
(18) Угу, почти серьезно.

Массив - для быстрого O(1) доступа к произвольному элементу коллекции. "Произвольный" в данном контексте - это доступ по индексу. Но оно нафиг никому не надо, ибо массив всегда тупо итерируют от начала до конца и никогда не пытаются стучаться по произвольному индексу.

Если нужна структура для быстрого добавления в конец/начало - надо рисовать очередь/стек, в платформе штатно их нет.

А про Соответствие - на добавление элемента оно работает как массив, та же "О(1) в среднем", но не требует ацких реаллокаций памяти при выходе за границу. И, в отличие от массива, даёт О(1) на поиск по ключу. Соответствия рулят ;)

Фразу про изменение хэш-функции не очень понял, если честно. Поясните, плиз, если не сложно.
23. starik-2005 3198 12.10.25 00:55 Сейчас в теме
(22)
Поясните, плиз, если не сложно.
А ты не в курсе, что такое хеш-функция и что такое "коллизия"?

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

Я вообще никому на слово не верю, поэтому написал обработину, которая вставляет 100к элементов в массив и в соответствие по 100 штук, и измеряет каждый раз время вставки. Отсортировал по времени. Картинки прикрепил. Разберетесь, какая картинка про соответствие, а какая про массив? Время в мс.

ЗЫ: на экран попало то, что больше единицы (ну и парочка единиц тоже, т.к. того, что больше единицы, было мало).

ЗЫЗЫ: что будет при количестве значений х10?
Прикрепленные файлы:
28. Cocky_Idiot 11 18.10.25 01:24 Сейчас в теме
(23)
А ты не в курсе, что такое хеш-функция и что такое "коллизия"?

Да, в курсе, ибо я эти хэш-функции писал десятками 🤦.
Во времена java7 приходилось вручную писать hashCode() и equals() для каждого POJO. Именно для того, чтобы оно эффективно работало в HashMap. В эклипсе даже отдельный пункт меню "generate" для этого был, емнип. А сама HashMap - любимая тема на собеседованиях, как и круглые крышки колодцев.

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

(23)
попытайся объяснить ситуацию, когда после вставки очередного значения происходит "подвисание".

Навскидку есть следующие варианты: пришел сборщик мусора, прилетело irq прерывание на ядро процессора, ушли в своп, в ОС запустился какой-то высокоприоритетный процесс,
Вы меряли усредненное время? Сколько итераций делали, если не секрет?
Я постараюсь нарисовать свой вариант теста, результаты, ессно, отдам.

Изначальный мой наезд на автора статьи по данному пункту был в том, что он, вместо фиксированного массива использует динамический. Этот вот его Массив1.Добавить(), при том, что размер массива известен заранее - это днище. И дельта в 2% - это погрешность эксперимента, но автор этого не понимает и на серьезных щах делает какие-то выводы. В итоге, откровенно кликбейтная статья набирает +40, выходит в топ и учит плохому очередное поколение разработчиков.
30. starik-2005 3198 19.10.25 00:32 Сейчас в теме
(28)
Вы меряли усредненное время? Сколько итераций делали, если не секрет?
20. Картина не меняется. Если чуть пошевелишь извилинами, то заметишь, что х2 (10к, 20к, 40к, 80к). Было бы это с прерыванием, то было бы случайно вообще. Давай, напиши сам кода, померяй.
Этот вот его Массив1.Добавить()
Я тоже тупо добавлял. И, опа, массив в 2 раза быстрее. Давай, ответь на вопрос, что будет при 10х?
31. Cocky_Idiot 11 19.10.25 00:45 Сейчас в теме
(30) Тест нарисую, результат выложу. Дедлайном поставлю среду, если не возражаете.

Планируете ли вы ответить на изначальный вопрос, про изменение хэш-функции? Ваша фраза "ещё и хэш-функцию меняет" - она про что? Это неверная формулировка, или вы реально уверены, что платформа меняет логику хэш-функции на лету?
33. starik-2005 3198 19.10.25 19:13 Сейчас в теме
(31)
она про что?
Про то самое. Ну сам подумай: есть соответствие, есть хеш от ключа, который фактически вычисляет индекс, чтобы вставить и вынять за О(1). 99% случаев юзания соответсвия - это до 1к элементов. Для этого достаточно, чтобы индекс был 10 бит. Но если ты внезапно продолжаешь и продолжаешь туда вставлять, то 10 бит становится предельно мало. Система меняет их на, допустим, 16 бит. Это уже 8х64 КиБ, но что это для современных компов. А ты все продолжаешь вставлять. 16 меняется на 20, 20 на 24, что уже овер дофига, хотя для современного компа даже это не так и много. А может быть там по битику добавляется, ибо +1 бит = х2 в байтах. Или ты думаешь, что при инициализации соответствия сразу 24 бита табличка строится? Или что там у тебя в голове за картинка нарисована. Расскажи нам...
И да, тебе не приходило в голову, что хеш считается не бесплатно?
36. Cocky_Idiot 11 20.10.25 01:18 Сейчас в теме
(33) Вы уходите от ответа на заданный вопрос. Изначально вы написали, что "хэш-функция меняется". Я усомнился, ибо ни разу не видел подобных реализаций данной стукутуры данных. Сомневаюсь, что 1С изобрела свой велосипед и реально меняет хэш-функцию "на лету".
А то, что вы описываете - это ресайз корзин(bucket resize), никакого изменения хэш-функции при этом не происходит...
41. starik-2005 3198 21.10.25 10:59 Сейчас в теме
(36)
А то, что вы описываете - это
Обычно для управления производительностью map используется автоматическое перехеширование при достижении определённого коэффициента загрузки.
Изменение хеш-функции приведет к перехешированию всех существующих элементов в новую хеш-таблицу, что может быть очень дорогостоящей операцией.
Перехеширование (Rehashing):
Если таблица заполняется слишком сильно, она автоматически перестраивается с увеличением размера. Этот процесс включает в себя перехеширование всех элементов, чтобы они были размещены в новой, более крупной таблице.
Альтернатива:
Вместо смены хеш-функции, применяют перехеширование — перестройку всей таблицы с использованием той же хеш-функции, но при других размерах таблицы. Этот процесс происходит автоматически и управляет производительностью map
Avatarzorro; +1 Ответить
42. Cocky_Idiot 11 21.10.25 15:54 Сейчас в теме
У зумеров проблемы с логикой? Как из вашего набора цитат(без ссылок на первоисточники) следует тезис, что 1С
еще и хэш-функцию меняет
?

СИ++ (gcc)

https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/bits/unordered_map.h
сама хэш-функция тут:
https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/bits/functional_hash.h

Для всех стандартных типов она реализована внутри компилятора, вычисляется по понятной логике и никогда не меняется "на лету": для заданного объекта значение хэш-функции известно(и кэшируется в unordered_map, чтобы не тратить время на повторное вычисление при ресайзе)

Java
https://hg.openjdk.org/jdk7u/jdk7u/jdk/file/jdk7u141-b02/src/share/classes/java/util/HashMap.java
Каждый класс должен иметь свою реализацию метода hashCode(), ее значения для объектов, помещенных в hashMap тоже кэшируется. Эта реализация тоже не меняется при ресайзах hashMap.

Python
https://github.com/python/cpython/blob/main/Objects/dictobject.c
Сюрприз-сюрприз, никаких великанов (с) Шрек , никакого изменения хэш-функции.
45. starik-2005 3198 21.10.25 23:58 Сейчас в теме
(42)
еще и хэш-функцию меняет
Производит перехеширование. Функция, соглашусь, может и не меняться. Но это не точно. Точно то, что при увеличении количества коллизий выше определенного происходит перехеширование. А количество коллизий растет с ростом количества элементов. И вот в эти подвисания как раз и происходит перехеширование. При том в старой реализации джавы вообще было все так себе, т.е. вплоть до О(n), но потом посоны переписали на сбалансированный список за хеш-таблицей и все стало до логарифма.

https://www.geeksforgeeks.org/dsa/load-factor-and-rehashing/

https://habr.com/ru/articles/830026/#3-1
Как упоминалось ранее, хэш-таблица для set начинается с 8 пустых bucket. По мере добавления элементов, Python следит за тем, чтобы по крайней мере ⅓ buckets были пустыми, удваивая размер хэш-таблицы, когда требуется больше места. Поле хэша каждого bucket инициализируется значением -1, что означает «нет хэша»(3).


Но ты увлекательно сполз с темы. Т.е. с того, что в массив вставка осуществляется в ДВА раза БЫСТРЕЕ, чем в соответствие. Живи с этим. С другой стороны, для того, чтобы разобраться в чем-то, нужно вот так вот ляпнуть что-то где-то. И, опа, буст прям вот.
47. Cocky_Idiot 11 22.10.25 22:30 Сейчас в теме
(45)
Но ты увлекательно сполз с темы. Т.е. с того, что в массив вставка осуществляется в ДВА раза БЫСТРЕЕ, чем в соответствие. Живи с этим

Вы можете кинуть в меня цитатой, где я утвержаю, что Соответствие быстрее Массива, или это очередное?
вот так вот ляпнуть что-то где-то


Выше в этой ветке я просил у вас времени до среды
Тест нарисую, результат выложу. Дедлайном поставлю среду, если не возражаете


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

Будет статья с разбором ситуации. Спойлер:
- да, в тонком/толстом/на сервере - Соответвие очень похоже на O(1) на вставку и O(1) на поиск, но это неточно.
- да, в тонком/толстом/на сервере - Соответствие медленнее Массива на вставку примерно в два раза.
- да, Массив фиксированного размера работает статистически значимо быстрее, чем динамический. Прирост небольшой, порядка 7-10%, но хочется ряд дополнительных проверок на зависимость от ОС и типа вставляемых значений.
- есть доказательная база, что в веб-клиенте Соответствие работает O(n²) на заполнение, О(n) на вставку, O(n) на поиск. Квадрат, Карл!

Резюме:
Я был неправ насчет 1.5х прироста скорости на вставку для Массив[i] = ... vs Массив.Добавить(...), там порядка 1.1х. Вы были правы, спасибо за стимул к погружению в тему.

P.S. Подозреваю, что у вас динамический массив обогнал фиксированный, потому что для вставки использовались разные виды циклов("для каждого" и "для счетчик =").
48. starik-2005 3198 22.10.25 23:59 Сейчас в теме
(47)
Вы можете кинуть в меня цитатой, где я утвержаю, что Соответствие быстрее Массива, или это очередное?
А как же это:
А про Соответствие - на добавление элемента оно работает как массив, та же "О(1) в среднем", но не требует ацких реаллокаций памяти при выходе за границу. И, в отличие от массива, даёт О(1) на поиск по ключу. Соответствия рулят ;)
Или этодругое, как с фиксированным массивом?
(47)
потому что для вставки использовались разные виды циклов
Нет, у меня обогнал потому, что я туда добавил индекс в отдельной переменной. Если добавить индекс в отдельную переменную для динамического массива, то будет 4,5 против 4,88 с, т.е. 7-8%.

Ну и нет худа без добра. В правильном споре становишься умнее. Радует, то нам в этот раз это удалось.
ЗЫ:
в веб-клиенте Соответствие работает O(n²) на заполнение, О(n) на вставку, O(n) на поиск
Даже не представляю, что нужно сделать, чтобы "работает O(n²) на заполнение". Вот вообще никаких идей.
49. Cocky_Idiot 11 23.10.25 00:08 Сейчас в теме
(48)
Или этодругое, как с фиксированным массивом?

Как из фразы "на добавление элемента оно работает как массив, та же O(1)" вы сделали вывод, что оно быстрее???
Оно может работать в сто раз медленней, но с той же асимптотикой. Не все "о-большие-от-единицы" одинаково полезны. ;)

(48)
В правильном споре становишься умнее. Радует, то нам в этот раз это удалось.

Взаимно. Я тоже получил тыщщу информации о платформе в очень сжатые сроки. Спор "на принцип" - идеальная самомотивация. Мир? Или еще есть вопросы? ;)

(48)
Даже не представляю, что нужно сделать, чтобы "работает O(n²) на заполнение". Вот вообще никаких идей.

Долго ли умеючи?
Они там вообще ничего не хэшируют. Перед вставкой идут (линейно) по коллекции, смотрят, что там нет нового значения и после этого наконец вставляют это новое в конец коллекции. Для добавления N элементов в пустое Соответствие получится 1 + 2 + ... N = O(N²) .
50. starik-2005 3198 23.10.25 00:30 Сейчас в теме
(49)
1 + 2 + ... N = O(N²)
O(N²/2) если быть точным.

По поводу массива, то ты в самом первом сообщении темы писал:
Массив не предназначен для добавления элементов. Это крайне дорогая операция, связанная с реаллокацией памяти.
Оказалось, что операция не такая и дорогая. Но ты потом добавил в (22):
А про Соответствие - на добавление элемента оно работает как массив, та же "О(1) в среднем", но не требует ацких реаллокаций памяти при выходе за границу.

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

Но оказалось, что очень даже тебует, т.к. при достижении определенного уровня заполнения происходит "рехеширование", т.е. создается новое соответствие размером х2, для которого пересчитываются все хеши всех имеющихся элементов. Как оказалось, это в 2 раза дольше, чем "аццкие релокации памяти" у массива.
51. Cocky_Idiot 11 23.10.25 02:52 Сейчас в теме
(50)
O(N²/2) если быть точным.

Сорри, так не бывает. O(N²/2) == O(N²). О-нотация - она про асимптотику. N², 10*N², 1e6*N² - это всё O(N²). Матчасть...

(50)
А массив если так вот без понимания прочитать, требует этих самых "аццких релокаций памяти", что как бы намекает, что массив медленный, а соответствие огого какое быстрое,

Сорри, но "если без понимания прочитать, то ..." - это крайне странный аргумент. Реально стараюсь следить за формулировками. Косяк с "фиксированный массив" признаю, был не прав. Но тут вы сами себе придумали....

(50)
для которого пересчитываются все хеши всех имеющихся элементов.

Ну нет же, все хэши уже давно кэшированы. Пересчитывается остаток от деления хэша по модулю количества корзин(обычно - степени двойки) - это бинарный сдвиг, стоит ноль. А вот перекладывание(копирование) элементов по вновь созданным корзинам - это дорого, да.
32. Cocky_Idiot 11 19.10.25 03:15 Сейчас в теме
(30) и этта...
Замените массив на фиксированный массив. Получите прирост х1.5 от .Добавить().

В целом - не вижу вашего кода, не понимаю что именно вы делаете и что меряете. Покажите код, будет предметный разговор.
34. starik-2005 3198 19.10.25 19:16 Сейчас в теме
(32)
Замените массив на фиксированный массив. Получите прирост х1.5 от .Добавить().
Фиксированный массив в терминах 1С или в каких-то других? В 1С в фиксированный массив вообще нельзя вставлять, на то он и фиксированный. Учи матчасть или изъясняйся более однозначно.
ФиксированныйМассив (FixedArray)
Методы:
ВГраница (UBound)
Количество (Count)
Найти (Find)
Получить (Get)
Конструкторы:
На основании обычного массива
Описание:
Неизменяемый массив. Заполняется системой при инициализации объектов данного типа или с помощью конструктора.
Показать
В целом - не вижу вашего кода, не понимаю что именно вы делаете и что меряете.
Все, зумеры неспособны думать? Я в тебя верю.
Avatarzorro; +1 Ответить
35. Cocky_Idiot 11 19.10.25 23:34 Сейчас в теме
(34)
В 1С в фиксированный массив вообще нельзя вставлять, на то он и фиксированный

Имелось в виде следующее:
- сразу создайте массив нужного размера.
- используйте вместо Добавить() вставку по индексу: Массив[i] = ....
- получите 1.5 к скорости.
40. starik-2005 3198 21.10.25 10:47 Сейчас в теме
(35)
- получите 1.5 к скорости.
Ты хоть проверил бы сначала. У меня, например, вставка в "фиксированный" (т.е. в предварительно инициализированный массив) для 10кк элементов занимает больше времени, чем в обычный. В "фикс" 4,5 с, в "не фикс" 4,1 с. Заметь, я отсортировал. В "фикс" нет вариаций, т.е. все значения вставляются за одно и то же примерно время. В "не фикс" вариации есть, но, видимо, вставка единичного элемента быстрее происходит по какой-то причине.
Давай уже, напряги ягодицы и проверь. А пока только бред несешь, уж извини.
Прикрепленные файлы:
21. starik-2005 3198 10.10.25 18:06 Сейчас в теме
(1)
Вы вообще не понимаете, что именно меряете.
Сложно не согласиться. Но истина в том, что никто ничего не понимает. Никто.
2. Cocky_Idiot 11 09.10.25 02:34 Сейчас в теме
Миф №3. Использование http-сервисов снижает нагрузку на сервер. Подтверждено
Снижает нагрузку по сравнению с чем? Тут вы решили ничего не мерять, но нарисовали картинок, збсь.

Миф №4. Http-сервисы оптимальнее web-сервисов
Цитата: "Если выставить наружу веб-сервис, можно быть уверенным, что в него на вход не попадет ничего неподходящего: платформа сама проверяет корректность параметров и избавляет от необходимости писать дополнительный код для их валидации и обработки"
Тут есть разумное зерно, но загуглите JSON-Schema. Точно так же без проблем валидируется ответ внешнего сервиса....

Туда же идет
Миф №6
xml vs json: весь нормальный мир десять лет назад всё для себя уже решил

Миф №7
Вы не понимаете, как устроен http. Вы не знаете про возможность кеширования GET и невозможность кэширования POST и какие плюшки это может принести на реальном highload? Представьте, что GET можно закэшировать на reverse proxy и отдать клиенту ответ без нагрузки на сервер 1С: тыща запросов к справочнику даже не дойдет до 1С, все вернется из cached proxy.

Файловые базы(миф №8) и клиентов 32 бит(миф №9) оставим на вашей совести.
Скорее всего всё так и есть, но разве кому-то не пофиг на файловые базы на 32-битных архитектурах??

Миф №10. В платформе 1С нет модульности
Да, в платформе вообще нет модульности. Поэтому видим простыни кода на 10K LOC.
То что вы разбили одного монстра на два поменьше не делает систему модульной.

P.S. А то что вы вытащили 475Gb файлов из одной БД и положили их в другую - это вообще зашквар. Зачем вам файлы в БД? Есть ли у вас бэкапы и сколько они занимают? Слышали ли вы о переносе файлов в тома ФС?
zqzq; Artem-B; syberman; +3 Ответить
4. dhurricane 09.10.25 09:47 Сейчас в теме
(2)
загуглите JSON-Schema
Разве она есть в платформе? Тут же исключительно возможности платформы обсуждаются.
7. gybson 09.10.25 10:51 Сейчас в теме
(2) если использовать swagger и json-schema, то уже не так все быстро и просто и инструменты не все под рукой. А для SOAP все в платформе уже есть.
9. RocKeR_13 1457 09.10.25 11:23 Сейчас в теме
(2)
Да, в платформе вообще нет модульности. Поэтому видим простыни кода на 10K LOC.
То что вы разбили одного монстра на два поменьше не делает систему модульной.

А почему модуль обязательно должен быть только на пару сотен строк? Монструозность же модуля будет напрямую зависеть от сложности задачи, которую он будет решать. Сейчас в семействе УТ/КА/ERP, хорошо прослеживается трансформация кода в направлении к модульности, например, в плане проведения документов.

P.S. А то что вы вытащили 475Gb файлов из одной БД и положили их в другую - это вообще зашквар. Зачем вам файлы в БД? Есть ли у вас бэкапы и сколько они занимают? Слышали ли вы о переносе файлов в тома ФС?

Тоже не понял суть этого телодвижения. Места занимают столько же, только теперь нужно тратить время на http-запросы для взаимодействия с файлами в другой базе. Почему не перенести было файлы в тома хранения файлов - большая загадка.
10. Sashares 33 09.10.25 11:53 Сейчас в теме
(2)
Миф №7
Представьте, что GET можно закэшировать на reverse proxy и отдать клиенту ответ без нагрузки на сервер 1С: тыща запросов к справочнику даже не дойдет до 1С, все вернется из cached proxy.


А что делать, если данные в базе меняются? То есть изменили данные в базе, а клиенты получают старое значение из cached proxy.
Трактор; +1 Ответить
12. Cocky_Idiot 11 09.10.25 14:11 Сейчас в теме
(10)

There are 2 hard problems in computer science: cache invalidation, naming things, and off-by-1 errors. -- Leon Bambrick

Вы реально рассчитываете, что вам вот так, в комментариях к статье, объяснят, как решать задачу инвалидации кэша??

Но если вдруг вам действительно интересна эта тема, то начните с гугления "squid cache invalidation".
14. Sashares 33 09.10.25 14:43 Сейчас в теме
20. starik-2005 3198 10.10.25 18:05 Сейчас в теме
(10)
А что делать, если данные в базе меняются?
Ну а что делать, если данные в базе меняются, а в чеке уже выбрано то, чего в базе уже нет? Без всяких там веб-сервисов. Ответ простой: проверять при фиксации изменений. В большинстве ситуаций коллизий и так не будет, но если ты формируешь корзину, то проверяй остатки при превращении корзины в заказ. И флоу такой: выбираешь товар -> создаешь заказ -> товар резервируется (проверяются остатки и все такое прочее) -> возвращается актуальная корзина. При том если цена поменяться успела, то тут тоже две стратегии: если в корзину добавлено в течение часа, то оставить цену из корзины, а если раньше, то предупредить об изменении цены.

Жизнь вообще чуть сложнее и проще, чем низкий уровень СУБД.
5. skeptik2105 09.10.25 10:28 Сейчас в теме
мы решили, что будем использовать POST-запросы везде.

Глупость какая - то... Так и рождаются сервисы, которые ждут один единственный параметр в теле запроса...
Есть подозрение, что автор не понимает реальное отличие GET от POST.

сама 1С при работе web-сервисов использует только этот метод

Хотел бы я посмотреть, как Вы сделаете web-сервис через GET... Говорю же, нет понимая принципиального отличия GET от POST. Вычитали в первой ссылке про получение и отправку...

Web-сервисы нужно использовать, при взаимодействии 1С с другими базами на 1С.

Глупость же... Web-сервисы МОЖНО использовать для взаимодействия с другими базами. А можно и не использовать. Можно и HTTP-сервисы использовать... и никто Вас за это не расстреляет.

Поэтому JSON мы используем при взаимодействии с внешними приложениями, а XML – при взаимодействии с другими конфигурациями 1С.

Ага, "восьмерка еще сырая"...
8. RocKeR_13 1457 09.10.25 10:58 Сейчас в теме
(5)
Глупость же... Web-сервисы МОЖНО использовать для взаимодействия с другими базами. А можно и не использовать. Можно и HTTP-сервисы использовать... и никто Вас за это не расстреляет.

Неистово плюсую. Web-сервисы из-за своей "бюрократичности" как раз-таки любят разные гос.сервисы) И в принципе это и есть ключевое отличие от http-сервисов. Тут следует учитывать, что при каких-то точечных изменениях формата (например, для одного клиента добавили доп.поля в формат) в случае REST API достаточно изменить только код на принимающей стороне и одном узле, а вот при использовании SOAP скорее всего потребуется модифицировать ПО на всех узлах. Так что тут действительно неважно, кто участвует в обмене. Непонятно совершенно, почему такой вывод сделал автор статьи.
25. embarcadero 16.10.25 12:07 Сейчас в теме
6. RocKeR_13 1457 09.10.25 10:47 Сейчас в теме
С помощью XML мы это делаем несколькими строками готового кода, найденного в интернете. А попытка реализовать то же самое через JSON приводит к ошибкам, потому что JSON ругается на недопустимые данные, требует указания кодировки и так далее.


Вот на практике у меня было ровно наоборот: десереализация XML валилась на простейших на первый взгляд XML, пока не добавишь в конфигурацию соответствующий XDTO-пакет. А вот проблем с десереализацией JSON вообще ни разу не было. По большому счету все-таки довольно редко встречаются задачи, когда нужно считать информацию из файла обмена частично или модифицировать его, поэтому последние 3 пункта (на мой взгляд последний всё-таки довольно спорный), по которым XML выигрывает у JSON, довольно-таки специфичны.
11. booksfill 09.10.25 13:33 Сейчас в теме
Что касается скорости работы через внешние обработки, объяснение самой 1С выглядит понятней.
Не понимаю, почему добавление чего-то в массив на стороне внешней обработки будет медленней (ресурсы на обслуживание создания самой обработки опустим, иначе смысл мифа - "не дергайте внешние обработки для часто вызываемого кода"), чем в обработке, встроенной в конфигурацию?
Этой обработке, 1С режет память или вводит ограничения по использованию ресурсов процессора?
Как-то странно.

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

А вообще, спасибо, было интересно почитать.
16. siamagic 10.10.25 03:59 Сейчас в теме
PUT - во всем мире идемпотентный и создает данные, post обновляет.
тема пулов http сервисов не раскрыта - там нет авторизации - сессия то не закрывалась.
17. starik-2005 3198 10.10.25 17:25 Сейчас в теме
И этому есть реальное объяснение, которое дается на сайте ИТС в статье https://its.1c.ru/db/metod8dev/content/5940/hdoc.

Объяснение:
Важным отличием внешних обработок от обработок, встроенных в конфигурацию является то, что компиляция модулей встроенных в конфигурацию выполняется однократно в процессе инициализации, тогда как для внешних обработок компиляция будет выполняться многократно, отдельно для каждого пользователя. Это приводит как к снижению производительности (компиляция модуля требует времени), так и существенному повышению нагрузки на CPU (компиляция модуля требует ресурсов процессора).


Давайте попробуем ответить на простой вопрос: "сколько раз будет компилироваться модуль внешней обработки"?
Cocky_Idiot; RustIG; +2 Ответить
24. cdiamond 236 13.10.25 14:05 Сейчас в теме
Опять путаются форматы XML, JSON и инструменты, с ними связанные. То что SOAP строгий энтерпрайзный протокол, супер удобен для 1С, вовсе не потому что XML такой надежный и простой, а JSON неподходящий, а просто потому что он во-первых сильно старее, а во-вторых это свойство написанного кода, который обрабатывает этот формат. Никто не мешает написать еще более строгий протокол SOAP Extended Super Puper Pro на JSON или YAML, который даст отлуп за лишний пробел и запятую не в том месте.

Про то что можно использовать POST или PUT вместо GET - это уже довольно давно заезженное место, даже я помнится тут писал несколько лет назад что можно по приколу весь API написать на методе DELETE (нет запрета передавать в нём тело запроса).
37. DmitryKlimushkin 20.10.25 12:04 Сейчас в теме
(24) А более "строгий протокол" станет тем самым XML, который сейчас пугает по сравнению с JSON. Между универсальностью и примитивностью есть прямо пропорциональная связь - чем универсальнее ("межплатформеннее"), тем примитивнее.
Я бы сказал, что для сравнения XML и JSON первый хотя бы надо знать. Те куски текстовых файлов, которые по способу заполнения (структурированные табуляцией и со значками тэгов) слегка напоминают XML-документ, никак не являются таковым в классическом (проектном!) понимании этого определения. Если кто-то видел XML-документ с заполненным DTD - покажите пример, я лайк поставлю той конторе, которая порождает такие сообщения!)
JSON меньше по объему. Наверное. Хотя XML, записанный в бинарности (FastInfoSet) кратно уменьшается в размере (никогда не понимал упрямое желание записывать в простой текст, типа "так глазкам читабельнее!"). Но радость от размера не зависит, это всем известно) Допустим, мне надо понять - что я получил в обмене. Если это XML, то мне не надо читать весь файл целиком, а потом его анализировать по каким-то свойствам. Я считал DTD или пропустил чтение НаборСхем. И валидация содержимого уже на первых строках наступает. Вот и дилемма, XML больше, но его никогда не нужно читать целиком, если вам он не нужен, а с JSON-ом как поступать в этой части? Есть какой-то установленный заголовок, идентификация и прочие "паспортные данные"? Пока обмены куцие и малообъёмные можно выбирать между стандартами. А если в обмен валятся тысячи файлов в день и не все они нужны (не все - для тебя), то выберешь ту форму чтения, которая предполагает моментальную идентификацию и валидацию. Отсюда и "старый" XML, от которого почему-то никак не откажутся. А JSON - он молодой... и немного глупый и самонадеянный, как всё молодое)
Для хорошего примера сошлюсь на таможню, которая "даёт добро" в буквальном смысле этого слова)
В 1С есть формы отчетности, связанные с движениями на таможне. Обмен идёт в формате XML. И что меня потрясло до основания, так это удивительно качественное оформление протоколов со стороны таможни! На сайте ФТС выложены все электронные альбомы протоколов обмена. По каждому документу есть схема XSD с подробным описанием каждого элемента и атрибута, с именами пространств имён, короче, со всей атрибутикой КАНОНИЧНОГО документа XML. Вот такой XML и надо сравнивать c JSON, а не те убогие симулякры структурированного текста, с которыми мы на 99% и имеем дело, ошибочно воспринимая это, как "XML". Могу понять, почему в таможне так "красиво" исполнено. Таможня вынужденно имеет дело с "той стороной". А на той стороне XML без протокола (схемы XSD, DTD и проч.) считается надписью на заборе. Так что таможня вынуждена была "подтянуться до уровня планки". А нам теперь есть где посмотреть на то, как высоко нам до этой планки прыгать) Заранее извиняюсь перед ИТ-персоналом ФТС, если такое качественное исполнение протоколов вызвано не внешними факторами (более дисциплинированными и квалифицированными коллегами "с той стороны"), а исключительно собственной квалификацией и представлением о профессионализме, то сниму шляпу и поставлю лайк в любом указанном месте!)
В части XML в платформе есть неполнота возможностей. В частности, нельзя указать переменные документа. Т.е., после записи определения XML уже ничего значащего нельзя указать, кроме DTD и корневого элемента. А есть переменные документа XML, которые определяют режим работы с DTD, например. Вот этого немного не хватает.
Я за XML, как за более высокий уровень дисциплины обменов)
38. cdiamond 236 20.10.25 14:24 Сейчас в теме
(37) У тебя почти развернутый ответ, зачем нужен XML: он нужен если реализацией протокола обмена занимаются неподконтролтные тебе люди, с которых не спросить. Тут то вся строгость XML и заставит их писать корректный код.
Но когда есть несколько баз 1С у одной организации, у организации один отдел разработчиков, и они пишут внутренний обмен со всеми XSD/DTD в полный рост - я отвечу что они впустую расходуют финансы компании.
39. DmitryKlimushkin 20.10.25 15:07 Сейчас в теме
(38) Да-да-да... "Подконтрольные люди....", которые раз в три года полностью заменяются.... а предел контроля над людьми давно определен - это 2-3 человека, гении могут контролировать 4-5. А дальше либо иллюзия контроля, либо придётся создавать систему, которую контролировать легче, проще и дешевле, а уже сама система контролирует любое количество людей. Ведь в правилах дорожного движения, например, не указывается максимальное количество участников дорожного движения, так ведь? Это преимущество любой системы над гениальностью - "порядок бьёт класс".
Именно куцый, охолощенный фундамент, который закладывают в том числе и ИТ-шники, под фундамент развития своей компании в части учёта и управления и является зачастую естественными ограничителями роста этой компании. Заложен фундамент учета и управления "а ля ларёк"? Готовьтесь к "росту" до размера "крупного ларька" - не более. У нас поэтому и ритейл свой не возник, начинается рост нескольких коммерческих "всходов", а потом - бац! "Звуковой барьер", при попытке преодоления которого "крупный ларёк" рассыпается на составляющие его "мелкие ларьки". На фундаменте дачного домика не получается Бурдж-Калифа. Экономия денег компании в том и состоит - "Не знаешь как? Сделай по правилам!" Это абсолютно недолго, недорого и несложно. Это вопрос привычки, как мытьё рук.
43. qwinter 685 21.10.25 17:28 Сейчас в теме
(39) Вы просто не понимаете о чем пишите... Фундамент это не xml или json, фундамент это правила разработки и стандартизация в компании. А xml для внутренних обменов это все равно что пристраивать на каждом этаже небоскреба футбольное поле вместо небольшого балкона.
44. DmitryKlimushkin 21.10.25 17:51 Сейчас в теме
(43)
это правила разработки и стандартизация в компании

Я действительно не понимаю, о чём пишу... Люди живут яркую разнообразную жизнь, придумывают для каждой кампании свои отдельные правила и стандарты... "Стандарт в пределах компании", звучит-то как! А мысль не приходит забавная, что кампании на этом и раздувают непомерные штаты Ит-шников, исключительно по причине своей уникальной ИТ-Вселенной, со своими законами Ома и Ньютона? Где есть свои "специфики" учёта, управления и планирования, кто их такими придумал, когда и зачем - в большинстве случаев сказать уже никто не может, но живут с этим, как с данностью или с любимой грыжей.
А с компании какого размера надо будет делать разворот в сторону общепринятых стандартов, ну типа, "стандарт, действующий сразу для двух или трёх компаний"? А время будет для такого разворота, если у компани дела попрут в гору и она начнёт быстро расти?
Когда в какой-то странной компании применительно к общеупотребимым универсальным инструментам (тот же XML) есть нечто, называемое "стандартом", действующим исключительно в пределах этой компании, это зачастую банальная местечковость, провинциальная зашоренность, выражающаяся в примитивизации универсального инструментария. Можно и арифметику свою придумать в пределах компании - будет же работать какая-нить система счета, построенная на дюжине, например. Не всем будет удобно и радостно, зато куча народа будет плотно занята)
Правильные привычки, и навыки приобретаются независимо от размеров и оборотов компании. Я только об этом.
Приведу пару примеров, к чему приводит такое опошление и вульгаризация стандартов.
1. Программисты, получившие такие вот грустные навыки по тем же обменам и интеграциям в небольших компаниях, приходят уже в крупные организации (в ту же ФНС или кто там для ФНС API пишет) и "радуют" нас, всех, абсолютно жуткими конструкциями в "телах" HTTP - ответов.
2. Такие же наши коллеги, которые весь обмен привыкли организовывать исключительно через файлы Excell теперь работают во многих маркетплейсах (даже самых больших и богатых), куда они принесли эту ИТ-чумку по обменам с помощью табличных документов. По этой причине типовой сервис 1С по взаимодействию с маркетплейсами, кроме жути и жалости, никаких чувств не вызывает больше....
А всему виной вредные привычки, приобретённые в какой-то компании, которая решила жить своим замкнутым огородом со своей уникальной агротехникой.
26. embarcadero 16.10.25 12:09 Сейчас в теме
Зачем напрямую сравнивать http- и web-сервисы? Они реализуют изначально разные архитектурные стили программного интерфейса, и не соперничают друг с другом, а взаимодополняют. Я к тому, что выбор сервиса определяется не скоростью обработки, а формой необходимого поведения API.

REST подразумевает использование ресурса, идентифицированного по расположению и в большинстве случаев требует соблюдения идемпотентности операций, чтобы использовать кэширование. Его реализации, помимо классического веба на http/https, - OData и GraphQL.

RPC - класс технологий, позволяющих программам вызывать функции или процедуры в других системах. И этот стиль не накладывает ограничений на свободу изменения состояния этих систем. Его реализации, помимо сервисов на SOAP, - jRPC и gRPC.

P.S. То, что REST используется в качестве RPC - большой костыль в силу отсутствия нативной поддержки jRPC и gRPC в платформе. А использовать SOAP для доступа к ресурсам - еще хуже. Из-за смешанного ландшафта по стекам технологий в любой крупной компании общеупотребительным является классический веб на http/https, в который soap не выписывается.
A1WEB; Darklight; +2 Ответить
27. Darklight 35 16.10.25 15:03 Сейчас в теме
Миф №1. «""+Строка(Ссылка)» медленнее, чем «""+Ссылка»

Подтверждение говорит лишь о том, что разработчики платформы на оптимизацию исполняемого программного кода (сформированного потока опКодов) забили намертво - раз даже в такой тривиальной ситуации не сделали оптимизацию!
Интересно было бы сравнить работу веб клиента и сервера/толстого клиента (в идеале и мобильного клиента/платформы, и тонкого клиента). Так как для веб клиенте будет трансляция в JavaScript, и дальше оптимизацией будет заниматься браузер (V8 движок JS ещё и JIT компиляцию некоторых операций может выполнить - если очень часто будут выполняться - что тоже интересно рассмотреть для анализа). А, вот, что там с мобильным клиентом и тонким клиентом - есть большой вопрос!

Миф №7. Методы GET, POST и прочие путать нельзя
Не подтверждено с оговорками.
Это происходило потому, что у GET-запросов есть ограничение по длине – 4 килобайта.

Спасибо, что сказали об этом ограничении!
Но, путать команды, всё же не стоит. Хоть это вего-лишь рекомендация, а не требование (естественно когда сервис и клиент разрабатываются вместе, и в сервисе и в клиенте REST команды должны использоваться одинаково)!

Миф №9. 32-битный клиент медленнее 64-битного
Подтверждено

А что за магический релиз такой 1С Предприятие 8.3.9.1919 - после которого так сильно просаживается производительность?
64бит (File, SQL)
8.3.9.1919=(500, 3000) после=(170,1000)
Где-то подробнее про это узнать можно?

И почему на 8.3.9.1919 32бит - Тест не выполнялся?

Как мерили память? Видать вообще никаких данных не загрузили в контекст 1С Предприятие в качестве рабочей нагрузки - сравнение совсем не точное!
Для чистоты эксперимента 32 битный клиент надо было на 32-ой ОС запускать! По идеи в эмуляции 32бит на 64бит всё равно происходит перерасход памяти. Но это актуально только для Терминальных компьютеров, а там ОС 64 битная (впрочем на рабочих станциях, относительно скоро тоже везде уже будет 64битная ОС)
Хорошо было бы и на разных ОС (Windows, Linux, MacOS), но это уже не актуально (т.к. все они уже только 64битные, и только Windows пока ещё позволяет запускать в 64битной ОС 32битные приложения)

Кстати, браузер тоже бывает 32битный и 64битный. Причём не так давно (до эпохи Windows 10) - все браузеры в Windows почти всегда использовались 32битные. И WEB-клиент там был 32-битный, если так можно сказать (без файлового расширения и ВК - это просто JavaScript WEB-приложение).
А сейчас почти все браузеры можно уже считать 64-битными - прошла эпоха 32-битных приложений...
Но, для приличия, сравнить в разных браузерах тоже можно было бы...

Миф №10. В платформе 1С нет модульности
Не подтверждено
Но мы в какой-то момент решили выделять некоторые подсистемы в отдельные конфигурации.

Сама идея интересная но!
Вы путаете Тёплое с Мягким, а именно Компоненты-сервисы и Модули!
Микросевисы - это не Модули, это Компоненты (и то, с большой натяжкой)!
Модули - это то, из чего можно собрать приложения, в т.ч. сервисы.
Да - в какой-то степени Подсистемы можно считать Модулями - если бы они не представляли собой Монолит в 1С Предприятие 8!

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

Но... зачастую, при таком мелком дроблении сервисов - применение именно платформы 1С Предприятие 8 - это как "Стрельба из пушки по воробьям, а точнее даже стрельба Орешником по воробьям - дорого, сложно, и не эффективно"!
Тут уже куда интереснее как раз мелкие Микросервисы именно отделять от платформы 1С Предприятие - им не нужна вся мощь этого монолита - им нужна простая - заточенная под конкретную задачу - реализация! И писать микросервисы как раз лучше не в среде 1С - как раз и производительность выше будет, и ресурсов мало потребуется и, главное, за лицензии (в т.ч. серверные) платить не нужно, а реализация будет достаточно узкая, так чтобы её лего можно было сделать и без монстер-комбайна 1С Предприятие 8.3. Как варианта - это Веб-разработка на 1Script (официальное от Андрея Овсянкина, и есть ещё другое решение, тоже на One Script).
Понятно, что если уж очень надо лезть в 1С ИБ - то придётся лезть, но это уже не Микросервис (хотя Микросервис может быть посредником, не на 1С Предприятие 8, и в 1С ИБ он будет обращаться только по необходимости, которую надо стараться сокращать).

В 1С Предприятие 8, С ОЧЕНЬ БОЛЬШОЙ НАТЯЖКОЙ есть модули - это её типовые библиотеки - в т.ч. БСП и другие! Но ими очень тяжело управлять, тем более в составе уже развёрнутой конфигурации - так - что есть этим модули, что нет - толку мало - даже функциональными опциями не смогли это всё грамотно разграничить (из-за недостатков архитектуры платформы 8.3... ).
Кстати БСП и иже с ними на статус Библиотек)(и) так же не тянут, т.к. Библиотеки как раз должны быть очень изолированными компонентами, с чётко прописанными контурами действия, и зависимостями друг от друга; при необходимости - с применением механизма внедрения зависимостей).

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

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



Есть ли разница с точки зрения ресурсов сервера у стандартного веб-клиента и тонкого клиента?

С точки зрения ресурсов сервера – скорее всего, нет. Это наше предположение, но скорее всего, нет.

Однако мы предполагаем, что с точки зрения нагрузки на клиентскую машину веб-клиент более ресурсоемкий, потому что весь исполняемый код нужно преобразовать в JavaScript – нарисовать интерфейс, дополнить его обработчиками, все это на JS.

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

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

Интересные соображения. Особенно "Тонкий клиент однозначно лучше и быстрее. По сути, тонкий клиент – это специализированный браузер, который 1С написала для своего решения".
Во-первых, не уверен, что Тонкий клиент исполняет HTML страницы и JS код! Это очень сложно! И совершенно не нужно! Хотя... если там внутри развёрнут браузер - а-ка ELECTRON приложение? Но это вряд ли - это не оптимально по ресурсам! И не стабильно!
Но и веб-браузер сбрасывать со счетов не стоит - в JS код преобразует сервер 1С (и кеширует его). А Браузеры хорошо оптимизированы сейчас для работы с CSS, со сложным кодом JS - умеют его оптимизировать и даже JIT-компилировать! 1C Предприятие 8.3 не умеет! Так что, тут не всё так однозначно!

Ну а сравнивая Тонкий клиент и Толстый клиент - первый просто выносит всю нагрузку на Сервер 1С, а для Толстого это не обязательно (но в Упр. формах само решение так выстроено - что нагрузка будет стараться выноситься на Сервер) - тем самым Сервер 1С нагружается больше! А распределение нагрузки по компьютерам - менее существенно! Зато да - теперь нужно больше вкладываться в Сервера 1С - расширяя Кластер 1С - покупая больше серверных лицензий и оборудования!
29. AlekseyBelyy 13 18.10.25 14:18 Сейчас в теме
какой смысл замерять быстродействие выражения ""+Строка(Ссылка)?
любой программист напишет просто Строка(Ссылка). смысл пустуют строку конкатенировать со строкой....
46. starik-2005 3198 22.10.25 19:48 Сейчас в теме
(29)
смысл пустуют строку конкатенировать со строкой
В 1С тип результата приводится к типу первого аргумента. "" + что-то = строка, 1 + "2" = 3, "1" + 2 = "12".
52. Avatarzorro 62 24.10.25 04:06 Сейчас в теме
На счет Json немного не понятно. Встроенная сериализиция из JSON получает удобную структуру или массив структур в одну строку и это очень удобно для дальнейшей работы Другое дело что в XML можно еще запихать доп параметры в тег, чего не сделать в стетхеме.... А те же типовые обмены через универсальный формат и построены на этих параметрах в тегах. Поэтому и XML, а не перевозчик
Для отправки сообщения требуется регистрация/авторизация