Данная ошибка вылетает, когда передаю массив состояний на клиент. Сам массив собираю, соответственно, на сервере. Нашла информацию, что на клиент нельзя передавать массив состояний. так ли это?? Если да, то как можно обойти это??

Вот кусок кода, если нужно:

```1c
    &НаСервере
    Процедура ОкЗакрытиеНаСервере()
    Отбор = Новый Структура;

    Если Не ПустаяДата(ОтборДатаНачала) Тогда
    Отбор.Вставить("Начало", ОтборДатаНачала);
    КонецЕсли;

    Если Не ПустаяДата(ОтборДатаОкончания) Тогда
    Отбор.Вставить("Конец", ОтборДатаОкончания);
    КонецЕсли;

    Если Не ПустаяСтрока(ОтборКлюч) Тогда
    Отбор.Вставить("Ключ", ОтборКлюч);
    КонецЕсли;

    Если Не ПустаяСтрока(ОтборНаименование) Тогда
    Отбор.Вставить("Наименование", ОтборНаименование);
    КонецЕсли;

    Если Не ПустаяСтрока(ОтборМетод) Тогда
    Отбор.Вставить("ИмяМетода", ОтборМетод);
    КонецЕсли;

    Если ОтборРегламентноеЗадание <> Неопределено Тогда
    Отбор.Вставить("РегламентноеЗадание", ОтборРегламентноеЗадание);
    КонецЕсли;

    Массив = Новый Массив;

    Если ОтборВыполняется Тогда
    Массив.Добавить(СостояниеФоновогоЗадания.Активно);
    КонецЕсли;

    Если ОтборВыполнено Тогда
    Массив.Добавить(СостояниеФоновогоЗадания.Завершено);
    КонецЕсли;

    Если ОтборВыполненоСОшибкой Тогда
    Массив.Добавить(СостояниеФоновогоЗадания.ЗавершеноАварийно);
    КонецЕсли;
    //
    Если ОтборОтменено Тогда
    Массив.Добавить(СостояниеФоновогоЗадания.Отменено);
    КонецЕсли;

    Если Массив.Количество() > 0 ТОгда
    Отбор.Вставить("Состояние", Массив);
    КонецЕсли;

    КонецПроцедуры

    &НаКлиенте
    Процедура ОкЗакрытие(Команда)
    ОкЗакрытиеНаСервере();
    Закрыть(Истина);

    КонецПроцедуры
```
---
Итак. Реквизит на форме не нужен. На сервер передаем так:

```1c
    УстановитьОтборНаСервере(Новый ФиксированнаяСтруктура(Диалог.Отбор));
```

Далее на сервере преобразуем:

```1c
    Процедура УстановитьОтборНаСервере(ФиксОтбор)

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

```1c
    &НаСервере
    Процедура УстановитьОтборНаСервере(Отбор)

    Перем ТекущийИдентификатор;

    ТекущаяСтрока = Элементы.ТаблицаФоновыеЗадания.ТекущаяСтрока;
    Если ТекущаяСтрока <> Неопределено Тогда
    ТекущийИдентификатор = ТекущаяСтрока;
    КонецЕсли;

    Идентификаторы = Новый Массив;

    ВыделенныеСтроки = Элементы.ТаблицаФоновыеЗадания.ВыделенныеСтроки;

    Для Каждого ВыделеннаяСтрока ИЗ ВыделенныеСтроки Цикл
    Идентификаторы.Добавить(ВыделеннаяСтрока);
    КонецЦикла;

    ТаблицаФоновыеЗадания.Очистить();

    //Отбор = Неопределено;
    //
    //Если ОтборФононвыхЗаданийВключен Тогда
    Отбор = ОтборФоновыхЗаданий;
    //КонецЕсли;

    Фоновые = ФоновыеЗадания.ПолучитьФоновыеЗадания(Отбор);
    Для Каждого Фоновое из Фоновые Цикл
    НоваяСтрока = ТаблицаФоновыеЗадания.Добавить();

    РегламентноеЗадание = Фоновое.РегламентноеЗадание;
    Если РегламентноеЗадание <> Неопределено Тогда
    Строка = РегламентноеЗадание.Метаданные.Представление();
    Если РегламентноеЗадание.Наименование <> " Тогда
    Строка = Строка + ":" + РегламентноеЗадание.Наименование;
    КонецЕсли;
    НоваяСтрока.Регламентное = Строка;

    Если Элементы.СписокФоновыхЗаданий.Колонки.Параметры.Видимость Тогда
    СписокПараметров = Новый СписокЗначений;
    СписокПараметров.ЗагрузитьЗначения(Фоновое.РегламентноеЗадание.Параметры);
    НоваяСтрока.Параметры = СписокПараметров;
    КонецЕсли;
    КонецЕсли;

    НоваяСтрока.Наименование = Фоновое.Наименование;
    НоваяСтрока.Ключ = Фоновое.Ключ;
    НоваяСтрока.ИмяМетода = Фоновое.ИмяМетода;
    НоваяСтрока.Состояние = Фоновое.Состояние;
    НоваяСтрока.Начало = Фоновое.Начало;
    НоваяСтрока.Конец = Фоновое.Конец;
    НоваяСтрока.Расположение = Фоновое.Расположение;

    Если Фоновое.ИнформацияОбОшибке <> Неопределено Тогда
    НоваяСтрока.Ошибки = Фоновое.ИнформацияОбОшибке.Описание;
    КонецЕсли;

    НоваяСтрока.Идентификатор = Фоновое.УникальныйИдентификатор;
    НоваяСтрока.Состояние = Фоновое.Состояние;

    ФоновыеЗаданияСоответствие[Строка(Фоновое.УникальныйИдентификатор)] = Фоновое;

    //СохранитьЗначение("ФоновыеЗадания.Отбор", ОтборФоновыхЗаданий);
    //СохранитьЗначение("ФоновыеЗадания.ОтборВключен", ОтборФоновыхЗаданийВключен);

    КонецЦикла;

    Если ТекущийИдентификатор <> Неопределено Тогда
    Строка = ТаблицаФоновыеЗадания.НайтиПоИдентификатору(ТекущийИдентификатор);
    Если Строка <> Неопределено Тогда
    Элементы.ТаблицаФоновыеЗадания.ТекущаяСтрока = Строка;
    КонецЕсли;
    КонецЕсли;

    Если Идентификаторы.Количество()>0 Тогда
    ВыделенныеСтроки.Очистить();
    КонецЕсли;

    Для Каждого Идентификатор Из Идентификаторы Цикл
    Строка = ТаблицаФоновыеЗадания.НайтиПоИдентификатору(Идентификатор);
    Если Строка <> Неопределено Тогда
    ВыделенныеСтроки.Добавить(Строка);
    КонецЕсли;
    КонецЦикла;

    КоличествоФоновыхЗаданийВТаблице = ТаблицаФоновыеЗадания.Количество();

    КонецПроцедуры

    &НаКлиенте
    Процедура УстановитьОтбор(Команда)
    ПараметрыФормы = Новый Структура;
    ПараметрыФормы.Вставить("Отбор", Новый Структура());
    Диалог = ПолучитьФорму("Обработка.РегламентныеИФоновыеЗадания.Форма.ДиалогОтбораФоновогоЗадания", ПараметрыФормы);

    Диалог.ОткрытьМодально();

    ОтборФоновыхЗаданий = Диалог.Отбор;
    ОтборФоновыхзаданийВключен = Истина;

    УстановитьОтборНаСервере(ОтборФоновыхЗаданий);
    КонецПроцедуры
