Переделка модального окна в режиме выбора в немодальное или ошибка dZO.showModalDialog

Публикация № 387328 10.08.15

Разработка - Механизмы платформы 1С

Программно открыть управляемую форму в режиме выбора ОткрытьФормуМодально dZO.showModalDialog ПоказатьВводЗначения

1C хоть и продолжает яростную борьбу с модальными окнами (http://v8.1c.ru/o7/201301nm), но все еще попадаются места, где нужно переделать модальный вызов окон в немодальный.
Для этой цели уже достаточно давно, с платформы 8.3.5.1068 появился инструмент рефакторинг http://v8.1c.ru/o7/201312ref/index.htm.
Использовать нужно именно его и новые методы вроде ПоказатьВводЗначения(), однако не везде установлена 8.3, а работу приложения в web-интерфейсе "вынь да положь".
Предлагаю простой вариант переделки модального окна в режиме выбора в немодальное, который будет работать и на 8.2 и на 8.3.

В качестве примера возьмем обработку ШаблоныЭтикетокИЦенников из УТ11.0 (в 11.1 такая же, без видимых изменений).

В Web-интерфейсе при попытке заполнить строки шаблонами этикеток у меня в хроме вылетела такая ошибка (к слову в IE все отработало нормально, но не суть, завтра может и не отработать): 

 

Переделываем следующим образом:

Было (1 процедура):

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

Стало (3 процедуры):

&НаКлиенте
Процедура УстановитьШаблонЭтикеток(Команда)
	
	ПараметрыФормыВыбора = Новый Структура;
	ПараметрыФормыВыбора.Вставить("Отбор", Новый Структура("Назначение", ПредопределенноеЗначение("Перечисление.НазначенияШаблоновЭтикетокИЦенников.Товары")));
	ПараметрыФормыВыбора.Вставить("ЗакрыватьПриВыборе", Истина);	
	
	ОткрытьФорму("Справочник.ШаблоныЭтикетокИЦенников.ФормаВыбора", ПараметрыФормыВыбора, ЭтаФорма, ЭтаФорма.УникальныйИдентификатор);	
	
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
	
	Если ИсточникВыбора.ИмяФормы = "Справочник.ШаблоныЭтикетокИЦенников.ФормаВыбора" Тогда
		ЗаполнитьШаблоныЭтикетокИЦенниковВСтроках(ВыбранноеЗначение);
	КонецЕсли; 
	
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьШаблоныЭтикетокИЦенниковВСтроках(СсылкаШаблон)

	МассивСтрок = Элементы.Товары.ВыделенныеСтроки;

	Если ЗначениеЗаполнено(СсылкаШаблон) Тогда
		
		Для Каждого НомерСтроки Из МассивСтрок Цикл
			
			СтрокаТЧ = Объект.Товары.НайтиПоИдентификатору(НомерСтроки);
			
			Если ЦенникИлиЭтикетка Тогда
				СтрокаТЧ.ШаблонЦенника = СсылкаШаблон;
			Иначе	
				СтрокаТЧ.ШаблонЭтикетки = СсылкаШаблон;
			КонецЕсли;			
			
		КонецЦикла;
		
	КонецЕсли;

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

Вкратце поясню:

Функцию ОткрытьФормуМодально() мы заменили на ОткрытьФорму() с параметром ЗакрыватьПриВыборе = Истина. 

Теперь вопрос: как же получить выбранное значение и обработать его? Оказывается очень просто - формы для выбора, при своем закрытии, автоматом рассылают оповещение о выборе формам владельцам (тем, которые указаны в 3-м параметре метода ОткрытьФорму()). Причем, оповещают и формы для выбора по-умолчанию, и формы, сделанные вручную. Нам остается только принять нужное оповещение в методе ОбработкаВыборка.  

Также смотрите схожие публикации:

//infostart.ru/public/236382/

//infostart.ru/public/305935/

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

Оставьте свое сообщение

См. также

Программные перечисления, ч.2: приемы кэширования при разработке

Универсальные функции Механизмы платформы 1С Запросы Платформа 1С v8.3 Бесплатно (free)

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

30.10.2017    31718    unichkin    18    

93

Использование классов .Net в 1С для новичков

Механизмы платформы 1С Платформа 1С v7.7 Платформа 1С v8.3 Бесплатно (free)

Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)

27.01.2016    91543    Serginio    116    

183

Вспомогательные инструкции в коде 1С

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Помогаем редактору кода 1С помогать нам писать и анализировать код.

15.10.2018    40790    tormozit    107    

125

Как прикрутить ГУИД к регистру сведений

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

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

