При переходе с устаревших редакций программ (например, с 1С:Комплексная автоматизация 2.4 на 2.5 или с ERP 2.4 на 2.5) пользователи часто сталкиваются с ситуацией, когда в документах СчетФактураВыданный пропадают галочки в поле «Выставлен» и очищаются соответствующие даты. Это может стать серьезной проблемой при подготовке отчетности по НДС и ведении журнала учета счетов-фактур. В этой статье мы разберем, почему стандартные методы не всегда срабатывают и как корректно решить задачу программно или с помощью типовых инструментов.
Многие начинающие разработчики пытаются обратиться к полю Выставлен напрямую через объект документа, используя код вроде ДокОбъект.Выставлен = Истина;. Однако при выполнении такого кода система выдает ошибку: «Поле объекта не обнаружено "Выставлен"». Проанализируем ситуацию подробнее.
Дело в том, что в современных конфигурациях на платформе 1С:Предприятие 8.3 (таких как КА 2.5, ERP 2.5, УТ 11.5) реквизита Выставлен в самой таблице базы данных для документа Счет-фактура выданный не существует. Это так называемый реквизит формы. Логика программы работает следующим образом:
ДатаВыставления заполнен (не равен пустой дате), то галочка «Выставлен» отображается как установленная.Выставлен, а записать корректное значение в поле ДатаВыставления.Рассмотрим, как написать обработку для массового заполнения этих данных. Мы будем использовать дату самого документа в качестве даты выставления, так как при миграции данных это наиболее логичный вариант. Разберем правильный алгоритм работы с объектом.
Посмотрим на пример кода, который учитывает проверку на заполненность, чтобы не перезаписывать документы, в которых дата уже установлена:
Выборка = Документы.СчетФактураВыданный.Выбрать();
Пока Выборка.Следующий() Цикл
// Проверяем, заполнена ли дата выставления.
// Если дата пустая — значит флаг "Выставлен" на форме будет снят.
Если Не ЗначениеЗаполнено(Выборка.ДатаВыставления) Тогда
Попытка
ДокОбъект = Выборка.ПолучитьОбъект();
// Устанавливаем дату выставления равной дате самого счета-фактуры
ДокОбъект.ДатаВыставления = ДокОбъект.Date;
// Используем режим записи "Запись", чтобы не инициировать
// полные проверки проведения, если это не требуется.
ДокОбъект.Записать(РежимЗаписиДокумента.Запись);
Сообщить("Обработан документ: " + Выборка.Ссылка);
Исключение
Сообщить("Ошибка при записи документа " + Выборка.Ссылка + ": " + ОписаниеОшибки());
КонецПопытки;
КонецЕсли;
КонецЦикла;
Важный нюанс: Обратите внимание на использование метода ЗначениеЗаполнено(). В 1С пустая дата не равна Null, она имеет специфическое значение '00010101'. Если мы просто запишем ДатаВыставления = ТекущаяДата(), как советовали в некоторых сообщениях форума, это может исказить отчетность за прошлые периоды. Правильнее брать Дата (дата самого документа).
Если у вас нет опыта программирования, задачу можно решить штатным инструментом 1С, который доступен администратору. Однако здесь есть «подводный камень»: поле ДатаВыставления часто является скрытым для этой обработки.
Разберем по шагам, как настроить групповую обработку:
Счет-фактура выданный.ДатаВыставления).Проанализируем, почему заполнение этого поля критически важно. Согласно Постановлению №1137, дата выставления счета-фактуры фиксируется в «Журнале учета полученных и выставленных счетов-фактур». Особенно это актуально для организаций, работающих по договорам комиссии или агентским схемам.
Связь с ЭДО (Электронным документооборотом):
Если вы используете встроенный сервис 1С-ЭДО, поле ДатаВыставления заполняется автоматически в момент получения подтверждения от оператора ЭДО. Внимание: ручное или программное изменение этой даты в документах, которые уже отправлены через ЭДО, крайне не рекомендуется. Это может привести к расхождениям между данными в вашей базе и данными в транспортном контейнере оператора, что вызовет вопросы у налоговой инспекции при проверке декларации по НДС.
В процессе обсуждения на форумах часто упоминается реквизит Перевыставлен. Рассмотрим, можно ли его использовать. Ответ — нет, если речь идет об обычной реализации. Реквизит Перевыставлен (Булево) используется исключительно в схемах комиссионной торговли, когда комиссионер перевыставляет счет-фактуру от имени комитента. Установка этого флага в обычных документах приведет к некорректному формированию движений по регистрам НДС.
Подведем итоги нашего исследования:
ДатаВыставления. Именно его нужно заполнять.Попытка...Исключение и режим записи Запись, чтобы избежать блокировок и лишних проверок.Используя приведенный выше программный код или настроенную групповую обработку, вы сможете быстро восстановить работоспособность системы после миграции с версии 2.4 и обеспечить корректное отображение данных для бухгалтерии.