Как связать документы поступления и принятия к учету для формирования внешней печатной формы в 1С?

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

При разработке внешних печатных форм (ВПФ), таких как форма НМА-1 («Акт о приеме-передаче нематериальных активов»), разработчики и пользователи часто сталкиваются с задачей: печатная форма регистрируется для документа ПринятиеКУчетуНМА, однако часть реквизитов (например, сведения о поставщике, реквизиты входящего документа или сумма затрат) находится в документе ПоступлениеТоваровУслуг. При этом в шапке документа принятие к учету нет прямой ссылки на документ-основание.

Разберем, как правильно получить необходимые данные без внесения изменений в структуру метаданных конфигурации, почему попытка создать собственный регистр накопления является избыточной и как быстро извлечь данные с помощью типовых механизмов платформы 1С:Предприятие.

Анализ архитектуры: почему не нужно создавать новый регистр

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

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

  1. Снятие конфигурации с типовой поддержки: добавление нового регистра метаданных усложняет регулярное обновление программы.
  2. Дублирование данных: информация о движении по счету 08.05 уже хранится в регистре бухгалтерии.
  3. Сложность контроля целостности: ручное создание регистра потребует программирования механизмов его очистки и обновления при отмене проведения или редактировании документов.

Способ 1. Получение связанных документов через запрос к регистру бухгалтерии

Посмотрим на практическое решение задачи непосредственно внутри модуля внешней печатной формы. Чтобы получить документ поступления и данные поставщика, достаточно выполнить запрос к виртуальной таблице регистра бухгалтерии.

Опасение, что поиск по проводкам замедлит формирование печатной формы, необоснованно: виртуальные таблицы (например, ОборотыДтКт или ДвиженияССубконто) платформы 1С работают с индексированными полями на уровне СУБД. При установке фильтра по счету 08.05, организации и конкретному субконто НМА запрос выполняется мгновенно.

Рассмотрим структуру запроса для извлечения документов поступления и их реквизитов:


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	ХозрасчетныйДвиженияССубконто.Регистратор КАК ДокументПоступления,
    |	ХозрасчетныйДвиженияССубконто.Сумма КАК СуммаЗатрат,
    |	ХозрасчетныйДвиженияССубконто.Период КАК ДатаПоступления
    |ИЗ
    |	РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(
    |		,
    |		,
    |		Счет = &Счет0805
    |			И Организация = &Организация
    |			И Субконто1 = &НМА,
    |		,
    |		) КАК ХозрасчетныйДвиженияССубконто
    |ГДЕ
    |	ХозрасчетныйДвиженияССубконто.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияБухгалтерии.Дебет)
    |	И ХозрасчетныйДвиженияССубконто.Период <= &МоментВремениПринятия";

Запрос.УстановитьПараметр("Счет0805", ПланыСчетов.Хозрасчетный.НайтиПоКоду("08.05"));
Запрос.УстановитьПараметр("Организация", СсылкаНаПринятие.Организация);
Запрос.УстановитьПараметр("НМА", СсылкаНаПринятие.НематериальныйАктив);
Запрос.УстановитьПараметр("МоментВремениПринятия", СсылкаНаПринятие.МоментВремени());

Выборка = Запрос.Выполнить().Выбрать();

Проанализируем особенности предметной логики:

  1. Формирование первоначальной стоимости: на счет 08.05 затраты могут списываться несколькими документами (например, покупка права, госпошлина, доработка актива сторонними подрядчиками). При выборке регистраторов следует учитывать, нужно ли вывести данные всех входящих документов или только основного поступления.
  2. Связь с реквизитами контрагента: получив ссылку на Регистратор с типом ДокументСсылка.ПоступлениеТоваровУслуг, внешняя печатная форма может напрямую обратиться к его реквизитам: Контрагент, ДоговорКонтрагента, входящий номер и дата первичного документа.

Способ 2. Использование дополнительных реквизитов БСП (без доработки конфигурации)

Если в организации учет устроен так, что один актив может иметь сложную структуру затрат, но бухгалтер хочет явно вручную указывать конкретный документ поступления для печатной формы, можно воспользоваться штатным функционалом Библиотеки Стандартных Подсистем (БСП).

Разберем по шагам, как это настроить в пользовательском режиме:

  1. Перейдем в раздел Администрирование → Общие настройки → Дополнительные реквизиты и сведения.
  2. Откроем список дополнительных реквизитов для документа Принятие к учету НМА.
  3. Добавим новый дополнительный реквизит (например, «Основной документ поступления») и назначим ему тип данных Документ.ПоступлениеТоваровУслуг.
  4. В документе принятия к учету на вкладке дополнительных сведений появится возможность выбрать нужный документ поступления.

Во внешней печатной форме для программного чтения этого реквизита используется типовая функция БСП:


ЗначенияСвойств = УправлениеСвойствами.ПолучитьЗначенияСвойств(СсылкаНаПринятие);

Такой подход полностью исключает необходимость изменения конфигурации, сохраняет типовую поддержку и позволяет ВПФ получать точную ссылку на связанный документ.

← На главную