|
|||||
Работа с формамиКак открыть форму объекта имея ссылку на него?&НаКлиенте Процедура ОткрытьФорму(Команда) ОткрытьЗначение(СсылкаНаОбъект); КонецПроцедуры Как открыть форму выбора произвольного объекта?&НаКлиенте Процедура Команда1(Команда) Перем ВыбЗнач; Массив = Новый Массив; Массив.Добавить(Тип("СправочникСсылка.Контрагенты")); ОписаниеТиповК = Новый ОписаниеТипов(Массив); Если ВвестиЗначение(ВыбЗнач, "Введите значение", ОписаниеТиповК) Тогда Сообщить(ВыбЗнач); КонецЕсли; КонецПроцедуры Как открыть форму существующего объекта ссылочного типа?&НаКлиенте Процедура ОткрытьФормуПроекта(Команда) ПараметрыОткрытия = Новый Структура; ПараметрыОткрытия.Вставить("Ключ", Проект); ОткрытьФорму("Справочник.Проекты.ФормаОбъекта", ПараметрыОткрытия); КонецПроцедуры Открыть форму существующей записи регистра?&НаКлиенте Процедура ОткрытьФормуРегистра(Команда) КлючЗаписи = Новый Структура; КлючЗаписи.Вставить("Период", ТекущаяДата()); КлючЗаписи.Вставить("ФизЛицо", Сотрудник); МассивКлюча = Новый Массив; МассивКлюча.Добавить(КлючЗаписи); КлючЗаписиРегистра = Новый("РегистрСведенийКлючЗаписи.ФИОФизЛиц", МассивКлюча); ПараметрыОткрытия = Новый Структура("Ключ", КлючЗаписиРегистра); ОткрытьФорму("РегистрСведений.ФИОФизЛиц.ФормаЗаписи", ПараметрыОткрытия); КонецПроцедуры Как открыть форму нового объекта с обработкой заполнения?&НаКлиенте Процедура ОткрытьФорму(Команда) ПараметрыОткрытия = Новый Структура; ОткрытьФорму("Справочник.Проекты.ФормаОбъекта", ПараметрыОткрытия); КонецПроцедуры В это случае вызывается процедура «ОбработкаЗаполнения» модуля объекта. Эта процедура имеет единственный параметр «Основание». Если мы в параметры вставим ключ «Основание», то он будет передан в процедуру «ОбработкаЗаполнения»: &НаКлиенте Процедура ОткрытьФорму(Команда) ПараметрыОткрытия = Новый Структура; ПараметрыОткрытия.Вставить("Основание", Проект); ОткрытьФорму("Справочник.Проекты.ФормаОбъекта", ПараметрыОткрытия); КонецПроцедуры Как правильно организовать выбор (подбор) в табличную часть?Все параметры, указанные в параметреметода открыть форму, доступны в событии «ПриСозданииНаСервере» открываемой формы: &НаКлиенте Процедура ОткрытьФорму(Команда) ПараметрыОткрытия = Новый Структура; ПараметрыОткрытия.Вставить("ЛюбойПараметр", Проект); ОткрытьФорму("Справочник.Проекты.ФормаВыбора", ПараметрыОткрытия); КонецПроцедуры В событии «ПриСозданииНаСервере» формы элемента справочника Проекты можно будет получить «ЛюбойПараметр»: &НаСервере Процедура ПриСозданииНаСервере() Если Параметры.Свойство("ЛюбойПараметр") Тогда ПереданныйПараметр = Параметры.ЛюбойПараметр; //Программная обработка формы КонецЕсли; КонецПроцедуры При открытии формы выбора у Владельца сработает событие «ОбработкаВыбора»: &НаКлиенте Процедура ОткрытьФорму(Команда) ПараметрыОткрытия = Новый Структура; ПараметрыОткрытия.Вставить("ЛюбойПараметр", Проект); ВладелецФормыПодбора = Элементы.ПодчиненныеПроекты; ОткрытьФорму("Справочник.Проекты.ФормаВыбора", ПараметрыОткрытия, ВладелецФормыПодбора); КонецПроцедуры При выборе в произвольной форме стоит использовать метод ОповеститьОВыборе(), при этом установив через параметры свойство открываемой формы ЗакрыватьПриВыборе = Истина: &НаКлиенте Процедура ОткрытьФорму(Команда) ПараметрыОткрытия = Новый Структура; ПараметрыОткрытия.Вставить("НашПараметр", Склад); ПараметрыОткрытия.Вставить("ЗакрыватьПриВыборе", Истина); ВладелецФормыПодбора = Элементы.Товары; ОткрытьФорму("Обработка.ПодборНоменклатуры.Форма", ПараметрыОткрытия, ВладелецФормыПодбора); КонецПроцедуры В самой форме организуем программно выбор таким образом: &НаКлиенте Процедура Выбрать(Команда) РезультатВыбора = ПодготовитьРезультатВыбора(); ОповеститьОВыборе(РезультатВыбора); КонецПроцедуры &НаСервере Функция ПодготовитьРезультатВыбора() //Готовим результат выбора КонецФункции В результате выполнения метода ОповеститьОВыборе форма подбора закроется и вызовется событие «ОбработкаВыбора» элемента управления «Товары». Как открыть форму и установить в ней отбор?Для организации отбора при открытии формы нужно использовать параметр «Отбор», тип Структура, где Ключ – это Имя поля динамического списока, а значение это собственно то, почему нужно фильтровать данные &НаКлиенте Процедура ОткрытьФорму(Команда) ПараметрыОткрытия = Новый Структура; Отбор = Новый Структура; Отбор.Вставить("Владелец", Контрагент); ПараметрыОткрытия.Вставить("Отбор", Отбор); ОткрытьФорму("Справочник.ДоговорыКонтрагентов.ФормаВыбора", ПараметрыОткрытия); КонецПроцедуры В случае если отбор сложный и его можно установить только программно: &НаКлиенте Процедура ОткрытьФорму(Команда) ПараметрыОткрытия = Новый Структура; ПараметрыОткрытия.Вставить("Подразделение", Подразделение); ВладелецФормыПодбора = Элементы.Сотрудник; ОткрытьФорму("Справочник.СотрудникиОрганизаций.ФормаВыбора", ПараметрыОткрытия, ВладелецФормыПодбора); КонецПроцедуры В самой форме в событии «ПриСозданииНаСервере» задаем отбор списка: &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Если Параметры.Свойство("Подразделение") Тогда СписокСотрудников = ПодготовитьСписокСотрудниковПодразделения(Параметры.Подразделение); НовыйЭлемент = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); НовыйЭлемент.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ссылка"); НовыйЭлемент.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке; НовыйЭлемент.ПравоеЗначение = СписокСотрудников; НовыйЭлемент.Применение = ТипПримененияОтбораКомпоновкиДанных.Элементы; КонецЕсли; КонецПроцедуры Как в форме отобразить картинку, сохраненную в реквизите справочника?// Значение, сохраненное в реквизите справочника, имеющем тип // ХранилищеЗначения, можно только получить. СохраненнаяКартинка = Фотография.Получить(); Если СохраненнаяКартинка <> Неопределено Тогда // Если в хранилище было что-нибудь заранее записано… ЭлементыФормы.Фото.Картинка = СохраненнаяКартинка; КонецЕсли; Как в журнале документов "УчетКадров" отобрать только документы "ПриемНаРаботу"?ЖурналДокументовСписок.Отбор.ВидДокумента.Установить(Метаданные.Документы.ПриемНаРаботу); Как узнать интервал дат в открытом текущем журнале?Если ЖурналДокументовСписок.Отбор.Дата.Использование Тогда Сообщить(ЖурналДокументовСписок.Отбор.Дата); Иначе Сообщить("Без ограничения по датам"); КонецЕсли; Как при открытии справочника сделать отбор по контрагентам, входящим в список?Процедура ПриОткрытии() СправочникСписок.Отбор.Ссылка.ВидСравнения = ВидСравнения.ВСписке; СправочникСписок.Отбор.Ссылка.Значение = СписокКонтрагентов; СправочникСписок.Отбор.Ссылка.Использование = Истина; КонецПроцедуры Как обеспечить, чтобы для выбора значения покупателя в расходной накладной справочник контрагенты открывался сразу с открытой группой "Покупатели"?Процедура КонтрагентНачалоВыбора(Элемент, СтандартнаяОбработка) Если Элемент.Значение.Пустая() Тогда СтандартнаяОбработка = Ложь; ФормаВыбора = Справочники.Контрагенты.ПолучитьФормуВыбора( , Элемент); ФормаВыбора.ВыборПокупателя = Истина; ФормаВыбора.Открыть(); КонецЕсли; КонецПроцедуры Если ВыборПокупателя Тогда ЭлементыФормы.СправочникСписок.ИерархическийПросмотр = Истина; ЭлементыФормы.СправочникСписок.ТекущийРодитель = Константы.ГруппаПокупатели.Получить(); КонецЕсли; Если ВыборПокупателя Тогда ЭлементыФормы.СправочникСписок.ИерархическийПросмотр = Истина; ЭлементыФормы.СправочникСписок.ТекущийРодитель = Справочники.Контрагенты.Покупатели; КонецЕсли; Как в форме обеспечить выбор реквизита, подчиненного Владельцу?// При начале выбора реквизита Помещение вызывается процедура: Процедура ПомещениеНачалоВыбора(Элемент, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ФормаВыбора = Справочники.ПереченьПомещенийОбъекта.ПолучитьФормуВыбора( , Элемент); ФормаВыбора.СправочникСписок.Отбор.Владелец.ВидСравнения = ВидСравнения.Равно; ФормаВыбора.СправочникСписок.Отбор.Владелец.Использование = Истина; ФормаВыбора.СправочникСписок.Отбор.Владелец.Значение = Владелец; Помещение = ФормаВыбора.ОткрытьМодально(); Если Помещение <> неопределено Тогда ЭлементыФормы.Помещения.ТекущаяСтрока.Помещение = Помещение; КонецЕсли; КонецПроцедуры Как не открывая форму внешней обработки выполнить ее процедуру для определенного объекта?Обработка = ВнешниеОбработки.Создать(ИмяФайла); Обработка.Печать(Ссылка); Как вывести многострочное предупреждение?Предупреждение("На складе: " + Остаток + Символы.ПС + "В резерве : " + Зарезервировано + Символы.ПС + "Свободный остаток: " + (Остаток - Зарезервировано), 20, "Состояние остатков"); Как задать вопрос пользователю?Если Товары.Количество() > 0 Тогда Ответ = Вопрос("Табличная часть будет очищена! Продолжить?", РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Да, "Внимание!"); Если Ответ = КодВозвратаДиалога.Нет Тогда Возврат; КонецЕсли; КонецЕсли; Товары.Очистить(); |
|||||