16.04.2019    25090    m-rv    18    

29

Метод формирования движений в типовых регистрах нетиповыми регистраторами

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

05.12.2017    32305    itriot11    34    

35

Ускоряем 1С: модули с повторным использованием возвращаемых значений

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

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

04.09.2017    65337    m-rv    64    

170

Регулярные выражения без внешних компонент? Легко!

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Сложный способ организовать проверку строки с помощью регулярного выражения в 1С. При этом ни одна внешняя компонента не пострадала. Ну и от платформы (Linux, MustDie) - не зависит.

04.03.2016    80928    starik-2005    111    

414

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

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

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

24.06.2007    92875    tormozit    32    

215

Отладка подключаемых обработок

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

04.01.2017    93553    unichkin    121    

330

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

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

19.06.2015    129916    ekaruk    148    

1067

Простая и быстрая эмуляция операций с битовыми строками

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Битовые строки могли бы упростить реализацию некоторых алгоритмов на языке платформы «1С: Предприятие 8». Но пока в платформе операций с битовыми строками нет. В то же время уже сделанные попытки смоделировать эти операции преобразованиями над числами опираются на циклы обработки отдельных битов, что плохо сказывается на скорости их работы. Предлагается новое простое решение, основанное на представлении битовых строк строками символов «0» и «1». Приводится примеры кода выполнения основных логических операций AND, OR, XOR, NO без использования циклов. В качестве прикладной задачи рассмотрено получение последовательных значений кода Грэя, который можно использовать для ускорения перебора вариантов.

22.06.2016    31429    ildarovich    14    

74

Расширения конфигурации. Полезные советы для разработки

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

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

12.01.2016    382284    mrXoxot    209    

1064

Как устроена регламентированная отчетность в 1С

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Россия Бухгалтерский учет Бесплатно (free)

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

30.11.2015    88309    mrXoxot    36    

333

Правильная индикация прогресса цикла на клиенте

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

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

08.08.2008    60729    tormozit    62    

175

XDTO - это просто

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

С появлением платформы 8.1 фирма “1С” представила механизм, носящий интригующее название XML Data Transfer Objects или, если коротко - XDTO. По традиции, документирование механизма составлял тот, кто хорошо разбирался в вопросе, а стало быть опустил “и так понятные” с его точки зрения моменты. Целью данной статьи (или цикла статей, как получится) стало желание поделиться накопленным опытом. Мне кажется, многие неочевидные вещи в механизме XDTO необходимо осветить получше.

24.12.2012    368182    Evil Beaver    193    

1121

Многопоточность как способ ускорения некоторых процедур

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

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

09.04.2013    71721    Aleksey.Bochkov    77    

256

Что на самом деле делает свойство «БлокироватьДляИзменения»

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Мотивацией к написанию данной статьи, послужило большое количество заблуждений касаемо свойства «БлокироватьДляИзменения». Большая часть материалов в сети, посвящена либо управляемым блокировкам, либо режиму разделения итогов, свойство «БлокироватьДляИзменения» затрагивается лишь частично без конкретики, в итоге у многих возникают вопросы при его использовании. Цель данной статьи заполнить этот пробел. Прошу сначала прочитать статью полностью и только после этого делать выводы. Надеюсь, данный материал будет кому-то полезен.

04.08.2013    64641    Andreynikus    152    

246

Динамический состав реквизитов

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Решим не стандартную задачу. Нам необходимо добавить к документам некие реквизиты, которые появляются у объектов в зависимости от настроек (значений реквизитов документа).

14.12.2012    26558    Infostart    7    

20

Сортировка строк формы, с сохранением второго порядка

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

Более удобная чем стандартная сортировка строк табличной части формы обычного приложения 8.х Идея очень простая: пользователю удобно что если таблицу обработки отсортировать по галочке, сортировка по Номенлатуре / контрагенту внутри одниаковых галочек осталось прежней.

14.04.2012    20433    i132    2    

11

Управление индексами и секциями в 1С

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

Одним из основных факторов производительности 1С: Предприятие 8 является верная структура индексов СУБД - это аксиома. Но также существует одно из заблуждений - что это все сложно. В Ei разработан не имеющий аналогов инструмент позволяющий вывести работы с индексами и секциями на новый визуальный (интерактивный) уровень, позволяющий забыть о длинных инструкциях по созданию изменению индексов.

17.11.2011    23613    German    33    

72

Практика регулярных выражений в 1С или "парсим неудобные форматы"

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