```
---
Конвертировать обратно из строки в системное перечисление не трудно
---
Подскажите, каким образом?
---
СП нам говорит, что СостояниеФоновогоЗадания

Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).

Вывод: массив из кода выше для передачи на клиент не прокатит.

Решение: (2)
---
А каким образом мне потом конвертировать обратно в перечисление?
---
СостояниеФоновогоЗадания["Активно"]
---
Нет, это я понимаю, я не пойму, где я это должна сделать, как из структуры (Отбор) достать значения массива состояний, преобразовать их и вернуть обратно уже новый массив состояний (с перечислениями) в структуру.
---
На сервере.
---
Понятно, что на сервере. Каким образом вот это сделать: "как из структуры (Отбор) достать значения массива состояний, преобразовать их и вернуть обратно уже новый массив состояний (с перечислениями) в структуру. "
---
Достать: Отбор.Состояние
Преобразовать: Для Каждого Из
Вернуть: Отбор.Вставить()
---
Нет, та же ошибка. Ведь в итоге то я все равно на клиент передаю результат полученной таблицы.

Сделала так:

```1c
    &НаСервере
    Процедура УстановитьОтборНаСервере(Отбор)

    Перем ТекущийИдентификатор;

    ТекущаяСтрока = Элементы.ТаблицаФоновыеЗадания.ТекущаяСтрока;
    Если ТекущаяСтрока <> Неопределено Тогда
    ТекущийИдентификатор = ТекущаяСтрока;
    КонецЕсли;

    Идентификаторы = Новый Массив;

    ВыделенныеСтроки = Элементы.ТаблицаФоновыеЗадания.ВыделенныеСтроки;

    Для Каждого ВыделеннаяСтрока ИЗ ВыделенныеСтроки Цикл
    Идентификаторы.Добавить(ВыделеннаяСтрока);
    КонецЦикла;

    ТаблицаФоновыеЗадания.Очистить();
    ///////

    СостоянияФЗ = Новый Массив;

    Для каждого Элемент из ОтборФоновыхЗаданий.Состояние Цикл
    Если Элемент = "Завершено" Тогда
    СостоянияФЗ.Добавить(СостояниеФоновогоЗадания["Завершено"]);
    ИначеЕсли Элемент = "Активно" Тогда
    СостоянияФЗ.Добавить(СостояниеФоновогоЗадания["Активно"]);
    ИначеЕсли Элемент = "ЗавершеноАварийно" Тогда
    СостоянияФЗ.Добавить(СостояниеФоновогоЗадания["ЗавершеноАварийно"]);
    ИначеЕсли Элемент = "Отменено" Тогда
    СостоянияФЗ.Добавить(СостояниеФоновогоЗадания["Отменено"]);
    КонецЕсли;
    КонецЦикла;

    Если СостоянияФЗ.Количество()>0 Тогда
    ОтборФоновыхЗаданий.Вставить("Состояние", СостоянияФЗ);
    КонецЕсли;

    ///////////////
    Отбор = ОтборФоновыхЗаданий;

    Фоновые = ФоновыеЗадания.ПолучитьФоновыеЗадания(Отбор);
    Для Каждого Фоновое из Фоновые Цикл
    НоваяСтрока = ТаблицаФоновыеЗадания.Добавить();

    РегламентноеЗадание = Фоновое.РегламентноеЗадание;
    Если РегламентноеЗадание <> Неопределено Тогда
    Строка = РегламентноеЗадание.Метаданные.Представление();
    Если РегламентноеЗадание.Наименование <> " Тогда
    Строка = Строка + ":" + РегламентноеЗадание.Наименование;
    КонецЕсли;
    НоваяСтрока.Регламентное = Строка;

    Если Элементы.СписокФоновыхЗаданий.Колонки.Параметры.Видимость Тогда
    СписокПараметров = Новый СписокЗначений;
    СписокПараметров.ЗагрузитьЗначения(Фоновое.РегламентноеЗадание.Параметры);
    НоваяСтрока.Параметры = СписокПараметров;
    КонецЕсли;
    КонецЕсли;

    НоваяСтрока.Наименование = Фоновое.Наименование;
    НоваяСтрока.Ключ = Фоновое.Ключ;
    НоваяСтрока.ИмяМетода = Фоновое.ИмяМетода;
    НоваяСтрока.Состояние = Фоновое.Состояние;
    НоваяСтрока.Начало = Фоновое.Начало;
    НоваяСтрока.Конец = Фоновое.Конец;
    НоваяСтрока.Расположение = Фоновое.Расположение;

    Если Фоновое.ИнформацияОбОшибке <> Неопределено Тогда
    НоваяСтрока.Ошибки = Фоновое.ИнформацияОбОшибке.Описание;
    КонецЕсли;

    НоваяСтрока.Идентификатор = Фоновое.УникальныйИдентификатор;
    НоваяСтрока.Состояние = Фоновое.Состояние;

    ФоновыеЗаданияСоответствие[Строка(Фоновое.УникальныйИдентификатор)] = Фоновое;

    //СохранитьЗначение("ФоновыеЗадания.Отбор", ОтборФоновыхЗаданий);
    //СохранитьЗначение("ФоновыеЗадания.ОтборВключен", ОтборФоновыхЗаданийВключен);

    КонецЦикла;

    Если ТекущийИдентификатор <> Неопределено Тогда
    Строка = ТаблицаФоновыеЗадания.НайтиПоИдентификатору(ТекущийИдентификатор);
    Если Строка <> Неопределено Тогда
    Элементы.ТаблицаФоновыеЗадания.ТекущаяСтрока = Строка;
    КонецЕсли;
    КонецЕсли;

    Если Идентификаторы.Количество()>0 Тогда
    ВыделенныеСтроки.Очистить();
    КонецЕсли;

    Для Каждого Идентификатор Из Идентификаторы Цикл
    Строка = ТаблицаФоновыеЗадания.НайтиПоИдентификатору(Идентификатор);
    Если Строка <> Неопределено Тогда
    ВыделенныеСтроки.Добавить(Строка);
    КонецЕсли;
    КонецЦикла;

    КоличествоФоновыхЗаданийВТаблице = ТаблицаФоновыеЗадания.Количество();

    КонецПроцедуры

    &НаКлиенте
    Процедура УстановитьОтбор(Команда)
    ПараметрыФормы = Новый Структура;
    ПараметрыФормы.Вставить("Отбор", Новый Структура());
    Диалог = ПолучитьФорму("Обработка.РегламентныеИФоновыеЗадания.Форма.ДиалогОтбораФоновогоЗадания", ПараметрыФормы);

    Диалог.ОткрытьМодально();

    ОтборФоновыхЗаданий = Диалог.Отбор;
    ОтборФоновыхзаданийВключен = Истина;

    УстановитьОтборНаСервере(ОтборФоновыхЗаданий);
    КонецПроцедуры
