Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Проверка открытия формы Справочника/документа 2 страниц V   1 2 >          
Gigi Подменю пользователя
сообщение 15.06.17, 14:01
Сообщение #1

Оратор
*****
Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0

Добрый день.
Как можно проверить открыта ли форма определенного Справочника/Документа или нет?
Пример:
Форма = Справочники.Объект.ПолучитьФорму("ФормаОбъекта");
Если Форма.Открыта() тогда
//-*-*-*-*
КонецЕсли;

НЕ РАБОТАЕТ!

Flexy Подменю пользователя
сообщение 15.06.17, 14:15
Сообщение #2

Танцор с Бубном
Иконка группы
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 230 раз
Рейтинг: 0

Цитата(Gigi @ 15.06.17, 14:01) *
НЕ РАБОТАЕТ!

Конечно. ПолучитьФорму() и ОткрытьФорму() - это две большие разницы.
В вашем случае форма не открыта.

Инфо из СП:

Открыта (IsOpen)
Синтаксис:

Открыта()
Возвращаемое значение:

Тип: Булево.
Истина - форма открыта; Ложь - не открыта.
В обработчике события ПриОткрытии возвращает Истина .
Описание:

Определяет, открыта ли данная форма.

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

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

Сообщение отредактировал Flexy - 15.06.17, 14:15

Gigi Подменю пользователя
сообщение 15.06.17, 14:28
Сообщение #3

Оратор
*****
Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0

Flexy @ Сегодня, 15:15 * ,
Я имею ввиду случай определения открытости или закрытости формы другого справочника.
На пример я открыл форму справочника: "ОБЪЕКТ". В группе(вкладке) которого имеется динамический список справочника: "ТОЧКА".
Где в командной строке последнего имеется лично созданная кнопка создания нового элемента того же справочника: "ТОЧКА".
Что нужно...
Что бы ПриОткрытии справочника "ТОЧКА", можно было определить открыта ли форма справочника: ОБЪЕКТ.
Вот что нужно.
А так я тоже знаю, что в таком виде:
Сообщить(ЭтаФорма.Открыта());

команда работает.
Мне просто нужно то же самое, только для формы не родного справочника.

Flexy Подменю пользователя
сообщение 15.06.17, 14:33
Сообщение #4

Танцор с Бубном
Иконка группы
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 230 раз
Рейтинг: 0

Имхо, тогда нужно курить ОкнаКлиентскогоПриложения
СП:
ОкнаКлиентскогоПриложения (ClientApplicationWindows)
Элементы коллекции:

ОкноКлиентскогоПриложения
Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл. При обходе выбираются элементы коллекции.
Возможно обращение к элементу коллекции посредством оператора [...]. В качестве аргумента передается индекс (нумерация с 0).

Методы:

Количество (Count)
Получить (Get)

Описание:

Коллекция содержит объекты типа ОкноКлиентскогоПриложения: все главные окна приложения, окна форм и документов. В коллекцию не входят модальные окна сообщений, подсказки и другие служебные окна.
Коллекция формируется автоматически и не имеет методов добавления или удаления.

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

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

Gigi Подменю пользователя
сообщение 15.06.17, 15:08
Сообщение #5

Оратор
*****
Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0

Flexy @ Сегодня, 15:33 * ,
Я просто новичок в 1С так что ....
Короче не получается.

Gigi @ Сегодня, 15:54 * ,
А таким маккаром:
Окна = ПолучитьОкна();
Для каждого Окно из Окна Цикл
  Сообщить(Окно.Заголовок);
КонецЦикла;

Ругается.
Буду признателен если помощь не по тому, что написано в это дурацком синтаксис помощнике.
Который наверно "нужен" тому, который и без него все итак знает. smile.gifsmile.gif
Пожалуйста НА ПРИМЕРЕ! Если возможно!

Flexy Подменю пользователя
сообщение 15.06.17, 15:09
Сообщение #6

Танцор с Бубном
Иконка группы
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 230 раз
Рейтинг: 0

Gigi @ Сегодня, 14:54 * ,
Как-то так...
КоллекцияОкон = ПолучитьОкна();
    Для Каждого Окно Из КоллекцияОкон Цикл
        КоллекцияСодержимое = Окно.Содержимое;
        Для Каждого Содержимое Из КоллекцияСодержимое Цикл
            Сообщить(Содержимое.ИмяФормы);
        КонецЦикла;
    КонецЦикла;


Сообщение отредактировал Flexy - 15.06.17, 15:09

Спасибо сказали: Gigi,

Gigi Подменю пользователя
сообщение 15.06.17, 15:26
Сообщение #7

Оратор
*****
Группа: Пользователи
Сообщений: 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.
Содержит список всех компонент схемы.
Доступность:
Сервер, толстый клиент, внешнее соединение.


Блин! Как быть?

Petre Подменю пользователя
сообщение 15.06.17, 15:31
Сообщение #8

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2902
Из: Київ, Україна
Спасибо сказали: 1144 раз
Рейтинг: 1225

Gigi @ Сегодня, 16:26 * ,
Приложение управляемое?


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

Gigi Подменю пользователя
сообщение 15.06.17, 15:33
Сообщение #9

Оратор
*****
Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0

Цитата(Petre @ 15.06.17, 16:31) *
Приложение управляемое?

Да!

Petre Подменю пользователя
сообщение 15.06.17, 15:40
Сообщение #10

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2902
Из: Київ, Україна
Спасибо сказали: 1144 раз
Рейтинг: 1225

