Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0
Flexy @ Сегодня, 15:15
, Я имею ввиду случай определения открытости или закрытости формы другого справочника. На пример я открыл форму справочника: "ОБЪЕКТ". В группе(вкладке) которого имеется динамический список справочника: "ТОЧКА". Где в командной строке последнего имеется лично созданная кнопка создания нового элемента того же справочника: "ТОЧКА". Что нужно... Что бы ПриОткрытии справочника "ТОЧКА", можно было определить открыта ли форма справочника: ОБЪЕКТ. Вот что нужно. А так я тоже знаю, что в таком виде:
Сообщить(ЭтаФорма.Открыта());
команда работает. Мне просто нужно то же самое, только для формы не родного справочника.
Имхо, тогда нужно курить ОкнаКлиентскогоПриложения СП: ОкнаКлиентскогоПриложения (ClientApplicationWindows) Элементы коллекции:
ОкноКлиентскогоПриложения Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл. При обходе выбираются элементы коллекции. Возможно обращение к элементу коллекции посредством оператора [...]. В качестве аргумента передается индекс (нумерация с 0).
Методы:
Количество (Count) Получить (Get)
Описание:
Коллекция содержит объекты типа ОкноКлиентскогоПриложения: все главные окна приложения, окна форм и документов. В коллекцию не входят модальные окна сообщений, подсказки и другие служебные окна. Коллекция формируется автоматически и не имеет методов добавления или удаления.
Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0
Flexy @ Сегодня, 15:33
, Я просто новичок в 1С так что .... Короче не получается.
Gigi @ Сегодня, 15:54
, А таким маккаром:
Окна = ПолучитьОкна(); Для каждого Окно из Окна Цикл Сообщить(Окно.Заголовок); КонецЦикла;
Ругается. Буду признателен если помощь не по тому, что написано в это дурацком синтаксис помощнике. Который наверно "нужен" тому, который и без него все итак знает. Пожалуйста НА ПРИМЕРЕ! Если возможно!
КоллекцияОкон = ПолучитьОкна(); Для Каждого Окно Из КоллекцияОкон Цикл КоллекцияСодержимое = Окно.Содержимое; Для Каждого Содержимое Из КоллекцияСодержимое Цикл Сообщить(Содержимое.ИмяФормы); КонецЦикла; КонецЦикла;
Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0
Flexy @ Сегодня, 16:09
, СПАСИБО! Ша проверю!
Flexy @ Сегодня, 16:09
,
Цитата(Flexy @ 15.06.17, 16:09)
КоллекцияОкон = ПолучитьОкна(); Для Каждого Окно Из КоллекцияОкон Цикл КоллекцияСодержимое = Окно.Содержимое; Для Каждого Содержимое Из КоллекцияСодержимое Цикл Сообщить(Содержимое.ИмяФормы); КонецЦикла; КонецЦикла;
Блин! Не работает! Пишет:
Цитата
{Справочник.ТОЧКА.Форма.ФормаЭлемента.Форма(35)}: Поле объекта не обнаружено (Содержимое) КоллекцияСодержимое = Окно.Содержимое;
Gigi @ Сегодня, 16:22
, Код для 1С 8.2? Или как?
Gigi @ Сегодня, 16:23
,
Цитата
Содержимое (Content) Использование: Только чтение. Описание: Тип: СписокКомпонентXS. Содержит список всех компонент схемы. Доступность: Сервер, толстый клиент, внешнее соединение.
Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0
Petre @ Сегодня, 16:40
, Да на клиенте
&НаКлиенте Процедура ПриОткрытии(Отказ) КоллекцияОкон = ПолучитьОкна(); Для Каждого Окно Из КоллекцияОкон Цикл КоллекцияСодержимое = Окно.Содержимое; Для Каждого Содержимое Из КоллекцияСодержимое Цикл Сообщить(Содержимое.ИмяФормы); КонецЦикла; КонецЦикла; КонецПроцедуры
КоллекцияОкон = ПолучитьОкна(); Для Каждого Окно Из КоллекцияОкон Цикл КоллекцияСодержимое = Окно.ПолучитьСодержимое(); Если КоллекцияСодержимое = Неопределено Тогда Продолжить; КонецЕсли; Для Каждого Содержимое Из КоллекцияСодержимое Цикл Сообщить(Содержимое.ИмяФормы); КонецЦикла; КонецЦикла;
Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0
Flexy @ Сегодня, 16:43
, Так я тоже уже пробовал: Через "ПолучитьСодержимое();" Пишет:
Цитата
{Справочник.ТОЧКА.Форма.ФормаЭлемента.Форма(45)}: Ошибка при установке значения атрибута контекста (Окно) Для Каждого Окно Из КоллекцияОкон Цикл по причине: Несоответствие типов
Пока даже так не хочет
Gigi @ Сегодня, 16:48
,
КоллекцияОкон = ПолучитьОкна(); Для Каждого Окно Из КоллекцияОкон Цикл Если Не Окно.Основное Тогда Сообщить("!!"); // Форма = Окно.ПолучитьСодержимое(); // Форма.Закрыть(); КонецЕсли; КонецЦикла;
И так тоже пишет то же самое Никак не получается блин!
Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0
sava1 @ Сегодня, 16:54
,
Цитата(sava1 @ 15.06.17, 16:54)
У основного окна нет содержимого.
Открываемое окно должно быть пустым. А форма с которой она должна быть открыта содержит данные. Основное окно (т.е. самое верхнее и последнее) не содержит данные Получить надо ФормуОбъекта, но что бы она определяла, открыта ли та форма с которой ее запустили.
Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0
Всем привет! Уважаемые специалисты. не подскажете как получить список всех открытых управляемых Форм на клиенте для 1С 8.2? Пожалуйста на примере кода если можно. Буду признателен!
Gigi @ Сегодня, 16:27
, Нарыл вот такое решение:
Процедура СписокОткрытыхФорм() Экспорт Для Каждого Справочник Из Метаданные.Справочники Цикл Для Каждого ТекФорма Из Справочник.Формы Цикл Форма = Справочники[Справочник.Имя].ПолучитьФорму(ТекФорма.Имя); Если Форма.Открыта() Тогда Сообщить(Справочник.Имя + " " + ТекФорма.Имя); КонецЕсли; КонецЦикла; КонецЦикла; КонецПроцедуры
Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0
logist @ Сегодня, 16:23
, Это я знаю, но сделать через "Владелец" просто так не совсем устраивает. Ладно перехожу к новой теме и формулирую тему иначе: Вот так: Получить список открытых форм Буду признателен:
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!