Всем привет!
Кто сталкивался с вопросом,
Как из формы обработки управляемого приложения (ЗУП 3.1) открыть форму документа (Измененение штатного расписания) и установить текущую строку равную нужному значению
Пока не работает. Не могу понять где ошибка
Вариант 1

```1c
    ФормаДокумента=Элемент.ТекущиеДанные.Регистратор.получитьФорму();

    МассивПозиций=ФормаДокумента.Объект.Позиции.НайтиСтроки(Новый Структура ("Позиция", ТекущаяПозиция));
    Если МассивПозиций.Количество() <> 0 Тогда

    ФормаДокумента.Элементы.Позиции.ТекущаяСтрока = МассивПозиций[0].ПолучитьИдентификатор();

    КонецЕсли;
```

Вариант 2

```1c
    СтандартнаяОбработка=Ложь;
    ТочкаОстанова=1;

    ТочкаОстанова=1;
    П = Новый Структура;
    Отбор = Новый Структура;
    Отбор.Вставить("Позиция", ТекущаяПозиция);
    П.Вставить("Отбор", Отбор);

    ПараметрыОткрытия = Новый Структура;

    ПоследнееПодходящееИзменение = ПоследнийПодходящийДокументИзменения(ОтборОрганизация);
    Если ПоследнееПодходящееИзменение = Неопределено Тогда

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

    ПараметрыОткрытия.Вставить("ЗначенияЗаполнения", ЗначенияЗаполнения);

    Иначе
    ПараметрыОткрытия.Вставить("Ключ", ПоследнееПодходящееИзменение);
    Позиция
    КонецЕсли;
    УправлениеШтатнымРасписаниемФормы.УстановитьСтрокуТекущейПозиции();
    УстановитьСтрокуТекущейПозиции(Форма, ПутьКДанным, ИмяТаблицыФормы, ИмяРеквизитаПозиция) Экспорт

    ПараметрыВыбора = Новый Структура;
    ПараметрыВыбора.Вставить("РежимВыбора", Истина);
    ПараметрыВыбора.Вставить("ВыборГруппИЭлементов", ИспользованиеГруппИЭлементов.Элементы);
    ПараметрыВыбора.Вставить("РазрешитьВыборКорня", Ложь);
    ПараметрыВыбора.Вставить("ТекущаяСтрока", ТекущаяПозиция);

    ПараметрыОткрытия.Вставить("ПараметрыВыбора", ПараметрыВыбора);
    ПараметрыОткрытия.Вставить("ТекущаяСтрока", ТекущаяПозиция);

    ПараметрыОткрытия.Вставить("Ключ", Элемент.ТекущиеДанные.Регистратор);
    ПараметрыОткрытия.Вставить("Отбор", Отбор);

    ФормаДокумента= ОткрытьФорму("Документ.ИзменениеШтатногоРасписания.ФормаОбъекта", ПараметрыОткрытия, ЭтаФорма);
```
---
Проверил, да действительно тип ДанныеФормыКоллекция,

```1c
    Процедура ОткрытьДокумент(Команда)
    ПараметрыФормы=Новый Структура;
    ПараметрыФормы.Вставить("Ключ",Документ1);
    ФормаДокумента=ОткрытьФорму("Документ.ПоступлениеТоваров.Форма.ФормаДокумента",ПараметрыФормы,ЭтаФорма,,,,,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
    МассивПозиций=ФормаДокумента.Объект.Товары.НайтиСтроки(Новый Структура("НомерСтроки", НомерСтроки));
    ФормаДокумента.Элементы.Товары.ТекущаяСтрока=МассивПозиций[0].ПолучитьИдентификатор();
    КонецПроцедуры
```
---
Примерно так

```1c
    &НаКлиенте
    Процедура ОткрытьДокумент(Команда)
    ПараметрыФормы=Новый Структура;
    ПараметрыФормы.Вставить("Ключ",Документ1);
    ФормаДокумента=ОткрытьФорму("Документ.ПоступлениеТоваров.Форма.ФормаДокумента",ПараметрыФормы,ЭтаФорма,,,,,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
    Товары=ФормаДокумента.Объект.Товары;
    НужнаяСтрока=ПолучитьСтроку(Товары,НомерСтроки);
    ФормаДокумента.Элементы.Товары.ТекущаяСтрока=НужнаяСтрока;
    КонецПроцедуры

    &НаСервереБезКонтекста
    Функция ПолучитьСтроку(Товары,НомерСтроки)
    МассивПозиций=Товары.НайтиСтроки(Новый Структура("НомерСтроки", НомерСтроки));
    Возврат МассивПозиций[0].ПолучитьИдентификатор();
    КонецФункции
```
---
Примерно так

```1c
    &НаКлиенте
    Процедура ОткрытьДокумент(Команда)
    ПараметрыФормы=Новый Структура;
    ПараметрыФормы.Вставить("Ключ",Документ1);
    ФормаДокумента=ОткрытьФорму("Документ.ПоступлениеТоваров.Форма.ФормаДокумента",ПараметрыФормы,ЭтаФорма,,,,,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
    Товары=ФормаДокумента.Объект.Товары;
    НужнаяСтрока=ПолучитьСтроку(Товары,НомерСтроки);
    ФормаДокумента.Элементы.Товары.ТекущаяСтрока=НужнаяСтрока;
    КонецПроцедуры

    &НаСервереБезКонтекста
    Функция ПолучитьСтроку(Товары,НомерСтроки)
    МассивПозиций=Товары.НайтиСтроки(Новый Структура("НомерСтроки", НомерСтроки));
    Возврат МассивПозиций[0].ПолучитьИдентификатор();
    КонецФункции
```
---
Вызов сервера лишний. НайтиСтроки доступно на клиенте как метод ДанныхФормыКоллекция.
---
Не думаю, здесь используется табличная часть Объект.Товары
---
Работа ведется с ДанныеФормыКоллекция, а не с ТабличнойЧастью, т.к. получена была эта коллекция из свойств формы.
Товары=ФормаДокумента.Объект.Товары;
В форме нет коллекции ТабличнаяЧасть, есть только ДанныеФормыКоллекция.
---
Проверил, да действительно тип ДанныеФормыКоллекция,

```1c
    Процедура ОткрытьДокумент(Команда)
    ПараметрыФормы=Новый Структура;
    ПараметрыФормы.Вставить("Ключ",Документ1);
    ФормаДокумента=ОткрытьФорму("Документ.ПоступлениеТоваров.Форма.ФормаДокумента",ПараметрыФормы,ЭтаФорма,,,,,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
    МассивПозиций=ФормаДокумента.Объект.Товары.НайтиСтроки(Новый Структура("НомерСтроки", НомерСтроки));
    ФормаДокумента.Элементы.Товары.ТекущаяСтрока=МассивПозиций[0].ПолучитьИдентификатор();
    КонецПроцедуры
```
---
какого конкретно документа? Записанного?
Добавлять строку нужно или там уже есть строки и нужно курсор тыкнуть?
---
Вариант 1:
1. У ссылки нет метода "ПолучитьФорму". Это метод глобального контекста.
2. Не вызывается метод глобального контекста "ОткрытьФорму".
3. Сначала надо открыть форму, а потом установить текущую строку таблицы формы. В обратном порядке текущая строка не устанавливается.
---
Cпасибо, коллеги!
// попробовал решение 3 (independ) - помогло.
---
+0.78sm