Gigi @ Сегодня, 16:33 * ,
И код запускаете на клиенте?


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

Gigi Подменю пользователя
сообщение 15.06.17, 15:43
Сообщение #11

Оратор
*****
Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0

Petre @ Сегодня, 16:40 * ,
Да на клиенте
&НаКлиенте
Процедура ПриОткрытии(Отказ)
КоллекцияОкон = ПолучитьОкна();
    Для Каждого Окно Из КоллекцияОкон Цикл
        КоллекцияСодержимое = Окно.Содержимое;
        Для Каждого Содержимое Из КоллекцияСодержимое Цикл
            Сообщить(Содержимое.ИмяФормы);
        КонецЦикла;
    КонецЦикла;
КонецПроцедуры

Короче .. ругается...

Flexy Подменю пользователя
сообщение 15.06.17, 15:43
Сообщение #12

Танцор с Бубном
Иконка группы
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 230 раз
Рейтинг: 0

Попробуйте так:
КоллекцияОкон = ПолучитьОкна();
    Для Каждого Окно Из КоллекцияОкон Цикл
        КоллекцияСодержимое = Окно.ПолучитьСодержимое();
                Если КоллекцияСодержимое = Неопределено Тогда
                       Продолжить;
                КонецЕсли;
        Для Каждого Содержимое Из КоллекцияСодержимое Цикл
            Сообщить(Содержимое.ИмяФормы);
        КонецЦикла;
    КонецЦикла;

sava1 Подменю пользователя
сообщение 15.06.17, 15:48
Сообщение #13

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

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

Gigi Подменю пользователя
сообщение 15.06.17, 15:53
Сообщение #14

Оратор
*****
Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0

Flexy @ Сегодня, 16:43 * ,
Так я тоже уже пробовал:
Через "ПолучитьСодержимое();"
Пишет:
Цитата
{Справочник.ТОЧКА.Форма.ФормаЭлемента.Форма(45)}: Ошибка при установке значения атрибута контекста (Окно)
Для Каждого Окно Из КоллекцияОкон Цикл
по причине:
Несоответствие типов

Пока даже так не хочет

Gigi @ Сегодня, 16:48 * ,
КоллекцияОкон = ПолучитьОкна();
Для Каждого Окно Из КоллекцияОкон Цикл
    Если Не Окно.Основное Тогда
        Сообщить("!!");
       // Форма = Окно.ПолучитьСодержимое();
       // Форма.Закрыть();
    КонецЕсли;
КонецЦикла;

И так тоже пишет то же самое
Никак не получается блин!

sava1 Подменю пользователя
сообщение 15.06.17, 15:55
Сообщение #15

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

У основного окна нет содержимого.

Какую форму хотите получить? списка, элемента..

Gigi Подменю пользователя
сообщение 15.06.17, 15:56
Сообщение #16

Оратор
*****
Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0

sava1 @ Сегодня, 16:54 * ,
Цитата(sava1 @ 15.06.17, 16:54) *
У основного окна нет содержимого.

Открываемое окно должно быть пустым. А форма с которой она должна быть открыта содержит данные.
Основное окно (т.е. самое верхнее и последнее) не содержит данные
Получить надо ФормуОбъекта, но что бы она определяла, открыта ли та форма с которой ее запустили.

logist Подменю пользователя
сообщение 15.06.17, 16:23
Сообщение #17

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(Gigi @ 15.06.17, 16:56) *
открыта ли та форма с которой ее запустили.

У формы есть свойство Владелец, оно содержит данные о форме из которой была открыта текущая форма.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Gigi Подменю пользователя
сообщение 15.06.17, 16:33
Сообщение #18

Оратор
*****
Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0

Всем привет!
Уважаемые специалисты. не подскажете как получить список всех открытых управляемых Форм на клиенте для 1С 8.2?
Пожалуйста на примере кода если можно.
Буду признателен!


Gigi @ Сегодня, 16:27 * ,
Нарыл вот такое решение:
 Процедура СписокОткрытыхФорм() Экспорт
Для Каждого Справочник Из Метаданные.Справочники Цикл
   Для Каждого ТекФорма Из Справочник.Формы Цикл
       Форма = Справочники[Справочник.Имя].ПолучитьФорму(ТекФорма.Имя);
       Если Форма.Открыта() Тогда
           Сообщить(Справочник.Имя + " " + ТекФорма.Имя);
       КонецЕсли;
   КонецЦикла;
КонецЦикла;
КонецПроцедуры

Гуууу... тоже НЕ РАБОТАЕТ!

Gigi Подменю пользователя
сообщение 15.06.17, 16:29
Сообщение #19

Оратор
*****
Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0

logist @ Сегодня, 16:23 * ,
Это я знаю, но сделать через "Владелец" просто так не совсем устраивает.
Ладно перехожу к новой теме и формулирую тему иначе:
Вот так:
Получить список открытых форм
Буду признателен:

logist Подменю пользователя
сообщение 15.06.17, 16:37
Сообщение #20

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(Gigi @ 15.06.17, 17:29) *
Ладно перехожу к новой теме и формулирую тему иначе:

Не надо.

Цитата(Gigi @ 15.06.17, 17:29) *
но сделать через "Владелец" просто так не совсем устраивает.

Почему не устраивает?


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


2 страниц V   1 2 >
Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.03.24, 14:35
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!