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

Форма открывается вот так:

```1c
    параметры = Новый Структура("Ключ", НекаяСтруктура);
    ОткрытьФорму("РегистрСведений.НазваниеРегистра.Форма.ФормаОтчета", параметры);
```

"Ключ" - ключевой параметр формы.

Перепробовал кажется уже всё что можно, ставил ключевой параметр, выключал его, ставил "Неопределенно" в поле Владелец, ставил Ложь в поле "Уникальность", ничего не помогает, либо открывается новая форма, либо уже открытая, но со старой структурой (а передается новая структура).

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

можно сделать так:
в модулеПовтИсп формировать Фиксированную Структуру, параметров простых типов: Неопределено, Null, Булево, Дата, Строка, Число, Ссылка.
(модуль должен вызываться из клиента, что бы работало то что написано далее)

если эту процедуру вызывать из модуля клиента, то в течении 20 минут будет возвращаться одна и таже структура.
(при условии, что хватает памяти на кеш этой структуры)

PS я один раз сделал именно так, т.е. логика 100% рабочая.

но я расширил эту логику - открытая форма сама, с какой-то периодичностью вызывала эту процедуру, и сравнивала полученную Фиксированную структуру с той что у неё есть, и если она разная, то самозакрывалась...
---
Конфа не типовая. Воспользуюсь СпискомЗначений вместо структуры, там проблемы с упорядочиванием быть не должно.
---
ИМХО Тогда уж лучше генерить строку самому, складывая в неё идентификаторы объектов в определённой последовательности
---
А на сколько много полей в передаваемой структуре? Я быть может предложу банальную вещь, но почему бы не сделать вместо одной структуры несколько ключевых полей для каждого из поля структуры?
---
туры несколько ключевых полей для каждого из поля структу
В структуре от 0 до 50 ключей :)
---
Если Вас не затруднит, не могли бы Вы описать задачу, которую решаете, контролируя уникальность открытой формы по 50-ти ключам?
---
Спасибо, но проблема себя исчерпала :)
---
только в этом случае не будет работать процедура ПриОткрытии у той формы, что вызывается
---
<Уникальность> (необязательный)
Тип: Произвольный.
В данном параметре может быть задан некоторый ключ, значение которого будет использоваться для поиска уже открытых форм. Если будет найдена форма с таким же ключом уникальности, вместо открытия новой формы будет активизирована найденная форма.
Ложь - искать форму с ключом уникальности по умолчанию, Истина - не искать форму вообще, любое другое значение устанавливает ключ уникальности, по которому будет произведен поиск.
Значение по умолчанию: Ложь.А если просто установить в Истина? если, конечно, окно каждый раз новое..

PS а "НекаяСтруктура" точно каждый раз новая? может просто старая редактируется? ведь проверка идёт не по содержимому этой структуры....
---
Если поставить "Истина" - это просто отключит поиск открытой формы и при любом раскладе будет открываться новая, а необходимо чтобы открывалась новая только в случае если сейчас не открыта форма с такой же структурой.
---
не открыта форма с такой же структурой.
эта формулировка ОЧЕНЬ смущает...

что вы понимаете под ТАКОЙ же структурой?
---
понимаете под ТА
Я имею ввиду что я по нажатию на кнопку создаю структуру:
НекаяСтруктура = Новый Структура("Свойство1, Свойство2", Значение1, Значение2 );

Затем открывается форма:
параметры = Новый Структура("Ключ", НекаяСтруктура);
ОткрытьФорму("РегистрСведений.НазваниеРегистра.Форма.ФормаОтчета", параметры);

Т.е структура инициализируется по нажатию на кнопку и кажется я стал понимать...в качестве ключа уникальности для формы будет выступать ссылка на структуру..? А структура всегда новая, хоть и с такими же свойствами...
---
ПерваяСтруктура = Новый Структура("Свойство1, Свойство2", Значение1, Значение2 );
ВтораяСтруктура = Новый Структура("Свойство1, Свойство2", Значение1, Значение2 );

эти структуры уникальны, т.е. НЕ РАВНЫ! (т.к. сравнивается не содержимое, а ссылка на кусок памяти)