Перейти к содержанию

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

ℹ️ Виртуальный документ — это данные, которые формируются в 1С по определенному алгоритму и затем передаются в "Первую Форму". Описание виртуального документа — это, по сути, описание алгоритма отбора и обработки данных. Данные могут отбираться из документов, регистров, справочников и т.п.

Полученные данные выгружаются в одном из двух вариантов: либо в виде файла, вложенного в задачу (возможные расширения файла: pdf, xls, txt, docx, html, ods), либо в виде ДП "Таблица".

В приложении "1С:Предприятие" в справочнике "Виртуальные документы ("Первая форма")" создайте запись.

ℹ️ Имя виртуального документа не должно содержать пробелов. Имя документа желательно не менять, в противном случае при изменении имени необходимо изменить файл настроек синхронизации

ℹ️ Для виртуального реквизита в XML-конфиге должно быть указано PropertyUse="Виртуальный"

В шапке элемента укажите тип результата:

1. Алгоритм -- формирует табличный документ 1С, который согласно настройкам синхронизации будет сохранен в файл соответствующего формата и отправлен в "Первую Форму". Возможные расширения: pdf, xls, txt, docx, html, ods.

Для настройки расширения файла в настройках синхронизации в "Первой Форме" используется свойство BinFileProperty из блока Files:

<Files CatalogName = "НовыйОтчет"   BinFileProperty = "pdf" FileNameProperty ="Отчет.pdf" />

В справочнике виртуальных документов "1С:Предприятие" напишите алгоритм на встроенном языке 1С для формирования данных. Для проверки правильности алгоритма используйте кнопку Выполнить алгоритм:

Алгоритм вычисляет значение переменной Результат и выводит его в таблицу справа. Для доступа к параметрам отчета используется соответствие ПараметрыАлгоритма. Параметры отчета указываются на закладке Параметры. Эти параметры выгружаются как реквизиты документа в "Первую Форму" и впоследствии приходят в 1С значениями для получения отчета.

Закладка "Реквизиты" не заполняется.

2.Запрос --- формирует таблицу данных. Для таких документов заполняется закладка "Реквизиты":

В "Первую Форму" выгружаются только указанные реквизиты из результата выполнения запроса в 1С. Значения ссылочных типов отравляются согласно общим настройка синхронизации.

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

Передачу Виртуальных документов можно совмещать с классической передачей реквизитов, т. е. внутри обмена для документа приемника на стороне первой формы будут прописаны два (или более) вариантов обмена.

Передача Отчета/Документа в виде файла

Пример настроек передачи макета отчета Торг-12 из 1С:

<Record OneCDocName="ВиртуальныйДокумент.Тест_вирт_файл" OneCSynonym="Склады (места хранения)" TCSubcatID="56490" TCSubcatName="Справочник.Склады" SmartFilterID="0" SyncSource="_TC" SyncDirections="FromTCto1C" DefaultActionOnError="NotAssigned" DefaultNotificationOnError="Both" DisableTaskTextSync="false" InboxQueueFlowId="">
    <Files CatalogName="НовыйОтчет" BinFileProperty="pdf" FileNameProperty="Отчет.pdf" SendContent="false" SendFileMetaData="false" OwnerProperty="Тест" SyncDirections="TwoSided" ActionOnError="NotAssigned" NotificationsOnError="Both" />
     <SyncProperties>
       <Property ExtParamID="2808" ExtParamName="Наименование" RequisiteName="Наименование" Synonym="Наименование" Type="Text" IsRequired="false" RepresentAsReadonlyText="false" PropertyUse="ДляГруппыИЭлемента" OneCEvents="" TcEvents="">
         <AllowedValues />
         <TableColumns />
         <Links />
       </Property>
     </SyncProperties>
     <SyncEvents1C />
     <SyncEventsTC>
       <EventTC Event="CustomEvent" CustomEventID="591" Action="Modify" ActionOnError="AddToQuery" NotificationsOnError="Both" AddCommentOnSuccess="false" />
     </SyncEventsTC>
   </Record>

