Управляемое приложение: правильное программное открытие форм

Публикация № 236382

Разработка - Работа с интерфейсом

Открыть форму программно открыть управляемую форму как открыть форму документа управляемые формы как открытьформу как открытьформу() как получить форму объекта как получить форму в 8.2

695
В публикации рассмотрены все возможные (ну или почти все) варианты программного открытия форм в управляемом приложении. Появление публикации связано с тем, что справка 1С и желтые книжки очень немногословны на эту тему. Часто простые задачи (например, создание элемента справочника на основании) вызывают трудности даже у очень опытных разработчиков 1С v 8.1, которые мало работали с управляемым приложением.

23:07:17Для начала небольшое лирическое отступление. Расскажу о том,  как НЕ НАДО открывать формы. 

Нельзя использовать метод ПолучитьФорму(). Это нельзя делать по двум причинам. Первая причина — это то, что этот метод отрабатывает на порядок медленнее, чем методы ОткрытьФорму() или ОткрытьФормуМодально(). Вторая причина кроется в том, почему собственно такой метод используется. Это обычно делается, когда нужно как-то программно обработать форму перед открытием. Например, нужно установить отбор динамического списка в форме выбора. Давайте рассмотрим, как обычно используется метод «ПолучитьФорму()» и чем ошибка использования такого метода. Программный код открытия формы выбора с отбором выглядит примерно так:

Схема использования метода

 

Ошибка здесь заключается в том, что код программной обработки формы вполне может вступить в конфликт с кодом события «ПриСозданииНаСервере» формы. Это может произойти не сразу. Например, в модуль формы внесли изменения гораздо позже. Причем тот разработчик, который вносил изменения в модуль формы окажется прав. Откуда ему знать, что его форма откуда-то вызывается таким образом? 

 

Если вы хотите, чтобы ваше приложение работало в Web-Интерфейсе, то лучше воздержаться от открытия форм в Модальном режиме. В таком режиме они реализованы как всплывающие окна, которые по умолчанию отключены в большинстве браузеров. Вместо Модального режима можно использовать свойство управляемой формы РежимОткрытияОкна = "Блокировать окно владельца".  

 

Про запреты все, расскажу, как правильно открывать формы

1. Как открыть форму объекта имея ссылку на него

 

Если нужно открыть основную форму объекта, то все очень просто


&НаКлиенте
Процедура ОткрытьФорму(Команда)

ОткрытьЗначение(СсылкаНаОбъект); 

КонецПроцедуры

 

2. Как открыть форму выбора произвольного объекта

 

Простой вариант открытия: никакой дополнительной программной обработки формы не требуется. Нужно просто открыть основную форму выбора и получить выбранное значение. Используем метод «ВвестиЗначение». Синтаксис следующий: 

 

&НаКлиенте
Процедура Команда1(Команда)

    Перем
ВыбЗнач;

   
Массив = Новый Массив;
   
Массив.Добавить(Тип("СправочникСсылка.Контрагенты"));

   
ОписаниеТиповК = Новый ОписаниеТипов(Массив);

    Если
ВвестиЗначение(ВыбЗнач, "Введите значение", ОписаниеТиповК) Тогда

       
Сообщить(ВыбЗнач);

    КонецЕсли;

КонецПроцедуры


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

 

Использование метода ОткрытьФорму()

 

Сначала нужно разобраться с параметрами метода «ОткрытьФорму». Полный список параметров выглядит так:

ИмяФормы, Параметры, Владелец, Уникальность, Окно

С параметром «ИмяФормы» все более или менее понятно. А вот про то, что за загадочная штука «Параметры» (тип – Структура), в справке 1С написано очень мало. Передать туда можно все, что можно передать с клиента на сервер. Однако этой информации явно недостаточно.  Попробую разобрать все возможные варианты. 

 

3. Как открыть форму существующего объекта ссылочного типа


У формы любого объекта или записи регистра есть так называемый ключевой реквизит. В списке реквизитов формы он выделен полужирным. Чтобы открыть форму объекта, нужно в параметрдобавить элемент с Ключом «Ключ» и значением — ссылкой на нужный объект. Например:


&НаКлиенте
Процедура ОткрытьФормуПроекта(Команда)

   
П = Новый Структура;
   
П.Вставить("Ключ", Проект);

   ОткрытьФорму("Справочник.Проекты.ФормаОбъекта", П);

КонецПроцедуры

 

4. Открыть форму существующей записи регистра


Очень похоже на открытие формы объекта ссылочного типа, однако в элементе «Ключ» вместо ссылки мы передаем Ключ записи регистра. Например:


&НаКлиенте
Процедура ОткрытьФормуРегистра(Команда)

   
КлючЗаписи = Новый Структура;
   
КлючЗаписи.Вставить("Период", ТекущаяДата());
   
КлючЗаписи.Вставить("ФизЛицо", Сотрудник);

   МассивКлюча = Новый Массив;

   
МассивКлюча.Добавить(КлючЗаписи);

   
КлючЗаписиРегистра = Новый("РегистрСведенийКлючЗаписи.ФИОФизЛиц", МассивКлюча);

   
П = Новый Структура("Ключ", КлючЗаписиРегистра);

   
ОткрытьФорму("РегистрСведений.ФИОФизЛиц.ФормаЗаписи", П);

КонецПроцедуры

 

5. Как открыть форму нового объекта с обработкой заполнения

 

Это даже проще, чем открыть форму существующего. Мы просто не указываем в параметрах «Ключ».


&НаКлиенте
Процедура ОткрытьФорму(Команда)


П = Новый Структура;

ОткрытьФорму("Справочник.Проекты.ФормаОбъекта", П);


КонецПроцедуры

 


В это случае вызывается процедура «ОбработкаЗаполнения» модуля объекта. Эта процедура имеет единственный параметр «Основание».  Если мы в параметры вставим ключ «Основание», то он будет передан в процедуру «ОбработкаЗаполнения». Например, 

&НаКлиенте
Процедура ОткрытьФорму(Команда)

П = Новый Структура;

П.Вставить("Основание", Проект);

ОткрытьФорму("Справочник.Проекты.ФормаОбъекта", П);

КонецПроцедуры

 

 

6. Как правильно организовать выбор (подбор) в табличную часть  

 

Стоит знать, что все параметры, указанные в параметреметода открыть форму, доступны в событии «ПриСозданииНаСервере» открываемой формы. Например:

&НаКлиенте
Процедура ОткрытьФорму(Команда)

П = Новый Структура;

П.Вставить("Основание", Проект);

ОткрытьФорму("Справочник.Проекты.ФормаВыбора", П);

 
КонецПроцедуры

 

Тогда в событии «ПриСозданииНаСервере» формы элемента справочника Проекты можно будет получить «НашПараметр». Однако форма справочника проекты может открываться, откуда угодно и этого параметра может и не быть. Поэтому лучше проверить, что параметр действительно передан при помощи такой конструкции: 

 


&НаСервере
Процедура ПриСозданииНаСервере()

Если
Параметры.Свойство("НашПараметр") Тогда

ПереданныйПараметр = Параметры.НашПараметр;

      
//Программная обработка формы

КонецЕсли;

КонецПроцедуры

Чтобы организовать выбор, нужно знать еще пару моментов. Первое, это параметр метода «ОткрытьФорму». В качестве владельца может выступать другая форма или элемент управления. Этот параметр, во-первых будет доступен в свойстве «ВладелецФормы» открываемой формы, а во-вторых, после совершения пользователем выбора стандартным способом (т.е. через форму выбора, по нажатии кнопки «Выбрать»), у Владельца сработает событие «ОбработкаВыбора». 

 


&НаКлиенте
Процедура ОткрытьФорму(Команда)

П = Новый Структура;

П.Вставить("НашПараметр", Проект);

ВладелецФормыПодбора = Элементы.ПодчиненныеПроекты;
ОткрытьФорму("Справочник.Проекты.ФормаВыбора", П, ВладелецФормыПодбора);


КонецПроцедуры

 

В том случае, если выбор происходит не стандартным способом, т.е. открывается не форма выбора, а какая-то произвольная форма, то стоит использовать метод ОповеститьОВыборе(), при этом установив через параметры свойство открываемой формы ЗакрыватьПриВыборе = Истина. Например, 


&НаКлиенте
Процедура ОткрытьФорму(Команда)

П = Новый Структура;

П.Вставить("НашПараметр", Склад);
П.Вставить("ЗакрыватьПриВыборе", Истина);
ВладелецФормыПодбора = Элементы.Товары;

ОткрытьФорму("Обработка.ПодборНоменклатуры.Форма", П, ВладелецФормыПодбора);

КонецПроцедуры

 

В самой форме организуем программно выбор  таким образом: 

&НаКлиенте
Процедура Выбрать(Команда)

   
РезультатВыбора = ПодготовитьРезультатВыбора();
   
ОповеститьОВыборе(РезультатВыбора);

КонецПроцедуры


&НаСервере
Функция ПодготовитьРезультатВыбора()

//Готовим результат выбора

КонецФункции

В результате выполнения метода ОповеститьОВыборе форма подбора закроется и вызовется событие «ОбработкаВыбора» элемента управления «Товары».

Прочие полезности. В случае подбора в форму можно передать параметры, чьи названия говорят сами за себя: «ЗакрыватьПриВыборе», МножественныйВыбор, ЗакрыватьПриЗакрытииВладельца. Все параметры имеют тип Булево. Их названия говорят сами за себя. 

 

7. Как открыть форму и установить в ней отбор

 

Простая ситуация: простой отбор по одному или нескольким реквизитам. Например, что-то вроде такого

Контрагент = ВыбранныйКонтрагент И Организация = ВыбраннаяОрганизация

 

Для организации такого отбора нужно использовать параметр «Отбор», тип Структура, где Ключ – это Имя поля динамического списока, а значение это собственно то, почему нужно фильтровать данные. Например:


&НаКлиенте
Процедура ОткрытьФорму(Команда)

П = Новый Структура;
Отбор = Новый Структура;
Отбор.Вставить("Владелец", Контрагент);
П.Вставить("Отбор", Отбор);

ОткрытьФорму("Справочник.ДоговорыКонтрагентов.ФормаВыбора", П);

 
КонецПроцедуры

 

В том случае если отбор сложный и его можно установить только программно, то можно пойти двумя путями:

Первый путь: не самый удачный. Открываем форму, передаем в нее параметр


&НаКлиенте
Процедура ОткрытьФорму(Команда)

П = Новый Структура;

П.Вставить("Подразделение", Подразделение);

ВладелецФормыПодбора = Элементы.Сотрудник;
ОткрытьФорму("Справочник.СотрудникиОрганизаций.ФормаВыбора", П, ВладелецФормыПодбора);

 
КонецПроцедуры

 


В самой форме в событии «ПриСозданииНаСервере» задаем отбор списка: 

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

    Если
Параметры.Свойство("Подразделение") Тогда

       
СписокСотрудников = ПодготовитьСписокСотрудниковПодразделения(Параметры.Подразделение);

       
НовыйЭлемент = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
       
НовыйЭлемент.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ссылка");
       
НовыйЭлемент.ВидСравнения  = ВидСравненияКомпоновкиДанных.ВСписке;
       
НовыйЭлемент.ПравоеЗначение   = СписокСотрудников;
       
НовыйЭлемент.Применение = ТипПримененияОтбораКомпоновкиДанных.Элементы;

    КонецЕсли;

КонецПроцедуры

Второй путь - это использование Параметов Выбора и поэтому он лучше. Пример:

&НаКлиенте
Процедура ПриОткрытии(Отказ)

   
Подразделение = Объект.Подразделение;
   
НовыйПараметр = Новый ПараметрВыбора("Подразделение ", Подразделение);

    НовыйМассив = Новый Массив;
   
НовыйМассив.Добавить(НовыйПараметр);

    НовыеПараметры = Новый ФиксированныйМассив(НовыйМассив);
   
Элементы.Сотрудник.ПараметрыВыбора = НовыеПараметры;

КонецПроцедуры

Почему параметры выбора использовать лучше:

1)      Мы не отказываемся от стандартной обработки выбора: меньше кода

2)      Параметры выбора будут доступны в процедуре «ОбработкаПолученияДанныхВыбора» модуля менеджера выбираемого объекта. Поэтому мы сможем ограничить список доступных значений выбора при вводе по строке. 

 

Уникальность формы

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

 

ВладелецФормы = Элементы.Сотрудники;

ОткрытьФорму("Справочник.СотрудникиОрганизаций.Форма", , ВладелецФормы, ЭтаФорма.УникальныйИдентификатор);

Платформа будет искать открытые окна с таким ключом уникальности. В том случае, если она их найдет, то будет активировано существующее окно. В противном – открыто новое.

695

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. Yashazz 2855 10.11.13 23:56 Сейчас в теме
Внимательное чтение Синтакс-помощника и книг позволяет получить эту инфу самостоятельно. А вот действительно интересные мелочи так и не описаны. Например, открыли форму нового элемента, а как потом понять, записал юзер его или отказался? ))) Ну и другие фишки типа того, вот их и правда в хелпах нету.
NN2P; PrinzOfMunchen; +2 7 Ответить
2. Makushimo 154 11.11.13 07:16 Сейчас в теме
(1) Yashazz,
Синтакс-помощник еще надо уметь читать и понимать.
Автор молодец. понятным языком наглядно объяснил то, что "и так понятно" спесивым фыркающим "профи".
Мне понравилось.

З.Ы. Эх если бы фыркающие так же понятно свой код комментировали.....
TuMyP1985; Deslime; Summer_13; Mezijas; yuraskas; pqt; Jestery; metis76; Grigoripal; user659168_xec8787; Gendelf; bo0s; rpgshnik; sandybaev; frkbvfnjh; Gang031; neuromancer_aza; Velesstroy_OOO; awk; creatermc; Tsuzik; IrinaKostroma; alex_4x; dmbarchenkov; adhocprog; NN2P; inf012; rozhkovdmitriy; Quasar; Tatyana_0; marku; perepetulichka; Scukosan; Jen1978; gorin; Famza; +36 Ответить
5. ShantinTD 86 11.11.13 08:54 Сейчас в теме
(2) Makushimo, правильно составленный и оформленный код нуждается в минимальном количестве комментариев.
Благо, встроенный язык 1С не ограничивает нас идиотскими требованиями к именам переменных типа "не более 8 английских букв".
7. Makushimo 154 11.11.13 09:21 Сейчас в теме
(5) ShantinTD,
сходимся мы в том, что код комментировать таки нужно. :-))
8. Famza 82 11.11.13 09:59 Сейчас в теме
(7) Makushimo, однозначно комментить. Через полгода сам не вспомнишь зачем и почему ты это делал. В 7.7 очень хорош помогал ОпенКонф со скриптами - сразу маркировка вставлялась кто, когда + описание зачем код меняли.
46. ShantinTD 86 12.11.13 09:45 Сейчас в теме
(7) Makushimo, еще раз подчеркну - минимальном количестве комментариев. При условии, что код составлен и оформлен правильно. Нам нет нужды бороться за каждый байт кода, нам не можно, а НУЖНО использовать "говорящие" имена переменных, процедур, объектов метаданных.

(8) Famza, можно использовать шаблоны текста. Хороший пример - у Павла Чистова. Потом можно и свои шаблоны настроить.
Лично мне шаблоны реально помогают ускорить написание и оформление кода. В том числе - вписывание развернутых комментариев.
Кто на 8.2 - есть еще Снегопат, на 8.3 пока что только бета-версия, и та, говорят, падает (сам не проверял).

(12) а я так и написал, что когда нужен только один тип. Если нужно несколько - то через описание типов.

(30) Yashazz,
Мне вот совсем непонятно, почему люди упорно не хотят учиться "читать СП", а жаждут халявы, которую им разжуют и в ротик положат.
Мне вот тоже совершенно непонятно. Как и то, за что студент без опыта в 1С в частности и программирования вообще, без курсов и прочитанных книжек хочет зарплату 40000 рублей?! За что?

МОЛОДЕЖЬ!!! Я не готов платить такие деньги тому, кто будет три дня придумывать как сохранить текст из ПолеТекстовогоДокумента в файл формата txt. Тут всех дел-то на 15 минут с тестированием! Адекватнее нужно оценивать свои способности (на текущий момент)!

И напоследок про "штудирование и читание книжек". Пара примеров из личного опыта:
Прошел официальный курс от 1С по СКД, сел писать одну фишку. Уперся. Нутром чую - дел на три минуты. Синтакс-помощник не дает ответа, методичек по курсу не полагается, пошел искать. Нашел ответ на Инфостарте, а не на Мисте или ДевТрейне.
Перешел на 8.3.3, снял режим совместимости. Перестали работать динамические списки с преднастроенными отборами - отборы перенесли в компоновщик настроек. Книжек еще нет, синтакс-помощник оказался синтакс-непомощником.
Так что делиться опытом и знаниями нужно. А для жадных есть вариант проведения платных консультаций. =)
payta; purgin; flint1975; Demann; HEKPOH; Ali1976; NazarovV; Makushimo; kser87; +9 Ответить
48. kser87 1865 12.11.13 10:40 Сейчас в теме
(46) ShantinTD, Боюсь, призыв к молодеже вы разместили не в том месте. Люди, читающие это еще как минимум форму умеют открывать
50. ShantinTD 86 12.11.13 11:39 Сейчас в теме
(48) по крайней мере - знают, что ее можно открывать. =)
Будем считать, что вырвалось.
9. kser87 1865 11.11.13 10:01 Сейчас в теме
(1) Yashazz, Ежику понятно, что я не сам это придумал)

По вопросу: "Например, открыли форму нового элемента, а как потом понять, записал юзер его или отказался?"

Раз уже вы спрашиваете, то видимо у вас есть какие-то соображения на этот счет. В подобной ситуации я использовал что-то такое: Оповестить("ИзменениеСтатуса", , ЭтаФорма.ВладелецФормы); в событии "ПослеЗаписи" В таком случае в форме-владельце вызывалась обработка оповещения и там уже проверялось: отказался пользователь от записи или нет.
30. Yashazz 2855 11.11.13 13:09 Сейчас в теме
(9) Если конкретно по моему "вопросу", то можно использовать тот же "Ключ" как параметр формы, по окончании работы с ней ))
(2) Это сайт профи, а не "лягушатник" для новичков. Хотим - фыркаем. Мне вот совсем непонятно, почему люди упорно не хотят учиться "читать СП", а жаждут халявы, которую им разжуют и в ротик положат. И тем более мне непонятно, почему перепост из Радченки, жёлтых книжек и СП набирает столько плюсов.

Минус поставил за безапелляционное "нельзя использовать ПолучитьФорму".
32. kser87 1865 11.11.13 13:50 Сейчас в теме
(30) Yashazz, это не сайт "для профи" или "для новичков". У сайта немного более широкое назначение, чем вы себе представляете. Что касается и тупого "переписывания" желтых книжек. Ну во-первых, ничего плохого в этом нет. Во-вторых, при написании статьи я использовал несколько источников информации, в т.ч. и справку и желтые книжки. В-третьих, у вас не всегда под рукой есть книжки. А интернет есть почти всегда. Что касается метода "ПолучитьФорму". Ну да, надо упомянуть, что есть моменты, когда без нее не обойтись.
payta; IrinaKostroma; +2 Ответить
36. Yashazz 2855 11.11.13 14:57 Сейчас в теме
(32) Я вас удивлю, но-таки написано, шо это сайт для профи. Читаем http://infostart.ru/about/ и видим, что ключевое слово - "профессионально". А плохое есть то, что люди, вместо самообучения и штудирования книг, сидят и ждут "метафизической халявы" в виде подобных компиляций.

(33) Фыркаю потому, что ресурс засоряется. Повторюсь, есть DevTrain, есть Миста, дофига всего. Тут-то зачем? Ну и... халявщиков не люблю и тех, кто их прикармливает, тоже. А я сам далеко-о-о не профи (особенно в УФ), так что нинада))), мне ишшо учиться и учиться.

Вообще, забавно. Вот, например, курс по 1С-Эксперт удалили, он-де нарушает авторские права 1С, а передирать в сотый раз Радченку или Хрусталёву - это не нарушение авторских прав.
ShantinTD; +1 Ответить
37. Makushimo 154 11.11.13 15:13 Сейчас в теме
(36) Yashazz,
Вот посещение подобных сайтов, как Инфостарт и прочих перечисленных для многих является элементом процесса штудирования. Например поштудировал СП и желтые книжки, в голове ответа не появилось. полез в гугл, набрел на инфостарт, а тут, опа!! вот же он ответ.

или предлагаете до дыр перечитывать? пока глазки не выпадут? Чтобы был повод фыркнуть потом.

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

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

Если знанием не делиться, от него нет толку. Деньги потратишь, сам помрешь, а знания исчезнут в твоей гениальной голове.
payta; IrinaKostroma; Патриот; +3 Ответить
38. Yashazz 2855 11.11.13 15:39 Сейчас в теме
(37) Мне моё знание доставалось самостоятельно, бывало, что и "пока глазки не выпадут". В том числе такое знание, о котором статей до сих пор крайне мало. Моим трудом и затраченным временем моей жизни доставалось. И я не понимаю, с какой радости я буду делиться безвозвратно потраченным временем своей жизни с кем-то ещё. На этом предлагаю закончить оффтоп.
40. kser87 1865 11.11.13 15:56 Сейчас в теме
(38) Yashazz, вот и напишите! И люди вам благодарны будут!
41. Yashazz 2855 11.11.13 16:07 Сейчас в теме
(40) Вы думаете, что тонкости совместной работы обычных и УФ-форм в режиме обычного толстого кому-то интересны? Пхе. Да, там извратов много и спецэффекты бывают разные, но это же нечастый случай.

Или вот, какие параметры из типовых-штатных являются ключевыми?
Или, например, хотите вы сделать строку текущей, пишете спокойно Параметры=Новый Структура("ТекущаяСтрока",МояСсылка), а там бац, и ВосстанавливатьТекущуюСтроку=Истина. И не сработает, потому что сначала отрабатываются параметры, а потом восстанавливается позиция.
Ну итд.
42. kser87 1865 11.11.13 16:12 Сейчас в теме
(41) Yashazz, у вас в публикациях есть много того, чтобы было бы очень интересно. Например, работа с DOM, с web-сервисами.
45. Makushimo 154 12.11.13 09:41 Сейчас в теме
(38) Yashazz,
опять фыркает -))
Ну ладно, не удержался и подколол
А серьезно, ответьте себе на вопрос "а зачем я зашел на инфостарт и на эту страницу в частности?"
1. за опытом, новыми сведениями
2. убедиться, что я до сих пор самый умный
3. опустить очередного графомана
4. свой вариант
Videon; Evil Beaver; +2 Ответить
47. kser87 1865 12.11.13 10:15 Сейчас в теме
(45) Makushimo,
4. нечем заняться
54. Yashazz 2855 12.11.13 13:20 Сейчас в теме
(45) Да всё проще )) На ИС недавно выкладывали курс по 1С-Эксперт, я всё прицеливался его скачать да с автором пообщаться, а потом ррраз, и публикацию грохнули с формулировкой "нарушение авторских прав". До сих пор ума не приложу, где там что нарушалось. И тут эта статья, из серии "копипаст-плюс", да ещё набравшая такой рейтинг. Обидно стало ))
Впрочем, конечно, это к суппорту скорее вопросы.

(43) И то верно. Прикладной выхлоп всё ж побольше.

Кстати, маленький оффтоп про не-управляемые формы. Желающим извратиться предлагаю поиграть с формой в режиме рабочего стола, максимизированно раскрытой и модально вызванной. В ряде случаев даже Alt+Tab не спасает. )))

Ну и вопросы автору (ответов не знаю): когда в типизированном поле находится битая ссылка этого типа, что сделает УФ при щелчке на поле лупы - откроет форму нового объекта? И можно ли будет её потом подхватить через опрос окон?
61. ShantinTD 86 12.11.13 14:27 Сейчас в теме
(54) Yashazz,
Ну и вопросы автору (ответов не знаю): когда в типизированном поле находится битая ссылка этого типа, что сделает УФ при щелчке на поле лупы - откроет форму нового объекта? И можно ли будет её потом подхватить через опрос окон?

Для обычных форм - пишет "объект не найден". Новый создавать не предлагает.

(55) AlX0id, работает в обычном приложении. В управляемом приложении работает на сервере.
Конкретный пример кода отрабатывает в толстом клиенте обычного приложения, толстом клиенте управляемого приложения. В тонком клиенте не отрабатывает - не может создать документ. А это уже другая задача - задача передать незаписанный документ с сервера на клиент.
62. AlX0id 12.11.13 14:33 Сейчас в теме
(61) ShantinTD,
Нет. Приведите, пожалуйста, пример кода для открытия формы заполненного, не записанного документа без использования метода ПолучитьФорму, не изменяя модуля формы.

