«Зоя Ивановна, примите от этих граждан брак и выдайте им другой.»
- из фильма Волга-Волга
Каждая смена релиза это «прыжок веры» – ну да, тот самый, который в «Индиана Джонс»
Ты можешь погонять его на тестовом контуре, что-то поймать до развертывания, что-то пропустишь – особенно в интерфейсной части. И все потому, что возможности автотестов у нас гораздо меньше, чем у 1С.
А учитывая, что реализация новых ништяков возможностей платформы провоцирует новые проблемы - быть консерватором, означает возможность быть сконцентрированным скорее на бизнес задачах, нежели на латании дыр.
Ошибки августа 2023 . «Улучшения» в интерфейсе
Чтение баг трекера Публикация ошибок. Каталог продуктов (1c.ru) 1С сродни чтению хроники происшествий или просмотра «Дорожного патруля» , но оно полезно для понимания – сможете ли вы жить с этими тараканами в системе. Однако важно не то, что мы знаем, а то, чего не знаем.
Вот недавно, после развертывания релиза 8.3.23.1739 обнаружена ошибка со списками в интерфейсе.
Если у Вас конфигурация работает в режиме совместимости 8.2.16 и на управляемых формах.
При попытке открыть на редактирование в поле ввода значение типа СписокЗначений
Возникает ошибка
«Ошибка инициализации модуля: mngbase/valuelist.lf
по причине:
{mngbase/valuelist.lf(44,39)}: Процедура или функция с указанным именем не определена (StrTemplate)
UserMessage.Text = ?(IsNotEmpty, <<?>>StrTemplate(ValueAddedMoreThanOnce, RightValue), EmptyValueMoreThanOnce);»
Судя по описанию, эта проблема связана с внедрением «Расширенное редактирование множественных значений» в новом релизе платформы
Расширенное редактирование множественных значений
Проблема критичная, так как не позволяет полноценно использовать релиз 8.3.23.1782, 8.3.23.1739 с конфигурациями в режиме совместимости с 8.2.16
Более того нарушаются принципы совместимости с 8.2. Например, можно сделать такой workaround – в режиме совместимости с 8.2.16 поставить программно у элемента ПолеВвода свойство
РасширенноеРедактированиеМножественныхЗначений = Истина
Форма редактирования списка не вызывается, а редактирование происходит непосредственно в поле ввода или ниспадающем меню. Но это свойство там вообще не должно быть доступно.
Да и перерабатывать конфигурацию по всем формам, для адаптации к ошибке, это не выход.
Без режима совместимости такой проблемы нет. Выглядит это «улучшение» визуально так.
Казалось бы – разверните 1С 8.2 последнего релиза совместно с 8.3 и живите спокойно. Но тут есть препятствия:
- Во-первых, программные серверные лицензии для 8.2 уже не купишь. А в виртуальной среде, без USB Redirector , только их и можно использовать.
- Во-вторых, у 1С 8.2 естественным образом ухудшается совместимость с современными операционными системами. Например, если сетевой каталог содержит русские буквы, то при сохранении отчета в формате excel, word в режиме RDP возникает ошибка доступа к файлу. В 1С 8.3 такой проблемы нет.
Интерфейс, конечно, трудно тестировать автотестами, и здесь не космический корабль Маринер-1 — Википедия (wikipedia.org), с которым потерялась связь из-за одного символа. Просто это масштабируется на всех, использующих платформу 8.3 в режиме совместимости с 8.2. В 1С не очень хорошо с масштабированием на большие объемы данных Язык мой враг мой , но за счет популярности и большого количества пользователей – ошибки масштабируются хорошо и, как было с лицензированием, громко.
Фоновые задания на виртуальной среде.
Фоновые задания – единственный способ распараллелить обработку данных в 1С и обеспечить скорость обработки «больших данных». Хранение истории последних 1000 фоновых заданий до сих пор не исправлено, и Вы не можете отследить обработку 1001 пакета операций для 2 миллионов. Программирование своей подсистемы на регистрах сведений решает проблему (типичный Workaround) , но в 1С приходится бороться с новыми ошибками.
Например, в релизах 8.3.22.1709, 8.3.23.1739 на виртуальной среде под VMWare обнаружено, что фоновые задания иногда не стартуют по факту, хотя отправляются на исполнение.
Выглядит это так
- после добавления нового дочернего фонового (из другого фонового) задания оно появляется в менеджере фоновых заданий, но в консоли кластера его нет.
- Для диагностики проблемы в обработчик УстановкаПараметровСеанса() модуля сеанса был добавлен код, делающий запись в журнале регистрации о том, что фоновое задание стартовало. Анализ журнала регистрации показывает, что дочерние задания просто не запускаются, а родительские зависают в ожидании завершения этих несуществующих заданий.
Проблема усугубляется тем, что в тех журнале не видна связь конкретного фонового задания с записью в журнале
00:17.653008-0,SESN,2,process=rmngr,p:processName=RegMngrCntxt,p:processName=ServerJobExecutorContext,OSThread=13868,t:clientID=44565,t:applicationName=ServerProcess,t:computerName=my_server,Func=Start,IB=SystemAdministrationCenter,Appl=BackgroundJob,Nmb=1,ID=bbf4d89f-7dc4-4274-95d0-22cf6c8348d2
Там есть ID но это не ID BackgroundJob поскольку присутствует в сеансах как seanceID=bbf4d89f-7dc4-4274-95d0-22cf6c8348d2,
00:17.653004-0,SRVC,2,process=rmngr,p:processName=RegMngrCntxt,p:processName=ServerJobExecutorContext,OSThread=13868,t:clientID=44565,t:applicationName=ServerProcess,t:computerName= my_server,Descr='ClusterStateService: service notified,onStartSeance(infoBaseID=bd9591e9-8333-4481-8b0e-9add42861052, seanceID=bbf4d89f-7dc4-4274-95d0-22cf6c8348d2, seanceNumb=1)'
Как следствие Вы сможете только своими вставками кода отслеживать судьбу фоновых заданий.
Если посмотрите Bugboard, там ошибки по механизму фоновых заданий встречаются регулярно.
Бороться с этим приходится через workaround Workaround me в 1С/MS SQL и не только, системный подход к созданию костылей , в этом случае повезло – отключение флага «Менеджер под каждый сервис» исправило ситуацию. Но любой Workaround имеет цену. «Менеджер под каждый сервис» помогает убрать узкое место, когда ядро, на котором он обслуживает все сервисы, загружается на 100% .
На Workaround-ах можно не жить, а существовать.
Но если нестабильность фоновых заданий станет нормой, это ставит под угрозу разработку вообще каких-либо нагруженных систем. Ведь это единственный способ в 1С распределить вычисления для больших объемов штатным образом.
Много релизов хороших и разных
В выборе меньшего зла - помогает параллельная установка нескольких версий кластера 1С на одном сервере. Каждой базе по собственному релизу.
Процесс описан Глава 4. Запуск компонентов системы :: Клиент-серверный вариант. 4.3. Обеспечение совместной работы нескольких серверных процессов:: 1С:Предприятие 8.3.23. Документация (1c.ru) очень подробно, даже текст коммандного файла инсталляции сервиса приведен.
Добавить можно только следующее
- При регистрации сервиса 1С добавляется странная зависимость « @todo.dll,-100;Microsoft IPv6 Protocol Driver» , которая не дает стартовать сервису. Ее отключают удалением протокола ipv6 в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3.22.1709 Server Agent 4040 8.3.22.1709\DependOnService
- Менеджер консоли кластера нужно каждый раз регистрировать при переключениями между версиями call "C:\Program Files\1cv8\8.3.22.1709\bin\RegMSC.cmd"
До новых встреч на нашем телеграмм канале, новые материалы ждут очереди, когда их напишут.
P. S. Приведенные ошибки отправлены в 1С и сейчас проходят стадии подтверждения.