|
В форму списка справочника при открытии высчитывать и заполнять реквизит формы | ☑ | ||
---|---|---|---|---|
0
ANDRU48
16.07.15
✎
10:04
|
У меня есть справочник "А", в нем есть реквизит "Возраст" и "ДатаРождения". При открытии формы элемента реквизит "Возраст" высчитывается и заполняется, в зависимости от "ДатыРождения" на текущую дату - это реализовал.
Теперь нужно в форме списка данного справочника при открытии заполнять реквизит "Возраст" от реквизита "ДатаРождения" на текущую дату. Здесь застрял, порылся в интернете не нашел. Подскажите плиз...Спасибо |
|||
1
vicof
16.07.15
✎
10:08
|
ПриПолученииДанных
|
|||
2
butterbean
16.07.15
✎
10:09
|
нафиг реквизит, если он постоянно в формах пересчитывается?
|
|||
3
ANDRU48
16.07.15
✎
10:13
|
(1) УФ
|
|||
4
ANDRU48
16.07.15
✎
10:15
|
В форме элемента делаю так:
Элементы.Возраст = .ВозрастВычислить(Объект.ДатаРождения, ТекущаяДата()); |
|||
5
butterbean
16.07.15
✎
10:16
|
(3) произвольный запрос у дин. списка + текущую дату как параметр и вперед
|
|||
6
VikingKosmo
16.07.15
✎
10:17
|
если это УФ, то все эти шашни нужно написать в запросе ДемоническогоСписка
|
|||
7
ANDRU48
16.07.15
✎
10:22
|
Высчитывается кол-во месяцев вот так
&НаКлиенте Процедура ПриОткрытии(Отказ) Для Каждого Строка Из Элементы.Возраст = .ВозрастВычислить(Объект.ДатаРождения, ТекущаяДата()); КонецПроцедуры &НаСервереБезКонтекста Функция ВозрастВычислить(Возраст, Дата) Месяцы = РазностьМеждуДатамиВМесяцах(Возраст,Дата); ВозрастСтруктура = ВозрастВМесяцахИГодах(Месяцы); ВозрастПрописью = ВозрастПрописью(ВозрастСтруктура); Возврат ВозрастПрописью; КонецФункции &НаСервереБезКонтекста Функция ВозрастВМесяцахИГодах(Месяцы) Структура = Новый Структура; Структура.Вставить("Год"); Структура.Вставить("Месяц"); Структура.Месяц = Месяцы % 12; Структура.Год = (Месяцы - Структура.Месяц) / 12; Возврат Структура; КонецФункции &НаСервереБезКонтекста Функция ВозрастПрописью(Структура) Строка = ""; Если Структура.Год > 0 Тогда ПоследняяЦифраГода = Число(Сред(Строка(Структура.Год), СтрДлина(Строка(Структура.Год)), 1)); Если (ПоследняяЦифраГода = 1) И (Структура.Год <> 11) Тогда Строка = Строка(Структура.Год) + " год"; КонецЕсли; Если (ПоследняяЦифраГода >= 2) И (ПоследняяЦифраГода <=4) И ((Структура.Год < 12) ИЛИ (Структура.Год > 14)) Тогда Строка = Строка(Структура.Год) + " года"; КонецЕсли; Если ((ПоследняяЦифраГода >= 5) И (ПоследняяЦифраГода <=9)) ИЛИ (ПоследняяЦифраГода = 0) Тогда Строка = Строка(Структура.Год) + " лет"; КонецЕсли; Если (Структура.Год >= 11) И (Структура.Год <= 14) Тогда Строка = Строка(Структура.Год) + " лет"; КонецЕсли; КонецЕсли; Если (Структура.Год > 0) И (Структура.Год < 3) И (Структура.Месяц > 0) Тогда Строка = Строка + ", "; КонецЕсли; Если (Структура.Месяц > 0) И (Структура.Год <= 3) Тогда Если Структура.Месяц = 1 Тогда Строка = Строка + "1 месяц"; КонецЕсли; Если (Структура.Месяц >= 2) И (Структура.Месяц <= 4) Тогда Строка = Строка + Строка(Структура.Месяц) + " месяца"; КонецЕсли; Если Структура.Месяц >= 5 Тогда Строка = Строка + Строка(Структура.Месяц) + " месяцев"; КонецЕсли; КонецЕсли; Возврат Строка; КонецФункции &НаСервереБезКонтекста Функция РазностьМеждуДатамиВМесяцах(Дата1,Дата2) Год1 = Год(Дата1); Год2 = Год(Дата2); Месяц1 = Месяц(Дата1); Месяц2 = Месяц(Дата2); День1 = День(Дата1); День2 = День(Дата2); Результат = (Год1 - Год2) * 12 + Месяц1 - Месяц2; Если Результат < 0 Тогда Результат = 0 - Результат; КонецЕсли; Если ((Дата1 > Дата2) И (День1 < День2)) ИЛИ ((Дата1 < Дата2) И (День1 > День2)) ИЛИ ((Дата1 < Дата2) И (День1 < День2)) Тогда Результат = Результат - 1; КонецЕсли; Возврат Результат; КонецФункции Как из динамического списка потом вытаскивать это значение? |
|||
8
VikingKosmo
16.07.15
✎
10:28
|
(7) про ДемоническиеСписки вообще в курсе? Что это такое и зачем используется?
|
|||
9
Timon1405
16.07.15
✎
10:29
|
рвутся все шаблоны, как совместим вопрос в топике и Как продавать свою конфу?
|
|||
10
ANDRU48
16.07.15
✎
11:03
|
Спасибо за помощь
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |