Как исправить ошибку Too many actual parameters в СтрШаблон при синхронизации 1С:Документооборот 2.2?

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

При настройке синхронизации между мобильным приложением 1С:Документооборот 2.2 и серверной базой (например, версии 2.1.21.12) на платформе 8.3.16 специалисты часто сталкиваются с критической ошибкой Error calling context method (СтрШаблон). Проблема сопровождается сообщением Too many actual parameters (Слишком много фактических параметров) и прерывает процесс обмена данными. В данной статье мы подробно разберем причины возникновения этой ошибки, проанализируем взаимосвязь локализации устройства с работой кода и рассмотрим шаги по настройке веб-сервера IIS для стабильной работы.

Разбор причины ошибки в функции СтрШаблон

Для начала проанализируем ситуацию: ошибка возникает в общих модулях, отвечающих за обмен (например, ОбменОбработкаСервер). Функция СтрШаблон (или StrTemplate) предназначена для подстановки параметров в строку-макет. Ошибка Too many actual parameters означает, что в функцию передается больше аргументов, чем в строке-шаблоне предусмотрено маркеров подстановки (таких как %1, %2 и т.д.).

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

Решение №1: Изменение языковых настроек устройства

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

  1. При запуске мобильное приложение определяет System Locale устройства.
  2. Если выбран русский язык, 1С обращается к русскоязычным ресурсам строк, которые в конфигурации 1С:ДО обычно отлажены лучше.
  3. Количество параметров в функции СтрШаблон начинает соответствовать количеству маркеров % в строке.

Если вам необходимо оставить английский язык в системе, попробуйте зайти в настройки самого приложения (в меню настроек телефона) и принудительно выставить для приложения 1С:Документооборот русский язык интерфейса.

Решение №2: Корректировка серверного кода через расширение

Если изменение языка невозможно или неприемлемо, проанализируем возможность исправления кода на стороне основной базы. Поскольку ошибка Too many actual parameters происходит в серверном контексте при вызове из мобильного приложения, мы можем вмешаться в процесс формирования строки.

Рассмотрим пример того, как может выглядеть проблемный участок кода в модуле ОбменОбработкаСервер:


// Пример проблемного вызова
ТекстОшибки = СтрШаблон(НСтр("ru='%1 ошибка %2';en='Error %1'"), Параметр1, Параметр2);

В данном примере для английского языка (en) указан только один параметр %1, а передается два. Для исправления ситуации следует использовать безопасную обертку или привести количество параметров к соответствию. Мы можем создать расширение и перехватить вызов, исправив строку макета:


&Вместо("ИмяПроблемнойФункции")
Функция Мой_ИмяПроблемнойФункции(Знач Шаблон, Параметр1, Параметр2)
    // Гарантируем наличие второго параметра в английской строке
    СтрокаШаблона = НСтр("ru='... %1 ... %2';en='... %1 ... %2'");
    Возврат СтрШаблон(СтрокаШаблона, Параметр1, Параметр2);
КонецФункции

Решение №3: Настройка веб-сервера IIS

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

Проанализируем шаги для правильной настройки IIS:

  1. Откройте Диспетчер служб IIS.
  2. Выберите вашу публикацию базы 1С:Документооборот.
  3. Перейдите в раздел Проверка подлинности (Authentication).
  4. Обязательно включите Анонимную проверку подлинности (Anonymous Authentication).
  5. Если используется доменная авторизация (Windows Authentication), убедитесь, что она включена параллельно, но мобильные устройства должны подключаться через анонимный вход с последующим вводом логина/пароля пользователя 1С в самом приложении.

Важный момент: На устройствах Apple (iPhone/iPad) приложение часто отказывается работать, если на IIS включена только проверка подлинности Windows. Это связано с тем, что мобильное приложение не всегда корректно передает NTLM-заголовки при обмене через веб-сервисы.

Различие между Мобильным приложением и Мобильным клиентом

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

Если синхронизация в мобильном приложении версии 2.2 продолжает выдавать ошибки, рассмотрите возможность перехода на Мобильный клиент. Он более стабилен в части отображения данных, так как полностью использует логику основной конфигурации без промежуточного слоя обмена. Однако помните, что МК требует постоянного интернет-соединения.

Дополнительные рекомендации по обновлению

Рассмотрим влияние версии платформы. В релизах ниже 8.3.18 работа функции СтрШаблон в мобильных сервисах имела ряд ограничений. Если вы используете версию 8.3.16.1148, как автор вопроса, рекомендуется выполнить следующие действия:

  1. Обновить серверную платформу до актуального стабильного релиза (например, ветки 8.3.22 или выше).
  2. Проверить наличие расширений в основной базе. Иногда сторонние расширения могут изменять структуру данных, которые передаются в мобильное приложение, что и вызывает несоответствие параметров в процедурах обмена.
  3. Очистить кэш мобильного приложения после внесения правок на сервере. Для этого в настройках приложения на телефоне выберите пункт "Перезапустить с очисткой кэша" (если доступно) или просто переустановите приложение.

Подводя итог, можно сказать, что ошибка Too many actual parameters — это классический пример конфликта локализаций в коде обмена 1С. Использование русского языка интерфейса и правильная настройка анонимного доступа на IIS позволяют решить проблему в большинстве случаев без глубокой переработки конфигурации.

← На главную