Новый реквизит добавить и вывести на форму программно

1. olga10121982 2 17.08.21 11:52 Сейчас в теме
Дорогие форумчане! Помогите пжл решить задачку новичку
Задание в режиме 1С:Конфигуратор.
Настроить вывод информации о водительском стаже сотрудников внизу формы списка справочника «Физические лица».
Решить выводом информационного сообщения внизу формы списка справочника при нажатии на строку с конкретным сотрудником. Новый реквизит добавить и вывести на форму программно (сначала добавить реквизит формы, потом вывести добавленный реквизит на форму). Данные о стаже выводить – количество лет, месяцев и дней стажа.

нужно реквизит формы, сначала создать, а потом вывести на форму.
потом на форме еще нужна процедура привязанная к событию ПриАктивацииСтроки

Но как все это сделать????


ПОМОГИТЕ ПЖЛ КАК ВСЕ ЭТО РЕАЛИЗОВАТЬ!! СПАСИБО ЗА ПОМОЩЬ!
Прошу без подколов. ) Всем мира и добра!!
По теме из базы знаний
Найденные решения
13. olga10121982 2 31.05.22 07:06 Сейчас в теме
Создаем Общие модули --> Общие модули --> ОбщиеСобственныеНастройки
в модуле прописываем код
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. BackinSoda 17.08.21 12:00 Сейчас в теме
(1)
нужно реквизит формы, сначала создать, а потом вывести на форму.
потом на форме еще нужна процедура привязанная к событию ПриАктивацииСтроки

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

Программное создание элемента формы можно погуглить, чтобы вывести данные нужен запрос и т.д.
Задание звучит как лабораторная работа, и без знания основных объектов тут не обойтись...
3. user1461477 17.08.21 12:20 Сейчас в теме
(2)
Задание звучит как лабораторная работа


походу тест при найме 1сника
5. FatPanzer 17.08.21 13:16 Сейчас в теме
(1)
Но как все это сделать????
Для начала надо хотя бы начать.
DJ_Codebase; +1 Ответить
6. RocKeR_13 1376 17.08.21 13:53 Сейчас в теме
(1) Вам в помощь конструктор "Новый РеквизитФормы", метод формы ИзменитьРеквизиты, а также функции Элементы.Добавить/Элементы.Вставить и метод <Элемент>.УстановитьДействие (если обработчик события не установлен и его тоже необходимо устанавливать программно). Этого будет вполне достаточно для решения задачи: остальное можно найти в справке.
9. furman2000 16 17.08.21 17:18 Сейчас в теме
(1)Создайте просто сами реквизит, проверьте что все работает, а потом воспользуйтесь декомпилятором форм.
Получите код и вставьте его в форму. Само нарисуется.
4. XAKEP 17.08.21 12:54 Сейчас в теме
помочь ( = < > ) решить вместо вас

- разве знак равенства может быть ?
7. Andrekaa 17.08.21 13:58 Сейчас в теме
ЭлементыФормы.Добавить(Тип("Надпись"), "НадписьЗаказНаПроизводство", Истина);
НадписьЗаказНаПроизводство.АвтоКонтекстноеМеню = Ложь;
НадписьЗаказНаПроизводство.Заголовок = "Заказ на производство: ";
8. FatPanzer 17.08.21 14:04 Сейчас в теме
10. olga10121982 2 19.08.21 19:42 Сейчас в теме
Реквизит вывести на форму получилось.

Помогите пжл найти как вывести сам стаж - Х лет Хмес Х дн
в какой регистр смотреть подскажите пжл
в режиме предприятия: ВодительскийСтаж рассчитан через ТрудовуюДеятельность. введен новый ВидСтажа как Водительский стаж (Прочий)
11. user617763_eug.93 30.05.22 22:08 Сейчас в теме
(10) Добрый день! Подскажите у Вас получилось решить задачу?
12. olga10121982 2 30.05.22 22:14 Сейчас в теме
13. olga10121982 2 31.05.22 07:06 Сейчас в теме
Создаем Общие модули --> Общие модули --> ОбщиеСобственныеНастройки
в модуле прописываем код
14. olga10121982 2 31.05.22 07:07 Сейчас в теме
(13) &НаСервере
Функция ДобавитьНаФормуРеквизит(Форма, Реквизит, ТЧ = Неопределено, Родитель = Неопределено, ПередКемВСтавляем = "", Флажок = Ложь, РеквизитФормы = Ложь, ИмяОсновногоРеквизитаФормы = "Объект")
Если ПередКемВСтавляем = "" Тогда
Элемент = Форма.Элементы.Добавить(Реквизит, Тип("ПолеФормы"), Форма.Элементы.Найти(?(Родитель = Неопределено, ТЧ, Родитель)));
Иначе
Элемент = Форма.Элементы.Вставить(Реквизит, Тип("ПолеФормы"), Форма.Элементы.Найти(?(Родитель = Неопределено, ТЧ, Родитель)), Форма.Элементы.Найти(ПередКемВСтавляем));
КонецЕсли;
Если Флажок Тогда
Элемент.Вид = ВидПоляФормы.ПолеФлажка;
Иначе
Элемент.Вид = ВидПоляФормы.ПолеВвода;
КонецЕсли;
Если ТЧ = Неопределено Тогда
Элемент.ПутьКДанным = ?(РеквизитФормы, "", ИмяОсновногоРеквизитаФормы + ".") + Реквизит; Иначе Элемент.ПутьКДанным = ?(РеквизитФормы, "", ИмяОсновногоРеквизитаФормы + ".") + ТЧ + "." + Реквизит;
КонецЕсли;
Возврат Элемент;


