Только не кидайтесь тапками))

Вообще вылетело из головы (давно этого не делала) как мне обратиться к реквизитам формы из модуля внешней обработки?)
---
Все оказалось намного проще)

Нужно было сделать так:

```1c
    ПараметрыИБ.Вставить("База", Стр.База);
    ПараметрыИБ.Вставить("ВремяЗавершенияСпящегоСеанса",ВремяЗавершенияСпящегоСеанса);
    ПараметрыИБ.Вставить("ВремяЗасыпанияПассивногоСеанса",ВремяЗасыпанияПассивногоСеанса);
    ПараметрыИБ.Вставить("ВремяОжиданияБлокировкиДанных",ВремяОжиданияБлокировкиДанных);
    ПараметрыИБ.Вставить("МинимальнаяДлинаПаролейПользователей",МинимальнаяДлинаПаролейПользователей);
    ПараметрыИБ.Вставить("ПроверкаСложностиПаролейПользователей",ПроверкаСложностиПаролейПользователей);

    МассивПараметров = Новый Массив;
    МассивПараметров.Добавить(ИмяФайла);
    МассивПараметров.Добавить("МассоваяНастройкаПараметровИБ");
    МассивПараметров.Добавить("База","ВремяЗавершенияСпящегоСеанса","ВремяЗасыпанияПассивногоСеанса","ВремяОжиданияБлокировкиДанных","МинимальнаяДлинаПаролейПользователей","ПроверкаСложностиПаролейПользователей);
    МассивПараметров.Добавить(ПараметрыИБ);
    МассивПараметров.Добавить(Истина);
    МассивПараметров.Добавить(ПолучитьИзВременногоХранилища(Адрес));
```

Спасибо Вам огромное, что не остались безучастными к моей проблеме и помогали на протяжении всего времени!)
---
из какого модуля ? Модуля формы ? Все как обычно по имени, либо Объект.ИмяРеквизита

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

Пример можете привести?
---
модуль объекта вызывается только на сервере, там нет реквизитов формы. Там только реквизиты объекта, и то незаполненные будут если вызывать из формы.
Вызывать надо из модуля формы, например так

```1c
    &НаСервере
    Процедура ПрямаяЗагрузкаДанных()
    РеквизитФормыВЗначение("Объект").ЗагрузкаДанных(РеквизитФормыВЗначение("ПереносимыеДокументы"));
    КонецПроцедуры
```

а в модуле объекта, там процедура Процедура ЗагрузкаДанных(ПереносимыеДокументы) Экспорт
---
В процедуре (1) я, так сказать, вызываю процедуру (2). То есть в процедуре (1) я могу передать в качестве параметров реквизиты формы??

Процедура(1)

```1c
    Процедура ЗапуститьФоновыеЗадания(Выполняется);
    Для Каждого СтрВид Из ДеревоБаз.ПолучитьЭлементы() Цикл
    Для Каждого Стр Из СтрВид.ПолучитьЭлементы() Цикл
    Если Стр.ОжидаетЗапуска Тогда
    МассивПараметров = Новый Массив;
    МассивПараметров.Добавить(ИмяФайла);
    МассивПараметров.Добавить("МассоваяНастройкаПараметровИБ");
    МассивПараметров.Добавить("База");
    МассивПараметров.Добавить(Новый Структура("База",Стр.База));
    МассивПараметров.Добавить(Истина);
    МассивПараметров.Добавить(ПолучитьИзВременногоХранилища(Адрес));

    Ключ = "Настройка параметров информационной базы у " + Строка(Стр.База);
    Имя = Ключ;

    Попытка
    ФЗ = ФоновыеЗадания.Выполнить("ВыполнениеОтчетовОбработокСервер.ВыполнитьПроцедуруОбработкиФоновымЗаданием", МассивПараметров, Ключ, Имя);
    Текст = "Задание выполняется";
    ГУИД = ФЗ.УникальныйИдентификатор;
    Выполняется = Выполняется + 1;
    Исключение
    Текст = "Ошибка запуска задания по базе - %1
    |Причина %2.";
    Ошибка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Текст,Стр.База, ОписаниеОшибки());
    ГУИД = ";
    КонецПопытки;

    Стр.ОжидаетЗапуска = Ложь;
    Стр.Выполняется = Истина;
    Если ФЗ = Неопределено Тогда
    Стр.Состояние = "Ошибка";
    Стр.Ошибка = Ошибка;
    Иначе
    Стр.Состояние = Текст;
    Стр.ФЗ = ФЗ.УникальныйИдентификатор;
    Стр.Начало = ФЗ.Начало;
    КонецЕсли;

    Если ЗапускатьПо <= Выполняется Тогда
    Прервать;
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;
    Если ЗапускатьПо <= Выполняется Тогда
    Прервать;
    КонецЕсли;
    КонецЦикла;
    КонецПроцедуры
```

