Как можно проверить открыта ли форма определенного Справочника/Документа или нет?
Пример:
Форма = Справочники.Объект.ПолучитьФорму("ФормаОбъекта");
Если Форма.Открыта() тогда
//-*-*-*-*
КонецЕсли;
НЕ РАБОТАЕТ!
Форма = Справочники.Объект.ПолучитьФорму("ФормаОбъекта");
Если Форма.Открыта() тогда
//-*-*-*-*
КонецЕсли;
Сообщить(ЭтаФорма.Открыта());
Окна = ПолучитьОкна();
Для каждого Окно из Окна Цикл
Сообщить(Окно.Заголовок);
КонецЦикла;
КоллекцияОкон = ПолучитьОкна();
Для Каждого Окно Из КоллекцияОкон Цикл
КоллекцияСодержимое = Окно.Содержимое;
Для Каждого Содержимое Из КоллекцияСодержимое Цикл
Сообщить(Содержимое.ИмяФормы);
КонецЦикла;
КонецЦикла;
&НаКлиенте
Процедура ПриОткрытии(Отказ)
КоллекцияОкон = ПолучитьОкна();
Для Каждого Окно Из КоллекцияОкон Цикл
КоллекцияСодержимое = Окно.Содержимое;
Для Каждого Содержимое Из КоллекцияСодержимое Цикл
Сообщить(Содержимое.ИмяФормы);
КонецЦикла;
КонецЦикла;
КонецПроцедуры
КоллекцияОкон = ПолучитьОкна();
Для Каждого Окно Из КоллекцияОкон Цикл
КоллекцияСодержимое = Окно.ПолучитьСодержимое();
Если КоллекцияСодержимое = Неопределено Тогда
Продолжить;
КонецЕсли;
Для Каждого Содержимое Из КоллекцияСодержимое Цикл
Сообщить(Содержимое.ИмяФормы);
КонецЦикла;
КонецЦикла;
Для Каждого Окно Из Окна Цикл
Если Не Окно.Основное Тогда
// Форма = Окно.ПолучитьСодержимое();
// Форма.Закрыть();
КонецЕсли;
КонецЦикла;
КоллекцияОкон = ПолучитьОкна();
Для Каждого Окно Из КоллекцияОкон Цикл
Если Не Окно.Основное Тогда
Сообщить("!!");
// Форма = Окно.ПолучитьСодержимое();
// Форма.Закрыть();
КонецЕсли;
КонецЦикла;
Процедура СписокОткрытыхФорм() Экспорт
Для Каждого Справочник Из Метаданные.Справочники Цикл
Для Каждого ТекФорма Из Справочник.Формы Цикл
Форма = Справочники[Справочник.Имя].ПолучитьФорму(ТекФорма.Имя);
Если Форма.Открыта() Тогда
Сообщить(Справочник.Имя + " " + ТекФорма.Имя);
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
//########## МОДУЛЬ ФОРМЫ ЭЛЕМЕНТА СПРАВОЧНИКА: "ОБЪЕКТ" ##########
//Кнопка в форме справочника "ОБЪЕКТ" в командной панели динамического списка Справочника "ТОЧКА"
&НаКлиенте
Процедура Кнопка_ДобавитьТочкуУчета(Команда)
//===========================================
Если Объект.Код = "" Тогда
Предупреждение("Для определения точек учета объект не сохранен!");
Перейти ~Выход;
КонецЕсли;
//===========================================
Форма_ТОЧКА = ПолучитьФорму("Справочник.ТОЧКА.ФормаОбъекта", новый Структура("Ключ", ,,ЭтаФорма));
//===========================================
ЭлементОбъекта=SubFx_СерверПойскЗапись.ПолучитьЭлементОбъектаПоКодуНомеру("Справочники","ОБЪЕКТ",Объект.Код); //функция из обшего модуля для получающая объект по коду/номеру
Форма_ТОЧКА.Объект.БалансоваяПринадлежность=ЭлементОбъекта; // Линия присваивания реквизиту справочника ТОЧКА в данном случае с именем: "БалансоваяПринадлежность"
//===========================================
Форма_ТОЧКА.ОткрытьМодально();
//===========================================
Отобор_ТочкиУчета(); //Процедура отбора динамического списка справочника: "ТОЧКА" с увязкой их балансовой принадлежности.
~Выход:;
КонецПроцедуры
//########## МОДУЛЬ ФОРМЫ ЭЛЕМЕНТА СПРАВОЧНИКА: "ТОЧКА" ##########
&НаКлиенте
Процедура ПриОткрытии(Отказ)
//===================================================
Если Объект.Код="" и Объект.БалансоваяПринадлежность.Пустая() тогда
стрПредупреждение="Данный способ обычного создания новой учетной точки НЕ РЕКОМЕНДУЕТСЯ!
|Так как при нем нужно в ручном режиме указывать некоторые парамметры учетной точки. От которых зависит правильный учет данных!
|Что бы нужные для учета параметры устанавливались автоматический, новую учетную точку необходимо создавать ТОЛЬКО В ФОРМЕ ОБЪЕКТА!
|-----------------------------------------------------------------------------
|Открыть форму создания новой учетной точки?";
Если Вопрос(стрПредупреждение,РежимДиалогаВопрос.ДаНет,,,"Создение точки учета обычным путем")=КодВозвратаДиалога.Да Тогда
Иначе
Отказ = Истина;
КонецЕсли;
КонецЕсли;
//===================================================
КонецПроцедуры