Какой на сейчас самый стабильный релиз платформы 1С 8.3? Разбор проблем производительности, SMTP и интерфейса

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Выбор стабильной версии платформы «1С:Предприятие 8.3» — одна из вечных дилемм системных администраторов и программистов 1С. Ситуация осложняется тем, что новые релизы конфигураций (таких как «Зарплата и управление персоналом 3.1», «Розница» или «Бухгалтерия предприятия 3.0») регулярно требуют обновления платформы до строго определенных минимальных версий. При этом новые релизы платформы нередко приносят с собой неприятные сюрпризы: от загадочных просадок производительности до поломки базовых функций вроде отправки почты.

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

Переход с STLPort на стандартные библиотеки C++ и падение производительности в 8.3.11

Многие пользователи при переходе на ветку 8.3.11 жаловались на «дикие тормоза» и повышенную загрузку процессора по сравнению со стабильной веткой 8.3.10. Давайте выясним истинную причину этого явления.

Исторически, начиная с версии 8.1, фирма «1С» использовала стороннюю библиотеку STLPort. Это было необходимо для обеспечения кросс-платформенности и корректной работы со строками типа std::wstring, поскольку размер символа wchar_t в операционных системах Windows и Linux различается (2 байта против 4 байт).

В платформе 8.3.11 разработчики полностью перевели огромный массив исходного кода на стандарт C++14, полностью отказавшись от устаревшей библиотеки STLPort в пользу стандартных системных библиотек компиляторов. Первые сборки новой архитектуры показали падение производительности выполнения некоторых операций на 20–30% и рост потребления оперативной памяти на 10–15%.

Основными причинами просадки стали:

  1. Неоптимальное выделение памяти под стандартные строки.
  2. Особенности инициализации пустых контейнеров std::map и std::set. В стандартной библиотеке Microsoft Visual C++ даже пустые контейнеры при создании выделяют память из кучи (heap), в то время как старый STLPort этого не делал. Из-за специфики архитектуры 1С, где создаются миллионы временных пустых объектов, это привело к колоссальной нагрузке на менеджер памяти операционной системы.

Если вы столкнулись с замедлением работы на релизах ветки 8.3.11 (например, на 8.3.11.3034), рекомендуем либо откатиться на стабильный релиз ветки 8.3.10 (например, 8.3.10.2667 или 8.3.10.2772), либо сразу переходить на оптимизированную ветку 8.3.12, где разработчики исправили работу с памятью и заменили проблемные контейнеры на высокопроизводительные аналоги из библиотеки Boost.

Проблема поиска в меню «Все функции» на платформе 8.3.12

При переходе на платформу 8.3.12 пользователи часто замечают, что в окне «Все функции» перестал работать мгновенный поиск «по строке» при непосредственном наборе букв с клавиатуры. Многие принимают это за критический баг.

Рассмотрим эту ситуацию подробнее. На самом деле это не техническая ошибка, а задокументированное изменение поведения платформы. До версии 8.3.12 поиск в дереве метаданных работал двумя путями:

  1. Через явное нажатие комбинации клавиш Ctrl + F.
  2. Путём автоматического фокуса на строке ввода при начале набора текста пользователем (так называемое «незапланированное поведение»).

Второй вариант вызывал серьезную нестабильность интерфейса управляемых форм при работе через веб-клиент в различных браузерах. Для унификации работы интерфейса разработчики «1С» в платформе 8.3.12 полностью отключили автоматический захват клавиатурного ввода в окне «Все функции». Теперь единственным штатным способом поиска является вызов поисковой строки через Ctrl + F. Начиная с версии платформы 8.3.17, само меню «Все функции» также было модернизировано и переименовано в «Функции для технического специалиста».

Критический сбой отправки почты по SMTP в версиях 8.3.12.1529 и 8.3.12.1567

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

В ветке 8.3.12 разработчики существенно обновили встроенные криптографические библиотеки платформы и перешли на новую версию OpenSSL. Это привело к несовместимости протоколов рукопожатия (handshake) при установке защищенного TLS-соединения с популярными почтовыми серверами (Mail.ru, Yandex, Office 365). Система выдавала неинформативные ошибки соединения (например, «ошибка кода 14» или «ошибка кода 27»).

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

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


Попытка
    ИнтернетПочта.Послать(Письмо, Профиль);
Исключение
    Сообщить("Ошибка отправки почты: " + ОписаниеОшибки());
КонецПопытки;

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

Чтобы избежать этой проблемы, необходимо использовать обновленный алгоритм проверки результатов отправки:


ОшибкиОтправки = ИнтернетПочта.Послать(Письмо, Профиль);
Если ОшибкиОтправки.Количество() > 0 Тогда
    Для Каждого Ошибка Из ОшибкиОтправки Цикл
        Сообщить("Письмо не отправлено на адрес: " + Ошибка.Ключ + ". Причина: " + Ошибка.Значение);
    КонецЦикла;
КонецЕсли;

Проблемы совместимости и стабильности релиза 8.3.12.1529

Релиз платформы 8.3.12.1529 приобрел широкую известность в 2018 году, так как фирма «1С» объявила его минимальным системным требованием для работы конфигурации «Бухгалтерия предприятия 3.0» (начиная с релиза 3.0.65) в режиме отключенной совместимости.

Несмотря на заявленный прирост производительности файловых баз, этот релиз принес системным администраторам немало хлопот:

Для обеспечения стабильной работы в ветке 8.3.12 настоятельно рекомендуется избегать ранних сборок и использовать проверенные временем финальные релизы этой ветки, такие как 8.3.12.1616 или 8.3.12.1685, в которых детские болезни платформы были полностью устранены.

Ирония над релизом 8.3.16 и баг отключения от главного узла РИБ

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

В релизах линейки 8.3.16 (в частности, в 8.3.16.1148) разработчики полностью нарушили работу критически важного механизма администрирования. Параметр командной строки запуска конфигуратора /ResetMasterNode, предназначенный для отключения подчиненного узла РИБ и превращения базы в самостоятельную конфигурацию, просто перестал работать. При его запуске платформа игнорировала ключ и открывала конфигуратор в обычном режиме заблокированной базы.

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

Резюме и рекомендации по выбору платформы

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

  1. Не спешите переходить на самые новые ветки: Если ваши типовые конфигурации (ЗУП, Розница, УТ) стабильно работают на текущей платформе и не требуют принудительного обновления для установки новых релизов метаданных, оставайтесь на стабильной версии.
  2. Проверенные решения для старых баз: Если вы используете конфигурации на обычных формах (например, КА 1.1 или УПП 1.3), лучшим выбором остаются финальные релизы ветки 8.3.10 (например, 8.3.10.2667). Более старшие платформы могут приводить к графическим искажениям интерфейса обычных форм.
  3. Оптимальный выбор для современных конфигураций: Если вам необходима поддержка БСП 3.0 и работа без совместимости, выбирайте проверенные временем поздние сборки веток платформы. Перед разворачиванием платформы в рабочей среде обязательно проводите тест критических функций (отправка почты, регламентные задания, печать документов) на копии базы данных.
← На главную