Разобрать режим отправки отдельно на клиенте и сервере

Учебные задачи

Авто, НеОтправлять, Отправлять и СпрашиватьПользователя — четыре значения, не простой флаг Да/Нет. Авто требует общих настроек, а серверная настройка имеет отдельное назначение.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Учебная копия базы 8.5.1.1343: серверный общий модуль УчебныеЗадачи, процедура ВыполнитьПример() Экспорт. Каждый код без директив вставляйте в тело отдельно.

  2. Текущий учебный пользователь должен иметь Администрирование данных для чтения общих настроек. Не обходите отказ в доступе привилегированным режимом.

  3. ПолучитьНастройкиПользователя вызывается без имени: исследуется только текущий пользователь, не произвольный сотрудник.

  4. Задания только читают. Не вызывайте УстановитьНастройкиПользователя/УстановитьОбщиеНастройки, не имитируйте падение 1С и не отправляйте отчёт во внешние сервисы.

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

Настройки = ОбработкаОшибок.ПолучитьНастройкиПользователя();
Общие = ОбработкаОшибок.ПолучитьОбщиеНастройки();
Сообщить("Пользователь/клиент: " + Строка(Настройки.ОтправлятьОтчетНаКлиенте));
Сообщить("Общие/клиент: " + Строка(Общие.ОтправлятьОтчетНаКлиенте));
Сообщить("Пользователь/сервер: " + Строка(Настройки.ОтправлятьОтчетНаСервере));
Сообщить("Общие/сервер: " + Строка(Общие.ОтправлятьОтчетНаСервере));
РежимКлиента = Настройки.ОтправлятьОтчетНаКлиенте;
Если РежимКлиента = РежимОтправкиИнформацииОбОшибке.Авто Тогда
    Сообщить("Авто: пользовательский режим не трактуем как самостоятельное согласие на отправку");
ИначеЕсли РежимКлиента = РежимОтправкиИнформацииОбОшибке.НеОтправлять Тогда
    Сообщить("Для пользователя выбран запрет отправки обычного клиентского отчёта");
ИначеЕсли РежимКлиента = РежимОтправкиИнформацииОбОшибке.СпрашиватьПользователя Тогда
    Сообщить("Нужен ответ пользователя; этот диагностический код его не получает");
ИначеЕсли РежимКлиента = РежимОтправкиИнформацииОбОшибке.Отправлять Тогда
    Сообщить("Режим предусматривает отправку; адрес и фактический результат этим кодом не проверены");
КонецЕсли;

Разбор по шагам

  1. Печатаем только четыре перечислимых режима: пользователь/общие × клиент/сервер.

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

  3. Не превращаем Авто или СпрашиватьПользователя в Истина и не подменяем пользовательское согласие.

  4. Серверный отчёт относится, в частности, к фоновым заданиям/HTTP-сервисам без клиентской обработки; не переносим туда результат клиентской ветки.

Как проверить результат

  1. Видны четыре исходных режима и ровно одно пояснение текущего клиентского значения.

  2. Никакого окна согласия, HTTP-вызова или отправки отчёта этот код не создаёт.

Ожидаемый результат

Разделены политика клиента, политика сервера и реальный факт отправки.

На что обратить внимание

  1. Правило Авто нужно анализировать вместе с общими настройками, а не считать универсальным разрешением.

  2. Даже Отправлять не является подтверждением отправленного/принятого отчёта.

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

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.