Эээ.. Ну и в каком месте это другая задача?
Я, конечно, не уточнил, что в тонком клиенте, но вроде бы автор понял. Виноват, каюсь.
63. ShantinTD 86 12.11.13 16:55 Сейчас в теме
(62) AlX0id, то есть
пример кода для открытия формы заполненного, не записанного документа без использования метода ПолучитьФорму, не изменяя модуля формы
и
передать незаписанный документ с сервера на клиент
это одна и та же задача? Тогда, чувствую, лучше не спорить...
64. AlX0id 12.11.13 17:08 Сейчас в теме
(63) ShantinTD,
Ну, то есть, в своем глазу Вы и бревна по теме не заметили? )
Ок. С удовольствием не буду спорить.
65. kser87 1865 12.11.13 17:10 Сейчас в теме
(63) ShantinTD, вы же ерунду написали дважды. проверили бы хоть, что пишите
67. Yashazz 2855 13.11.13 00:21 Сейчас в теме
(61) Сделайте внешку под обычные формы. Разместите на ней поле типа "Справочник.КакойНибудь" с лупой. Создайте тестовый элемент этого справочника. Выберите его в этом поле. Теперь удалите Shift+Del этот элемент и нажмите лупу в этом поле. Проверено на множестве релизов, включая 8.2.17.169
68. ShantinTD 86 13.11.13 00:57 Сейчас в теме
(67) Yashazz, и Вы туда же?! Что конкретно не так?
Есть у меня обработка. Встроенная (или принципиально внешнюю?). Обычная форма. На ней поле выбора с типом "любая ссылка". Выбрал элемент справочника, потом удалил его (из формы списка справочника), совсем удалил. Нажимаю на лупу - пишет "объект не найден", создать новый - не предалагает.
Кстати, пробовал и не через обработку: в элементе справочника Организации выбрал ОсновнойБанковскийСчет, записал, потом удалил выбранный счет. В поле написано "Объект не найден (ссылка на объект)", при нажатии на лупу реакция такая же - пишет "объект не найден", новый создать не предлагает.
8.2.17.169 для меня уже давно не актуально (хотя если и это принципиально - найти не трудно), у меня 8.3.3 и 8.3.4.
73. Yashazz 2855 13.11.13 13:43 Сейчас в теме
(68) Ну, разве что дело в разнице 8.2 и 8.3 - я проделывал ровно то же, но совсем иным эффектом. Ладно, учту на будущее.
74. ShantinTD 86 13.11.13 14:16 Сейчас в теме
(73) Yashazz, вот это какой-никакой диалог.
Чтобы диалог стал еще конструктивнее - пожалуйста, опишите с каким же "совершенно другим эффектом". И на какой платформе, все-таки?
Там в 8.3 очень много фишек появилось. Правда - не всегда приятных, но это отдельный разговор.
75. Yashazz 2855 13.11.13 14:38 Сейчас в теме
(74) Читайте внимательно, я уже всё описал в 58 и 67.
76. ShantinTD 86 13.11.13 14:58 Сейчас в теме
100. rwn_driver 8 13.04.15 22:29 Сейчас в теме
(38) Yashazz, в таком случае Вам нечего делать на Инфостарте. это изначально открытое общество, в котором нет деления по категориям, общение всех со всеми идёт на равных. Нельзя считать кого-то ниже себя. А что касается "зачем я буду делиться", так Вы и не делитесь! В Вашем комментарии нет ни одной ПОЛЕЗНОЙ мысли, только колкости по поводу и без...
Gendelf; Lyolik; Designer1C; +3 Ответить
101. kser87 1865 13.04.15 22:56 Сейчас в теме
(100) rwn_driver, он этот комментарий написал 11.11.2013 15:39, а сейчас 13.04.2015 22:55. мне кажется, вы чересчур злопамятный=)
143. rwn_driver 8 14.06.19 11:13 Сейчас в теме
(101)Я не злопамятный, я очень добрый, но память - хорошая.
Просто редко бываю на Инфостарте.
А тут наткнулся на сноба, который сам же заявляет, что ему ещё - "учиться и учиться".
Делиться знаниями - это основное условие общения здесь.
Иначе обсуждения вообще не нужны!
39. kser87 1865 11.11.13 15:54 Сейчас в теме
(36) Yashazz, "А плохое есть то, что люди, вместо самообучения и штудирования книг, сидят и ждут "метафизической халявы" в виде подобных компиляций." Что поделать, мир несовершенен. Однако во-первых, чтение статей, подобных той, о которой идет речь - это тоже штудирование. Во-вторых, эта статья не только для таких людей. А также для тех, кому вдруг понадобилось быстренько узнать, как отрыть форму программно. Но вот беда, книжки радченко под рукой не оказалось, только интернет.

"Фыркаю потому, что ресурс засоряется. Повторюсь, есть DevTrain, есть Миста, дофига всего. Тут-то зачем? Ну и... халявщиков не люблю и тех, кто их прикармливает, тоже. А я сам далеко-о-о не профи (особенно в УФ), так что нинада))), мне ишшо учиться и учиться."
Первое: ну так сами-то не засоряйте хламом всяким бесполезным. Второе, если руководствоваться вашей логикой, то и Радченко, и Хрусталева, и Гилев - все прикармливают халявщиков. Есть же справка 1С, желтые книжки. А они тут фигню всякую пишут, даже видео какое-то снимают. Это вообще верх халявы: вместо того, чтобы книжки умные читать они видос смотрят. Лентяи!

Вообще, забавно. Вот, например, курс по 1С-Эксперт удалили, он-де нарушает авторские права 1С, а передирать в сотый раз Радченку или Хрусталёву - это не нарушение авторских прав. Послушайте, "использовать источник информации" и "передирать" это разные вещи. Свои примеры я сам придумывал, текст я сам писал. Единственная претензия ко мне - это может быть то, что я в статье не указал эти самые источники информации. Так это на сайте почти никто не делает. Если ко мне будут претензии - не вопрос, сам удалю статью и принесу свои извинения.
celtic; Designer1C; +2 Ответить
43. Abadonna 3833 11.11.13 19:47 Сейчас в теме
(36) Yashazz, да уж лучше такие статьи, чем статьи "марчендайзеров и всяких прочих психологов".
Типа http://infostart.ru/public/236082/ или http://infostart.ru/public/198244/, которые еще вместо раздела Life спокойно помещаются в раздел рейтинговых. А модераторам - по фиг. Но это, разумеется, IMHO.
44. kser87 1865 11.11.13 22:55 Сейчас в теме
(43) Abadonna, Вас никто не заставляет это читать. Меня вот откровенно бесит стопятсоттысячная корявенькая обработка для загрузки из excel. Но я же молчу. Раз качают - значит кому-то надо.
51. Abadonna 3833 12.11.13 12:35 Сейчас в теме
(44)
Abadonna, Вас никто не заставляет это читать...Но я же молчу...

1. Я и не читаю.
2. А мой комментарий внимательно читали? Я не против существования таких статей вообще, а против их размещения в рейтинговой рубрике! Для "общих рассуждений" специально была создана рубрика Life, плюсуются, но в общий зачет по рейтингу не идут. Так что тут просто от внутренней порядочности автора зависит. Опять же - IMHO
127. Altair777 639 21.06.17 15:23 Сейчас в теме
(44) Кстати, а какая самая лучшая такая обработка?
60. Abadonna 3833 12.11.13 14:17 Сейчас в теме
+(51) Совпало :)))
ZOMI написал 12.11.2013 00:30 в теме Эй! Куда делись мои $m? (автор echo77):

Вообще систему рейтингов за публикации/статьи нужно пересмотреть ... Рассуждения тетушки Пави не могут быть ценнее Миракла...Да простят меня тетушки от УПП.

Адрес сообщения:
http://forum.infostart.ru/forum17/topic95412/message1017907/#message1017907
33. Makushimo 154 11.11.13 14:24 Сейчас в теме
(30) Yashazz,
Вот зашел на страницу поста "профи". Понял, что знает. Фыркнул и ушел.
Не нравится, не помогло, "да я и сам умный" - ставь минус или игнорируй.
Фыркать зачем? чтобы показать всем и каждому, мол я крут, я читал СП. Так?
Спесивые и фыркающие вызывают негативные эмоции ибо пользы от них ничуть.

А человек постарался и разжевал, за что ему спасибо.

