Новый реквизит добавить и вывести на форму программно
Дорогие форумчане! Помогите пжл решить задачку новичку
Задание в режиме 1С:Конфигуратор.
Настроить вывод информации о водительском стаже сотрудников внизу формы списка справочника «Физические лица».
Решить выводом информационного сообщения внизу формы списка справочника при нажатии на строку с конкретным сотрудником. Новый реквизит добавить и вывести на форму программно (сначала добавить реквизит формы, потом вывести добавленный реквизит на форму). Данные о стаже выводить – количество лет, месяцев и дней стажа.
нужно реквизит формы, сначала создать, а потом вывести на форму.
потом на форме еще нужна процедура привязанная к событию ПриАктивацииСтроки
Но как все это сделать????
ПОМОГИТЕ ПЖЛ КАК ВСЕ ЭТО РЕАЛИЗОВАТЬ!! СПАСИБО ЗА ПОМОЩЬ!
Прошу без подколов. ) Всем мира и добра!!
Задание в режиме 1С:Конфигуратор.
Настроить вывод информации о водительском стаже сотрудников внизу формы списка справочника «Физические лица».
Решить выводом информационного сообщения внизу формы списка справочника при нажатии на строку с конкретным сотрудником. Новый реквизит добавить и вывести на форму программно (сначала добавить реквизит формы, потом вывести добавленный реквизит на форму). Данные о стаже выводить – количество лет, месяцев и дней стажа.
нужно реквизит формы, сначала создать, а потом вывести на форму.
потом на форме еще нужна процедура привязанная к событию ПриАктивацииСтроки
Но как все это сделать????
ПОМОГИТЕ ПЖЛ КАК ВСЕ ЭТО РЕАЛИЗОВАТЬ!! СПАСИБО ЗА ПОМОЩЬ!
Прошу без подколов. ) Всем мира и добра!!
По теме из базы знаний
- v8.2 Управляемые формы: Динамические элементы формы и переопределяемые события или как изменить поведение и внешний вид управляемой формы программно без лишних хлопот
- Неочевидные нюансы записи управляемой формы
- Новый взгляд на управляемые формы
- Показ кодов маркировки в документах 1С ERP/УТ: мини-доработка управляемых форм, чтобы облегчить себе жизнь
- Использование типовой общей формы отчета для нетиповых отчетов
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
так вот же написан план действий. Открыть только форму списка справочника (или создать если нет), а дальше по плану. Только событие ПриАктивизацииСтроки будет у элемента Список. Скорее всего еще понадобится ПриСозданииНаСервере самой формы
Программное создание элемента формы можно погуглить, чтобы вывести данные нужен запрос и т.д.
Задание звучит как лабораторная работа, и без знания основных объектов тут не обойтись...
нужно реквизит формы, сначала создать, а потом вывести на форму.
потом на форме еще нужна процедура привязанная к событию ПриАктивацииСтроки
потом на форме еще нужна процедура привязанная к событию ПриАктивацииСтроки
так вот же написан план действий. Открыть только форму списка справочника (или создать если нет), а дальше по плану. Только событие ПриАктивизацииСтроки будет у элемента Список. Скорее всего еще понадобится ПриСозданииНаСервере самой формы
Программное создание элемента формы можно погуглить, чтобы вывести данные нужен запрос и т.д.
Задание звучит как лабораторная работа, и без знания основных объектов тут не обойтись...
(1) Вам в помощь конструктор "Новый РеквизитФормы", метод формы ИзменитьРеквизиты, а также функции Элементы.Добавить/Элементы.Вставить и метод <Элемент>.УстановитьДействие (если обработчик события не установлен и его тоже необходимо устанавливать программно). Этого будет вполне достаточно для решения задачи: остальное можно найти в справке.
Реквизит вывести на форму получилось.
Помогите пжл найти как вывести сам стаж - Х лет Хмес Х дн
в какой регистр смотреть подскажите пжл
в режиме предприятия: ВодительскийСтаж рассчитан через ТрудовуюДеятельность. введен новый ВидСтажа как Водительский стаж (Прочий)
Помогите пжл найти как вывести сам стаж - Х лет Хмес Х дн
в какой регистр смотреть подскажите пжл
в режиме предприятия: ВодительскийСтаж рассчитан через ТрудовуюДеятельность. введен новый ВидСтажа как Водительский стаж (Прочий)
(13) &НаСервере
Функция ДобавитьНаФормуРеквизит(Форма, Реквизит, ТЧ = Неопределено, Родитель = Неопределено, ПередКемВСтавляем = "", Флажок = Ложь, РеквизитФормы = Ложь, ИмяОсновногоРеквизитаФормы = "Объект")
Если ПередКемВСтавляем = "" Тогда
Элемент = Форма.Элементы.Добавить(Реквизит, Тип("ПолеФормы"), Форма.Элементы.Найти(?(Родитель = Неопределено, ТЧ, Родитель)));
Иначе
Элемент = Форма.Элементы.Вставить(Реквизит, Тип("ПолеФормы"), Форма.Элементы.Найти(?(Родитель = Неопределено, ТЧ, Родитель)), Форма.Элементы.Найти(ПередКемВСтавляем));
КонецЕсли;
Если Флажок Тогда
Элемент.Вид = ВидПоляФормы.ПолеФлажка;
Иначе
Элемент.Вид = ВидПоляФормы.ПолеВвода;
КонецЕсли;
Если ТЧ = Неопределено Тогда
Элемент.ПутьКДанным = ?(РеквизитФормы, "", ИмяОсновногоРеквизитаФормы + ".") + Реквизит; Иначе Элемент.ПутьКДанным = ?(РеквизитФормы, "", ИмяОсновногоРеквизитаФормы + ".") + ТЧ + "." + Реквизит;
КонецЕсли;
Возврат Элемент;
КонецФункции
Функция ДобавитьНаФормуРеквизит(Форма, Реквизит, ТЧ = Неопределено, Родитель = Неопределено, ПередКемВСтавляем = "", Флажок = Ложь, РеквизитФормы = Ложь, ИмяОсновногоРеквизитаФормы = "Объект")
Если ПередКемВСтавляем = "" Тогда
Элемент = Форма.Элементы.Добавить(Реквизит, Тип("ПолеФормы"), Форма.Элементы.Найти(?(Родитель = Неопределено, ТЧ, Родитель)));
Иначе
Элемент = Форма.Элементы.Вставить(Реквизит, Тип("ПолеФормы"), Форма.Элементы.Найти(?(Родитель = Неопределено, ТЧ, Родитель)), Форма.Элементы.Найти(ПередКемВСтавляем));
КонецЕсли;
Если Флажок Тогда
Элемент.Вид = ВидПоляФормы.ПолеФлажка;
Иначе
Элемент.Вид = ВидПоляФормы.ПолеВвода;
КонецЕсли;
Если ТЧ = Неопределено Тогда
Элемент.ПутьКДанным = ?(РеквизитФормы, "", ИмяОсновногоРеквизитаФормы + ".") + Реквизит; Иначе Элемент.ПутьКДанным = ?(РеквизитФормы, "", ИмяОсновногоРеквизитаФормы + ".") + ТЧ + "." + Реквизит;
КонецЕсли;
Возврат Элемент;
КонецФункции
(14)
Процедура ДобавитьРеквизитФормы(Форма, Имя, Тип, Заголовок = "", Родитель = "")
Если Родитель = "" Тогда
Реквизит = Новый РеквизитФормы("ВодительскийСтаж",Новый ОписаниеТипов("Строка"));
Иначе
Реквизит = Новый РеквизитФормы("ВодительскийСтаж",Новый ОписаниеТипов ("Строка"));
КонецЕсли;
Реквизит.Заголовок = Заголовок;
ДобавляемыеРеквизиты = Новый Массив;
ДобавляемыеРеквизиты.Добавить(Реквизит);
Форма.ИзменитьРеквизиты(ДобавляемыеРеквизиты);
КонецПроцедуры
Процедура ДобавитьРеквизитФормы(Форма, Имя, Тип, Заголовок = "", Родитель = "")
Если Родитель = "" Тогда
Реквизит = Новый РеквизитФормы("ВодительскийСтаж",Новый ОписаниеТипов("Строка"));
Иначе
Реквизит = Новый РеквизитФормы("ВодительскийСтаж",Новый ОписаниеТипов ("Строка"));
КонецЕсли;
Реквизит.Заголовок = Заголовок;
ДобавляемыеРеквизиты = Новый Массив;
ДобавляемыеРеквизиты.Добавить(Реквизит);
Форма.ИзменитьРеквизиты(ДобавляемыеРеквизиты);
КонецПроцедуры
(15)
Процедура ПриСозданииНаСервереСозданиеРеквизитов (Форма,ИмяФормы = "") Экспорт
Если ИмяФормы = "СправочникФизическиеЛицаФормаСписка" Тогда
ДобавитьРеквизитФормы (Форма,"ВодительскийСтаж",Новый ОписаниеТипов ("Строка"),"ВодительскийСтаж", "1");
ДобавитьНаФормуРеквизит (Форма,"ВодительскийСтаж",,Новый ОписаниеТипов ("Строка"),"Список",,Истина,"Список");
КонецЕсли;
КонецПроцедуры
Процедура ПриСозданииНаСервереСозданиеРеквизитов (Форма,ИмяФормы = "") Экспорт
Если ИмяФормы = "СправочникФизическиеЛицаФормаСписка" Тогда
ДобавитьРеквизитФормы (Форма,"ВодительскийСтаж",Новый ОписаниеТипов ("Строка"),"ВодительскийСтаж", "1");
ДобавитьНаФормуРеквизит (Форма,"ВодительскийСтаж",,Новый ОписаниеТипов ("Строка"),"Список",,Истина,"Список");
КонецЕсли;
КонецПроцедуры
(16)
Функция ПриАктивизацииСтроки(ТекущееФизЛицо)Экспорт
Запрос = Новый Запрос; // Стаж
Запрос.Текст =
"ВЫБРАТЬ
| СтажиФизическихЛицСрезПоследних.ФизическоеЛицо КАК ФизическоеЛицо,
| СтажиФизическихЛицСрезПоследних.ВидСтажа КАК ВидСтажа,
| СтажиФизическихЛицСрезПоследних.ДатаОтсчета КАК ДатаОтсчета,
| СтажиФизическихЛицСрезПоследних.РазмерМесяцев КАК РазмерМесяцев,
| СтажиФизическихЛицСрезПоследних.РазмерДней КАК РазмерДней
|ИЗ
| РегистрСведений.СтажиФизическихЛиц.СрезПоследних(&ТекущаяДата, ) КАК СтажиФизическихЛицСрезПоследних
|ГДЕ
| СтажиФизическихЛицСрезПоследних.ФизическоеЛицо = &ФизическоеЛицо
| И СтажиФизическихЛицСрезПоследних.ВидСтажа.Наименование = &ВидСтажа";
Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДата());
Запрос.УстановитьПараметр("ФизическоеЛицо",ТекущееФизЛицо);
Запрос.УстановитьПараметр("ВидСтажа","Водительский стаж");
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Если Выборка.Следующий() Тогда
ВидСтажа = "Водительский стаж";
КоличЛет = Цел(Выборка.РазмерМесяцев / 12);
КоличМес = (Выборка.РазмерМесяцев)-(КоличЛет * 12);
КоличДней = Выборка.РазмерДней;
КонецЕсли;
Строка = (Строка(КоличЛет) + " лет. " + Строка(КоличМес) + " мес. "+ Строка(КоличДней) + " дн. ");
Возврат Строка
КонецФункции
Функция ПриАктивизацииСтроки(ТекущееФизЛицо)Экспорт
Запрос = Новый Запрос; // Стаж
Запрос.Текст =
"ВЫБРАТЬ
| СтажиФизическихЛицСрезПоследних.ФизическоеЛицо КАК ФизическоеЛицо,
| СтажиФизическихЛицСрезПоследних.ВидСтажа КАК ВидСтажа,
| СтажиФизическихЛицСрезПоследних.ДатаОтсчета КАК ДатаОтсчета,
| СтажиФизическихЛицСрезПоследних.РазмерМесяцев КАК РазмерМесяцев,
| СтажиФизическихЛицСрезПоследних.РазмерДней КАК РазмерДней
|ИЗ
| РегистрСведений.СтажиФизическихЛиц.СрезПоследних(&ТекущаяДата, ) КАК СтажиФизическихЛицСрезПоследних
|ГДЕ
| СтажиФизическихЛицСрезПоследних.ФизическоеЛицо = &ФизическоеЛицо
| И СтажиФизическихЛицСрезПоследних.ВидСтажа.Наименование = &ВидСтажа";
Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДата());
Запрос.УстановитьПараметр("ФизическоеЛицо",ТекущееФизЛицо);
Запрос.УстановитьПараметр("ВидСтажа","Водительский стаж");
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Если Выборка.Следующий() Тогда
ВидСтажа = "Водительский стаж";
КоличЛет = Цел(Выборка.РазмерМесяцев / 12);
КоличМес = (Выборка.РазмерМесяцев)-(КоличЛет * 12);
КоличДней = Выборка.РазмерДней;
КонецЕсли;
Строка = (Строка(КоличЛет) + " лет. " + Строка(КоличМес) + " мес. "+ Строка(КоличДней) + " дн. ");
Возврат Строка
КонецФункции
(17) ДАЛЕЕ В Справочники --> ФизическиеЛица --> Форма --> ФормаСписка --> Модуль
Найти
#Область ОбработчикиСобытийЭлементовТаблицыФормыСписок
Дописать туда:
&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент)
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
ТекущееФизЛицо = Элемент.ТекущиеДанные.Ссылка;
ВодительскийСтаж = ОбщиеСобственныеНастройки.ПриАктивизацииСтроки(ТекущееФизЛицо);
КонецПроцедуры
Найти
#Область ОбработчикиСобытийЭлементовТаблицыФормыСписок
Дописать туда:
&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент)
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
ТекущееФизЛицо = Элемент.ТекущиеДанные.Ссылка;
ВодительскийСтаж = ОбщиеСобственныеНастройки.ПриАктивизацииСтроки(ТекущееФизЛицо);
КонецПроцедуры
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот