Есть вопрос форумчане, есть ВПФ из нее выгружаю два файла XLS. как из модуля формы получить ссылку на документ. Процедура Печать(МассивОбъектов.............. это все понятно, но у меняя в модуле формы есть выбор каталога куда кидать файлы. Вот зачем нужна ссылка на документ который печатаю.
---
Если перед печатью пользователю нужно внести какие-то параметры, то лучше использовать тип команды "ОткрытиеФормы".
Ссылку на документ можно получить в параметрах формы внешней обработки при создании на сервере.
---
чтобы получить доступ к объектам назначения в форме обработки вам необходимо в сведении о внешней обработке указать тип команды ВызовКлиентскогоМетода и тогда в процедуре ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения) будет доступна ваша ссылка.
---
В МассивОбъектов ссылки всех печатаемых в данный момент объектов.
---
Из модуля формы МассивОбъетов не получить.
---
в Форме есть Объект.Ссылка, если объект - это печатаемый документ, а Форма - это основная форма документа из которой вызывается процедура печати.

Либо подробнее объясняйте, что у вас за форма и что за реквизит у нее "объект".
---
В форме нет Объект.Ссылка. В форме только выбор каталога, как реквизит.
Это внешняя печформа. Вызывается из документа, мне нужно получить ссылку на документ печати. Объект = это я просто пытаюсь решение найти.
---
Откуда запускается код:

```1c
    ОбъектНаСервере = РеквизитФормыВЗначение("Объект");
    МассивОбъектов = Новый Массив;
    МассивОбъектов.Добавить(ОбъектНаСервере);
    ОбъектыПечати = Новый СписокЗначений;
    ОбъектыПечати.Добавить(ОбъектНаСервере);
```

из какой формы?

Если это форма обработки с вашим путем для сохранения файла, то зачем вы добавляете эту обработку в массив объектов для печати?
---
del
---
Еще раз: ссылка на документ печати находится в МассивОбъектов.
Что еще за форма, в которой выполняется код:

```1c
    ОбъектНаСервере = РеквизитФормыВЗначение("Объект");
    МассивОбъектов = Новый Массив;
    МассивОбъектов.Добавить(ОбъектНаСервере);
```

????

Если это форма обработки с вашим путем для сохранения файла, то зачем вы добавляете эту обработку в массив объектов для печати?
---
Основная Форма обработки. В ней я и пытаюсь поймать документ.
---
Хорошо. Как 1С должна определить, какой именно документ вы собираетесь распечать в данный момент?
---
А как передать каталог файлов в модуль объекта СформироватьПечатнуюФормуЗаказНаПроизводствоКоробки - это функция в модуле.
---
Зачем, по-вашему, этой процедуре/функции ваш каталог файлов, о котором она вообще ничего не знает и не знает, что с этой информацией ей делать?
На форме обработки добавьте поле со ссылкой на документ, добавляя ссылку на документ в МассивОбъектов и скармливая на вход метода

```1c
    ОбъектНаСервере.СформироватьПечатнуюФормуЗаказНаПроизводствоКоробки(МассивОбъектов, ОбъектыПечати,ИмяВременногоФайла)
```

и сохраняйте себе на здоровье, чего вы там хотели сохранить.
---
Как получить ссылку на документ, я создал поле СсылкаНаДокумент. А как получить туда документ из которого печатаю? Я не очень пока понимаю УФ.
---
да все так же, как в ОФ:

```1c
    МассивОбъектов = Новый Массив;
    МассивОбъектов.Добавить(СсылкаНаДокумент);
```