Кстати, если бы желтых книжек и СП было достаточно, не было бы спроса на разжевывающие курсы разного толка.
Желтые книжки и СП как раз фыркающие и написали :-)).
Jestery; Gendelf; IrinaKostroma; purgin; Ksant; корум; NazarovV; alest; PhoenixAOD; fomaOp; practik1c; oninfostart; alcoholic; den_bat; michaelbag; chizh; Knopodav; Ya1Cko; Mi4man; BolshoySmal; kuka1; __ALT__; Adoms; vasilnikol; toga2007; Valerich; bulpi; Letos; +28 Ответить
3. Новиков 291 11.11.13 08:50 Сейчас в теме
что "и так понятно" спесивым фыркающим "профи".

Очень хороший гротеск однако!
4. ShantinTD 86 11.11.13 08:50 Сейчас в теме
Про использование метода ОткрытьФорму(). Это только у меня так
Полный список параметров выглядит так: ,,,,
или список параметров действительно пропущен?

Как открыть форму выбора произвольного значения?
Если допустимый тип один, то можно воспользоваться этим:
<Тип> (необязательный)
Тип: Тип; ОписаниеТипов.
Тип вводимого значения. Если параметр не указан, используется тип параметра <Значение>.
Пример:
ВыбЗнач = ПредопределенноеЗначение("Справочник.Контрагенты.ПустаяСсылка");
ВвестиЗначение(ВыбЗнач);
Сообщить(ВыбЗнач);

Словами автора -
Меньше кода
.

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

12. kser87 1865 11.11.13 10:21 Сейчас в теме
(4) ShantinTD, у меня полный список параметров выглядит так же. Чуть позже поправлю.

На счет замечания "меньше кода". Вы конечно же правы. Однако как вы в таком случае нельзя использовать несколько типов
6. AlX0id 11.11.13 09:15 Сейчас в теме
Нельзя использовать метод ПолучитьФорму().

Дальше уже только пробежался по заголовкам %)
Ну хоть бы аргументы привели что ли адекватные, кроме корявого использования метода..
10. kser87 1865 11.11.13 10:02 Сейчас в теме
(6) AlX0id, я привел аргумент, почитайте. Вам его недостаточно?
14. AlX0id 11.11.13 10:37 Сейчас в теме
(10)
Нет. Приведите, пожалуйста, пример кода для открытия формы заполненного, не записанного документа без использования метода ПолучитьФорму, не изменяя модуля формы.
18. kser87 1865 11.11.13 10:44 Сейчас в теме
(14) AlX0id,
Параметры = Новый Структура;
Параметры.Вставить("Основание", КакоеТоПроизвольноеЗначение);
ОткрытьФорму("КакаяТоФорма", Параметры);

В этом случае вызывается ОбработкаЗаполнения. Модуль Формы не меняем. Можно даже модуль объекта не менять, а впихнуть в соответствующую подписку на событие
21. Поручик 4330 11.11.13 11:14 Сейчас в теме
(18) ОбработкаЗаполнения вызывается в любом случае, даже если это просто открытие формы нового объекта или копирование существующего. Об этом сказано в матчасти по разработке управляемого интерфейса.
22. kser87 1865 11.11.13 11:18 Сейчас в теме
(21) Поручик, нее, я не про это. Я про Уникальность формы. Честно говорю, что сам не понимаю, как это работает.

Наверное, проще объяснить на примере: есть табличная часть, для нее сделана команда Подбора. Вот как сделать так, чтобы открывалась уже существующая форма, когда пользователь много раз тыкает на одну и ту же кнопку. У меня не получается.
28. bonv 11.11.13 12:03 Сейчас в теме
(21) Поручик,
с каких пор ОбработкаЗаполнения стала вызываться при копировании?! Никогда такого не было.
Даже в СП есть примечание

Примечание:
При копировании (как интерактивном, так и средствами встроенного языка), данный обработчик не вызывается.

А для копирования есть специальное событие ПриКопировании
29. Поручик 4330 11.11.13 12:16 Сейчас в теме
(28) Молодец, нашёл ошибку. Встречу, дам пряник.
23. AlX0id 11.11.13 11:23 Сейчас в теме
(18)
Так. Усложним задачу. Без подписки? Без изменения конфигурации вообще?
24. kser87 1865 11.11.13 11:27 Сейчас в теме
(23) AlX0id, очень просто: смотрите комментарий Поручика (13).
25. AlX0id 11.11.13 11:30 Сейчас в теме
(24)
Эээ.. А что - все реквизиты объектов заполняются из значений заполнения? Или все же это зависит от настроек реквизитов в конфигурации?
26. kser87 1865 11.11.13 11:44 Сейчас в теме
(25) AlX0id, Сдаюсь. Вы правы. Нужно описать случаи, когда все-таки стоит использовать "ПолучитьФорму". Не зря же этот метод сделали в конце-концов=)
27. AlX0id 11.11.13 11:47 Сейчас в теме
(26)
Угу. Не зря - хотя применение относительно специфичное, но используется в моей практике не так уж и редко..
49. ShantinTD 86 12.11.13 11:37 Сейчас в теме
(14)AlX0id, я, надеюсь, интересует что-то большее, чем это:
Док = Документы.ПоступлениеТоваров.СоздатьДокумент();
Док.Комментарий = "Создан программно";
ОткрытьЗначение(Док);

А то даже как-то обидно за такой "камень в огород".
Знаю, что откроется основная форма объекта. Если нужна не основная - так и нужно ставить задачу.
52. AlX0id 12.11.13 13:10 Сейчас в теме
(49) ShantinTD,
А Вы точно уверены, что по данному коду вообще что-нибудь откроется?

Синтаксис:

ОткрытьЗначение(<Значение>)
Параметры:

<Значение> (обязательный)

Тип: Произвольный.
Значение любого типа, который может быть показан системой в диалоге.
Описание:

Показывает в диалоге переданное значение. Вид диалога зависит от типа переданного значения.

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

Тонкий клиент, веб-клиент, толстый клиент.
53. ShantinTD 86 12.11.13 13:19 Сейчас в теме
(52) AlX0id, открывается.
Давайте конструктивнее: что смущает? что не так? в чем сомнения?
55. AlX0id 12.11.13 13:44 Сейчас в теме
(53) ShantinTD,
Смущает вопрос - где должен выполняться Ваш код? На клиенте или на сервере?
56. kser87 1865 12.11.13 13:46 Сейчас в теме
(52) AlX0id, Проверьте. Чтобы вы лучше понимали, как это работает, приведу такой пример:

Поле ввода с выбором справочника. Кнопка "открыть", которая имеет стандартную обработку. Нажимаете на кнопку - открывается форма элемента справочника. Вот ОткрытьЗначение() так же отрабатывает. Если платформа не может открыть указанное значение, то вывалится ошибка вида: "отсутсвует отображение типов по умолчанию" или что-то такое. Попробуйте число так открыть, сразу поймете
57. AlX0id 12.11.13 13:56 Сейчас в теме
(56)
Ну раз вы считаете, что я не знаю, как пользоваться процедурой ОткрытьЗначение, то я намекну - вопрос в том, что же передать в параметр оной процедуры? Вопрос был, напомню, как открыть незаписанный документ. То бишь, ссылки нет.

А у человека в коде еще и каша из переменных, доступных только на сервере, и процедур, доступных только на клиенте. Как он хочет просунуть на клиент ДокументОбъект - вот что меня интересует.
59. kser87 1865 12.11.13 14:03 Сейчас в теме
(57) AlX0id, теперь понял. Извиняюсь. Я не внимательно смотрел код)
58. Yashazz 2855 12.11.13 14:00 Сейчас в теме
(56) В УФ пишет "объект не найден", что логично. А вот в обычных формах это отрабатывается иначе - по лупе открывается форма, как для нового объекта.
132. alx7304 15.09.17 18:53 Сейчас в теме
(52) есть еще

Синтаксис:

ПоказатьЗначение(<ОписаниеОповещенияОЗавершении>, <Значение>)

у меня замечательно работало.
11. vicmos 42 11.11.13 10:14 Сейчас в теме
13. Поручик 4330 11.11.13 10:32 Сейчас в теме
(0) Правильное открытие формы нового объекта с обработкой заполнения

	ПараметрыЗаписи = Новый Структура("Реквизит", Реквизит);
	ПараметрыЗаписи.Вставить("ЗначенияЗаполнения", ПараметрыЗаписи);
	
	// открываем форму записи РС
	ОткрытьФормуМодально("РегистрСведений." + ИмяРегистра + ".ФормаЗаписи", ПараметрыЗаписи, ФормаВладелец);


