При работе в программах «1С:Бухгалтерия 8.3» или «1С:Зарплата и управление персоналом 3.1» пользователи часто сталкиваются с ситуацией, когда при загрузке банковской выписки или попытке провести документ Списание с расчетного счета (особенно с видом операции «Перечисление заработной платы») программа выдает критическую ошибку: «Преобразование значения к типу Дата не может быть выполнено». Проблема блокирует проведение документа и может казаться программным сбоем, требующим вмешательства программиста. Однако в большинстве случаев причина кроется в настройках нормативно-справочной информации.
Рассмотрим подробнее, почему возникает эта ошибка, как проанализировать стек вызовов и какими способами можно восстановить работоспособность системы без изменения конфигурации.
Для начала разберем техническую сторону вопроса. Исходя из текста ошибки, представленного в отладчике, сбой происходит в общем модуле УчетНДФЛ. Проанализируем цепочку вызовов:
{ОбщийМодуль.УчетНДФЛ.Модуль(14858)}: Запрос.УстановитьПараметр("ДатаОперации", КонецДня(ДатаБлижайшегоПлатежа));
{ОбщийМодуль.УчетНДФЛ.Модуль(7485)}: СтрокиРаспределения = РаспределитьПеречисленныйНалогПоФизическимЛицам(...);
Проблема локализована в функции КонецДня(ДатаБлижайшегоПлатежа). В языке 1С функция КонецДня ожидает на вход значение типа Дата. Если переменная ДатаБлижайшегоПлатежа оказывается пустой (имеет значение Неопределено или NULL), система не может выполнить преобразование и «падает» с ошибкой.
Выясним причину, по которой ДатаБлижайшегоПлатежа становится пустой. В подсистеме учета НДФЛ программа автоматически рассчитывает крайний срок перечисления налога в соответствии со ст. 226 НК РФ. Для этого алгоритм ищет ближайший рабочий день, используя данные Производственного календаря. Если календарь на текущий или следующий год (в зависимости от даты операции) не заполнен, функция поиска даты возвращает пустое значение, что и приводит к ошибке.
Это самый частый случай решения проблемы, особенно если ошибка начала проявляться в конце текущего или начале нового календарного года. Выполним следующие действия по шагам:
После этого попробуем снова провести документ Списание с расчетного счета. В большинстве случаев ошибка исчезнет, так как переменная ДатаБлижайшегоПлатежа получит корректное значение из заполненного справочника.
Иногда простого нажатия кнопки «Заполнить по умолчанию» недостаточно, так как в программе могут отсутствовать актуальные данные о переносах праздничных дней, утвержденных Правительством РФ. Чтобы календарь заполнился правильно, выполним проверку обновлений:
Проанализируем настройки интернет-поддержки. Если у вас подключен сервис 1С:ИТС, программа может обновлять классификаторы (в том числе производственный календарь) в фоновом режиме. Если автоматическое обновление отключено, выполним ручную загрузку:
Если в вашей информационной базе ведется учет по нескольким организациям, зарегистрированным в разных регионах (например, Татарстан, Башкортостан), программа может использовать региональные производственные календари, учитывающие местные праздники.
Посмотрим, какой календарь указан в настройках конкретной организации или в справочнике Регистрации в налоговом органе. Если для организации назначен региональный календарь, его также необходимо заполнить на соответствующий год. В противном случае алгоритм распределения НДФЛ снова столкнется с отсутствием данных о рабочих днях и выдаст ошибку преобразования типа Дата.
Разберем ситуацию с точки зрения логики программы. При проведении документа выплаты зарплаты (или списания с расчетного счета) 1С выполняет распределение фактически уплаченного налога по документам-основаниям и физическим лицам. Для этого вызывается процедура:
УчетНДФЛ.СформироватьПеречисленныйНалогПоФизическимЛицам
Внутри этой процедуры программа пытается определить «срок уплаты». Если срок выпадает на выходной, он должен быть перенесен на ближайший рабочий день. Именно в этот момент происходит обращение к таблице производственного календаря. Отсутствие записи в этой таблице для искомой даты делает невозможным дальнейшие вычисления КонецДня, так как функция не умеет работать с «пустотой».
Чтобы не сталкиваться с подобными остановками работы в будущем, рекомендуем придерживаться следующих правил:
Таким образом, мы выяснили, что ошибка «Преобразование значения к типу Дата не может быть выполнено» в контексте проведения банковских документов является следствием неполноты справочной информации. Исправление производственного календаря — это быстрый и эффективный способ решения проблемы, не требующий правки программного кода или привлечения дорогостоящих специалистов.