Как в рамках запроса получить ссылку на связанный документ в 1С: Документооборот

Содержание:

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

1

Как построены связи в 1С: Документооборот

 

В системе 1С: Документооборот 2.1 связь между документами фиксируется в регистре сведений «СвязиДокументов». Этот регистр содержит следующие основные поля:

  • Документ — документ, к которому привязаны связанные документы.
  • СвязанныйДокумент — документ, связанный с основным.
  • ТипСвязи — тип связи (например, «Приложение», «Относится к договору»).

В системе 1С: Документооборот 3.0 связь между документами фиксируется в регистре сведений «СвязиОбъектов». Этот регистр содержит следующие основные поля:

  • Объект — документ, к которому привязаны связанные документы.
  • СвязанныйОбъект — документ, связанный с основным.
  • ТипСвязи — тип связи (например, «Приложение», «Относится к договору»).

В рамках данной статьи мы разберём скрипт для системы 1С: Документооборот 2.1, а скрипт для редакции 3.0 приведём в самом конце.

2

Написание скрипта для системы 1С: Документооборот

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

РезультатОбработки = «»;

Запрос = Новый Запрос;

Запрос.Текст =

«ВЫБРАТЬ

|  СвязиДокументов.СвязанныйДокумент КАК СвязанныйДокумент

|ИЗ

|  РегистрСведений.СвязиДокументов КАК СвязиДокументов

|ГДЕ

|  СвязиДокументов.Документ = &Документ

|  И СвязиДокументов.ТипСвязи = &ТипСвязи»;

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

Вместо “Относится к договору” необходимо ввести наименование той связи, по которой вы хотите обнаружить документ, например «Приложение».

Запрос.УстановитьПараметр(«Документ», Файл.ВладелецФайла);

Запрос.УстановитьПараметр(«ТипСвязи», Справочники.ТипыСвязей.НайтиПоНаименованию(«Относится к договору»));

  1. Выполним запрос и возьмём первое значение выборки 1С:

РезультатЗапроса = Запрос.Выполнить();

 

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

ВыборкаДетальныеЗаписи.Следующий();

 

  1. Итоговый запрос выглядит следующим образом:

РезультатОбработки = «»;

Запрос = Новый Запрос;

Запрос.Текст =

«ВЫБРАТЬ

|  СвязиДокументов.СвязанныйДокумент КАК СвязанныйДокумент

|ИЗ

|  РегистрСведений.СвязиДокументов КАК СвязиДокументов

|ГДЕ

|  СвязиДокументов.Документ = &Документ

|  И СвязиДокументов.ТипСвязи = &ТипСвязи»;

 

Запрос.УстановитьПараметр(«Документ», Файл.ВладелецФайла);

Запрос.УстановитьПараметр(«ТипСвязи», Справочники.ТипыСвязей.НайтиПоНаименованию(«Относится к договору»));

РезультатЗапроса = Запрос.Выполнить();

 

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

ВыборкаДетальныеЗаписи.Следующий();

РезультатОбработки=СТРОКА(ВыборкаДетальныеЗаписи.СвязанныйДокумент.РегистрационныйНомер)

 

  1. «ВыборкаДетальныеЗаписи.СвязанныйДокумент» – и есть итоговая ссылка на связанный документ, в нашем случае – договор, к которому относится сопровождающий документ. В рамках примера из договора взято значение поля «РегистрационныйНомер».

Запрос для системы 1С: Документооборота редакции 3.0:

Запрос = Новый Запрос;

Запрос.Текст =

«ВЫБРАТЬ

|  СвязиОбъектов.СвязанныйОбъект КАК СвязанныйОбъект

|ИЗ

|  РегистрСведений.СвязиОбъектов КАК СвязиОбъектов

|ГДЕ

|  СвязиОбъектов.Объект = &Объект

|  И СвязиОбъектов.ТипСвязи = &ТипСвязи»;

 

Запрос.УстановитьПараметр(«Объект», Документ);

Запрос.УстановитьПараметр(«ТипСвязи», Справочники.ТипыСвязей.НайтиПоНаименованию(«Создан на основании»));

РезультатЗапроса = Запрос.Выполнить();

 

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

ВыборкаДетальныеЗаписи.Следующий();

РезультатОбработки=СТРОКА(ВыборкаДетальныеЗаписи.СвязанныйДокумент.РегистрационныйНомер)

Заключение:

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