КонецФункции
15. olga10121982 2 31.05.22 07:08 Сейчас в теме
(14)
Процедура ДобавитьРеквизитФормы(Форма, Имя, Тип, Заголовок = "", Родитель = "")
Если Родитель = "" Тогда
Реквизит = Новый РеквизитФормы("ВодительскийСтаж",Новый ОписаниеТипов("Строка"));
Иначе
Реквизит = Новый РеквизитФормы("ВодительскийСтаж",Новый ОписаниеТипов ("Строка"));
КонецЕсли;
Реквизит.Заголовок = Заголовок;
ДобавляемыеРеквизиты = Новый Массив;
ДобавляемыеРеквизиты.Добавить(Реквизит);
Форма.ИзменитьРеквизиты(ДобавляемыеРеквизиты);

КонецПроцедуры
16. olga10121982 2 31.05.22 07:08 Сейчас в теме
(15)
Процедура ПриСозданииНаСервереСозданиеРеквизитов (Форма,ИмяФормы = "") Экспорт
Если ИмяФормы = "СправочникФизическиеЛицаФормаСписка" Тогда
ДобавитьРеквизитФормы (Форма,"ВодительскийСтаж",Новый ОписаниеТипов ("Строка"),"ВодительскийСтаж", "1");

ДобавитьНаФормуРеквизит (Форма,"ВодительскийСтаж",,Новый ОписаниеТипов ("Строка"),"Список",,Истина,"Список");

КонецЕсли;

КонецПроцедуры
17. olga10121982 2 31.05.22 07:10 Сейчас в теме
(16)
Функция ПриАктивизацииСтроки(ТекущееФизЛицо)Экспорт
Запрос = Новый Запрос; // Стаж
Запрос.Текст =
"ВЫБРАТЬ
| СтажиФизическихЛицСрезПоследних.ФизическоеЛицо КАК ФизическоеЛицо,
| СтажиФизическихЛицСрезПоследних.ВидСтажа КАК ВидСтажа,
| СтажиФизическихЛицСрезПоследних.ДатаОтсчета КАК ДатаОтсчета,
| СтажиФизическихЛицСрезПоследних.РазмерМесяцев КАК РазмерМесяцев,
| СтажиФизическихЛицСрезПоследних.РазмерДней КАК РазмерДней
|ИЗ
| РегистрСведений.СтажиФизическихЛиц.СрезПоследних(&ТекущаяДата, ) КАК СтажиФизическихЛицСрезПоследних
|ГДЕ
| СтажиФизическихЛицСрезПоследних.ФизическоеЛицо = &ФизическоеЛицо
| И СтажиФизическихЛицСрезПоследних.ВидСтажа.Наименование = &ВидСтажа";

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

РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();

Если Выборка.Следующий() Тогда
ВидСтажа = "Водительский стаж";
КоличЛет = Цел(Выборка.РазмерМесяцев / 12);
КоличМес = (Выборка.РазмерМесяцев)-(КоличЛет * 12);
КоличДней = Выборка.РазмерДней;

КонецЕсли;

Строка = (Строка(КоличЛет) + " лет. " + Строка(КоличМес) + " мес. "+ Строка(КоличДней) + " дн. ");

Возврат Строка

КонецФункции
18. olga10121982 2 31.05.22 07:22 Сейчас в теме
(17) ДАЛЕЕ В Справочники --> ФизическиеЛица --> Форма --> ФормаСписка --> Модуль

Найти
#Область ОбработчикиСобытийЭлементовТаблицыФормыСписок

Дописать туда:

&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент)

ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
ТекущееФизЛицо = Элемент.ТекущиеДанные.Ссылка;
ВодительскийСтаж = ОбщиеСобственныеНастройки.ПриАктивизацииСтроки(ТекущееФизЛицо);
КонецПроцедуры
19. olga10121982 2 31.05.22 07:26 Сейчас в теме
(18) В Режиме предприятия нужно в Виды стажа добавить Водительский стаж
20. user617763_eug.93 31.05.22 08:57 Сейчас в теме
(12) Получилось. Спасибо!!!
21. user1078558 13.11.22 21:41 Сейчас в теме
Не правильный механизм подсчета, Через месяц стаж не увеличиться.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот