При переносе данных из конфигурации «1С:Бухгалтерия предприятия 3.0» в «1С:ERP Управление предприятием 2.4» часто возникает задача синхронизации нумерации. Типовой сценарий предполагает, что исходящая Реализация товаров и услуг превращается во входящее Приобретение товаров и услуг. Одной из сложностей становится требование бизнеса или учетной политики, чтобы номер создаваемого Счета-фактуры полученного соответствовал номеру документа-основания (самого Приобретения).
В этой статье мы подробно разберем, как реализовать такую логику в «1С:Конвертация данных 2.1», какие обработчики использовать и на что обратить внимание при работе со структурой объектов ERP.
Прежде чем приступать к программному коду, проанализируем методологию учета. Важно понимать разницу между исходящими и входящими документами:
НомерВходящегоДокумента (номер, присвоенный поставщиком).Если ваша задача — сделать так, чтобы внутренний номер СФ в ERP совпадал с номером документа Приобретение товаров и услуг, нам потребуется вмешательство в процесс загрузки. Рассмотрим, как это сделать пошагово.
Наиболее надежный метод — установка номера после того, как документ-основание уже загружен и записан в базу данных. В КД 2.1 объект Счет-фактура обычно загружается позже своего основания, если в правилах настроены соответствующие ссылки. Мы можем обратиться к реквизитам основания напрямую через объект СФ.
В ПКО СчетФактураПолученный, в событии «После загрузки», пропишем следующий код:
Если ЗначениеЗаполнено(Объект.ДокументОснование) Тогда
Объект.Номер = Объект.ДокументОснование.Номер;
// Если нужно убрать префиксы или изменить формат,
// здесь можно применить функции работы со строками
КонецЕсли;
Проанализируем ситуацию: если в ERP включена автоматическая нумерация, при записи объект может попытаться получить новый номер. Чтобы форсировать использование именно номера основания, убедитесь, что в ПКС Номер не стоит флаг «Поиск», а само правило ПКС может быть даже отключено, так как мы назначаем номер программно.
В современных версиях ERP один Счет-фактура полученный может быть оформлен на основании нескольких документов приобретения. В этом случае данные хранятся в табличной части ДокументыОснования. Разберем пример кода, который учитывает эту особенность:
Если Объект.ДокументыОснования.Количество() > 0 Тогда
// Берем номер из первого документа в списке оснований
ПервоеОснование = Объект.ДокументыОснования[0].ДокументОснование;
Если ЗначениеЗаполнено(ПервоеОснование) Тогда
Объект.Номер = ПервоеОснование.Номер;
КонецЕсли;
КонецЕсли;
Этот подход более универсален для конфигураций на базе 1С:ERP и 1С:КА 2.x, так как он обращается к актуальной структуре метаданных.
Бывают случаи, когда номер документа Приобретение товаров и услуг генерируется динамически при загрузке (например, из-за смены префикса базы-приемника), и мы хотим передать этот «свежий» номер в связанный Счет-фактуру. Для этого удобно использовать коллекцию ПараметрыОбъекта.
В ПКО документа Приобретение в обработчике «После загрузки» мы можем сохранить номер в параметры, если логика обмена подразумевает создание СФ в этом же контексте. Однако в КД 2.1 стандартным подходом является получение номера непосредственно из ссылки на основание в ПКО Счета-фактуры.
При программной установке номера Объект.Номер = ... часто возникают ошибки уникальности. Проанализируем причины:
Приобретения длиннее, чем максимально допустимый номер в Счете-фактуре, произойдет обрезание строки.Для корректной работы с префиксами организации рекомендуем использовать встроенный механизм:
// Пример установки номера с учетом префикса организации приемника
ПрефиксОрг = "";
Если Объект.Организация.Префикс <> Неопределено Тогда
ПрефиксОрг = Объект.Организация.Префикс;
КонецЕсли;
// Устанавливаем новый номер по правилам системы, а затем заменяем значимую часть
Объект.УстановитьНовыйНомер(ПрефиксОрг);
Помимо номера, критически важно следить за датой. Счет-фактура полученный по логике учета не может быть создан раньше, чем документ-основание. Если при загрузке Приобретения его дата корректируется, обязательно синхронизируем её в СФ:
Объект.Дата = Объект.ДокументОснование.Дата;
Важный момент: Если вы меняете номер или дату программно в событии «После загрузки», обязательно убедитесь, что в ПКО не установлены настройки, запрещающие перезапись существующих объектов, иначе при повторной выгрузке изменения не применятся.
Мы рассмотрели основные способы синхронизации номеров документов при конвертации данных. Подведем итог: для Счетов-фактур полученных в ERP 2.4 наиболее правильным решением будет использование обработчика «После загрузки» с обращением к табличной части ДокументыОснования или реквизиту ДокументОснование. Это гарантирует, что связь между документами сохранится, а нумерация будет соответствовать требованиям пользователя.