Процедура(2)

```1c
    Процедура МассоваяНастройкаПараметровИБ(База) Экспорт

    Ошибка = ";
    Соединение = УправлениеПодключениемСервер.ПодключитьсяКБазе(База,,,Ошибка);

    Если Соединение = Неопределено Тогда
    ВызватьИсключение "При подключении к базе " + Строка(База) + " произошла ошибка: " + Ошибка;
    Иначе
    Соединение.УстановитьВремяОжиданияБлокировкиДанных();
    Соединение.УстановитьМинимальнуюДлинуПаролейПользователей();
    Соединение.УстановитьПроверкуСложностиПаролейПользователей();
    Соединение.УстановитьВремяЗасыпанияПассивногоСеанса();
    Соединение.УстановитьВремяЗавершенияСпящегоСеанса();
    КонецЕсли;
    КонецПроцедуры
```
---
я могу передать в качестве параметров реквизиты формы??
Не реквизиты формы, а значения реквизитов формы. Да, конечно

З.Ы.
я так понимаю, они отчасти итак у вас туда передаются. Имя файла там, база..
---
Спасибо за исправление моей корявой формулировки))

Вот так, по идее, должно быть?

```1c
    &НаСервере
    Процедура ЗапуститьФоновыеЗадания(Выполняется);

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

    Для Каждого СтрВид Из ДеревоБаз.ПолучитьЭлементы() Цикл
    Для Каждого Стр Из СтрВид.ПолучитьЭлементы() Цикл
    Если Стр.ОжидаетЗапуска Тогда
    МассивПараметров = Новый Массив;
    МассивПараметров.Добавить(ИмяФайла);
    МассивПараметров.Добавить("МассоваяНастройкаПараметровИБ");
    МассивПараметров.Добавить("База");
    МассивПараметров.Добавить(Новый Структура("База",Стр.База));
    МассивПараметров.Добавить(Истина);
    МассивПараметров.Добавить(ПолучитьИзВременногоХранилища(Адрес));

    Ключ = "Настройка параметров информационной базы у " + Строка(Стр.База);
    Имя = Ключ;

    Попытка
    ФЗ = ФоновыеЗадания.Выполнить("ВыполнениеОтчетовОбработокСервер.ВыполнитьПроцедуруОбработкиФоновымЗаданием", МассивПараметров, Ключ, Имя);
    Текст = "Задание выполняется";
    ГУИД = ФЗ.УникальныйИдентификатор;
    Выполняется = Выполняется + 1;
    Исключение
    Текст = "Ошибка запуска задания по базе - %1
    |Причина %2.";
    Ошибка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Текст,Стр.База, ОписаниеОшибки());
    ГУИД = ";
    КонецПопытки;

    Стр.ОжидаетЗапуска = Ложь;
    Стр.Выполняется = Истина;
    Если ФЗ = Неопределено Тогда
    Стр.Состояние = "Ошибка";
    Стр.Ошибка = Ошибка;
    Иначе
    Стр.Состояние = Текст;
    Стр.ФЗ = ФЗ.УникальныйИдентификатор;
    Стр.Начало = ФЗ.Начало;
    КонецЕсли;

    Если ЗапускатьПо <= Выполняется Тогда
    Прервать;
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;
    Если ЗапускатьПо <= Выполняется Тогда
    Прервать;
    КонецЕсли;
    КонецЦикла;
    КонецПроцедуры
```

