Как настроить соответствие номеров Счета-фактуры и документа Приобретения в 1С:Конвертация данных 2.1

Программист 1С:ERP Управление предприятием Налоговый учет IT и автоматизация бизнеса
← На главную

При переносе данных из конфигурации «1С:Бухгалтерия предприятия 3.0» в «1С:ERP Управление предприятием 2.4» часто возникает задача синхронизации нумерации. Типовой сценарий предполагает, что исходящая Реализация товаров и услуг превращается во входящее Приобретение товаров и услуг. Одной из сложностей становится требование бизнеса или учетной политики, чтобы номер создаваемого Счета-фактуры полученного соответствовал номеру документа-основания (самого Приобретения).

В этой статье мы подробно разберем, как реализовать такую логику в «1С:Конвертация данных 2.1», какие обработчики использовать и на что обратить внимание при работе со структурой объектов ERP.

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

Прежде чем приступать к программному коду, проанализируем методологию учета. Важно понимать разницу между исходящими и входящими документами:

  1. Счет-фактура выданный: Внутренний номер документа в системе обычно совпадает с номером реализации. Это логично, так как мы сами являемся эмитентами документа.
  2. Счет-фактура полученный: В ERP 2.4 у этого документа есть два ключевых поля для номера: внутренний системный номер и НомерВходящегоДокумента (номер, присвоенный поставщиком).

Если ваша задача — сделать так, чтобы внутренний номер СФ в ERP совпадал с номером документа Приобретение товаров и услуг, нам потребуется вмешательство в процесс загрузки. Рассмотрим, как это сделать пошагово.

Способ 1. Использование обработчика «После загрузки» в ПКО

Наиболее надежный метод — установка номера после того, как документ-основание уже загружен и записан в базу данных. В КД 2.1 объект Счет-фактура обычно загружается позже своего основания, если в правилах настроены соответствующие ссылки. Мы можем обратиться к реквизитам основания напрямую через объект СФ.

В ПКО СчетФактураПолученный, в событии «После загрузки», пропишем следующий код:


Если ЗначениеЗаполнено(Объект.ДокументОснование) Тогда
    Объект.Номер = Объект.ДокументОснование.Номер;
    // Если нужно убрать префиксы или изменить формат, 
    // здесь можно применить функции работы со строками
КонецЕсли;

Проанализируем ситуацию: если в ERP включена автоматическая нумерация, при записи объект может попытаться получить новый номер. Чтобы форсировать использование именно номера основания, убедитесь, что в ПКС Номер не стоит флаг «Поиск», а само правило ПКС может быть даже отключено, так как мы назначаем номер программно.

Способ 2. Учет структуры данных ERP 2.4 (Табличные части)

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


Если Объект.ДокументыОснования.Количество() > 0 Тогда
    // Берем номер из первого документа в списке оснований
    ПервоеОснование = Объект.ДокументыОснования[0].ДокументОснование;
    Если ЗначениеЗаполнено(ПервоеОснование) Тогда
        Объект.Номер = ПервоеОснование.Номер;
    КонецЕсли;
КонецЕсли;

Этот подход более универсален для конфигураций на базе 1С:ERP и 1С:КА 2.x, так как он обращается к актуальной структуре метаданных.

Способ 3. Использование коллекции «ПараметрыОбъекта»

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

В ПКО документа Приобретение в обработчике «После загрузки» мы можем сохранить номер в параметры, если логика обмена подразумевает создание СФ в этом же контексте. Однако в КД 2.1 стандартным подходом является получение номера непосредственно из ссылки на основание в ПКО Счета-фактуры.

Работа с префиксами и длиной номера

При программной установке номера Объект.Номер = ... часто возникают ошибки уникальности. Проанализируем причины:

  1. Несоответствие длины: Если номер Приобретения длиннее, чем максимально допустимый номер в Счете-фактуре, произойдет обрезание строки.
  2. Конфликт префиксов: Если вы переносите номер «как есть» из БП 3.0 (с её префиксами), он может конфликтовать с текущими номерами в ERP.

Для корректной работы с префиксами организации рекомендуем использовать встроенный механизм:


// Пример установки номера с учетом префикса организации приемника
ПрефиксОрг = "";
Если Объект.Организация.Префикс <> Неопределено Тогда
    ПрефиксОрг = Объект.Организация.Префикс;
КонецЕсли;

// Устанавливаем новый номер по правилам системы, а затем заменяем значимую часть
Объект.УстановитьНовыйНомер(ПрефиксОрг);

Синхронизация даты документа

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

Объект.Дата = Объект.ДокументОснование.Дата;

Важный момент: Если вы меняете номер или дату программно в событии «После загрузки», обязательно убедитесь, что в ПКО не установлены настройки, запрещающие перезапись существующих объектов, иначе при повторной выгрузке изменения не применятся.

Заключение

Мы рассмотрели основные способы синхронизации номеров документов при конвертации данных. Подведем итог: для Счетов-фактур полученных в ERP 2.4 наиболее правильным решением будет использование обработчика «После загрузки» с обращением к табличной части ДокументыОснования или реквизиту ДокументОснование. Это гарантирует, что связь между документами сохранится, а нумерация будет соответствовать требованиям пользователя.

← На главную