СсылкаНаДокумент - реквизит Формы обработки.
---
чтобы получить доступ к объектам назначения в форме обработки вам необходимо в сведении о внешней обработке указать тип команды ВызовКлиентскогоМетода и тогда в процедуре ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения) будет доступна ваша ссылка.
---
Спасибо сейчас попробую.
---
Так понимаю, у ТС нет задачи сделать обработку подключаемую в виде доп. обработки. Он будет использовать обработку через Файл - Открыть.
---
в "МассивОбъектов" должо быть
---
```1c
    &НаСервере
    Функция ВыгрузитьФайлыНаСервере(АдресФайлаВоВременномХранилище)
    ФайлВыгрузки = КаталогВыгрузки;
    ИмяВременногоФайла = ФайлВыгрузки;

    ОбъектНаСервере = РеквизитФормыВЗначение("Объект");
    МассивОбъектов = Новый Массив;
    МассивОбъектов.Добавить(ОбъектНаСервере);
    ОбъектыПечати = Новый СписокЗначений;
    ОбъектыПечати.Добавить(ОбъектНаСервере);

    ОбъектНаСервере.СформироватьПечатнуюФормуЗаказНаПроизводствоКоробки(МассивОбъектов, ОбъектыПечати,ИмяВременногоФайла);
    ОбъектНаСервере.СформироватьПечатнуюФормуЗаказНаПроизводство(МассивОбъектов, ОбъектыПечати,ИмяВременногоФайла);

    Файл = Новый Файл(ИмяВременногоФайла);

    Если Файл.Существует() Тогда

    ДвоичныеДанные = Новый ДвоичныеДанные(ИмяВременногоФайла);
    АдресФайлаВоВременномХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанные, УникальныйИдентификатор);
    УдалитьФайлы(ИмяВременногоФайла);

    КонецЕсли;
    КонецФункции

    &НаКлиенте
    Процедура Выгрузить(Команда)
    ОчиститьСообщения();
    ФайлВыгрузки = КаталогВыгрузки;
    Если ПустаяСтрока(КаталогВыгрузки) Тогда
    ТекстСообщения = Нстр("ru = 'Поле "Каталог выгрузки" не заполнено'");
    Предупреждение(ТекстСообщения, "КаталогВыгрузки");
    Возврат;
    КонецЕсли;
    Состояние(Нстр("ru = 'Выполняется выгрузка данных. Пожалуйста, подождите...'"));

    АдресФайлаВоВременномХранилище = ";
    ВыгрузитьФайлыНаСервере(АдресФайлаВоВременномХранилище);

    Если Не ПустаяСтрока(АдресФайлаВоВременномХранилище) Тогда
    Предупреждение = Нстр("ru = 'Файл выгрузки.xml'");
    ПолучитьФайл(АдресФайлаВоВременномХранилище, ФайлВыгрузки);
    КонецЕсли;
    КонецПроцедуры
```

(2) ОбъектНаСервере это и есть мой желаемый документ, но как его получить?
---
В данном случае, ОбъектНаСервере.Ссылка.
---
Так я и не смог получить документ. В СведенияОВнешнейОбработке написал что вызов клиентский. Но при печати выпадает ошибка "Получение элемента по индексу для значения не определено"
Вот код

```1c
    ПараметрыРегистрации = Новый Структура;

    МассивНазначений = Новый Массив;
    МассивНазначений.Добавить("Документ.ЗаказНаПроизводство2_2"); //Указываем документ к которому делаем внешнюю печ. форму

    ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма"); //может быть – ПечатнаяФорма, ЗаполнениеОбъекта, ДополнительныйОтчет, СозданиеСвязанныхОбъектов…
    ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
    ПараметрыРегистрации.Вставить("Наименование", "Файлы"); //имя под которым обработка будет зарегестрирована в справочнике внешних обработок
    ПараметрыРегистрации.Вставить("БезопасныйРежим", ЛОЖЬ);
    ПараметрыРегистрации.Вставить("Версия", "1.0");
    ПараметрыРегистрации.Вставить("Информация", "Это шаблон для облегчения жизни");
    ТаблицаКоманд = ПолучитьТаблицуКоманд();
    ДобавитьКоманду(ТаблицаКоманд, "Сформировать файлы", "ЗаказНаПроизводствоФайлы", "ВызовКлиентскогоМетода", Истина, "ПечатьMXL");
    ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);

    Возврат ПараметрыРегистрации;
```

Это в модуле
Вот что в модуле формы

```1c
    &НаКлиенте
    Процедура Печать(ИдентификаторКоманды,ОбъектыНазначения) Экспорт

    СсылкаНаОбъект = ОбъектыНазначения[0];

    КонецПроцедуры
```
---
Если перед печатью пользователю нужно внести какие-то параметры, то лучше использовать тип команды "ОткрытиеФормы".
Ссылку на документ можно получить в параметрах формы внешней обработки при создании на сервере.
---
Спасибо, разобрался. Тема закрыта. БСП всем в помощь.