Значение параметра OneCDocName обязательно должно начинаться на "ВиртуальныйДокумент", а через точку имя справочника с типом виртуальные документы в 1С. В данном примере OneCDocName="ВиртуальныйДокумент.Тест_вирт_файл".

В 1С необходимо создать новый элемент справочника Виртуальные документы ("Первая форма").

Данная информация хранится только на стороне 1С и не отражается в общих настройках обмена XML. В качестве Тип результата указать Файл. Имя должно совпадать со значением параметры OneCDocName (после точки), в данном примере: Тест_вирт_файл.

На вкладке Алгоритм и результат можно написать любой код на языке 1С, который будет выполнен в процессе обмена. В данном примере указано получение макета товарной накладной:

Макет = ПолучитьОбщийМакет("ПФ_MXL_ТОРГ12");

Результат = Макет;

Пример формирования внешнего отчета:

ИсточникДанных = ПараметрыАлгоритма.Получить("Перевод");
ИсточникДанныхМас = Новый Массив;
ИсточникДанныхМас.Добавить(ИсточникДанных);

ДополнительнаяОбработкаСсылка = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию("Дополнительное соглашение (Смена должности)");
МодульДополнительныеОтчетыИОбработки = ОбщегоНазначения.ОбщийМодуль("ДополнительныеОтчетыИОбработки");
ВнешняяОбработкаОбъект = МодульДополнительныеОтчетыИОбработки.ОбъектВнешнейОбработки(ДополнительнаяОбработкаСсылка);
КоллекцияПечатныхФорм = УправлениеПечатью.ПодготовитьКоллекциюПечатныхФорм("ДопСоглашениеМакет");

ПараметрыВывода = Новый Структура;
ПараметрыВывода.Вставить("ЗаголовокФормы", "");
ПараметрыВывода.Вставить("ДоступнаПечатьПоКомплектно", Ложь); // не используется
ПараметрыВывода.Вставить("КодЯзыка", ОбщегоНазначения.КодОсновногоЯзыка());
СтруктураПараметровПисьма = Новый Структура("Получатель,Тема,Текст", Неопределено, "", "");
ПараметрыВывода.Вставить("ПараметрыОтправки", СтруктураПараметровПисьма);
ПараметрыВывода.Вставить("ДополнительнаяОбработкаСсылка", ДополнительнаяОбработкаСсылка);

ВнешняяОбработкаОбъект.Печать(
   ИсточникДанныхМас,
   КоллекцияПечатныхФорм,
   Новый СписокЗначений,
   ПараметрыВывода);

Для Каждого ПечатнаяФорма Из КоллекцияПечатныхФорм Цикл
   Результат = ПечатнаяФорма.ТабличныйДокумент;
КонецЦикла;

Пример формирования отчета конфигурации на базе СКД:

ПараметрОтбора = ПараметрыАлгоритма.Получить("Отпуск");

Отчет = Отчеты.ПечатнаяФормаТ6.Создать();

ПараметрыОтчета = Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("СсылкиНаОбъекты");
ПараметрыОтчета.Значение = ПараметрОтбора;
Сообщить(ПараметрыОтчета.Значение);
ПараметрыОтчета.Использование = Истина;

ТабДок = Новый ТабличныйДокумент;
Отчет.ИнициализироватьОтчет();
Отчет.СкомпоноватьРезультат(ТабДок);
Результат = Табдок;

Для теста можно нажать кнопку Выполнить алгоритм, при этом 1С произведет расчет и поместит результат выполнения в соседнее окно.

В случае обмена файлами вкладка Реквизиты не имеет значения.

Если в конфигурации обмена Виртуального документа указать список пропертей для обмена, то они будут переданы в качестве параметров, и их можно задействовать при формировании нашего файла. Например использовать некоторые реквизиты при формировании отчета. Чтобы протестировать это, вы можете вручную добавить параметры на соответствующей вкладке и указать там тестовые значения. В процессе обмена 1С получит все переданные property, и упакует их в параметры для дальнейшего использования при формировании отчета или документа. В нашем случае передается одна property Наименование из "Первой Формы".