|
Разделение На Года Ø (Fish 17.01.2014 11:47) | ☑ | ||
---|---|---|---|---|
0
Hennessy
15.01.14
✎
15:57
|
Сделал так, только вот теперь нужно отделить года друг от друга, Дополнительно выводить сообщения "Сообщить()" с определенным годом, количеством дней в нем и количеством рабочих дней в нем! Желательно так же отследить Высокосный год, чтобы небыло ошибок с датами.
Процедура Дополнительно(Команда) ДатаНач = Дата(2014, 01, 01, 0, 0, 0); ДатаКон = Дата(2024, 12, 30, 23, 59, 59); Счетчик = 1; Счетчик2 = 1; Счетчик3 = 1; Пока ДатаНач<=ДатаКон Цикл ДатаНач = ДатаНач+86400; ДН = ДеньНедели(ДатаНач); ДГ = ДеньГода(ДатаНач); Если ДГ = 1 или ДГ = 54 или ДГ = 67 Тогда Счетчик3 = Счетчик3+1; КонецЕсли; Если ДН=1 или ДН=2 или ДН=3 или ДН=4 или ДН=5 Тогда Счетчик2 = Счетчик2+1; КонецЕсли; Счетчик = Счетчик+1; Если ДН = 6 или ДН = 7 Тогда Иначе //Сообщить(ДН); //Сообщить(ДатаНач); //Сообщить(ДГ); КонецЕсли; КонецЦикла; ИтоговоеЗначениеВсехЛет=Счетчик2-Счетчик3; Сообщить("ИТОГ, ВСЕГО ДНЕЙ с 2014 по 2024:"+" "+ Счетчик); Сообщить("ИТОГ РАБОЧИХ ДНЕЙ С УЧЕТОМ ВЫХОДНЫХ:"+" "+Счетчик2); Сообщить("ИТОГ РАБОЧИХ ДНЕЙ С УЧЕТОМ ВЫХОДНЫХ И ПРАЗДНИКОВ:"+" "+ИтоговоеЗначениеВсехЛет); ПоказатьОповещениеПользователя("ОПОВЕЩЕНИЕ...", ,"ГОТОВО"); КонецПроцедуры |
|||
1
zak555
15.01.14
✎
15:58
|
какая задача ?
|
|||
2
supremum
15.01.14
✎
15:59
|
(1) Походу все та же.
|
|||
3
Адский плющ
15.01.14
✎
15:59
|
Это чо за упражнения в г-кодинге?
|
|||
4
Hennessy
15.01.14
✎
16:00
|
(1) Есть Цикл в котором промежуток между 2014г и 2024, необходимо определить "Рабочие дни". Так же определить их не конкретно в этот промежуток, а по отдельности, рабочие дни 2014г., 2015, 2016, 2017 и т.д.
|
|||
5
Maxus43
15.01.14
✎
16:00
|
автор, хватит пить свой ник, почитай книги сначала... а то онлайн учебник тут реально открыл
|
|||
6
Адский плющ
15.01.14
✎
16:00
|
"ДГ = 54 или ДГ = 67"
23 февраля и 8 марта. Пятнично. |
|||
7
Hennessy
15.01.14
✎
16:05
|
Раз уж на то пошло, вот само задание:
Создайте внешнюю обработку «Вычисление рабочих дней». Данная обработка должна вычислять количество рабочих дней в году, исходя из следующих условий: - нерабочими днями считаются субботы и воскресенья; - праздниками являются 1 января, 23 февраля и 8 марта; - если праздничный день попадает на субботу или воскресенье, то он не переносится. Обеспечьте, чтобы обработка выдала данные о количестве рабочих дней за следующие 10 лет. Выводить информацию нужно в следующем формате: год – количество рабочих дней. Для вывода информации используйте функцию «Сообщить()». Например: 2010 год – 258 рабочих дней 2011 год – 258 рабочих дней 2012 год – 259 рабочих дней 2013 год – 259 рабочих дней 2014 год – 260 рабочих дней 2015 год – 259 рабочих дней … |
|||
8
Wobland
15.01.14
✎
16:05
|
понарасплодил тем..
(0) вперёд! >Если ДГ = 1 или ДГ = 54 или ДГ = 67 Тогда это для обычного или високосного? |
|||
9
Hennessy
15.01.14
✎
16:06
|
(8) Для обычного
|
|||
10
Wobland
15.01.14
✎
16:07
|
(9) в високосные года у тебя другие праздники?
|
|||
11
Адский плющ
15.01.14
✎
16:08
|
Чтобы узнать сколько суббот и воскресений в году достаточно знать какой день недели 1 января ну и год високосный/нет. А цикл по дням - это пц.
|
|||
12
Aprobator
15.01.14
✎
16:08
|
(0) Неверно построенный алгоритм. Попадет праздник на субботу или воскресенье и все равно вычтется. Ну и плюс високосный или невисокосный год.
|
|||
13
Wobland
15.01.14
✎
16:09
|
(11) ему это говорили с неделю назад. пускай хоть как-нибудь сделает
|
|||
14
Wobland
15.01.14
✎
16:09
|
мда.. неделя назад была вчера
v8: Внешняя обработка, ДЗ по видеоурокам |
|||
15
Hennessy
15.01.14
✎
16:10
|
(10) Те же, просто поидее в феврале идет смещение на 1 день, поэтому смещается
|
|||
16
Wobland
15.01.14
✎
16:10
|
(15) планируешь как-то это учитывать в алгоритме?
|
|||
17
Адский плющ
15.01.14
✎
16:10
|
Имхо книги по 1С тут не помогут. Надо или Фомина "Язык Си" читать, или сразу застрелиться.
|
|||
18
Hennessy
15.01.14
✎
16:11
|
(16) Да, вот поэтому и спрашиваю, как это лучше доработать!
|
|||
19
Wobland
15.01.14
✎
16:11
|
(18) не заметил
|
|||
20
Wobland
15.01.14
✎
16:13
|
(18) тебе по меньшей мере два человека разложили всё на атомы. Рэйв даже код набросал. так что, имхается мне, ты хочешь готовое, а не учиться
|
|||
21
Hennessy
15.01.14
✎
16:15
|
(20) я просто хочу видеть готовое по большей части, чтобы понимать спицифику... и от этого отталкиваться, потому что я эксперементирую с кодом и у меня многое не получается
|
|||
22
Wobland
15.01.14
✎
16:17
|
(21) тут достаточно специфики
тДанные=Новый ТаблицаЗначений; тДанные.Колонки.Добавить("Год"); тДанные.Колонки.Добавить("Дней"); Для н=2014 По 2024 Цикл Д=(н,1,1,23,59,59); ДатаКон=Дата(н,12,31,23,59,59); Нов=тДанныеДобавить(); Нов.Год=н; Нов.Дней=0; Пока Д <=ДатаКон Цикл ДеньН=ДеньНедели(Д); Если ДеньН=6 Или ДеньН=7 Или (День(Д)=1 И Месяц(Д)=1) Или (День(Д)=23 И Месяц(Д)=2) Или (День(Д)=8 И Месяц(Д)=3)Тогда Прододжить; КонецЕсли; Нов.Дней=Нов.Дней+1; КонецЦикла; Конеццикла; тДанные.ВыбратьСтроку(); |
|||
23
Aprobator
15.01.14
✎
16:17
|
Ну вот тупо: идем по дням - суббота или воскресенье - не считаем, праздник (определенный месяц и день месяца), тоже мимо, все остальное складываем. Все - деревянный алгортм готов.
|
|||
24
azernot
15.01.14
✎
16:30
|
Предлагаю решить задачу запросом
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | 1 КАК Разряд |ПОМЕСТИТЬ Цифры | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | 2 | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | 3 | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | 4 | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | 5 | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | 6 | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | 7 | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | 8 | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | 9 | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | 0 |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, Числа.Число) КАК ДатаДень |ПОМЕСТИТЬ Даты |ИЗ | (ВЫБРАТЬ | Единицы.Разряд + ЕСТЬNULL(Десятки.Разряд, 0) * 10 + ЕСТЬNULL(Сотни.Разряд, 0) * 100 + ЕСТЬNULL(Тысячи.Разряд, 0) * 1000 + ЕСТЬNULL(ДесяткиТысяч.Разряд, 0) * 10000 + ЕСТЬNULL(СотниТысяч.Разряд, 0) * 100000 КАК Число | ИЗ | Цифры КАК Единицы | ЛЕВОЕ СОЕДИНЕНИЕ Цифры КАК Сотни | ПО (РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ) >= 100) | ЛЕВОЕ СОЕДИНЕНИЕ Цифры КАК Десятки | ПО (РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ) >= 10) | ЛЕВОЕ СОЕДИНЕНИЕ Цифры КАК Тысячи | ПО (РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ) >= 1000) | ЛЕВОЕ СОЕДИНЕНИЕ Цифры КАК ДесяткиТысяч | ПО (РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ) >= 10000) | ЛЕВОЕ СОЕДИНЕНИЕ Цифры КАК СотниТысяч | ПО (РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ) >= 100000)) КАК Числа |ГДЕ | Числа.Число <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ) |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗЛИЧНЫЕ | ГОД(Даты.ДатаДень) КАК Год, | КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Даты.ДатаДень) КАК КоличествоРабочихДней |ИЗ | Даты КАК Даты |ГДЕ | ДЕНЬНЕДЕЛИ(Даты.ДатаДень) <= 5 | И НЕ(ДЕНЬ(Даты.ДатаДень) = 1 | И МЕСЯЦ(Даты.ДатаДень) = 1) | И НЕ(ДЕНЬ(Даты.ДатаДень) = 23 | И МЕСЯЦ(Даты.ДатаДень) = 2) | И НЕ(ДЕНЬ(Даты.ДатаДень) = 8 | И МЕСЯЦ(Даты.ДатаДень) = 3) | |СГРУППИРОВАТЬ ПО | ГОД(Даты.ДатаДень)"; Запрос.УстановитьПараметр("НачалоПериода",НачалоГода(ТекущаяДата())); Запрос.УстановитьПараметр("КонецПериода",КонецГода(Дата(Год(ТекущаяДата())+10,1,1))); Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Сообщить(""+ВыборкаДетальныеЗаписи.Год + " год - "+ВыборкаДетальныеЗаписи.КоличествоРабочихДней+" рабочих дней"); КонецЦикла; |
|||
25
Hennessy
15.01.14
✎
16:37
|
(24) Немного замарочено, но спасибо большое! хороший вариант!
|
|||
26
WildSery
15.01.14
✎
16:47
|
Задание разумное, но абсолютно абстрактное.
Поскольку в реальности делается совсем по-другому, простенькой выборкой из производственного календаря. |
|||
27
WildSery
15.01.14
✎
16:49
|
А. Почитал предыдущую ветку. Садик, ясно.
|
|||
28
Fram
15.01.14
✎
18:28
|
(21) по математике и информатике в старших классах и в вузе какие отметки были?
|
|||
29
Fram
15.01.14
✎
18:30
|
+(28) не совсем правильно сформулировал. все нравилось, получалось по этим предметам?
|
|||
30
Fram
15.01.14
✎
18:35
|
Короче, начни с алгоритмов на абстрактном языке. если не понимаешь что это и зачем это, забудь про программирование в качестве источника дохода.
|
|||
31
Hennessy
17.01.14
✎
08:27
|
Не надо давать мне Г-советов... Я не учу никого жизни! я лишь обратился за помощью, рассчитывая на то что тут есть специалисты, которые могли бы мне нормально помочь! Но я вижу лишь критику и глупые советы! Я рассчитывал увидеть здесь взрослых и разумных людей, а вижу лишь подростков, которые без конца тролят все что попадается на глаза! Я понимаю что настоящих специалистов тут нет кто бы мог помочь с теми вопросами которые я задаю! Вы сами это лишний раз доказываете, чтобы вы не говорили уже!
|
|||
32
Hennessy
17.01.14
✎
08:30
|
Хотя не совсем так! Есть несколько человек которые без лишней грязи попытались мне помочь! Не буду обобщать! Это люди которые просто показали мне решение моей задачи, ни сказав ни слова про мой уровень программирования!
|
|||
33
Wobland
17.01.14
✎
08:35
|
(31) ты нас раскрыл!
|
|||
34
MiniMuk
17.01.14
✎
08:44
|
(32) Поправся, не показали решение а решили.
|
|||
35
WildSery
17.01.14
✎
10:42
|
На этом форуме не вижу нужной ссылки, куда отправлять обиженных, что платочком не подтёрли носик.
"По-моему, все претензии тех, кто называет себя новичками, связаны с их восприятием форума как какого-то учебного учереждения с длительным циклом обучения. Например, с десятилетней школой. В которой их проведут с 1го по 10ый класс, старательно вдалбливая сначала азы, а потом по нарастающей все остальные знания. Не забывая при этом про выдачу и проверку домашних заданий, дополнительные занятия для отстающих, факультативы для любознательных и т.д. Эдакие седые, мудрые и добрые гуру, окруженные выводком "птенцов", про каждого из которых гуру знает все с момента рождения. Знает чем болел, что любит есть на завтрак. Знает как с ним надо разговаривать и как его надо обучать. И потом машет вслед улетающему заматеревшему "птенцу" рукой, смахивая украдкой слезу. Так вот, дорогие мои, все это лишь ваши иллюзии. Форум - это ускоренные курсы решения проблемы. Которые уже подразумевают наличие базовых знаний. А "блеяние" насчет "играл-играл, угадал все буквы, но не смог прочитать слово" - это не для форума. Для получения базовых знаний нужно образование. Либо самообразование (т.е. чтение документации), либо обучение (т.е. курсы). Но форуме нет времени для подбора методики общения с каждым вопрошающим. Есть планка. Не выполнил ее - иди расти." (с) Glory |
|||
36
Wobland
17.01.14
✎
10:51
|
вспоминаю Катерину19, которая в силу возраста и отсутствия ясности разума просто не понимала то, о чём ей говорили. тупо моргала глазами и ждала появления волшебного работоспособного кода
вспоминаю бананана, взрослого мужика, который в силу полной гуманитаризации мозга заниматься программингом не мог на физиологическом уровне. этот хотя бы понимал (ну, я в это верю), что для достижения результата следует читать и думать |
|||
37
Hennessy
17.01.14
✎
11:34
|
Я просто останусь при своем мнении и не буду комментировать то что вы написали, либо это выльется в бесконечный спор! А Вы можете думать что хотите! Но меня лишь удивляет, то что каждый из вас может бесконечно учить жизни, как раз токи, будто каждый из вас "ГУРУ" как описал "WildSery", а помочь в решении простой задачи, не может никто! Лишний раз убеждение в том что таким образом люди самоутверждаются!
|
|||
38
Wobland
17.01.14
✎
11:39
|
если ты не в курсе, даю справку. между "помогите" и "дайте" есть небольшое различие
|
|||
39
Wobland
17.01.14
✎
11:40
|
ну вот так мы понимаем помощь: взяли и подсказали
|
|||
40
Fish
модератор
17.01.14
✎
11:47
|
ИМХО, тема себя исчерпала, на чём и закончим. Автору рекомендуется к прочтению раздел
Рекомендации: Как задать вопрос по теме 1С или советы новичку. http://www.forum.mista.ru/rules.php |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |