Как исправить ошибку «Преобразование значения к типу Булево не может быть выполнено» при рассылке расчетных листков в 1С:ЗУП 3.1?

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

В процессе работы с конфигурацией 1С:Зарплата и управление персоналом 3.1 пользователи часто сталкиваются со специфической ошибкой при попытке автоматической рассылки расчетных листков. Проблема проявляется внезапно: отчеты, которые ранее успешно уходили сотрудникам, перестают формироваться, а в журнале регистрации или в окне сообщений появляется критическая ошибка. Текст ошибки обычно ссылается на общий модуль ВариантыОтчетов.Модуль(1736) и метод СкомпоноватьРезультат, указывая на невозможность преобразования значения к типу Булево.

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

Разберем причину возникновения ошибки на техническом уровне

Проанализируем ситуацию: почему система выдает ошибку именно при рассылке «каждому получателю свой отчет», в то время как обычное формирование отчета в пользовательском режиме проходит без нареканий? Ошибка кроется в механизмах динамической модификации настроек компоновки данных.

Когда вы запускаете рассылку, система не просто копирует настройки отчета, а пытается на лету внедрить в них отборы по конкретному физическому лицу или сотруднику. В общем модуле ЗарплатаКадрыОтчеты происходит проверка структуры параметров. Если в настройках отчета (или варианта отчета) какой-то флаг (например, Выводить справочную информацию или Группировать по подразделениям) был изменен пользователем, а затем возвращен в исходное состояние, система может записать в хранилище значение Неопределено или пустую ссылку вместо ожидаемого логического Истина или Ложь.

При выполнении метода ОтчетОбъект.СкомпоноватьРезультат платформа пытается сопоставить эти значения, и когда код ожидает получить Булево для выполнения логического условия, но получает некорректный тип, происходит аварийное завершение процесса.

Решение 1: Метод циклического переключения настроек (Быстрый способ)

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

  1. Перейдем в раздел Администрирование — Рассылки отчетов.
  2. Откроем проблемную настройку рассылки для расчетных листков.
  3. В таблице настроек параметров отчета найдем все поля, где установлено значение Да.
  4. Переставим эти значения на Нет, сохраним изменения в рассылке.
  5. Попробуем выполнить тестовую отправку любому сотруднику. На этом этапе система перезаписывает структуру параметров.
  6. Если письмо ушло успешно, вернемся в настройки рассылки.
  7. Снова установим значения в Да для необходимых параметров, однако важный момент: параметр Выводить справочную информацию лучше оставить в значении Нет. Именно он чаще всего вызывает конфликты типов при компоновке.
  8. Сохраним изменения и запустим полную рассылку.

Решение 2: Полная очистка настроек пользователя

Если манипуляции с флажками не помогли, проанализируем состояние системного хранилища настроек. Часто «битые» записи кэшируются для конкретного пользователя, от имени которого запускается регламентное задание рассылки. Выполним глубокую очистку:

  1. Зайдем в раздел Администрирование — Настройки пользователей и прав.
  2. Выберем пункт Очистка настроек.
  3. В открывшемся окне выберем пользователя (автора рассылки или системную учетную запись для фоновых заданий).
  4. Найдем в списке все настройки, связанные с отчетом Расчетный листок и объектом Рассылка отчетов.
  5. Удалим эти настройки. Это действие заставит систему при следующем запуске использовать абсолютно чистые стандартные настройки из конфигурации, что исключит влияние некорректных типов данных.

Решение 3: Создание нового варианта отчета через копирование

Иногда повреждается сама структура варианта отчета, выбранного в рассылке. Посмотрим на пример того, как можно обойти эту проблему через пересоздание объекта:

  1. Откроем отчет Расчетный листок через раздел Зарплата — Отчеты по зарплате.
  2. Нажмем кнопку Настройки, затем выберем Расширенный вид.
  3. Не внося никаких фактических изменений, нажмем Изменить вариант.
  4. В окне изменения варианта просто нажмем Завершить редактирование.
  5. Выберем Варианты отчета — Сохранить как... и создадим новый пользовательский вариант (например, «Расчетный листок для рассылки»).
  6. Зайдем в настройки рассылки отчетов и выберем этот новый вариант вместо стандартного.

Этот метод принудительно инициирует создание новой записи в таблицах базы данных с актуальными идентификаторами типов, что устраняет ошибку Преобразование к типу Булево.

Решение 4: Проверка серверного кэша и расширений

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

Очистка серверного кэша:

Необходимо остановить службу 1C:Enterprise Server Administration и очистить содержимое папок в каталоге профиля пользователя, под которым запущена служба (обычно это папки внутри Local Settings\Application Data\1C\1cv8 на сервере). Это удалит скомпилированные модули, в которых может «зависнуть» старая логика обработки параметров.

Анализ расширений конфигурации:

Даже если ваша база считается типовой, в ней могут быть активны расширения. Проанализируем их влияние. Расширения могут перехватывать работу модуля ЗарплатаКадрыОтчеты или добавлять свои поля в схему компоновки расчетного листка. Если тип добавляемого поля не определен явно, это вызовет ошибку при попытке обращения к нему в коде. Попробуйте временно отключить расширения и выполнить рассылку в тестовом режиме.

Технический вывод для разработчиков

Для тех, кто хочет понять, как это выглядит в коде, приведем пример участка, где обычно происходит сбой. В модуле ВариантыОтчетов при вызове:


// Вызов стандартного метода компоновки
ОтчетОбъект.СкомпоноватьРезультат(Результат.ТабличныйДокумент, Результат.Расшифровка);

Система переходит в процедуру ПриКомпоновкеРезультата модуля объекта отчета. Там выполняется код, аналогичный следующему:


Если ПараметрыДанных.ВыводитьСправочнуюИнформацию.Значение Тогда
    // Если здесь вместо Истина/Ложь пришло Неопределено, 
    // возникнет ошибка преобразования к Булево
КонецЕсли;

Именно поэтому ручное переключение настроек в Нет и обратно в Да «лечит» систему — оно инициализирует корректное булевское значение в структуре настроек компоновки данных (DataCompositionSettings).

Используя данные методы, вы сможете быстро восстановить работоспособность рассылки расчетных листков и избежать претензий со стороны сотрудников и контролирующих органов.

← На главную