Как в 1С:Розница 3 при загрузке УПД по ЭДО установить дату документа равной дате входящего документа?

Программист 1С v8.3 (Управляемые формы) 1С:Розница Бухгалтерский учет Торговля и дистрибуция
← На главную

При получении электронных документов (УПД) в конфигурации «1С:Розница 3» пользователи часто сталкиваются с ситуацией, когда дата создаваемого учетного документа поступления устанавливается текущим моментом времени (моментом создания документа в базе), тогда как входящая дата документа от поставщика фиксируется только в соответствующих полях входящего номера и даты. Это приводит к сложностям при последующей синхронизации с бухгалтерской программой: при переносе данных в «1С:Бухгалтерию предприятия» записи книги покупок могут регистрироваться в другом налоговом периоде.

Кроме того, при обработке УПД со статусом 1 в базе всегда формируются два раздельных документа: Приходная накладная и Счет-фактура полученный, а единый флаг «УПД» не активируется. Разберем архитектурные причины такого поведения программы и рассмотрим способы решения возникшей задачи.

Рассмотрим подробнее архитектурные особенности системы и проанализируем логику типового функционала.

Почему 1С:Розница 3 разделяет документы и ставит текущую дату

Конфигурация «1С:Розница 3» построена на единой технологической платформе с конфигурацией «1С:Управление нашей фирмой» (УНФ). В этой архитектуре заложены строгие правила учета:

  1. Разделение контуров учета: Движение запасов по складам и взаиморасчеты с поставщиками формируются документом Приходная накладная, а учет НДС вынесен в отдельный документ Счет-фактура полученный. Визуальный переключатель «УПД», объединяющий два документа в единую интерфейсную сущность, существует в «1С:Бухгалтерии предприятия», но отсутствует в «1С:Рознице 3». Отключить создание двух связанных документов стандартными настройками невозможно.
  2. Отражение факта хозяйственной жизни: Дата проведения документа в складской системе отражает реальный момент оприходования товара на баланс. Если устанавливать дату документа задним числом по дате поставщика, возникает серьезный риск нарушения партионного учета (FIFO) и появления отрицательных остатков, если поступивший товар уже был продан на кассе до момента фактического подтверждения электронного пакета.

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

Решение 1. Доработка логики заполнения через расширение конфигурации

Выясним причину подстановки дат на программном уровне. За заполнение реквизитов учетных документов при разборе пакетов Библиотеки электронных документов (БЭД) отвечает общий модуль УправлениеНебольшойФирмойЭлектронныеДокументыСервер. Именно в процедурах создания и заполнения накладных и счетов-фактур реквизиту Дата присваивается системное время сеанса.

Для переопределения этого поведения создадим расширение конфигурации со следующими шагами:

  1. Подключим в расширение общий модуль УправлениеНебольшойФирмойЭлектронныеДокументыСервер.
  2. Переопределим процедуры ЗаполнитьДокументПоступленияТоваровУслуг и ЗаполнитьДокументСчетФактураПолученный с помощью аннотации &ИзменениеИКонтроль или перехватом логики.
  3. Добавим переопределение реквизита Дата значением из реквизита ДатаВходящегоДокумента.

Посмотрим на пример кода, внедряемого в процедуру заполнения накладной:


// Приравниваем дату проведения документа к входящей дате первичного документа от контрагента
Если ЗначениеЗаполнено(ДокументОбъект.ДатаВходящегоДокумента) Тогда
    ДокументОбъект.Дата = ДокументОбъект.ДатаВходящегоДокумента;
КонецЕсли;

Аналогичная вставка требуется и для процедуры заполнения счета-фактуры:


Если ЗначениеЗаполнено(ДокументОбъект.ДатаВходящегоДокумента) Тогда
    ДокументОбъект.Дата = ДокументОбъект.ДатаВходящегоДокумента;
КонецЕсли;

Важное предостережение при доработке кода: Обязательно предусмотрите проверку допустимого диапазона дат. Если контрагент пришлет закрывающий документ за давний период (например, более одного месяца назад), попытка записать документ в закрытый период натолкнется на механизм «Даты запрета изменения данных» (БСП). В этом случае процесс загрузки упадет с ошибкой проведения. Рекомендуется дополнить код проверкой давности:


Если ЗначениеЗаполнено(ДокументОбъект.ДатаВходящегоДокумента) Тогда
    // Проверяем, что дата входящего документа не старше 30 дней от текущей даты
    Если (ТекущаяДатаСеанса() - ДокументОбъект.ДатаВходящегоДокумента) <= (30 * 86400) Тогда
        ДокументОбъект.Дата = ДокументОбъект.ДатаВходящегоДокумента;
    Иначе
        // При превышении лимита сохраняем текущую дату во избежание сбоя даты запрета
        ДокументОбъект.Дата = ТекущаяДатаСеанса();
    КонецЕсли;
КонецЕсли;

Решение 2. Корректировка дат на стороне «1С:Бухгалтерии предприятия»

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

  1. Корректировка в правилах конвертации обмена (EnterpriseData): В настройках синхронизации между «Розницей» и «Бухгалтерией» можно настроить сопоставление так, чтобы при загрузке документа в бухгалтерскую базу поле Дата документа заполнялось значением поля ДатаВходящегоДокумента. В этом случае розничный склад сохраняет реальную хронологию движения товаров, а регламентированный учет получает даты поставщика.
  2. Использование регламентных документов книги покупок: В счете-фактуре полученном в «1С:Бухгалтерии» можно не ставить признак «Отразить вычет НДС в книге покупок датой получения». В таком случае НДС будет принят к вычету с помощью регламентного документа Формирование записей книги покупок в том налоговом периоде, к которому фактически относится входящий документ (согласно положениям п. 1.1 ст. 172 НК РФ).

Решение 3. Использование типовой обработки группового изменения

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

  1. Отберем документы Приходная накладная и Счет-фактура полученный за завершающийся месяц, поступившие в начале следующего.
  2. Установим реквизит Дата равным дате из поля Дата входящего документа.
  3. Выполним проведение документов и запустим штатную процедуру обмена.

Таким образом, для автоматизации процесса наиболее надежным способом является точечное расширение процедур общего модуля УправлениеНебольшойФирмойЭлектронныеДокументыСервер с обязательным контролем предельного срока давности входящей даты.

← На главную