Почитайте в СП или посмотрите в типовых матчасть по поводу ЗначенияЗаполнения
adhocprog; +1 Ответить
15. kser87 1865 11.11.13 10:38 Сейчас в теме
(13) Поручик, В таком случае ОбработкаЗаполнения по сути не нужна. Хотя это очень дельное замечание. Вы не обидетесь, если я это включу в публкацию?
17. Поручик 4330 11.11.13 10:44 Сейчас в теме
(15) Не укажете авторство умной поправки, не обижусь, а оскорблюсь до глубины души.

Сама обработка заполнения в большинстве случаев нужна для проведения каких-то других действий.
19. kser87 1865 11.11.13 10:46 Сейчас в теме
(17) Поручик, я бы авторство поправки указал и без вашей просьбы. Но вынужден признаться, что я ждал замечание именно от вас но не по обработке заполнения... что же, видимо никто не толком не знает, как это работает =(
20. Поручик 4330 11.11.13 11:12 Сейчас в теме
(19) Как работает обработка заполнения и какова роль параметра ЗначенияЗаполнения я знаю толком, так как наваял достаточно по теме.
16. Evil Beaver 6291 11.11.13 10:42 Сейчас в теме
Хорошая статья, оформление только хромает. Спорные моменты тоже есть, на них в каментах указали.
И кстати, насчет "ПолучитьФорму". Его-таки можно использовать, вполне себе метод. Просто раньше он был единственно верным, а сейчас более верный - другой. Но он ни в коем случае не предан анафеме. Если вы посмотрите как работает любой стандартный отчет на СКД, то платформа открывает форму изменения варианта именно через "ПолучитьФорму", с последующей настройкой объекта Форма.
31. petrov_al 10 11.11.13 13:36 Сейчас в теме
Спасибо за информацию очень помогли т.к. занимаюсь переписыванием старых наработок.
34. zarucheisky 11.11.13 14:38 Сейчас в теме
Если вы хотите, чтобы ваше приложение работало в Web-Интерфейсе, то не открывайте формы в Модальном режиме. В таком режиме они реализованы как всплывающие окна, которые по умолчанию отключены в большинстве браузеров.

Уберите этот абзац.

Равносильно, отказаться от "Предупреждение", "Вопрос", "ВвестиЗначение"

Лечится настройкой браузера, ИМХО, кои чаще всего для работы с 1С через web как раз разрешение всплывающих окон стоит разрешать для доверенных узлов.
А вот открытие именно модальных окон иногда крайне необходимо.
35. kser87 1865 11.11.13 14:46 Сейчас в теме
(34) zarucheisky, ну как вам сказать. Это для вас фраза "разрешение всплывающих окон стоит разрешать для доверенных узлов" дело 5 минут. Когда у вас очень много пользователей, вы не сможете до всех донести, что им там нужно что-то в браузере поменять. Они обычно и слова-то такого не знают. У них это "интернет" называется.

Может, Вам такая фраза больше понравится?

Если вы хотите, чтобы ваше приложение работало в Web-Интерфейсе, то лучше воздержаться от открытия форм в Модальном режиме. В таком режиме они реализованы как всплывающие окна, которые по умолчанию отключены в большинстве браузеров.
insurgut; payta; Georgich88; +3 Ответить
118. starik-2005 1961 20.04.16 18:32 Сейчас в теме
(34) zarucheisky, модальные окна - это вообще моветон. В последних версиях платформы их убирают как могут, надеюсь скоро запретят. А те, кто не научился пользоваться обработчиками оповещения, пусть сходят и повесятся с горя )))
119. minimajack 55 20.04.16 19:53 Сейчас в теме
(118) starik-2005, ну и некропостер ты)))
120. starik-2005 1961 20.04.16 19:54 Сейчас в теме
(119) minimajack, лишний раз напомнить про то, что модальные окна - идиотизм, не помешает.
121. kser87 1865 23.04.16 01:15 Сейчас в теме
(118) starik-2005, до сих пор не запретили. Поэтому норм замечание)
123. Xershi 714 27.04.16 18:52 Сейчас в теме
(118) starik-2005, ничего подобного! Просто, если база не будет ориентирована для веб публикации это нормально!
А корпоративная база, как раз для веба и не нужна.
124. kser87 1865 28.04.16 11:13 Сейчас в теме
(123) Xershi, почему это корпоративная база не нужна для вэба?
66. ShantinTD 86 12.11.13 23:37 Сейчас в теме
1. Я умею признавать свои ошибки, и делаю это, когда действительно не прав.
Признаю, что по запарке упустил из виду, что речь идет про управляемое приложение. Если бы не упустил - даже не вел бы разговора про обычное приложение.

2. Я за конструктивную критику, но против "фырканья".
Дважды спросил "что не так?" Дважды получил неконструктивные ответы типа "где оно будет работать?" или "ну ерунда же!". Хотя можно было сразу указать на то, в каком месте это "ерунда". А это все таки фырканье, а не критика.

3. Мне достаточно "подопечных" плохо разбирающихся пользователей (которые говорят просто "не работает!"), их плохо формализованных рабочих процессов, и изменений в платформе 8.3 (относительно 8.2), чтобы не вести неконструктивные споры.

4. Я умею учиться на своих и чужих ошибках, и не кидаюсь "с шашкой наголо". Естесственно, приведенный мной код я проверял, он работает. С поправкой на то, в каких режимах я его проверял (смотри выше).
70. kser87 1865 13.11.13 10:35 Сейчас в теме
(66) ShantinTD, потому, что вам бесполезно объяснять, что не так. Видно, что вы "не в теме"
69. Kov495 10 13.11.13 08:57 Сейчас в теме
71. rasswet 82 13.11.13 11:12 Сейчас в теме
спасибо, доходчиво и в одном месте.
72. ShantinTD 86 13.11.13 11:55 Сейчас в теме
Жаль, не получилось конструктивного диалога.
77. bulpi 157 13.11.13 14:58 Сейчас в теме
Синтакс помошник - это для тех, кто и так все знает, но забыл синтаксис. Вот , например, что там написано про параметры выбора :

Расширение поля формы для поля ввода (Form field extension for a text box)
ПараметрыВыбора (ChoiceParameters)
Использование:

Чтение и запись.
Описание:

Тип: ФиксированныйМассив.
Определяет параметры выбора. Фиксированный массив из элементов типа ПараметрВыбора.


И что здесь можно понять? А благодаря этой статье я теперь знаю.
79. kser87 1865 13.11.13 15:05 Сейчас в теме
(77) bulpi, в синтаксис - помощнике это можно найти здесь: Интерфейс(Управляемый)/ Поле формы/ Расширение поля ввода/ Свойства/ ПараметрыВыбора
78. bulpi 157 13.11.13 15:00 Сейчас в теме
А теми, кто жалеет рейтинг для других, движет тщеславие. Ну какая вам разница ?
80. DAnry 6 13.11.13 20:52 Сейчас в теме
Спасибо, очень доступно и познавательно, а главное практично. Плюсую.
81. webester 29 14.11.13 02:13 Сейчас в теме
Сразу на входе на картинках, подчеркнуты ошибки. Убирать было лень? Или вы намекаете на свою неграмотность? Делаете для людей, делайте нормально. Тем более в данном случае, это несложно.
П2 сокращается раза в три(для того, что бы открыть форму выбора нам нужно описание одного типа, массив здесь лишний):

Выбзнач = "";

Если ВвестиЗначение(ВыбЗнач, "Введите значение", Новый ОписаниеТипов("СправочникСсылка.Контрагенты")) Тогда

Сообщить(ВыбЗнач);

КонецЕсли;

п 3.
У формы любого объекта или записи регистра есть так называемый ключевой реквизит.

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

Или
У формы любого объекта или записи регистра есть ключевой реквизит. Этот реквизит указывает на тип формы(форма списка\объекта и за ее содержание, при открытии формы, мы передаем следующую структру, заполняя этот реквизит)

То есть либо раскрываем мысль, либо говорим строго по существу.

п6
первая процедура тоже сокращается до одной строчки, без потери читабельности. Далее читаем:
Тогда в событии «ПриСозданииНаСервере» формы элемента справочника Проекты можно будет получить «НашПараметр».

Но в примере который приведен выше, нет структуры с таким ключом, вы не тот кусок кода кода скопировали, исправьте.
Так же в п6. после
Этот параметр, во-первых будет доступен в свойстве «ВладелецФормы» открываемой формы, а во-вторых, после совершения пользователем выбора стандартным способом (т.е. через форму выбора, по нажатии кнопки «Выбрать»), у Владельца сработает событие «ОбработкаВыбора».