```
---
Вангую: ОтборФоновыхЗаданий - это реквизит формы. В этом и проблема.
---
Да, верно.

```1c
    &НаКлиенте
    Процедура УстановитьОтбор(Команда)
    ПараметрыФормы = Новый Структура;
    ПараметрыФормы.Вставить("Отбор", Новый Структура());
    Диалог = ПолучитьФорму("Обработка.РегламентныеИФоновыеЗадания.Форма.ДиалогОтбораФоновогоЗадания", ПараметрыФормы);

    Диалог.ОткрытьМодально();

    ОтборФоновыхЗаданий = Диалог.Отбор; //вот здесь присвоить структуру новой переменной?
    ОтборФоновыхзаданийВключен = Истина;

    УстановитьОтборНаСервере(ОтборФоновыхЗаданий);
    КонецПроцедуры
```
---
Изменила, но "как ни странно2, это тоже не помогло.
---
Значит не то или не там изменила ) А может вообще не тому? ))
---
Итак. Реквизит на форме не нужен. На сервер передаем так:

```1c
    УстановитьОтборНаСервере(Новый ФиксированнаяСтруктура(Диалог.Отбор));
```

Далее на сервере преобразуем:

```1c
    Процедура УстановитьОтборНаСервере(ФиксОтбор)

    Отбор = Новый Структура(ФиксОтбор);
    Если Отбор.Свойство("Состояние") Тогда
    СостоянияЗначения = Новый Массив;
    Для Каждого КЗ Из Отбор.Состояние Цикл
    СостоянияЗначения.Добавить(СостояниеФоновогоЗадания[КЗ.Значение]);
    КонецЦикла;
    Отбор.Вставить("Состояние", СостоянияЗначения);
    КонецЕсли;
```
---
Урраааа)) Работает)) Спасибо большое!))
---
Здесь такая же беда..

```1c
    &НаСервере
    Процедура ОтборРегламентноеЗаданиеНачалоВыбораНаСервере()
    Регламентные = РегламентныеЗадания.ПолучитьРегламентныеЗадания();
    Для Каждого РегламентноеЗадание из Регламентные Цикл
    Элементы.ОтборРегламентноеЗадание.СписокВыбора.Добавить(РегламентноеЗадание, РегламентноеЗадание);
    КонецЦикла;
    КонецПроцедуры

    &НаКлиенте
    Процедура ОтборРегламентноеЗаданиеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    ОтборРегламентноеЗаданиеНачалоВыбораНаСервере();
    КонецПроцедуры
```

Только здесь уже "Отсутствует отображение для тип Регламентное зададние"
Что в этом случае может являться причиной??