В продолжение статьи Использование регулярных выражений (RegExp) в 1С8.х. Углубляемся в практику использования регулярных выражений в 1С. Основы работы с регулярными выражениями хорошо описаны в указанной публикации. А я попробую ответить на вопрос "почему именно регулярные выражения?" на примере конкретной рабочей задачи.

26.10.2011    31403    1cspecialist    33    

95

Методы работы с универсальным отчетом в подсистеме "Варианты отчетов" на БСП

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В данной статье рассмотрим типовую подсистему "Варианты отчетов" БСП на примере применения в универсальном отчете любой современной конфигурации.

вчера в 13:00    921    quazare    2    

41

О цикле обратном замолвите слово...

Механизмы платформы 1С Языки и среды Платформа 1С v8.3 Платформа 1C v8.2 Бесплатно (free)

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

08.09.2022    6474    DrAku1a    71    

31

Эволюция расширения конфигурации

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

06.02.2020    22584    Xershi    50    

193

Версионирование объектов VS История данных

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Давайте разберемся в механизме «История данных» и поэкспериментируем для наглядности. Сравним «Версионирование объектов» и «Историю данных».

06.03.2023    5845    dsdred    37    

126

Самодельный обработчик ПослеЗаписи объекта

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Иногда при записи объекта хочется обработчик ПослеЗаписи, который бы выполнялся всегда после успешного завершения транзакции записи объекта. Статья описывает способ реализации такого обработчика.

03.04.2023    2822    tormozit    63    

39

Снова об использовании ТекущаяДата() на клиенте и на сервере и о работе в разных часовых поясах

БСП (Библиотека стандартных подсистем) Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Можно ли применять ТекущаяДата() вопреки требованиям стандартов 1С? Безопасно ли использование функции ОбщегоНазначенияКлиент.ДатаСеанса() из БСП? Как правильно поступать при работе пользователей в разных часовых поясах?

24.04.2023    4040    Alxby    26    

40

Золотые костыли

Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Немного о программировании.

23.08.2018    12304    vasilev2015    39    

43

Создаем периодические реквизиты или привет из 1С 7.7

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Конечно же, платформа 1С:Предприятие 8 не поддерживает периодические реквизиты, в статье описано использование типовой методики периодических сведений в коробочных решениях от 1С.

26.10.2022    1308    morin    4    

26

Расширение глобального поиска 1С, или Глобальный поиск "на максималках"

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Мало кто знает, что поле "Глобального поиска" в 1С можно доработать. Добавить свои варианты поиска, кнопочки в результатах и даже целые пользовательские меню.

27.03.2023    4193    SeiOkami    9    

121

Postgres как предчувствие. Вычисляем процент импортозамещения в режиме Highload от 1С

HighLoad оптимизация Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

1С работает с СУБД Postgres более 10 лет, а сейчас это единственный легальный вариант для инсталляций в России. Много ли мы потеряем в производительности по сравнению с MS SQL? Выдержит ли Postgres 15.2 жесткий Highload со стороны 1С? Цель этой статьи - ответить на данные вопросы, с цифрами, которые можно использовать при расчете архитектуры.

23.03.2023    1645    1CUnlimited    9    

28

Оператор GOTO в 1С - табу или волшебная палочка?

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

В ежедневной практике программирования на платформе 1С оператор Goto (Перейти) практически не встречается. Не удивительно, что половина специалистов даже не подозревает о существовании данного оператора. Ну, а знающим он внушает ужас, и его стараются избегать. Так что же это за редкий оператор, и для чего он нужен?

19.02.2023    5697    Dementor    72    

43

Идентификатор объекта в запросе. Вы этого хотели?

Запросы Механизмы платформы 1С Платформа 1С v8.3 Запросы Бесплатно (free)

В платформе 8.3.22 появилась возможность получать идентификатор в запросе. Лично я ждал этого давно, но по итогу ждал большего. Что не так?

12.01.2023    12932    dsdred    15    

68

Маленькие хитрости большой платформы (часть 1)

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

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

29.12.2022    4225    zeltyr    25    

41

Практическая шпаргалка по новым возможностям языка запросов 1С

Механизмы платформы 1С Запросы Платформа 1С v8.3 Запросы Конфигурации 1cv8 Бесплатно (free)

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

21.11.2022    16334    quazare    34    

113

Асинхронное нечто, или так, как раньше!

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

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

23.10.2022    4777    starik-2005    38    

40

Использование Стека вызовов в качестве условия оператора Если [...] Тогда

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Делюсь интересным приёмом, позволяющим использовать данные стека исполнения кода 1С в качестве условия, накладываемого на выполнение кода.

12.07.2020    13681    sapervodichka    65    

93