|
Создать программно реквизит с типом Стандартный период на УФ | ☑ | ||
---|---|---|---|---|
0
Hlorka
31.10.22
✎
15:51
|
Добрый день!
Стоит задача создать программно реквизит формы с типом Стандартный период. Например, до этого программно создавала следующим образом: НовыйЭлемент = Элементы.Вставить("НесколькоТиповВидовУслугПоДоговору", Тип("ПолеФормы"), Элементы.ГруппаШапкаЛево, Неопределено); НовыйЭлемент.Вид = ВидПоляФормы.ПолеФлажка; НовыйЭлемент.ПутьКДанным = "Объект.НесколькоТиповВидовУслугПоДоговору"; В документе создала два реквизита ДатаНачалаПериода и ДатаОкончанияПериода. Далее пишу: НовыйЭлемент = Элементы.Вставить("ргс_ПериодОказанияУслуги", Тип("ПолеФормы"), Элементы.ГруппаПараметрыПраво, Неопределено); НовыйЭлемент.Вид = ВидПоляФормы.ПолеПериода; ... Но как дальше связать два реквизита объекта с реквизитом формы? |
|||
1
inkvizitr
31.10.22
✎
16:04
|
создаешь команду и рисуешь в ней три точки
&НаКлиенте Процедура ВыбратьПериод(Команда) ПараметрыВыбора = Новый Структура("НачалоПериода,КонецПериода", Отчет.НачДата, Отчет.КонДата); ОписаниеОповещения = Новый ОписаниеОповещения("ВыбратьПериодЗавершение", ЭтаФорма); ОткрытьФорму("ОбщаяФорма.ВыборСтандартногоПериода", ПараметрыВыбора,, , , , ОписаниеОповещения); КонецПроцедуры &НаКлиенте Процедура ВыбратьПериодЗавершение(РезультатВыбора, ДопПараметры) Экспорт Если РезультатВыбора = Неопределено Тогда Возврат; КонецЕсли; Отчет.НачДата=РезультатВыбора.НачалоПериода; Отчет.КонДата=РезультатВыбора.КонецПериода; КонецПроцедуры |
|||
2
inkvizitr
31.10.22
✎
16:04
|
(0) Отчет.НачДата и Отчет.КонДата это результат выбора периода
|
|||
3
inkvizitr
31.10.22
✎
16:04
|
(2) ну или куда угодно
|
|||
4
ass1c
31.10.22
✎
16:06
|
Смотри типовые решения. Если коротко, то плясать нужно примерно так
Реквизит формы "ПериодПланирования" - тип "СтандартныйПериод" - кидаешь его на форму. Два реквизита объекта: "НачалоПериода", "ОкончаниеПериода" И процедура изменения ПериодПланирования, который на форме: &НаСервере Процедура ПериодПланированияПриИзмененииНаСервере() Объект.НачалоПериода = НачалоДня(ПериодПланирования.ДатаНачала); Объект.ОкончаниеПериода = КонецДня(ПериодПланирования.ДатаОкончания); ЭтаФорма.Модифицированность = Истина; КонецПроцедуры |
|||
5
Hlorka
01.11.22
✎
14:40
|
(4) я могу только программным образом изменить форму(делаю это в общем модуле в процедуре создания формы на сервере). То бишь так(подскажите, как правильно вставлять код в тему??):
//Добавление реквизита формы ДобавляемыеРеквизиты = Новый Массив; РеквизитФормыПериодОказанияУслуги = Новый РеквизитФормы("ПериодОказанияУслуги",Новый ОписаниеТипов("СтандартныйПериод"),,"Период оказания услуг(и)"); ДобавляемыеРеквизиты.Добавить(РеквизитФормыПериодОказанияУслуги); //Применение реквизитов Форма.ИзменитьРеквизиты(ДобавляемыеРеквизиты); //Создание поля на форме НовыйЭлемент = Элементы.Добавить("ПериодОказанияУслуги", Тип("ПолеФормы"), Элементы.ГруппаПараметрыПраво); НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода; НовыйЭлемент.ПутьКДанным = "ПериодОказанияУслуги"; НовыйЭлемент.УстановитьДействие("ПриИзменении", "ПериодОказанияУслугиПриИзменении"); В модуле формы документа в процедуре ПериодОказанияУслугиПриИзменении пишу: Объект.ДатаНачалаОказанияУслуги = НачалоДня(ПериодОказанияУслуги.ДатаНачала); Объект.ДатаОкончанияОказанияУслуги = КонецДня(ПериодОказанияУслуги.ДатаОкончания); ЭтаФорма.Модифицированность = Истина; Но по сути в реквизитах формы нет реквизита ПериодОказанияУслуги, он в общем модуле создан. Как к нему обратиться из модуля формы? |
|||
6
vicof
01.11.22
✎
14:58
|
"Но по сути в реквизитах формы нет реквизита ПериодОказанияУслуги"
Есть "Как к нему обратиться из модуля формы?" По имени. ЭтотОбъект[ИмяРеквизита] ИмяРеквизита |
|||
7
Hlorka
01.11.22
✎
15:52
|
(6) Да, получилось! Спасибо большое Вам!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |