При работе в программе 1С:Бухгалтерия государственного учреждения (БГУ) редакции 1.0 пользователи иногда сталкиваются с неприятной ситуацией: при попытке сформировать стандартную «Ведомость ОС» по счету 101 (или конкретно по субсчету 101.36) система выдает критическую ошибку: «Отчет не сформирован. Неверный параметр "+"». При этом числовые показатели могут частично отображаться в виде символов решетки (###), сам отчет обрывается на определенном материально ответственном лице (МОЛ), а итоговая строка в конце документа полностью отсутствует.
В этой статье мы подробно разберем техническую природу возникновения этой ошибки в Системе компоновки данных (СКД), выясним, почему отчет ведет себя подобным образом, и рассмотрим пошаговый алгоритм локализации и исправления поврежденных данных в базе 1С.
Чтобы понять суть проблемы, нам необходимо обратиться к архитектуре платформы «1С:Предприятие» и механизму работы Системы компоновки данных (СКД), на которой построены практически все отчеты в БГУ. Символ «плюс» (+) в языке запросов и выражениях СКД выполняет двойную функцию:
Ошибка выполнения операции возникает в тот момент, когда платформа пытается применить оператор + к несовместимым типам данных. Проанализируем основные технические причины этого сбоя:
[ИнвентарныйНомер] + " " + [Наименование]), а одно из этих полей у конкретного объекта базы данных имеет значение NULL или повреждено, операция вернет критическую ошибку.+ не может напрямую работать с такими полями без предварительного приведения типов с помощью функции ВЫРАЗИТЬ(... КАК СТРОКА).NULL. Сложение этого значения с текстовыми префиксами в отчете мгновенно вызывает сбой «Неверный параметр "+"».Рассмотрим характерный симптом: отчет формируется корректно до определенной даты (например, до 30.10.2019), но начиная со следующего дня (с 01.11.2019) начинает аварийно завершаться. При этом вывод данных в табличный документ останавливается на определенном материально ответственном лице (МОЛ), у которого не выводятся основные средства, а строка «Итого» в самом низу отсутствует.
Это классическое поведение СКД при возникновении необработанного исключения в процессе вывода данных:
+ с неверным параметром).Символ решетки (###) в ячейках, о котором часто упоминают пользователи, в данном случае является сопутствующим фактором: он указывает на то, что из-за аварийного завершения расчета итогов ширина колонок не успела автоматически адаптироваться под формат выводимых чисел, либо в поле суммы из-за сбоя передалось бесконечное числовое значение.
Для решения этой проблемы нам необходимо провести комплексную диагностику базы данных и устранить источник дефектных записей. Проанализируем этот процесс по шагам.
Прежде чем приступать к тестированию базы, нам нужно сузить круг поиска. Стандартная «Оборотно-сальдовая ведомость по счету» (ОСВ) построена на более простых алгоритмах выборки данных и не производит сложных конкатенаций строк в СКД. Поэтому она, скорее всего, сформируется без ошибок.
Выполним следующие действия:
101).Основные средства и Центры материальной ответственности (МОЛ/Подразделения).Выяснив, по какому материально ответственному лицу происходит сбой, проанализируем все хозяйственные операции, введенные начиная с критической даты (01.11.2019). Нам нужно найти документы, в которых фигурирует данное МОЛ:
Важное примечание: Особое внимание следует уделить именно ручным операциям (Бухгалтерским справкам). В отличие от специализированных документов, ручной ввод проводок не формирует обязательные записи в сопутствующих регистрах сведений по основным средствам, что часто приводит к рассогласованию данных и сбоям в работе Ведомости ОС.
Ведомость основных средств собирает сведения не только из бухгалтерских проводок, но и из специализированных регистров. Нам необходимо проверить их состояние. Для этого перейдем в меню Операции -> Регистры сведений (в интерфейсе обычных форм БГУ 1.0) и проанализируем следующие регистры:
МестонахождениеОСБухгалтерскийУчет — именно здесь хранится связь между инвентарным объектом, МОЛ и подразделением.СчетаБухгалтерскогоУчетаОСПервоначальныеСведенияОСБухгалтерскийУчетУстановим в этих регистрах отбор по проблемному МОЛ и дате после 01.11.2019. Изучим записи: все ли поля заполнены, нет ли пустых значений в колонках «Основное средство» или незаполненных инвентарных номеров.
Если визуальный анализ документов и регистров не помог оперативно выявить поврежденную запись, необходимо прибегнуть к автоматическому поиску и устранению ссылочной целостности через Конфигуратор 1С.
Критически важно: Перед выполнением любых административных процедур обязательно сделайте резервную копию вашей базы данных (выгрузку файла .dt)!
Выполним процедуру тестирования по шагам:
Администрирование -> Тестирование и исправление....Для файловых баз данных также крайне рекомендуется запустить внешнюю утилиту проверки физической целостности файлов базы данных chdbfl.exe, которая находится в каталоге установки платформы 1С (папка bin).
В некоторых случаях ошибка «Неверный параметр "+"» может быть вызвана локальным сбоем кэша метаданных на компьютере конкретного пользователя. Временные файлы схемы компоновки данных могут кэшироваться некорректно после обновлений конфигурации или аварийного завершения сеанса работы.
Чтобы исключить эту вероятность, выполним очистку кэша:
/ClearCache
Если вы являетесь разработчиком и хотите предотвратить падение отчета на этапе его выполнения, убедитесь, что в схеме компоновки данных или в текстах запросов используется безопасное приведение типов и защита от значений NULL.
Например, вместо небезопасного сложения строк в запросе:
// Небезопасный код, который приведет к ошибке при наличии NULL
ВЫБРАТЬ
ОсновныеСредства.Код + " " + ОсновныеСредства.НаименованиеПолное КАК ПредставлениеОС
ИЗ
Справочник.ОсновныеСредства КАК ОсновныеСредства
Следует использовать конструкцию с проверкой на пустые значения ЕСТЬNULL и ограничением длины строки ВЫРАЗИТЬ:
// Безопасный код с обработкой пустых значений и приведением типов
ВЫБРАТЬ
ЕСТЬNULL(ОсновныеСредства.Код, "") + " " + ВЫРАЗИТЬ(ЕСТЬNULL(ОсновныеСредства.НаименованиеПолное, "") КАК СТРОКА(150)) КАК ПредставлениеОС
ИЗ
Справочник.ОсновныеСредства КАК ОсновныеСредства
Применение этого несложного правила гарантирует, что даже при повреждении данных в карточке ОС отчет сформируется до конца, а пустые поля не вызовут аварийного завершения работы пользователя.
Систематическое выполнение описанных шагов позволит вам быстро локализовать источник сбоя, исправить битые ссылки в регистрах сведений 1С:БГУ и успешно сформировать Ведомость основных средств со всеми необходимыми итогами.