Имя: Пароль:
1C
1С v8
Заполнение массива датой
0 bebibo
 
20.01.21
08:22
Здравствуйте!
Задание: запросите у пользователя дату начала и дату окончания периода (в годах). Заполните массив в цикле этими годами и выведите его на экран.
Затем создайте программный код, определяющий, какие годы являются високосными. Выведите на экран результаты.
Как заполнить массив в цикле этими годами? Как определить високосный год? Подскажите пожалуйста..
1 Волшебник
 
20.01.21
08:27
правило определения високосных годов:
    год, номер которого кратен 400, — високосный;
    остальные годы, номер которых кратен 100, — невисокосные (например, годы 1700, 1800, 1900, 2100, 2200, 2300);
    остальные годы, номер которых кратен 4, — високосные;
    остальные - невисокосные.
2 bebibo
 
20.01.21
08:30
(1) Блин, что то не совсем понятно))
3 Волшебник
 
20.01.21
08:32
(2) Используй операцию "%" для получения остатка от деления. Если остаток от деления = 0, значит кратен делителю.

Если Год % 400 = 0 Тогда
   Високосный = Истина;
ИначеЕсли Год % 100 = 0 Тогда
   Високосный = Ложь;
ИначеЕсли Год % 4 = 0 Тогда
   Високосный = Истина;
Иначе
   Високосный = Ложь;
КонецЕсли;
4 Bigbro
 
20.01.21
08:33
в каком классе сейчас информатику преподают уже?
5 Волшебник
 
20.01.21
08:34
Например, год 2000 был високосный, но не потому что он делится на 4, а потому что он делится на 400. Это важно!
Дело в том, что если год делится на 100, то он обычно не високосный. Это такое правило григорианского календаря, который пришёл на смену юлианскому.
6 bebibo
 
20.01.21
08:39
(5) Круто! Спасибо!
7 bebibo
 
20.01.21
08:43
А как получить 2 числа от пользователя?
8 bebibo
 
20.01.21
08:44
(7) Как одно - я знаю:
&НаКлиенте
Процедура КакИнтерактивноВвестиЗначениеОпределенногоТипа(Команда)

    Оповещение = Новый ОписаниеОповещения("ПослеВводаЗначения",
      ЭтотОбъект);    

    ПоказатьВводЗначения(
        Оповещение,
        , // пропускаем начальное значение
        "Введите значение",
        "Число"
    );

КонецПроцедуры

&НаКлиенте
Процедура ПослеВводаЗначения(Результат, Параметры) Экспорт    

    Если Не Результат = Неопределено Тогда
        Сообщить(Результат);        
    КонецЕсли;

КонецПроцедуры
9 bebibo
 
20.01.21
08:46
Или лучше создать обработку и на ней 2 реквизита?
10 bebibo
 
20.01.21
08:51
(9) Вывожу на форме обработки 2 реквизита с типом дата. Как мне из введённой пользователем даты получить только год?
11 bebibo
 
20.01.21
08:55
А как мне получить все года в заданном интервале?
12 ДенисЧ
 
20.01.21
08:55
"Стаж: 1 год 11 месяцев 30 дней"
...

Открой книжку по 1с. Хотя Митичкина, если Радченко для тебя ещё недоступен...
13 bebibo
 
20.01.21
08:55
(11) Ввел 01.01.2010 и 01.01.2021 - как посчитать и вытащить все года в этом периоде?
14 Sayan_mi
 
20.01.21
09:01
Для получения Годп из даты есть функция Год(<Дата>) Все года в диапазоне от даты начала ДобавитьМесяц(ДатаНачала, 12) И проверяешь не больше ли даты конца.
15 Sayan_mi
 
20.01.21
09:02
(14) Годп - Года
16 Kassern
 
20.01.21
09:09
(0) Это походу одно из учебных заданий в какой нить франч. Если у тебя на данном этапе уже затык и сам не можешь решить, то дальше будет еще хуже. Почитай СП про функции работы с датами
17 bebibo
 
20.01.21
09:14
Всё получилось, спасибо!