следует добавить:
В третьих, если владельцем формы выступает реквизит формы и его тип совпадет с типом возвращаемого значения формой подбора, обработку выбора реализовывать нет смысла, этот реквизит, заполнится автоматически.
Получилось немного громоздкое выражение, но я думаю вы поняли мысль и сможете обернуть ее как то по попроще,
если пожелаете конечно.
Это так на беглый взгляд, ибо почти не пишу под УФ. Точнее сказать вообще не пишу.
sergio199; v777k; zqzq; kser87; ShantinTD; +5 Ответить
82. kser87 1865 14.11.13 10:41 Сейчас в теме
(81) webester, спасибо, учту ваши замечания
84. KliMich 16.11.13 00:16 Сейчас в теме
Спасибо! Сроду не подозревал, что так может быть...
Возьму себе на заметку.
85. Сисой 83 25.11.13 12:05 Сейчас в теме
Респект, хорошо все собрано в одном месте.
86. bayce 23 25.11.13 22:01 Сейчас в теме
очень интересная статья.
я обычно пользовался методом ПолучитьФорму().
теперь вижу, что не всегда это корректно.
87. kser87 1865 25.11.13 22:05 Сейчас в теме
(86) bayce, (85) Сисой, Спасибо! Приятно осознавать, что твой труд кому-то нужен=)
88. NeSPEC 15 27.11.13 14:24 Сейчас в теме
Спасибо, интересно. Плюс.
89. Scukosan 23.10.14 13:28 Сейчас в теме
спасибо)
в целом интересно)
Оставьте свое сообщение

См. также

Создание асинхронных виджетов 69

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Работа с интерфейсом

Описание нескольких способов создания асинхронных виджетов для 1С:Предприятия. Рассматриваются способы с использованием HTTP-сервисов и фоновых заданий.

16.10.2019    1330    YPermitin    11       

Формы. Трудности программной работы 69

Статья Программист Нет файла v8 v8::УФ 1cv8.cf Бесплатно (free) Работа с интерфейсом

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

06.10.2019    3360    YPermitin    20       

Лайфхаки 1С (часть 1). Настройки отчетов и печатных форм 1С 34

Статья Программист Пользователь Стажер Нет файла v8 1cv8.cf Россия Бесплатно (free) Работа с интерфейсом

Статья рассчитана на пользователей или программистов, которые только начинают работать с 1С, для максимально быстрого ознакомления с интерфейсом программы. В статье приведены лайфхаки, которые позволят вам быстро и эффективно научиться настраивать отчёты и печатные в среде программных продуктов 1С. Полученные знания значительно упростят взаимодействие с интерфейсом 1С и повысят продуктивность работы оператора.

02.10.2019    3970    VachKirp    8       

Добавляем виджет "Задачи от меня" в Документооборот 2.1 22

Статья Программист Нет файла v8 v8::Бизнес-процессы ДО Россия Бесплатно (free) Практика программирования Работа с интерфейсом

Небольшая доработка Документооборота 2.1 для возможности добавления виджета "Задачи от меня" в обработку Текущие дела.

25.09.2019    1532    Sergey_Borisovi4    2       

[Механизм интерфейса] Часы 54

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Работа с интерфейсом Практика программирования Разработка

Добавляем цифровые часы на форму, как бонус рассмотрим вариант и с аналоговыми.

26.08.2019    3082    rpgshnik    33       

Произвольная начальная страница через расширение (программно) 41

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Работа с интерфейсом

Установка своей формы произвольному пользователю на начальную страницу.

14.08.2019    2521    nagaitseff    11       

Подходы, методы и инструменты UX/UI для разработки эффективных интерфейсов на 1С 31

Статья Программист Нет файла v8 Бесплатно (free) Работа с интерфейсом

Интерфейсам в 1С обычно уделяют мало внимания. Это в итоге снижает востребованность платформы, делает ее неконкурентной, лишает большой доли рынка. Как не потерять старых клиентов и привлекать новых с помощью интерфейсов, а главное – как сделать «правильный» интерфейс, рассказал участникам конференции Infostart Event 2018 Education управляющий партнер и основатель консалтинговой группы WiseAdvice Иван Тягунов.

07.08.2019    4506    IvanAT1981    14       

Пользовательские настройки системы компоновки данных 85

Статья Программист Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования Работа с интерфейсом

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

09.07.2019    6204    ids79    0       

Подсистема "Варианты отчетов". Используете ли Вы ее правильно? 210

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Работа с интерфейсом БСП (Библиотека стандартных подсистем)

Небольшая история про использование подсистемы "Варианты отчетов" из БСП. Используете ли Вы ее правильно?

04.06.2019    14228    YPermitin    49       

Расшифровка отчета на СКД с детализацией по выбранному полю на основе БСП 91

Статья Программист Нет файла v8 v8::УФ v8::СКД 1cv8.cf Россия Бесплатно (free) Практика программирования Работа с интерфейсом Разработка

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

14.05.2019    7363    Viktor_Ermakov    6       

Свой макет оформления отчета 33

Статья Программист Нет файла v8 v8::СКД Россия Windows Бесплатно (free) Работа с интерфейсом

Пример создания и оформления и применения своего (пользовательского ) макета оформления для СКД.

24.04.2019    4507    olegpkc    5       

Динамический вывод таблицы значений на форму 35

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Работа с интерфейсом

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

11.01.2019    5650    Vlad1917    26       

Универсальные функции ЗУП 3.1 / ЗКГУ 3.1, которые помогут в разработке 464

Статья Программист Нет файла v8 v8::СПР ЗКГУ3.0 ЗУП3.x БУ Зарплата Управление персоналом (HRM) Бесплатно (free) Универсальные функции

В статье размещен список стандартных процедур и функций с примерами, которые могут помочь при разработке (доработке) конфигураций Зарплата и управление персоналом ред. 3.1 и Зарплата и кадры государственного учреждения 3.1. Иногда бывает довольно сложно правильно получить данные или долго, поэтому лучшим вариантом будет использование стандартных процедур. Буду очень признателен, если Вы поделитесь своим опытом и предложите свои варианты стандартных процедур которые помогают в работе. Или предложите, как дополнить имеющиеся процедуры.

14.11.2018    31734    GeterX    93       

Прикладной пример переработки стандартной формы РМК - Розница 74

Статья Программист Нет файла v8 Розница УУ Кассовые операции Розничная торговля Бесплатно (free) Работа с интерфейсом

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

04.10.2018    10816    asdfgcom    56       

Cправочная информация. Картинки. 16

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Работа с интерфейсом

Справочную информацию мало кто любит писать, но вот захотелось. И что с этим делать?

06.06.2018    6389    aspirator23    2       

Итоги в динамическом списке 47

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Работа с интерфейсом

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

28.05.2018    8977    CXY    16       

Программное управление обычными формами документов и справочников в УПП/КА 32

Статья Программист Нет файла v8 v8::УФ КА1 УПП1 Россия Бесплатно (free) Работа с интерфейсом

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

09.05.2018    8408    dima_home    7       

Решение проблемы отображения интерфейса Такси на экранах с маленьким разрешением 26

Статья Программист Нет файла v8 v8::УФ Беларусь Windows Бесплатно (free) Работа с интерфейсом

Решение возникшей проблемы при переходе с интерфейса 8.2 на интерфейс Такси на экранах с маленьким разрешением.

06.04.2018    9768    Drak87    18       

Красивые графики. Пошаговая инструкция (Highstock) 122

Статья Программист Нет файла v8 Бесплатно (free) Работа с интерфейсом

Данный подход опробован на библиотеках: Нighcharts и Highstock. Для работы будет необходима 1С и браузер Google Chrome. Чукча не писатель (первая публикация).

22.11.2017    14181    Degrement    20       

Меняем стандартную форму выбора для реквизита формы на свою форму с запросом 51

Статья Программист Нет файла v8 Россия Бесплатно (free) Практика программирования Работа с интерфейсом

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

30.09.2017    15776    ah7777777    24       

"Мигаем" интерфейсом, или цепочки асинхронных вызовов 71

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Работа с интерфейсом

Как, не блокируя интерфейс, привлечь внимание пользователя к интерфейсным элементам. Или, попросту говоря, "мигнуть" чем-то.

06.09.2017    12613    Chrizt    13       

"Восстановить положение окна" - не помогает. Как я решил проблему. 28

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Работа с интерфейсом

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

28.05.2017    46554    niko11s    44       

Как добавить/убрать кота в отчет? 78

Статья Программист Нет файла v8 БП3.0 Бесплатно (free) Работа с интерфейсом

Кот в отчете: кому-то нравится, кого-то жутко бесит. Как избавиться, заменить, оставить (нужное подчеркнуть)?

12.05.2017    23099    starik-2005    16       

Итоги в динамическом списке 46

Статья Программист Нет файла v8 1cv8.cf Россия Бесплатно (free) Работа с интерфейсом

Как быстро посчитать итоги в динамическом списке

03.04.2017    20946    Восьмой    34       

Исправление проблем со встраиванием внешних отчетов в УНФ 1.6 12

Статья Программист Нет файла v8 УНФ Россия Бесплатно (free) Работа с интерфейсом

В УНФ 1.6 (тестил на версии 1.6.7.43) существуют следующие проблемы: 1. при встраивании доп. отчета в базу, он не отображается, пока не собьешь фильтр подсистемы 2. при встраивании доп. отчета в базу, отсутствует команда «Дополнительные отчеты» (по аналогии с командной «Дополнительные обработки») . В статье описывается решение перечисленных проблем.

16.11.2016    11477    TheRealStanly    3       

Как "перемотать" динамический список в начало при открытии? (или некоторые нюансы получения данных динамического списка) 57

Статья Программист Нет файла v8 Бесплатно (free) Работа с интерфейсом

В современных интерфейсах (новостях, социальных сетях и прочим) принято размещать новые данные сверху, более старые - внизу. К сожалению, в 1C сделано несколько по-другому - по умолчанию списки документов отсортированы по возрастанию даты и далее возможно два варианта: либо список при открытии проматывается в конец, либо список может запоминать "последнюю" текущую строку.

03.11.2016    19070    Fragster    25       

Программное создание графических схем (v.2): API для ГрафическойСхемы 73

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Работа с интерфейсом Универсальные функции

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

27.09.2016    16892    serg_infostart    15       

Автоматическое добавление новых реквизитов на форму (УФ) 38

Статья Программист Нет файла v8 v8::УФ Бесплатно (free) Работа с интерфейсом Универсальные функции

Идея такая: Программист добавил реквизит в объект. В комментарии этого реквизита прописал некое спец. слово (можно не матерное). На форму объекта новый реквизит далее попадает автоматом в спец. группу "Дополнительно".

03.08.2016    16226    Патриот    23       

Управляемые формы: Поле HTML Документа и веб-клиент 57

Статья Программист Нет файла v8 Россия Бесплатно (free) Практика программирования Работа с интерфейсом

Взаимодействие javascript и интерфейса 1С дает огромные возможности для реализации нестандартных функций. Раньше можно было напрямую вызывать функции JavaScript через DOM объект document Поля HTML документа. В современных браузерах эта возможность ушла. Более того, в веб-клиенте появляется тип ВнешнийОбъект, который вообще нигде не описан. На Инфостарте были предложения вызывать JavaScript через fireEvent, но это очень неудобно. Предлагаю свой вариант решения.

18.07.2016    24175    compguru    10       

Как вывести динамическое представление для пустого значения (в таблице)? 23

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Работа с интерфейсом

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

29.03.2016    9726    weissfeuer    9       

Выделение документов в динамическом списке 20

Статья Программист Нет файла v8 Бесплатно (free) Работа с интерфейсом

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

01.02.2016    15784    Sardukar    7       

Три приёма, позволяющие сделать интерфейс конфигураций 1С на управляемых формах удобнее при большом шрифте 52

Статья Программист Нет файла v8 УНФ ERP2 БП3.0 Windows Бесплатно (free) Работа с интерфейсом Универсальные функции

С появлением управляемых форм вообще и БП 3.0 в частности пользователи, которые не хотят портить своё зрение рассматриванием мелкого шрифта, оказались в невыгодном положении. Многих элементов на экране в "тяжёлых" документах вообще оказалось не видно. Все попытки решить вопрос штатными средствами настройки предприятия оказались неэффективны. Вот несколько приёмов, которые буквально в два щелчка мышкой и парой строк кода помогут решить проблему.

05.11.2015    15017    H-Labs    11       

Как скрыть "пустые группы" в списке выбора справочника при отборе 46

Статья Программист Нет файла v8 Бесплатно (free) Работа с интерфейсом

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

29.10.2015    25602    shevelyov    25       

Открытие форм нескольких новых документов в тонком и толстом клиенте, УФ 23

Статья Программист Нет файла v8 v8::УФ 1cv8.cf Windows Бесплатно (free) Работа с интерфейсом

Если Вам необходимо создать несколько документов, а затем открыть их формы для пользователя.

1 стартмани

29.09.2015    18039    Wezoowy    13       

Параметры сеанса. 47

Статья Программист Нет файла v8 1cv8.cf Windows Бесплатно (free) Практика программирования Работа с интерфейсом

Параметры сеанса - это объекты метаданных конфигурации. Поговорим об их назначении и принципах работы с ними.

06.09.2015    55429    niko11s    8       

Шкала в строке состояния 51

Статья Программист Нет файла v8 Windows Бесплатно (free) Работа с интерфейсом

Простая шкала, не требующая дополнительных форм и элементов управления

31.08.2015    13460    Ivon    26       

Назначение сочетания клавиш для кнопок командной панели (Обычные формы) 13

Статья Программист Нет файла v8 1cv8.cf Windows Бесплатно (free) Практика программирования Работа с интерфейсом

Назначение сочетания клавиш кнопкам командной панели Формы списка/выбора для любой конфигурации (Обычные формы)

07.08.2015    15117    bld    7       

Развитие управляемого интерфейса в 1С 8.2 - 1С 8.3 55

Статья Программист Нет файла v8 Windows Бесплатно (free) Практика программирования Математика и алгоритмы Работа с интерфейсом

К управляемым формам, которые появились в 8.2, я до сих пор относился презрительно. Считал это неудачной попыткой 1С следовать модным тенденциям в разработке интерфейсов и прогибом для возможности работать через браузер. Я считал, что 1С пожертвовала простотой разработки в угоду веб-доступу. Но после курсов Арутюнова Сергея по управляемому интерфейсу в июле 2015 года в УЦ1 я поменял ненависть на любовь. Звучит парадоксально, но это так. А теперь подробнее…

27.07.2015    35042    fixin    103       

Идея или как сохранить ЦВЕТ, ШРИФТ, ОФОРМЛЕНИЕ пользователя 25

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Работа с интерфейсом

Простой и оригинальный способ сохранять ЦВЕТОВУЮ СХЕМУ и ОФОРМЛЕНИЕ пользователей. Как сохранить ЦВЕТ

22.06.2015    21450    Tatitutu    12       

Недокументированное использование стандартных обработок из меню "Все функции". 903

Статья Программист Нет файла v8 1cv8.cf Windows Бесплатно (free) Практика программирования Работа с интерфейсом

Рассмотрены возможности произвольного использования стандартных функций, вызываемых из меню платформы "Все функции" - "Стандартные" (Активные пользователи, Журнал регистрации, Поиск ссылок на объект, Проведение документов ...).

19.06.2015    100588    ekaruk    121       

Быстрый ввод строковых значений в поля составного типа 64

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Работа с интерфейсом

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

04.06.2015    17228    Cyberhawk    14       

Личный опыт эскплуатации интерфейса "Такси" 11

Статья Программист Нет файла v8 1cv8.cf Windows Бесплатно (free) Работа с интерфейсом

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

07.02.2015    15381    Marik    30       

Как перенести форму документа (справочника, ...) из одного документа (справочника, ...) в другой похожий документ (справочник, ...) 54

Статья Программист Нет файла v8 1cv8.cf Windows Бесплатно (free) Практика программирования Работа с интерфейсом

При попытке изменить Тип Реквизита «Объект» все элементы формы теряли путь к данным, ладно бы «поля ввода» (можно было выбрать заново «путь к данным»), но с табличными частями вообще труба, при выборе в «Таблице» все колонки в этом элементе банально удалялись. Можно, конечно, потратить кучу времени и вручную продублировать все то, что есть в форме оригинала, но я нашел другой путь!

26.11.2014    14293    RomanBor    18       

Создание интерфейса со всеми блокировками прав пользователя 20

Статья Программист Нет файла v8 1cv8.cf Windows Бесплатно (free) Работа с интерфейсом

Создание интерфейса (напр. Продавец) со всеми блокировками прав пользователя (доступ к конфигуратору, меню Операции, Все функции, правам пользователей в меню сервис и др.)

10.10.2014    12352    ~ADm!t_@vd~    8