TGViewer
Пятиминутка 1С Пятиминутка 1С @ru_5min1c · 15 subscribers
Post #40 47

Forwarded from Dubai OneC

Случай из рабочей практики...

👉Для целей подсистемы E-Invoicing для KSA мы используем библиотеку SDK, написанную на Java и зашитую внутрь конфигурации. Для правильной её работы на сервере требуется установка определенной версии Java.
Но при подготовке рабочих и дев серверов для работы релиза с е-инвойсингом, ошиблись, и команде «Cloud» сказали поставить не ту версию Java.

💥И это повлекло за собой целую цепочку событий:
▫️ Из-за неверной версии Java на dev сервере с демо версией релиза с е-инвойсингом при тестировании перестали формироваться и подписываться XML для отправки на портал Fatoora.
▫️ При анализе проблемы выяснилось, что сразу после попытки отправки на портал Fatoora падает с синтаксисом регламентное задание Обновление полнотекстового индекса.
▫️ При анализе падения этого регламентного задания выяснили, что неверно добавили переопределение представления нового справочника RegistrationsWithTaxAuthority - в событии PresentationGetProcessing вместо получения нужного поля через Data было обращение к реквизиту ссылки через Common.ObjectAttributeValue(Data.Ref, "TRN").
▫️ В методе Common.ObjectAttributeValue() после добавления подсистемы NationalLanguageSupport и доработки возможности настройки для разных объектов метаданных последовательности дополнительных языков, одним из параметров является код языка, по которому в методе определяется имя реквизита для объекта на нужном языке. И в одном из условий проверка на заполненность этого параметра была пропущена. Что приводило к постоянному обращению метода, который определяет имя реквизита на нужном языке.
▫️ Метод определения имени реквизита на нужном языке NationalLanguageSupportServerBit.LanguageSuffixByObject(MetadataObject, LanguageCode) в свою очередь внутри цепочки вызовов пытается определить, какому элементу справочника MetadataObjectID соответствует наш объект. И в этой цепочке вызовов пытается определить, находится ли база сейчас в режиме обновления данных.
▫️ В процессе определения, находится ли база в режиме обновления данных, происходит проверка - а не разделенная ли база сейчас. И эта проверка осуществляется через чтение параметра сеанса DataAreaUsage, который в какой-то совершенно неожиданный момент ставится в значение Истина.
▫️ Таким образом, в проверке текущей версии конфигурации для определения режима обновления возвращается 0.0.0.0, что определяет, что текущая конфа находится в режиме обновления.
▫️ В итоге, получаем ошибку регламентного задания обновления полнотекстового индекса на строке Common.ObjectAttributeValue(Data.Ref, "TRN") из-за неверного определения, что база является разделенной.

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

1. Переопределили без запроса представление для справочника RegistrationsWithTaxAuthority.

2. Добавили условие проверки на заполненность параметра LanguageCode перед вызовом NationalLanguageSupportServerBit.LanguageSuffixByObject(MetadataObject, LanguageCode) в методе Common.ObjectAttributeValue().

3. При определении, что база сейчас находится в режиме обновления, добавили к существующей проверке на параметр сеанса DataAreaUsage, еще проверку на функциональную опцию SaaSOperations, по которой определяется, находится ли база в разделенном режиме или нет, чтобы правильно определить версию текущей конфигурации (так реализовано в БСП последних версий).
More from @ru_5min1c
  1. Nov 23, 2025Объективное сравнение языковых моделей для принятия обоснованных решений: https://1c-llm-b…
  2. Nov 2, 2025👍 Бывший арт-директор одного из конкурентов 1С:Бухгалтерии рассказывает в подкасте Бирман…
  3. Oct 28, 2025🚀 AI IDE BAS – это бесплатное расширение, которое превращает VS Code, Cursor, WindSurf и…
  4. Sep 20, 2025Коллеги! Рад сообщить вам, что мы с Олегом финализировали программу онлайн-конференции 1CV…
  5. May 10, 2025Хороший обзор нейросетей для программирования на языке 1С: Каждую модель по каждой задаче…
  6. Mar 1, 20251С:Напарник - официальный ИИ для разработки под 1С EDT https://code.1c.ai
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →