Базовый курс. Решение ДЗ №3
Представляем решение третьего домашнего задания.
К сожалению, у Вас недостаточно прав для просмотра этой записи. Если Вы еще не залогинены на сайте
— залогиньтесь.
— залогиньтесь.
Если не активировали токен — посмотрите видео-инструкцию (видео N5)
Если вы залогинены, у Вас активирован токен доступа, но вы все равно видите эту запись —
напишите нам на e-mail поддержки.
“На коленке” – не всегда просто и красиво. Думала воспользоваться ДнемНедели, но не разобралась с до конца с примером в описании функции. Вывод – разработка алгоритмов и кодирование не терпит суеты :о))
Для определения количество недель в году можно было воспользоваться функцией НеделяГода(КонецГода)
Да, это вариант, спасибо.
Эта функция возвращает номер недели, на указанную дату (КонецГода). Что в нашем случае помоему не то, что нам нужно. Так как для решения нашей задачи требуется количество целых недель, а если 31.12 попадает не на воскресенье (что в большинстве случаев именно так) то расчеты в этом случае будут отличаться от приведенных.
(Или я не прав???)
Отчасти правы.
Конструкция могла бы быть такой:
ЦелыхНедель = НеделяГода(КонецГода)-?(ДеньНедели(КонецГода)<7, 1, 0);
Чтобы не использовать циклы, разделил количество дней в году, на семь получил количество недель. На одну неделю два выходных 52*2=104выхд.
Если год начинается с воскресенья, то нужно добавить день (воскресенье);
Если год заканчивается в воскресенья, то нужно добавить день суббота.
Как ни странно, но в задании нет ни слова о создании структуры с выходными днями. Вместо этого имеется текст, с просьбой об обратной связи…
Структура будет в следующем задании :)
Не подумал, что так можно посчитать количество рабочих дней.
Я делал так, обходом всех дней и сравнивал с днем недели, и сравнивал с праздником.
Вот только у меня вопрос, как к текущему дню прибавить 1 сутки?!
Я делал так, КонецДня(ТекущийДень) + 1;
Можно конечно прибавлять, к суткам 24*60*60, но возможно ли обойтись без этого?
Вы привели оба возможных варианта :)
Я задумывался и о таком решении, которое приведо в домашнем задании №3 базового курса…
Не могли бы вы обьяснить, почему Необратонные дни берутся именно в начале года ? ….(логически понятно что брать надо не в середине….) а можно ли в конце? просто логически не очевидно…что необработанные дни надо брать с 1 января…
Ок, запишу отдельное видео на эту тему.
Я немного ошибся при решении….
Решение строил на подсчете сначала обычных выходных, потом учете праздников,
потом отнимал от количества дней количество выходных и получал количество рабочих дней в году
При расчете обычных выходных я думал так…
надо взять количество недель в году…и все недели кроме первой и последней точно содержат по 7
дней а значит по 2 выходных….
и посчитал раз в году всегда 52 неделю плюс один или два дня (високосный год)
то количество полных недель кроме первой и последней будет всегда 51…
и Количество обычных выходных
КолВыхГода=51*2+ВыхПерваяНеделя(Год)+ВыхПоследняяНеделя(Год);
однако
надо было так
НедельвГоду=НеделяГода(Дата(Год,12,31));
КолВыхГода=(НедельвГоду-2)*2+ВыхПерваяНеделя(Год)+ВыхПоследняяНеделя(Год);
то есть количество полных недель (по 7 дней) в году может быть другим
Например в 2012 году (високосный)… 54 недели…
52 недели полных, и 2 недели по одному дню….
Есть логика еще проще.
Я запишу отдельное видео и приложу его к решению ДЗ.