Имя: Пароль:
1C
1С v8
Не умею использовать перечисление
0 VoN
 
24.05.19
10:05
&НаКлиенте
Процедура ТабличнаяЧасть1ДатаРожденияПриИзменении(Элемент)
СтрокаТабличнойЧасти=Элементы.табличнаячасть1.ТекущиеДанные;

СтрокаТабличнойЧасти.ВозрастнаяКатегория = окр((ТекущаяДата () - СтрокаТабличнойЧасти.ДатаРождения)/365/24/60/60, 0);
Если   ( (СтрокаТабличнойЧасти.ВозрастнаяКатегория) < 3) и ( (СтрокаТабличнойЧасти.ВозрастнаяКатегория) > 0)
    тогда  СтрокаТабличнойЧасти.ВозрастнаяКатегория = "От 0 до 3 лет"
иначеесли (число(СтрокаТабличнойЧасти.ВозрастнаяКатегория) < 14) и (Число (СтрокаТабличнойЧасти.ВозрастнаяКатегория) > 3)
        тогда  СтрокаТабличнойЧасти.ВозрастнаяКатегория = "От 3 до 14 лет"
        иначе  СтрокаТабличнойЧасти.ВозрастнаяКатегория = "От 14 до 18 лет"    
    конецесли;
КонецПроцедуры
Можно ли как то сделать что бы вместо "От 0 до 3 лет" и т.д выбиралось нужно перечисление автоматически, я пробовал у меня не получалось.
1 Hillsnake
 
24.05.19
10:08
&НаКлиенте  это не V7

окр((ТекущаяДата () - СтрокаТабличнойЧасти.ДатаРождения)/365/24/60/60 что это??
2 Mikeware
 
24.05.19
10:09
тема про ОВ, которым отравили скрипалей?
3 MadDAD
 
24.05.19
10:14
(0) Таки, да. &НаКлиенте - это 1С 8.х

Чтобы выбиралось нужное перечисление, надо правильно посчитать года. Для этого не нужно считать секунды.
А надо взять год текущей даты и отнять от него год рождения.
4 1Сергей
 
24.05.19
10:18
Возраст = окр((ТекущаяДата () - СтрокаТабличнойЧасти.ДатаРождения)/365/24/60/60, 0);
Если   (Возраст < 3) и (Возраст > 0) Тогда
    СтрокаТабличнойЧасти.ВозрастнаяКатегория = Перечисления.ВозрастныеКатегории.От0До3лет; // Идентификаторы смотри как заданы в конфигураторе
ИначеЕсли (Возраст < 14) Тогда
  СтрокаТабличнойЧасти.ВозрастнаяКатегория = Перечисления.ВозрастныеКатегории.От3До14лет; // Идентификаторы смотри как заданы в
...
5 Hillsnake
 
24.05.19
10:23
(3) может полных лет нужно ?

(0)  и что будет, если пользователь не введет дату рождения.
6 MadDAD
 
24.05.19
10:26
Возраст = Год(ТекущаяДата()) - Год(СтрокаТабличнойЧасти.ДатаРождения);

Если   (Возраст < 3) и (Возраст > 0) Тогда
    СтрокаТабличнойЧасти.ВозрастнаяКатегория = Перечисления.ВозрастныеКатегории.От0До3лет;// Идентификаторы смотри как заданы в конфигураторе
ИначеЕсли (Возраст < 14) Тогда
  СтрокаТабличнойЧасти.ВозрастнаяКатегория = Перечисления.ВозрастныеКатегории.От3До14лет;// Идентификаторы смотри как заданы в
7 1Сергей
 
24.05.19
10:31
(6) >>Возраст = Год(ТекущаяДата()) - Год(СтрокаТабличнойЧасти.ДатаРождения);

как грубо :)
8 1Сергей
 
24.05.19
10:32
почти матом
9 Evgenchik
 
24.05.19
10:49
(4) и (6) -это &НаСервере лучше выполнить
10 Кац
 
24.05.19
11:00
(2) скорее, 86 год
11 MadDAD
 
24.05.19
11:08
(8) А чего он в семерочной ветке постит? :)
12 DrWatson
 
24.05.19
11:09
(0)
&НаКлиенте
Процедура ТабличнаяЧасть1ДатаРожденияПриИзменении(Элемент)
    
    СтрокаТабличнойЧасти=Элементы.табличнаячасть1.ТекущиеДанные;
    
    Если ЗначениеЗаполнено(СтрокаТабличнойЧасти.ДатаРождения) Тогда
    
        КоличествоПолныхЛет = 0; //вставить рассчет из v8: Количество полных лет между двумя датами
        
        Если КоличествоПолныхЛет < 3 Тогда
        
            СтрокаТабличнойЧасти.ВозрастнаяКатегория = ПредопределенноеЗначение("Перечисление.ВозрастныеКатегории.От0до3");
        
        ИначеЕсли КоличествоПолныхЛет < 14 Тогда
        
            СтрокаТабличнойЧасти.ВозрастнаяКатегория = ПредопределенноеЗначение("Перечисление.ВозрастныеКатегории.От3до14");
        
        ИначеЕсли КоличествоПолныхЛет < 18 Тогда
        
            СтрокаТабличнойЧасти.ВозрастнаяКатегория = ПредопределенноеЗначение("Перечисление.ВозрастныеКатегории.От14до18");
        
        Иначе
        
            //Возможно при возрасте больше 18 следует постаить другое значение
            СтрокаТабличнойЧасти.ВозрастнаяКатегория = ПредопределенноеЗначение("Перечисление.ВозрастныеКатегории.От14до18");
        
        КонецЕсли;
    
    Иначе
    
        СтрокаТабличнойЧасти.ВозрастнаяКатегория = ПредопределенноеЗначение("Перечисление.ВозрастныеКатегории.ПустаяСсылка");
    
    КонецЕсли;
    
КонецПроцедуры

Имя и значения перечисления подставить свои.
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс