1с закрыть форму если она открыта

ОткрытьФорму с параметрами

             28.12.2010 15:11    

Татьяна

571495

Подскажите, пожалуйста, если пишу в таком виде:

 

    ФФ = ПолучитьФорму("Документ.лисВнесениеИзмененийВДоговор.Форма.ФормаДокумента");
    ФФ.Объект.договор = Объект.Ссылка;
    ФФ.Объект.Учреждение = Объект.Учреждение;
    ФФ.Открыть();

 

то и договор, и учреждение заполняются на открываемой форме,

а если пишу так

 

    ПараметрыФормы = Новый Структура;
    ПараметрыФормы.Вставить("Учреждение",Объект.Учреждение);
    ОткрытьФорму("Документ.лисВнесениеИзмененийВДоговор.Форма.ФормаДокумента",ПараметрыФормы)

 

то не заполняются. В чем ошибка?

 

Полезный совет! Свернуть ответы Re: ОткрытьФорму с параметрами

             30.12.2010 21:28    

Исаков А.В.

1,0

571609

Я обычно делаю так:

 

//в документе ПараметрыФормы = Новый Структура; ПараметрыФормы.Вставить("Документ", Объект.Ссылка); ОткрытьФорму("Обработка.ЗаполнениеПланаРабот.Форма", ПараметрыФормы, ЭтаФорма, УникальныйИдентификатор); //у формы которой передаете параметр должен быть такой параметр, иначе при открытии формы вы не сможете получить переданный параметр //в открываемой форме получаем переданные данные для дальнейшей обработки Процедура ПриОткрытии() СсылкаНаДокумент = Параметры.Документ КонецПроцедуры

 

Если необходимо в некую форму передать данные а потом после некоторых действий передать обратно какую-либо информацию то можно сделать так:

 

 

//В документе Результат = ОткрытьФормуМодально("Обработка.ЗаполнениеПланаРабот.Форма"); Выборка = Результат.Объект.Химия; Для Каждого СтрокаВыборки из Выборка Цикл НоваяСтрока = Объект.Химия.Добавить(); НоваяСтрока.Пласт = Результат.Объект.Пласт; НоваяСтрока.Раствор = Результат.Объект.Пачка; НоваяСтрока.Объем = Результат.Объект.Объем; НоваяСтрока.Химия = СтрокаВыборки.ХимРеагенты; НоваяСтрока.РабКонцентрация = СтрокаВыборки.РабочаяКонцентрация; НоваяСтрока.ТовКонцентрация = СтрокаВыборки.ТоварнаяКонцентрация; НоваяСтрока.КоличествоМ = СтрокаВыборки.КоличествоМ; НоваяСтрока.КоличествоТ = СтрокаВыборки.КоличествоТ; КонецЦикла; //в открываемой форме Закрыть(ЭтаФорма);

 

в результате нам возвращается обратно открытая ранее форма обработки со всей необходимой для нас информацией

Свернуть ответы Re: ОткрытьФорму с параметрами

             03.01.2014 16:01    

Прилепский Александр

622398

 

//у формы которой передаете параметр должен быть такой параметр, иначе при открытии формы вы не сможете получить переданный параметр

 

 

моск вскипел..

что конкретно понимается под выражением

 

 

//у формы ... должен быть такой параметр

 


в приведённом примере - у открываемой формы должен быть реквизит с именем "ПараметрыФормы" или реквизит с именем "Параметры"? или у формы которой передаём параметры есть ещё какие-то параметры где надо создать параметр с именем параметры чтобы получить переданный параметр?  о_О

можно чуть подробнее?

Свернуть ответы Re: ОткрытьФорму с параметрами

             16.01.2014 19:32    

Максим Радченко, 1С

622758

У формы есть параметры. Посмотрите картинку тут: http://v8.1c.ru/metod/faq2/answer.jsp?id=638

Re: ОткрытьФорму с параметрами

             19.01.2014 05:47    

Прилепский Александр

622839

а, понял - в этом посте рассматривается только управляемая форма. к сожалению в контексте применения 1С в нашей организации преимуществ использования управляемых форм нет, даже скорее вредят..

в обычной я параметров не нашёл, использовал реквизит.

похоже в обычной форме передаваемые параметры не обрабатываются вообще никак.

Re: Я обычно делаю так

             31.12.2010 00:38    

Дайнеко Игорь

571612

Спасибо. Мне так и нравится. Про возврат параметров я и не знал.

Свернуть ответы Re: ОткрытьФорму с параметрами

             28.12.2010 15:19    

Валерий Гуров

571496

А почему они должны заполняться во втором варианте? Ты их просто передал в форму, а уже в форме обрабатывай этот набор параметров как тебе нужно.

Свернуть ответы Re: ОткрытьФорму с параметрами

             28.12.2010 19:36    

Дайнеко Игорь

571517

И я хочу вопрос "потормошить", ибо долго ломал над ним голову. Я так спрошу: каким способом красиво и методически правильно передавать параметры?

Я понимаю так, что их несколько:

1) Установкой реквизитов

    Форма = Документы.Контакт.ПолучитьФормуНовогоДокумента();
    Форма.ВидКонтакта = Перечисления.ВидыКонтактов.ЭПисьмо;
    Форма.Открыть();

    "ВидКонтакта" - реквизит формы.

 

2) Вызовом процедуры.

    Обработки.РедактированиеКонтактнойИнформации.Создать().ПолучитьФорму("ФормаЗаписиАдреса").РедактироватьФорму(ФормаВызова, ИменаПолей);

    РедактироватьФорму - проц-ра внутри формы. А у нее 2 входных параметра: ФормаВызова, ИменаПолей

 

3) В качестве параметра.

   ПараметрыФормы = Новый Структура("Клиент", Клиент);
   ОткрытьФорму("Справочник.Улицы.ФормаСписка", ПараметрыФормы);

Так мне ну очень нравится. Идейно, понимаешь. Но... такой синтаксис только у команды "ОткрытьФорму". А у методов "ПолучитьФорму..." - шиш.

Второе: подскажите, как вызванной форме обратится к параметрам?

Повторю вопрос:

- Какой способ рекомендует 1С и какой посоветует общественность?

- Есть другие варианты?

 

P.S.

Отдельно задамся вопросм вызовом подчиненного справочника. Но не люблю валить вопросы кучей - напишу тему.

 

Re: ОткрытьФорму с параметрами

             03.01.2014 18:16    

Прилепский Александр

622400

В описании Глобальный контекст ОткрытьФорму() есть странное примечание

"Если при открытии обычной формы в параметре <ИмяФормы> указано не  стандартное имя формы, передаваемые параметры не обрабатываются."

чтобы это имелось ввиду..

Свернуть ответы Re: ОткрытьФорму с параметрами

             28.12.2010 19:54    

Валерий Гуров

571519

Первый способ не является передачей параметров - ты просто заполняешь реквизиты объекта (в данном случае формы).

Второй способ не будет работать в управляемом режиме (точнее в тонком клиенте), ибо метод ПолучитьФорму() доступен только в толстом клиенте.

Методу глобального контекста ПолучитьФорму() точно также можно передать параметры как и методу ОткрытьФорму(). Не понимаю, откуда у тебя взялся шиш. :-))

К параметрам в вызванной форме можно обратиться через свойство формы Параметры. Обычно это делается в обработчике события ПриСозданииНаСервере.

За фирму "1С" говорить не могу, но сказанное выше не оставляет пространства для манёвра, т.е. всё достаточно однозначно на мой взгляд. :-)

Свернуть ответы Насчет "Шиш-а"

             28.12.2010 20:13    

Дайнеко Игорь

571522

Ну как же? Вот синтаксис:

ПолучитьФормуСписка (GetListForm)

Синтаксис:

ПолучитьФормуСписка(<Форма>,  <Владелец>, <КлючУникальности>)

Куда тут воткнуть параметры? Например, число А.

Свернуть ответы Re: Насчет "Шиш-а"

             28.12.2010 20:20    

Валерий Гуров

571523

А причём здесь форма списка? Лучше посмотри на такой синтаксис:

 

Глобальный контекст (Global context)ПолучитьФорму (GetForm)

Синтаксис:

ПолучитьФорму(<ИмяФормы>, <Параметры>, <Владелец>, <Уникальность>, <Окно>) 



 

Тем более что ПолучитьФормуСписка() доступно только в толстом клиенте.

Свернуть ответы ПолучитьФорму

             28.12.2010 20:41    

Дайнеко Игорь

571525

Да... <Пауза>. На тонкого и тем паче WEB не ориентируюсь. И не ожидал, что даже в этих методах есть различие.

С точки зрения системного подхода мне не очень нравится:

     ПолучитьФорму("Справочник.Улицы.ФормаСписка").Открыть()

А так нравится:

     Справочники.Улицы.ПолучитьФормуСписка().Открыть()

В первом случае имена имя объекта указано символьным литералом. Значит интерпретируется на этапе исполнения. Мой опыт говорит, что такой способ менее устойчив к дальнейшей модификации продукта. Во втором же случае, я даже на этапе набора текста получаю подсказки системы по правильным именам. Если бы еще синтаксис видел ошибку.

 

Не удержусь кинуть песчинку в огород 1С: зачем было плодить двоякость? Что бы потом говорить: "Это только в толстом"? Ведь речь не о функционале "ПостроительОтчета", а идентичная операция.

 

Re: ПолучитьФорму

             28.12.2010 23:36    

Валерий Гуров

571530

> Справочники.Улицы.ПолучитьФормуСписка().Открыть()
От себя добавлю, что такой способ оставлен, так сказать, для совместимости и работы в режиме обычного приложения. Если уж ты используешь платформу 8.2, то стоит ориентироваться на новые и рекомендуемые к использованию механизмы. Ибо от ориентации на тонкого и иже с ним клиентов никто не застрахован. :-)

Свернуть ответы Re: ПолучитьФорму

             28.12.2010 22:32    

Максим Радченко, 1С

571529

Наверное вам будет полезно почитать эту книгу http://v8.1c.ru/metod/books/book.jsp?id=231, глава 3.3.

 

>Не удержусь кинуть песчинку в огород 1С: зачем было плодить двоякость?

В управляемом приложении (8.2) для открытия форм используется метод ОткрытьФорму().

 

>Справочники.Улицы.ПолучитьФормуСписка().Открыть()

Таким образом открывались формы раньше, в 8.0 и 8.1.

Свернуть ответы Re: ПолучитьФорму

             31.07.2017 14:09    

Толмачев Сергей Анатольевич

652518

Так вот интересно для обычных форм получается что функция есть ПолучитьФорму с параметрами которые можно передать но их ни как не получить?

Свернуть ответы Re: ПолучитьФорму

             31.07.2017 14:18    

Максим Радченко, 1С

652519

О каких параметрах вы говорите?

Свернуть ответы Re: ПолучитьФорму

             31.07.2017 15:01    

Толмачев Сергей Анатольевич

652520

если в обычном приложении  передать параметры через ПолучитьФорму(,параметры,) или ОткрытьФорму(<ИмяФормы>, <Параметры>, <Владелец>,  <Уникальность>, <Окно>, <НавигационнаяСсылка>,  <ОписаниеОповещенияОЗакрытии>, <РежимОткрытияОкна>)

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

Свернуть ответы Re: ПолучитьФорму

             31.07.2017 15:03    

Максим Радченко, 1С

652521

У обычных форм нет свойства Параметры. Что вы хотите "ловить"?

Свернуть ответы Re: ПолучитьФорму

             31.07.2017 15:07    

Толмачев Сергей Анатольевич

652522

то, что передю через структуру параметры во втором параметре метода, или есть способ другой передавать в форму и там обрабатывать параметры?Например мне они нужны будут чтобы отборы поставить при открытии, чтобы не в документе при начале выбора  отбор ставить а в самом справочнике при открытии

Свернуть ответы Re: ПолучитьФорму

             31.07.2017 15:09    

Максим Радченко, 1С

652523

Я не знаю, как ещё вам объяснить.  У обычных форм нет свойства Параметры. Бессмысленно пытаться их им передавать.

Свернуть ответы Re: ПолучитьФорму

             31.07.2017 15:16    

Толмачев Сергей Анатольевич

652524

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

Свернуть ответы Re: ПолучитьФорму

             31.07.2017 15:35    

Максим Радченко, 1С

652526

Да, в синтакс-помощнике написано непонятно. Попробуем это исправить. 

Свернуть ответы Re: ПолучитьФорму

             31.07.2017 16:07    

Толмачев Сергей Анатольевич

652528

а на сколько правильно будет через глобальные параметры передавать, например Перем Гл_ПараметрыНоменклатура  Экспорт;

Свернуть ответы Re: ПолучитьФорму

             31.07.2017 16:11    

Максим Радченко, 1С

652529

Я не телепат, не знаю, что вы делаете. Но в обычных формах вроде нет проблем получить форму, установить ей все как вы хотите, а потом открыть ее. То есть нет необходимости что-то в нее передавать.

Свернуть ответы Re: ПолучитьФорму

             31.07.2017 16:15    

Толмачев Сергей Анатольевич

652530

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

Свернуть ответы Re: ПолучитьФорму

             31.07.2017 16:22    

Максим Радченко, 1С

652531

Ну тогда можете сделать в общем модуле собственную процедуру-обертку, которая будет получать имя формы и параметры. Устанавливать что надо, и открывать ее.

Заставлять форму зависеть от глобальных переменных как-то не очень красиво.

Свернуть ответы Re: ПолучитьФорму

             31.07.2017 16:31    

Толмачев Сергей Анатольевич

652532

Да вариант не плохой, и если все в едином стиле писать то да,в одном модуле все процедуры для подбора расположить, но нужно чтобы было легко находить всем разработчикам, кто не в курсе эту функцию, и не переделывать весь код,  т.е. желательно в форме выбора справочника при открытии как это делается в управляемых формах наверно.

Свернуть ответы Re: ПолучитьФорму

             31.07.2017 16:37    

Максим Радченко, 1С

652533

Я могу сказать только то, что уже говорил. Я не знаю, какую задачу вы решаете. Для кого. С какими целями. Если считаете. что разбросать код по формам и завязать их на переменные проще для тех, кто не в курсе - делайте. 

Ваша программа, вы хозяин :). 

Свернуть ответы Re: ПолучитьФорму

             31.07.2017 16:45    

Толмачев Сергей Анатольевич

652534

а как же инкапсуляция, объект должен инкапсулировать в себе код для доступа к своим переменным, каждый справочник содержит свой код для доступа к своим формам выбора и обрабатывает отборы и прочее, если было бы наследование, то можно было от одной общей формы справочника наследовать методы всем и не нужно было раскидывать как вы сказали, но видно разработчикам платформы данное действо тяжело представить.Задача на ограничение по правам подбора из документа, количество документов неизвестно точно.

Свернуть ответы Re: ПолучитьФорму

             31.07.2017 17:03    

Максим Радченко, 1С

652535

Даже не знаю, что сказать. Могу только пожелать удачи.

Re: ПолучитьФорму

             31.07.2017 17:55    

Толмачев Сергей Анатольевич

652540

Я надеюсь на вас Максим, что очень скоро мы это всё увидим в новой версии 1С!!!

Свернуть ответы Re: ПолучитьФорму

             31.07.2017 17:53    

Толмачев Сергей Анатольевич

652539

есть общие переменные у справочников и документов, а это общая функция, например "при открытии" или "создании на сервере", где потом в документе конкретном мы как в расширении указываем либо все заместить либо вставить в конце либо вставить в начале, это что трудно сделать?Но в ней можно инкапсулировать по смыслу многие вещи которые легче найти чем в стандартных или общих функциях общих модулей бсп и прочее.

Свернуть ответы Re: ПолучитьФорму

             31.07.2017 18:56    

Толокнов Алексей

652541

>  а это общая функция, например "при открытии" или "создании на сервере", где потом в документе конкретном мы как в расширении указываем либо все заместить либо вставить в конце либо вставить в начале
Это и так есть. Вы когда описываете событие, вы же не описываете отрисовку формы, установку значений по умолчанию и т.д. Вы просто добавляете с существующему обработчику то что вам надо.

Re: ПолучитьФорму

             31.07.2017 20:06    

Толмачев Сергей Анатольевич

652543

например дату и номер можно вынести в общую форму они есть везде эти реквизиты, так-же и процедуры, чтобы не копировать во все модули если надо а в одном прописать при открытии #ВНачале если тип дока такой-то то делаем отбор.

Свернуть ответы Re: ПолучитьФорму

             31.07.2017 19:56    

Толмачев Сергей Анатольевич

652542

может я не ясно выразился, имел ввиду общая для всех справочников отдельно, типа ОбщийСправочник модуль, и ОбщийДокумент модуль, чтобы в каждый модуль не лезть одно и тоже не писать, но и было по смыслу инкапсулировано а не раскидано по модулям даже и общим, и в общий модуль мне придется вызов вставлять так же подписка не инкапсулирована.А в общем вы написали и все, либо в общем модуле директивы писать как в расширении "после" "вначале" либо в самих документах перегружать директивами.Это логично, я немного джаву изучал и знаю как там это все делается, общий интерфейс предок либо общий класс.

Свернуть ответы Re: ПолучитьФорму

             01.08.2017 12:08    

Толокнов Алексей

652545

> .Это логично, я немного джаву изучал

Это не логично!

Напишите свою платформу. Кто мешает?

Инкапсуляция и полиморфизм характерны для ООП где вы сами создаёте объекты, тут они созданы разработчиками платформы.

Свернуть ответы Re: ПолучитьФорму

             01.08.2017 19:01    

Толмачев Сергей Анатольевич

652557

Наверно вы не создавали ни разу справочники и документы в 1с.Справочник это родительский класс а виды справочников это наследственные классы которые вы можете создавать, это и есть ооп, но нужно его просто доделать немного, нет доступа к родительскому классу, мы перегружаем приоткрытии процедуру родительского класса, но переопределить в родителе, написав какой либо код выполняющийся во всех потомках нельзя.Тут работы на 5 мин для разработчиков платформы дать доступ к модулю родительского класса.

Свернуть ответы Re: ПолучитьФорму

             01.08.2017 19:03    

Толокнов Алексей

652559

> Наверно вы не создавали ни разу справочники и документы в 1с.
С января 1999 года, когда я получил свой первый сертификат, ниразу не приходилось.

 

> Тут работы на 5 мин для разработчиков платформы
Если это 5 минут, то написать платформу для вас пару дней. Так напишите, кто вам мешает то?

Свернуть ответы Re: ПолучитьФорму

             01.08.2017 19:06    

Толмачев Сергей Анатольевич

652561

дело то в поддержке конфигураций фирмой 1с, платформа просто никому не нужна,хоть она даже будет лучше.

Свернуть ответы Re: ПолучитьФорму

             01.08.2017 19:09    

Толокнов Алексей

652562

Кто мешает свою фирму создать?

1С не с баз данных начиналась, а с банальной электронной почты, что и в названии заметно.

Re: ПолучитьФорму

             01.08.2017 19:21    

Толмачев Сергей Анатольевич

652563

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

Re: ПолучитьФорму

             01.08.2017 19:05    

Толмачев Сергей Анатольевич

652560

я пошутил по поводу не создавали.

Re: ПолучитьФорму

             31.07.2017 17:09    

Толмачев Сергей Анатольевич

652537

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

Свернуть ответы Re: ОткрытьФорму с параметрами

             28.12.2010 15:46    

Татьяна

571497

Спасибо )))

Re: ОткрытьФорму с параметрами

             28.12.2010 15:53    

Валерий Гуров

571498

Пожалуйста. И, конечно же, не "передал в форму", а "передала в форму". :-)


Источник: http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=571495



Рекомендуем посмотреть ещё:


Закрыть ... [X]

Платформа 8.2: ОткрытьФорму с параметрами Поздравление с днем рождения мудрейшему

1с закрыть форму если она открыта 1С:Предприятие 8
1с закрыть форму если она открыта 1 июня - День защиты детей. Мероприятие в детском
1с закрыть форму если она открыта В каком стиле можно сделать свадьбу, как выбрать
1с закрыть форму если она открыта Видео открытки MuzCards Музыкальные открытки с днем
1с закрыть форму если она открыта Гостевая Книга Ф.К. ЗЕНИТ Санкт-Петербург, Россия,и
1с закрыть форму если она открыта Игры и конкурсы на выпускном вечере - Ваш Домовёнок
1с закрыть форму если она открыта Конкурс «Служба спасения 01» Дополнительное образование в
Конкурсы на 23 февраля для мальчиков - конкурсы для Официальное поздравление для выпускников школ / Новости ПОДАРОК МАМЕ СВОИМИ РУКАМИ Делаем поделки и Поздравление для мамы с рождением дочери (в. - Поржать. ру) Прикольные поздравления с днем физкультурника Самарская областная писательская организация Снят первый фильм по сценарию, написанному искусственным