23.09.09 — 16:55
Собственно вопрос уже задан в заголовке, подскажите плиз есть ли другой вариант кроме как самому следить за тем какие окна открыты.
1 — 23.09.09 — 16:59
никак
2 — 23.09.09 — 16:59
Ясно, жаль, СПС.
3 — 23.09.09 — 17:19
Можно через ВК
4 — 23.09.09 — 17:23
(3) Как??
5 — 23.09.09 — 17:26
(0) тебе зачем?
6 — 23.09.09 — 17:30
так можно или нельзя?
7 — 23.09.09 — 17:32
(4) Можно ..
MDI-окно
8 — 23.09.09 — 17:33
где тут валялась кусок кода… сам видел
9 — 23.09.09 — 17:36
(7) Мва-ха-ха..
10 — 23.09.09 — 17:39
(9) что?
11 — 23.09.09 — 17:42
(10) Все хорошо.
Продолжай.
12 — 23.09.09 — 17:46
13 — 23.09.09 — 17:48
можно разослать широковещательное сообщение. но это надо код каждой формы дорабатывать (ответ на сообщение делать)
14 — 23.09.09 — 17:51
(13) проще тогда уж в какой нить глобальный массив скидывать форму при открытии и вынимать при закрытии
15 — 23.09.09 — 17:52
(12)
ППЦ,
Менеджер = Вычислить((ТипОбъекта.Ключ + «[Объект.Имя]»));
Выборка = Менеджер.выбрать();
пока Выборка.Следующий() Цикл
На 60 моих гектарах «это» уснет навечно.
16 — 23.09.09 — 17:54
(15) У тебя украли кнопку Reset? :-))))
17 — 23.09.09 — 17:54
(15) жестоко…
18 — 23.09.09 — 17:56
(16) Не.
а что, реально.
Во франче выковыривал отверткой кнопку «Suspend», которую какой-то дятлообразный дизайнер поместил под клавишей Delete.
19 — 23.09.09 — 18:05
(15) окна с уникальным GUID не откроет
20 — 23.09.09 — 18:05
(18) Я тоже выковирывал
21 — 23.09.09 — 18:10
да с МДИ я чет пролетел :))))) пошел учить мат часть по 1С
22 — 23.09.09 — 18:15
(21) Че МДИ.
Ну получишь дескрипторы окон, их элементов.
И?
Сушить их будешь?
23 — 23.09.09 — 18:20
(22) ну список окон то получить можно открытых, другое дело для чего это делать, так что ответ на (0) можно
24 — 24.09.09 — 08:59
(22) Хочу вынести форму объекта во внешнюю обработку — модуль объекта я вынес без проблем а вот с формой немножко лажово работает метод ВнешниеОтчеты.ПолучтиФорму(«ИмяФормы»,,Ссылка) — он не ищет среди открытых форм форму с индентификатором а каждый раз создает новую… ну видно делать нечего придется ручками контролить список. Я думал может метод какой нить есть.
25 — 24.09.09 — 09:01
(24) уверен?
26 — 24.09.09 — 09:02
(24) уверен в чем? в том что не работает метод — да уверен.
27 — 24.09.09 — 09:03
(24) во всяком случае в 1С:Предприятие 8.1 (8.1.12.101) точно)))
28 — 24.09.09 — 09:08
(13) И ответили все 15 открытых форм….
29 — 24.09.09 — 09:13
(24) как то верится с трудом. Вообще то первым параметром там идет имя файла, а уже вторым имя формы.
30 — 24.09.09 — 09:16
+(29) может еще из за владельца открываться другая форма.
31 — 24.09.09 — 09:18
(29)Сори я имел ввиду такой расклад
Объект = ВнешниеОтчеты.Создать(«ИмяФайла»);
Объект.ПолучитьФорму(«Имя»,,Ссылка);
— а владельца исползовать не могу так как оригинальную форму объекта нужно закрыть а в место нее показать из внешнего файла.
32 — 24.09.09 — 09:26
Вобщем проблема решается так:
в модуле приложения пишем вот такой код
Перем СписокОткрытыхФорм Экспорт;
Процедура СписокОткрытыхФорм(Форма,Ключ) Экспорт
Строка = СписокОткрытыхФорм.Найти(Ключ,»Ключ»);
Если Строка =Неопределено тогда
Строка = СписокОткрытыхФорм.Добавить();
Строка.Форма=Форма;
Строка.Ключ=Ключ;
Форма.Открыть();
Иначе
Строка.Форма.Активизировать();
КонецЕсли;
КонецПроцедуры
СписокОткрытыхФорм = Новый ТаблицаЗначений;
СписокОткрытыхФорм.Колонки.Добавить(«Форма»);
СписокОткрытыхФорм.Колонки.Добавить(«Ключ»);
всем спасибо за внимание!!!
33 — 24.09.09 — 09:31
(32) сдаётся мне очередная «нетленко» рождается у сережи — удачи тебе коллега!
девиз «вперед на мины»
34 — 24.09.09 — 09:54
(32) а что мешает форму получить так:
ФормаОтчета = ВнешниеОтчеты.ПолучитьФорму(ИмяФайла, ИмяФормы)
Если нужны для работы реквизиты объекта, то их можно достать через
ФормаОтчета.ОбработкаОбъект.
35 — 24.09.09 — 09:56
(31) в таком случае зачем пихать ссылку в качестве ключа уникальности формы?
ИМХО — извращение.
36 — 24.09.09 — 10:05
(32) а причем сдесь форма отчета??
Речь идет о замене формы объекта к примеру формы Документа из конфы формой хранящейся во внешнем файле, отсюда и ссылка в качестве ключа уникальности.
37 — 24.09.09 — 10:33
(36) не вижу связи. Выдержка из СП:
<Ключ уникальности> (необязательный)
Тип: Произвольный. В данном параметре может быть задан некоторый ключ, значение которого будет использоваться для поиска уже открытых форм.
При поиске учитываются значения свойств открытых форм соответствующим значениям параметров метода. Если найдена открытая форма (по совпадению всех параметров), то она будет возвращена вместо новой формы.
ЕСЛИ ИЗ НЕКОЕЙ ФОРМЫ(один и тот же владелец) требуется открывать новые экземпляры другой формы, то при каждом вызове метода значение данного параметра должно быть уникально (в рамках соответствующих значений свойств открытых форм).
Значение параметра присваивается свойству открываемой формы КлючУникальности.
Убери его.
38 — 24.09.09 — 10:44
(36) Если ты пытаешься открыть документ форма которого уже открыта при таком раскладе у тебя откроется новое окно вместо того чтобы активизировать открытое.
39 — 24.09.09 — 10:45
(38) уверен?
40 — 24.09.09 — 10:46
Ээээ, а можно поинтересоваться зачем афт ару список открытых окон?
41 — 24.09.09 — 10:47
(39) я впринципе закончил тестовый вариант конфы хочеш скину сам посмотришь, я не претендую на звание мега папы 1С а только учусь и хорошая критика мне бы не помешала.
42 — 24.09.09 — 10:47
(40) ищет уже открытое окно, чтобы использовать его. Но как то с тыла.
43 — 24.09.09 — 10:49
(41) я тоже учусь. Но с таким не сталкивался. У меня если форма уже открыта и при ее открытии не использовался ключ, то при попытке открыть форму без указания ключа — находилась всегда уже открытая форма.
44 — 24.09.09 — 10:55
(41)Наверное я не совсем ясно объяснил то что я делаю:
есть конфа модули которой — а именно модули объектов и общих модулей вынесенны во внешние отчеты, также вынесенны во внешние отчеты формы справочников доков ит.д. иными словами весь код и формы находятся вне конфы а сама конфа задает только информационную структуру.
45 — 25.09.09 — 11:23
(44) и зачем все это надо?
46 — 25.09.09 — 11:28
(45) видимо интересует «горячая замена» — типа обновление на лету.
47 — 25.09.09 — 11:42
(45) может быть.
48 — 25.09.09 — 11:47
(47) я когда эту тему обдумывал (давно это было ) — забил на такой расклад — гораздо проще оказалось хранить код в объектах конфигурации — (справочники, РС) и тупо когда надо обновлять их содержимое.
49 — 25.09.09 — 11:49
(48) таким образом можно было хранить динамические обработчики событий форм например.
Гений 1С
50 — 25.09.09 — 13:29
(48) В 2is все равно круче. Поспрошайте тормоза IT. Там все хранится в справочниках — и формы, и алгоритмы.
E_Migachev |
|
||
---|---|---|---|
|
|
vis |
|
||
---|---|---|---|
|
|
Возвращаемое значение
Описание варианта 1
Вариант синтаксиса 2: По форме
Функция ОткрытьФорму() имеет следующий синтаксис:
А также альтернативный англоязычный синтаксис:
Параметры
Описание параметров процедуры ОткрытьФорму() :
Имя параметра | Тип |
---|---|
Описание | |
Форма | Форма; УправляемаяФорма |
Форма или управляемая форма. В режиме тонкого и веб-клиентов только управляемая форма. | |
Окно (необязательный) | ОкноКлиентскогоПриложения |
Окно приложения, в котором будет открыта форма. Окном может быть только основное окно приложения или вспомогательное окно формы.
Применимо только для управляемой формы. |
|
Жирным шрифтом выделены обязательные параметры |
Возвращаемое значение
Описание варианта 2
Функция ОткрытьФорму() открывает форму, полученную ранее функциями ОткрытьФорму() или ПолучитьФорму()
Доступность
Тонкий клиент, веб-клиент, мобильный клиент, толстый клиент, мобильное приложение(клиент).
Пример использования
Пример кода с использованием процедуры ОткрытьФорму() :
Источник
Работа с формами в «1С:Предприятии 8»
Например, формы списков вы можете увидеть при открытии разнообразных справочников, журналов документов, списков записей в регистрах конфигурации и т. п.
Например, вызывая справочник «Контрагенты», мы получаем на экране как раз такую форму-список (рис. 1).
Как правило, кроме собственно списка, у форм такого типа присутствует командная панель с кнопками-действиями, которые выполняются над элементами данного списка.
При наведении (не нажатии!) мышью на одно из действий, вы получите краткое пояснения этого действия и «горячую» клавишу (или комбинацию клавиш) для его выполнения, если имеется такая возможность.
Кроме этого, в командной панели, как правило, присутствует элемент «Действия», где собраны все действия, которые можно выполнять над элементами данного списка.
При отметке какого-либо элемента в списке, можно нажать на нем правой кнопкой мыши. В результате вы получите список разрешенных действий для данного элемента.
Некоторые действия одинаковы для всех списков, некоторые созданы разработчиками конфигурации и могут отсутствовать в других формах списков.
Для часто используемых в форме списков действий назначены комбинации клавиш (подробнее об использовании «горячих» клавиш читайте в номере 10 (октябрь) «БУХ.1С» за 2007 год, стр. 8), использование которых повысит эффективность работы в программе:
Действие
Сочетание клавиш
Активация действия в командной панели
Добавить новый элемент
Пометка на удаление
Добавить группу (для справочников с иерархией)
Переместить элемент в другую группу (для справочников с иерархией)
Быстрый вход внутрь группы (для справочников с иерархией)
Выход на уровень выше
Добавить новый элемент копированием текущего
Изменить текущий элемент
В некоторых списках имеется возможность множественного выделения выбранных элементов с целью их групповой обработки. Для того, чтобы выделить несколько элементов (если это разрешено в списке), достаточно нажать клавишу Shift и прощелкать мышью необходимые элементы.
Для этого можно использовать клавиши со стрелками (вверх, вниз, вправо, влево), включая привычное всем нам страничное листание (PageUp/PageDown) в сочетании с этими клавишами. Работают также общепринятые «горячие» клавиши:
Действие
Сочетание клавиш
Выделить все от текущей позиции до начала списка
Выделить все от текущей позиции до конца списка
Выделить все элементы
Копирование текстового представления текущей ячейки в списке элементов
Форма списка
Например, формы списков вы можете увидеть при открытии разнообразных справочников, журналов документов, списков записей в регистрах конфигурации и т. п.
Например, вызывая справочник «Контрагенты», мы получаем на экране как раз такую форму-список (рис. 1).
Как правило, кроме собственно списка, у форм такого типа присутствует командная панель с кнопками-действиями, которые выполняются над элементами данного списка.
При наведении (не нажатии!) мышью на одно из действий, вы получите краткое пояснения этого действия и «горячую» клавишу (или комбинацию клавиш) для его выполнения, если имеется такая возможность.
Кроме этого, в командной панели, как правило, присутствует элемент «Действия», где собраны все действия, которые можно выполнять над элементами данного списка.
При отметке какого-либо элемента в списке, можно нажать на нем правой кнопкой мыши. В результате вы получите список разрешенных действий для данного элемента.
Некоторые действия одинаковы для всех списков, некоторые созданы разработчиками конфигурации и могут отсутствовать в других формах списков.
Для часто используемых в форме списков действий назначены комбинации клавиш (подробнее об использовании «горячих» клавиш читайте в номере 10 (октябрь) «БУХ.1С» за 2007 год, стр. 8), использование которых повысит эффективность работы в программе:
Действие
Сочетание клавиш
Активация действия в командной панели
Добавить новый элемент
Пометка на удаление
Добавить группу (для справочников с иерархией)
Переместить элемент в другую группу (для справочников с иерархией)
Быстрый вход внутрь группы (для справочников с иерархией)
Выход на уровень выше
Добавить новый элемент копированием текущего
Изменить текущий элемент
В некоторых списках имеется возможность множественного выделения выбранных элементов с целью их групповой обработки. Для того, чтобы выделить несколько элементов (если это разрешено в списке), достаточно нажать клавишу Shift и прощелкать мышью необходимые элементы.
Для этого можно использовать клавиши со стрелками (вверх, вниз, вправо, влево), включая привычное всем нам страничное листание (PageUp/PageDown) в сочетании с этими клавишами. Работают также общепринятые «горячие» клавиши:
Действие
Сочетание клавиш
Выделить все от текущей позиции до начала списка
Выделить все от текущей позиции до конца списка
Выделить все элементы
Копирование текстового представления текущей ячейки в списке элементов
Форма элемента
Чтобы не перегружать наше восприятие, информационное наполнение формы распределяется в ней по нескольким закладкам.
Для форм элементов характерно наличие командных панелей сверху и/или снизу открываемого окна. Это командные панели формы с действиями, которые относятся к открытому объекту конфигурации целиком.
Обычно одна из команд назначена «кнопкой по умолчанию». Она активируется комбинацией клавиш Ctrl+Enter. Такая кнопка выделяется жирным (в нашем примере, это кнопка «ОК»).
Как правило, на форме элемента четко можно определить разницу между командными панелями формы и вспомогательными командными панелями.
Комбинация Alt+F10 работает и здесь, она активирует ту командную панель, с элементами которой пользователь работает в данный момент времени.
Полезно знать, что практически все действия на форме элемента можно выполнять без использования мыши.
Клавиатурное управление, как правило, значительно ускоряет процесс работы с данными. Например, нажатие на клавишу Enter или Tab, позволяет «перескакивать» с одного элемента формы на другой (следующий за ним). Нажатие Shift+Tab позволяет «скакать» по элементам в обратном направлении. Если вы находитесь в каком-либо поле ввода (например, на рис. 2 в группе контрагентов), достаточно написать первые буквы нужного вам элемента и нажать Tab и программа автоматически подставит нужный элемент в поле ввода (если он уникален в системе), либо предоставит автоматический список для уточнения вашего варианта.
Действие
Сочетание клавиш
Открыть форму выбора нужного элемента
Открыть форму элемента уже выбранного объекта в поле ввода
Очистить поле ввода
Быстрое переключение между закладками на форме, если они есть
Ctrl+PageUp и Ctrl+PageDown
Переключение активного элемента типа «Флажок»
Отказаться от внесенных изменений в текстовых элементах формы
Вернуть отмененное действие
Закрытие практически любой формы
Закрытие/открытие окна служебных сообщений (того, которое может появляться внизу)
При вводе новых объектов конфигурации при помощи форм элементов, обязательные для заполнения поля подчеркнуты красным. Например, для документа «Реализация товаров и услуг: Продажа, комиссия» такими полями являются поле «Контрагент» и поле «Договор» (рис. 4).
Выделять текстовые блоки можно мышью, а можно курсорами с нажатой клавишей Shift. Это бывает полезно для операций с буфером обмена.
Форма выбора
Как правило, в форме выбора можно выполнять массу подобных форме списка действий. Например, завести новый элемент. О том, какие действия возможны в данном случае, вы всегда сможете узнать из наполнения командной панели формы выбора и по тому, какие горячие клавиши работают, а какие нет.
Форма группы
Для каждого объекта конфигурации, может быть задано при разработке несколько форм: разнообразные формы элемента, выбора, вспомогательные формы. Необходимо это, в первую очередь, для облегчения ввода и обработки информации, хранящейся в этом объекте. То есть набор форм, как правило, определяется на этапе создания конфигурации и в разных конфигурациях может отличаться друг от друга даже для однотипных объектов (например, в типовых конфигурациях «Бухгалтерия предприятия» и «Управление торговлей»).
В любом случае, поведение элементов, расположенных на форме, как правило, идентично с точки зрения возможностей управления ими мышью или «горячими» клавишами.
Если специальных пояснений нет, то вам отобразится общая информация по работе с текущим типом формы.
Вызвать справку можно, нажав клавишу F1.
Кроме этого, в таком случае всегда доступны «горячие» клавиши Ctrl+Shift+Стрелка вверх и Ctrl+Shift+Стрелка вниз.
Источник
ПолучитьОкна в обычном приложении не работает. Попробовал перетаскиванием из одной формы на другую. В «НачалоПеретаскивания» и в «ОкончаниеПеретаскивания» нет данных о приёмнике значения:(. У кого какие мысли?
Спросите: «на кой тебе эта хрень?» Отвечу: «А кто его знает. Захотелось поупражнятья.» А задумка такая. Есть открытые окна, на них ищутся элементы типа ПолеТабличногоДокумента. Выбираем один табДок. Далее из справочника внешних обработок выбираем отчет, в котором есть макет скд. При желании заполняем отбор и параметры. И плюёмся этим отчетом в табДокумент открытой формы.
Курьёзность ситуации состоит в том, что код практически написал без промежуточного тестирования. А как начал тестировать, так узнал, что ПолучитьОкна в режиме запуска ОбычноеПриложение возвращает Неопределено.
вариант «в лоб» — все открывающиеся формы в конфе записываются в общую таблицу, при закрытии удаляются из нее
Да вот было бы оно: Глобальный контекст (Global context) ПриОткрытииЛюбойФормы Синтаксис: ПриОткрытииЛюбойФормы(<Форма>) Параметры: <Форма> Тип: Форма. Форма, которая только что была открыта. Описание: Возникает при открытии любой формы. Примечание: В «главное меню — Окна — Окна» всё есть, но автор сего события не знает как туда обратиться или разработчики платформы — лентяи. См. также: Орефков знает как написать ВК
Знать-то знаю, но тащить на себе релизозависимость помимо снегопата ещё и одной вэкашки, по сути являющейся «бантиком» — нет желания. Хотя возможно, не так уж и релизозависимо выйдет…
Вот и я говорю «главное меню — Окна — Окна» сделали, а программерам на дали. Лентяи и жадины! Хотя.. Окна то они — окна. А ведь еще содержимое нужно получить в виде значения типа форма.
Орефков не знает, как написать ВК
Если Орефков скажет, как ОДНОЗНАЧНО соотнести handle окна и ЭтаФорма — я ему пожму его лапу.
Тэги: 1С 8
Комментарии доступны только авторизированным пользователям
УправляемоеПриложение.Поиск открытой формы по идентификатору
&НаКлиенте
Функция НайтиУправляемуюФорму(УникальныйИдентификатор, Отказ = Ложь) Экспорт
Перем Окно, СодержимоеОкна, Форма;
Отказ = Ложь;
Для Каждого Окно Из ПолучитьОкна() Цикл
Для Каждого СодержимоеОкна Из Окно.Содержимое Цикл
Если ТипЗнч(СодержимоеОкна) = Тип(
"УправляемаяФорма"
)
И СодержимоеОкна.УникальныйИдентификатор = УникальныйИдентификатор Тогда
Возврат СодержимоеОкна;
КонецЕсли;
КонецЦикла;
КонецЦикла;
Отказ = Истина;
Сообщить(Формат(Отказ,
"БЛ=Нашел!; БИ='Не нашел!'"
));
КонецФункции
Популярные сообщения из этого блога
Когда нужно в макете (табличном документе) изменить ширину колонки для конкретных строк: 1. Выделить всю строку (строки). Именно всю, фокус для выделенной области не работает. 2. Нажимаем и не отпускает Ctrl 3. С помощью мыши изменяют ширину любой из колонок — будет задан вопрос об создании нового формата строк — соглашаемся. Как же прекрасен мир, где для модификаций не достаточно просто использовать контекстное меню и диалог редактора свойств, где нужно знать заветные слова и таинства танца. 90ые, моё почтение. UPD Программно, тоже самое, можно сделать через ТабДок = Новый ТабличныйДокумент(); ТабДок.Область(1,,1,).СоздатьФорматСтрок(); ТабДок.Область(1,1).ШиринаКолонок = 70; ТабДок.Область(1,2).ШиринаКолонок = 30; ТабДок.Область(2,,2,).СоздатьФорматСтрок(); ТабДок.Область(2,1).ШиринаКолонок = 30; ТабДок.Область(2,2).ШиринаКолонок = 70; ТабДок.Показать();
Вводная Если на форме есть элемент управления со списком выбора, в моем конкретном примере это Колонка Значение (Число (3,0)) с настроенным списком выбора. По умолчанию платформа отображает именно строковое значения, а не текст представления из списка выбора (когда как при выборе значения из списка показываются именно представления). Решение Для Управляемых форм необходимо настроить правила условного оформления, для обычных форм — оформление ячеек при выводе данных.
Вводная: реализовать ввод Заказа поставщику на основании Заказа на Ремонт. решить через расширения конфигурации. Хочу обратить ваше внимание, не нужно добавлять в расширение критерий отбора, для 8.3.12 нам не доступно добавлениеизменение состава критерия. Более того может зависать конфигуратор (столкнулся с последней версией 8.3.14 + ERP) Разработку рекомендую вести с применением хранилища и для расширения. Иначе устанете потом выгребать чего лишнего включили в расширение при добавлении таких или схожих обектов с составными типами и подобное. Все текущие типовые решения сейчас идут в режиме совместимости 8.3.12, в прочем и для 8.3.14 (и даже 8.3.15 ничего не поменялось). Что нам нужно было бы сделать при отказе от поддержки: 1) добавить наш документ в Критерий отбора (состав, реквизиты); 2) в раздел Ввод на основании целевого документа. И что с целью сохранения поддержки. Как сделать это же для расширения: 1) Добавить реквизит расширения Документы.ЗаказПоставщику._За