Содержание:
При работе в системе 1С: Документооборот часто возникает необходимость получить информацию о связанных документах. Например, для создания автозаполняемого шаблона вспомогательных к договору документов, необходимо в шаблоне вспомогательного документа отобразить поля исходного договора, на подобие регистрационного номера. Однако у вас могут возникнуть с этим трудности, особенно если вы ранее никогда не писали скрипты. В данной статье мы рассмотрим, как решить данную задачу.
Как построены связи в 1С: Документооборот
В системе 1С: Документооборот 2.1 связь между документами фиксируется в регистре сведений «СвязиДокументов». Этот регистр содержит следующие основные поля:
- Документ — документ, к которому привязаны связанные документы.
- СвязанныйДокумент — документ, связанный с основным.
- ТипСвязи — тип связи (например, «Приложение», «Относится к договору»).
В системе 1С: Документооборот 3.0 связь между документами фиксируется в регистре сведений «СвязиОбъектов». Этот регистр содержит следующие основные поля:
- Объект — документ, к которому привязаны связанные документы.
- СвязанныйОбъект — документ, связанный с основным.
- ТипСвязи — тип связи (например, «Приложение», «Относится к договору»).
В рамках данной статьи мы разберём скрипт для системы 1С: Документооборот 2.1, а скрипт для редакции 3.0 приведём в самом конце.
Написание скрипта для системы 1С: Документооборот
- Чтобы получить данные о связях, нужно построить запрос к этому регистру. Напишем такой запрос, но оставим поля Документ и ТипСвязи параметрами запроса.
РезультатОбработки = «»;
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| СвязиДокументов.СвязанныйДокумент КАК СвязанныйДокумент
|ИЗ
| РегистрСведений.СвязиДокументов КАК СвязиДокументов
|ГДЕ
| СвязиДокументов.Документ = &Документ
| И СвязиДокументов.ТипСвязи = &ТипСвязи»;
- Если вы выполняете скрипт в рамках автозаполнения шаблона файла документа, то ссылку Файл.ВладелецФайла изменять не нужно. В противном случае подставьте вместо этого значения необходимое вам.
Вместо “Относится к договору” необходимо ввести наименование той связи, по которой вы хотите обнаружить документ, например «Приложение».
Запрос.УстановитьПараметр(«Документ», Файл.ВладелецФайла);
Запрос.УстановитьПараметр(«ТипСвязи», Справочники.ТипыСвязей.НайтиПоНаименованию(«Относится к договору»));
- Выполним запрос и возьмём первое значение выборки 1С:
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
ВыборкаДетальныеЗаписи.Следующий();
- Итоговый запрос выглядит следующим образом:
РезультатОбработки = «»;
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| СвязиДокументов.СвязанныйДокумент КАК СвязанныйДокумент
|ИЗ
| РегистрСведений.СвязиДокументов КАК СвязиДокументов
|ГДЕ
| СвязиДокументов.Документ = &Документ
| И СвязиДокументов.ТипСвязи = &ТипСвязи»;
Запрос.УстановитьПараметр(«Документ», Файл.ВладелецФайла);
Запрос.УстановитьПараметр(«ТипСвязи», Справочники.ТипыСвязей.НайтиПоНаименованию(«Относится к договору»));
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
ВыборкаДетальныеЗаписи.Следующий();
РезультатОбработки=СТРОКА(ВыборкаДетальныеЗаписи.СвязанныйДокумент.РегистрационныйНомер)
- «ВыборкаДетальныеЗаписи.СвязанныйДокумент» – и есть итоговая ссылка на связанный документ, в нашем случае – договор, к которому относится сопровождающий документ. В рамках примера из договора взято значение поля «РегистрационныйНомер».
Запрос для системы 1С: Документооборота редакции 3.0:
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| СвязиОбъектов.СвязанныйОбъект КАК СвязанныйОбъект
|ИЗ
| РегистрСведений.СвязиОбъектов КАК СвязиОбъектов
|ГДЕ
| СвязиОбъектов.Объект = &Объект
| И СвязиОбъектов.ТипСвязи = &ТипСвязи»;
Запрос.УстановитьПараметр(«Объект», Документ);
Запрос.УстановитьПараметр(«ТипСвязи», Справочники.ТипыСвязей.НайтиПоНаименованию(«Создан на основании»));
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
ВыборкаДетальныеЗаписи.Следующий();
РезультатОбработки=СТРОКА(ВыборкаДетальныеЗаписи.СвязанныйДокумент.РегистрационныйНомер)
Заключение:
Написание скриптов может показаться на первый взгляд чем-то непонятным, однако ничего сложного в этом нет. Используя созданный в рамках этой статьи скрипт и адаптируя его под свои нужды, вы сможете без проблем получать значения связанных документов, что может сильно автоматизировать заполнение шаблонных документов и исключить из процесса человеческий фактор.