```1c
    Процедура МассоваяНастройкаПараметровИБ(База,ВремяЗавершенияСпящегоСеанса,ВремяЗасыпанияПассивногоСеанса,ВремяОжиданияБлокировкиДанных,МинимальнаяДлинаПаролейПользователей,ПроверкаСложностиПаролейПользователей) Экспорт

    Ошибка = ";
    Соединение = УправлениеПодключениемСервер.ПодключитьсяКБазе(База,,,Ошибка);

    Если Соединение = Неопределено Тогда
    ВызватьИсключение "При подключении к базе " + Строка(База) + " произошла ошибка: " + Ошибка;
    Иначе
    Соединение.УстановитьВремяОжиданияБлокировкиДанных(ВремяОжиданияБлокировкиДанных);
    Соединение.УстановитьМинимальнуюДлинуПаролейПользователей(МинимальнаяДлинаПаролейПользователей);
    Соединение.УстановитьПроверкуСложностиПаролейПользователей(ПроверкаСложностиПаролейПользователей);
    Соединение.УстановитьВремяЗасыпанияПассивногоСеанса(ВремяЗасыпанияПассивногоСеанса);
    Соединение.УстановитьВремяЗавершенияСпящегоСеанса(ВремяЗавершенияСпящегоСеанса);
    КонецЕсли;
    КонецПроцедуры
```
---
Но так не работает(
---
```1c
    РеквизитФормыВЗначение("ВремяЗавершенияСпящегоСеанса")
```

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

далее
еще одну строку
 МассивПараметров.Добавить(ДопПараметры);

и в процедуре
Процедура МассоваяНастройкаПараметровИБ(База,ВремяЗавершенияСпящегоСеанса,ВремяЗасыпанияПассивногоСеанса,ВремяОжиданияБлокировкиДанных,МинимальнаяДлинаПаролейПользователей,ПроверкаСложностиПаролейПользователей,ДопПараметры) Экспорт

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

```1c
    ПараметрыИБ = Новый Структура;
    ПараметрыИБ.Вставить("База", Стр.База);
    ПараметрыИБ.Вставить("ВремяЗавершенияСпящегоСеанса",ВремяЗавершенияСпящегоСеанса);
    ПараметрыИБ.Вставить("ВремяЗасыпанияПассивногоСеанса",ВремяЗасыпанияПассивногоСеанса);
    ПараметрыИБ.Вставить("ВремяОжиданияБлокировкиДанных",ВремяОжиданияБлокировкиДанных);
    ПараметрыИБ.Вставить("МинимальнаяДлинаПаролейПользователей",МинимальнаяДлинаПаролейПользователей);
    ПараметрыИБ.Вставить("ПроверкаСложностиПаролейПользователей",ПроверкаСложностиПаролейПользователей);

    МассивПараметров = Новый Массив;
    МассивПараметров.Добавить(ИмяФайла);
    МассивПараметров.Добавить("МассоваяНастройкаПараметровИБ");
    МассивПараметров.Добавить("База");
    МассивПараметров.Добавить(ПараметрыИБ);
    МассивПараметров.Добавить(Истина);
    МассивПараметров.Добавить(ПолучитьИзВременногоХранилища(Адрес));
```

Но фоновое задание завершается с ошибкой: "Недостаточно фактических параметров"
---
сколько у типовой процедуры, которую нельзя трогать, т.к. она экспортная и все полетит..
Для этого нужно в экспортной процедуре эту переменную сделать необязательной к заполнению.
Или нарисовать другую экспортную процедуру.
---
1. А не трогая экспортную процедуру, можно как-то решить проблему??
2. Если нет, то каким образом сделать ее необязательной?
---
Если ничего не трогать, то ничего не сделать. Просто трогать надо с умом.

2. Если нет, то каким образом сделать ее необязательной?
Процедура ИмяПроцедуры(Параметр1, Параметр2=неопределено)

Таким образом параметр 2, если не будет передан, ему будет присвоено неопределено.
---
Не передать этот параметр я тоже не могу, т.к. он далее используется в процедуре.

Вот листинг:

```1c
    Процедура ВыполнитьПроцедуруОбработкиФоновымЗаданием(ПутьКОбработке,
    ВыполняемаяПроцедура,
    СтрокаПараметровПроцедуры,
    Параметры,
    Внешняя = ложь,
    ДвоичныеДанные = Неопределено) Экспорт
    Если Внешняя Тогда
    //пытаемся создать внешнюю обработку в базе
    Если ДвоичныеДанные = Неопределено Тогда
    ПутьКФайлу = ПутьКОбработке;
    Иначе
    ПутьКФайлу = ПолучитьИмяВременногоФайла();
    Попытка
    ДвоичныеДанные.Записать(ПутьКФайлу);
    Исключение
    ВызватьИсключение("Не удалось записать обработку из хранилища данных типа " + Строка(ТипЗнч(ДвоичныеДанные)) + ".
    |Причина: " + ОписаниеОшибки());
    КонецПопытки;

    КонецЕсли;

    Попытка
    Обработка = ВнешниеОбработки.Создать(ПутьКФайлу, Ложь);
    Исключение
    ВызватьИсключение(ОписаниеОшибки());
    Возврат;
    КонецПопытки;

    Иначе
    Обработка = Обработки[ПутьКОбработке].Создать();
    КонецЕсли;

    //заполняем реквизиты обработки из переданных параметров
    Для Каждого Параметр Из Параметры Цикл
    //заменяем в строке параметров процедуры имена переменных на переменные из параметров
    Если Найти(СтрокаПараметровПроцедуры, Параметр.Ключ) Тогда
    СтрокаПараметровПроцедуры = СтрЗаменить(СтрокаПараметровПроцедуры,
    Параметр.Ключ,
    "Параметры." + Параметр.Ключ);
    КонецЕсли;

    Попытка
    Если ТипЗнч(Параметр.Значение) = ТИП("ТаблицаЗначений") Тогда
    Обработка[Параметр.Ключ].Загрузить(Параметр.Значение);
    Иначе
    Обработка[Параметр.Ключ] = Параметр.Значение;
    КонецЕсли;
    Исключение
    КонецПопытки;

    КонецЦикла;
    //выполняем процедуру внешней обарботки

    Попытка
    Выполнить("Обработка."+ВыполняемаяПроцедура+"("+СтрокаПараметровПроцедуры+")");
    Исключение
    ВызватьИсключение(ОписаниеОшибки());
    КонецПопытки;

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

Нужно было сделать так:

```1c
    ПараметрыИБ.Вставить("База", Стр.База);
    ПараметрыИБ.Вставить("ВремяЗавершенияСпящегоСеанса",ВремяЗавершенияСпящегоСеанса);
    ПараметрыИБ.Вставить("ВремяЗасыпанияПассивногоСеанса",ВремяЗасыпанияПассивногоСеанса);
    ПараметрыИБ.Вставить("ВремяОжиданияБлокировкиДанных",ВремяОжиданияБлокировкиДанных);
    ПараметрыИБ.Вставить("МинимальнаяДлинаПаролейПользователей",МинимальнаяДлинаПаролейПользователей);
    ПараметрыИБ.Вставить("ПроверкаСложностиПаролейПользователей",ПроверкаСложностиПаролейПользователей);

    МассивПараметров = Новый Массив;
    МассивПараметров.Добавить(ИмяФайла);
    МассивПараметров.Добавить("МассоваяНастройкаПараметровИБ");
    МассивПараметров.Добавить("База","ВремяЗавершенияСпящегоСеанса","ВремяЗасыпанияПассивногоСеанса","ВремяОжиданияБлокировкиДанных","МинимальнаяДлинаПаролейПользователей","ПроверкаСложностиПаролейПользователей);
    МассивПараметров.Добавить(ПараметрыИБ);
    МассивПараметров.Добавить(Истина);
    МассивПараметров.Добавить(ПолучитьИзВременногоХранилища(Адрес));
```

Спасибо Вам огромное, что не остались безучастными к моей проблеме и помогали на протяжении всего времени!)
---
Может, я просто не туда запихиваю параметры, куда нужно?
---
Или нужно отдельную процедуру писать?
---
В управляемых формах напрямую с сервера (модуль объекта) нельзя обратиться к данным клиента (форма). Только если эти данные заведомо передать в качестве параметров процедуры.