|   |   | 
| 
 | Проблемы с циклом | ☑ | ||
|---|---|---|---|---|
| 0
    
        Peshalkin 24.09.20✎ 12:25 | 
        Код полностью работает, работает строка ДеньНачалаМесяца = ДеньНачалаМесяца + ЧастотаПриёма; Но если я добавляю Пока ДеньПервогоПриёма < КоличествоДнейВМесяце Цикл, то не складывается ДеньНачалаМесяца
 Уже час бьюсь с кодом и не могу сделать так, чтобы всё складывалось, с ДняПервогоПриёма до КоличествоДней, и выводилось общее количество дней приёма и сколько всего было принято протеина. Помогите пожалуйста Иначе Для Каждого эл из ДеньНачала Цикл Если эл.Ключ = ДеньНачалаМесяца Тогда Пока ДеньПервогоПриёма < КоличествоДнейВМесяце Цикл Если эл.Ключ = 6 или эл.Ключ = 7 Тогда Сообщить(""+ДеньПервогоПриёма+" Число "+"("+эл.Значение+"): "+КоличествоПротеинаВВыходные); ДеньПервогоПриёма = ДеньПервогоПриёма + ЧастотаПриёма; ДеньНачалаМесяца = ДеньНачалаМесяца + ЧастотаПриёма; Иначе Сообщить(""+ДеньПервогоПриёма+" Число "+"("+эл.Значение+"): "+КоличествоПротеинаВБудни); ДеньПервогоПриёма = ДеньПервогоПриёма + ЧастотаПриёма; ДеньНачалаМесяца = ДеньНачалаМесяца + ЧастотаПриёма; КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; КонецЕсли; | |||
| 1
    
        Ёпрст гуру 24.09.20✎ 12:35 | 
        больше кода     | |||
| 2
    
        vova1122 24.09.20✎ 12:35 | 
        1. Реквизиты ДеньПервогоПриёма,  ДеньНачалаМесяца для рабочих и выходных одни и те же. так задумано?
 2. ДеньНачалаМесяца проверяется до цикла. В цикле меняется. Совсем непонятно из сообщения что и куда нужно складывать.... | |||
| 3
    
        МихаилМ 24.09.20✎ 12:36 | 
        ДеньПервогоПриёма = 0     | |||
| 4
    
        Ёпрст гуру 24.09.20✎ 12:36 | 
        вообще не ясно че ты делаешь этим кодом, и зачем сдвигаешь ДеньНачалаМесяца     | |||
| 5
    
        Peshalkin 24.09.20✎ 12:43 | 
        (2) ДеньНачала(Соответствие) которое проверяет по ключу, если введено(1-7), выводит соответствующий день недели, ДеньПервогоПриёма(Реквизит, с какого числа начинается приём), КоличествоДнейВМесяце (Общее количество дней за которое нужно произвести расчет, Реквизит), ДеньНачалаМесяца (Реквизит с днями недели), КоличествоПротеинаВВыходные(Реквизит), ВБудни тоже реквизит, Частота приёма(Реквизит, с каким промежутком принимается протеин)     | |||
| 6
    
        Peshalkin 24.09.20✎ 12:48 | 
        Изначально я проверяю обходом соответствия, равен ли ключ, введённому значению в ДеньНачалаМесяца, после цикл ДеньПервогоПриёма < КоличествоДнейВМесяце(Нужно рассчитать сколько протеина было принято всего, сколько было принято за дни, и какой день недели), Но цикл пока не даёт выполниться действию  ДеньНачалаМесяца = ДеньНачалаМесяца + ЧастотаПриёма;
 А если переместить цикл пока выше, то он просто будет зацикливаться, Мне сейчас нужно получить общее количество протеина, общее количество дней и Чтобы просчитывая Дни, у меня выводились данные за каждый день, допустим: 9 Число (Понедельник): 200гр. 12 Число (Четверг): 200гр. 15 Число (Воскресенье): 100 гр | |||
| 7
    
        vova1122 24.09.20✎ 12:49 | 
        (5) Опишите полностью задачу, что, откуда и куда должно складываться. Травильно заданный вопрос содержит половину ответа     | |||
| 8
    
        Ёпрст гуру 24.09.20✎ 12:50 | 
        (6) у вас пока в коде каша.
 Объясните задачу целиком | |||
| 9
    
        Peshalkin 24.09.20✎ 12:54 | 
        Иначе
 Для Каждого эл из ДеньНачала Цикл //ДеньНачала - Соответствие с неделями (1-7 Ключ) (Понедельник-Воскресенье Значение) Если эл.Ключ = ДеньНачалаМесяца Тогда Пока ДеньПервогоПриёма < КоличествоДнейВМесяце Цикл //ДеньПервогоПриёма и КоличествоДнейВМесяца - Реквизит, куда вводятся данные допустим 10 и 30 Если эл.Ключ = 6 или эл.Ключ = 7 Тогда //тут я узнаю если суббота и воскресенье, то плюсую КоличествоПротеинаВВыходные(Реквизит, произвольно указать число) Сообщить(""+ДеньПервогоПриёма+" Число "+"("+эл.Значение+"): "+КоличествоПротеинаВВыходные); //Вывожу эти значения ДеньПервогоПриёма = ДеньПервогоПриёма + ЧастотаПриёма; // ЧастотаПриёма(Реквизит, промежуток дней, которые не учитываются, если ДеньПерПриёма - 10, то плюсуем Частоту и получается 13 день след будет считать ДеньНачалаМесяца = ДеньНачалаМесяца + ЧастотаПриёма; //ДеньНачалаМесяца это Реквизит с неделями (1-7 Ключ) (Понедельник-Воскресенье Значение) Иначе Сообщить(""+ДеньПервогоПриёма+" Число "+"("+эл.Значение+"): "+КоличествоПротеинаВБудни); //Коилчество протеина в будни Тоже реквизит ДеньПервогоПриёма = ДеньПервогоПриёма + ЧастотаПриёма; ДеньНачалаМесяца = ДеньНачалаМесяца + ЧастотаПриёма; КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; КонецЕсли; | |||
| 10
    
        Peshalkin 24.09.20✎ 12:58 | 
        Мне нужно вывести дни
 Пример: 10 Число (Среда): 200гр 13 Число (Суббота): 100гр 16 Число (Вторник): 200гр Вплоть до того числа, до которого будет указано в реквизите КоличествоДнейВМесяц После Вывести Всего Принято протеина за все дни, которые были выведены программой и Всего дней приема протеина, пока их я не заносил в код, по причине, что у меня работает всё, но не прибавляется неделя если я изначально задал Вторник, то у меня на всех числах будет вторник, если я Пока ДеньПервогоПриёма < КоличествоДнейВМесяце Цикл убераю, то всё плюсуется, но всего-лишь 2-3 раза, пока не выдаст значение В Выходные дни и Будни | |||
| 11
    
        Peshalkin 24.09.20✎ 13:13 | 
        Так что есть кто поможет или подскажет, как цикл пока изменить или как его переместить, чтобы всё работало?     | |||
| 12
    
        MyNick 24.09.20✎ 13:28 | 
        (11) тебе говорят, что нужна бизнес задача. Процесс.
 Вероятно, что ты не с того заходишь, и придется плодить еще много веток, чтобы ее решить (с непонятным результатом) | |||
| 13
    
        Ёпрст гуру 24.09.20✎ 13:34 | 
        (9)
 ДеньНачалаМесяца - это что ? Число ? | |||
| 14
    
        Ёпрст гуру 24.09.20✎ 13:34 | 
        в соотвтетствии твоём, значения, это просто строки -понедельник ?     | |||
| 15
    
        Ёпрст гуру 24.09.20✎ 13:35 | 
        ДеньПервогоПриёма - это что ? Чилсло ? Дата ?     | |||
| 16
    
        Peshalkin 24.09.20✎ 13:43 | 
        (15) КоличествоДнейВМесяце – Число (2, 0)
 Количество дней в рассчитываемом месяце ДеньНачалаМесяца – Число (1, 0) День недели с которого начался месяц (1 – ПН, 2 – ВТ, 3 – СР …. 7 - ВС) КоличествоПротеинаВБудни – Число (3, 0) Количество протеина, принимаемое в будни (ПН-ПТ) КоличествоПротеинаВВыходные – Число (3, 0) Количество протеина, принимаемое в выходные (СБ-ВС) ДеньПервогоПриема – Число (2, 0) День месяца, с которого человек начал прием протеина (Например, с 15 для месяца) ЧастотаПриема – Число (2, 0) Интервал приема протеина в днях ПриемСПервогоДня– Булево Признак того, что человек начал прием протеина в день первого приема. | |||
| 17
    
        Peshalkin 24.09.20✎ 13:44 | 
        (14) ДеньНачала = Новый Соответствие;
 ДеньНачала.Вставить(1, "Понедельник"); ДеньНачала.Вставить(2, "Вторник"); ДеньНачала.Вставить(3, "Среда"); ДеньНачала.Вставить(4, "Четверг"); ДеньНачала.Вставить(5, "Пятница"); ДеньНачала.Вставить(6, "Суббота"); ДеньНачала.Вставить(7, "Воскресенье"); | |||
| 18
    
        Peshalkin 24.09.20✎ 13:46 | 
        Если человек найден необходимо произвести расчёт принимаемого протеина на месяц и вывести информацию через сообщить.
 Что необходимо выводить пользователю: 1. Общее количество принятого протеина в граммах. 2. Количество приемов в днях 3. День недели и количество приема с количеством протеина. (Например: 15 число (среда): 100гр.) | |||
| 19
    
        Peshalkin 24.09.20✎ 14:01 | 
        Проблема в том, что программа зацикливается из-за цикла Пока ДеньПервогоПриёма < КоличествоДнейВМесяце Цикл если его вписать выше,а если его оставить на том же месте, то просто не суммируется ДеньНачалаМесяца, он при выводе всех нужных данных, остаётся одинаковый
 Пример: 3 Число (Понедельник): 200 6 Число (Понедельник): 200 9 Число (Понедельник): 200 12 Число (Понедельник): 200 Вплоть до введённого в Реквизите(КоличествоДнейВМесяце), а должно быть - Пример: 3 Число (Понедельник): 200 6 Число (Четверг): 200 9 Число (Воскресенье): 100 12 Число (Среда): 200 | |||
| 20
    
        Ёпрст гуру 24.09.20✎ 14:18 | 
        (19) вот эта шляпа всё портит
 ДеньНачалаМесяца = ДеньНачалаМесяца + ЧастотаПриёма;/ | |||
| 21
    
        Ёпрст гуру 24.09.20✎ 14:18 | 
        ибо в ДеньНачалаМесяца у тебя должны быть числа от 1 до  7, насколько я понял из твоего описания     | |||
| 22
    
        Ёпрст гуру 24.09.20✎ 14:19 | 
        зачем ты потом к нему что-то прибавляешь, непонятно     | |||
| 23
    
        Peshalkin 24.09.20✎ 14:27 | 
        (22) так, если я не прибавлю к ней Частота приёма, у меня будет так же выводиться постоянно (Понедельник-вс), одно значение,Ю которое было в первом сообщении     | |||
| 24
    
        DTX 4th 24.09.20✎ 14:30 | 
        (23) 
 1. Какую величину пытаешь посчитать?) Если 1-7 - это дни недели, то что ты хочешь посчитать? 2. И для какой величины? Для даты? | |||
| 25
    
        Йохохо 24.09.20✎ 14:34 | 
        (23) тупо посчитай даты приема и выводи остаток по модулю 7, всё     | |||
| 26
    
        Йохохо 24.09.20✎ 14:36 | 
        модулю 7 + 1 по ISO8601     | |||
| 27
    
        Peshalkin 24.09.20✎ 14:36 | 
        (24) я уже пробовал делать ЧастотуПриёма в 5 дней и выводится всё отлично, но не могу в цикл запихнуть, расчитывалось всё вот
 3 Число (Понедельник): 200 6 Число (Четверг): 200 9 Число (Воскресенье): 100 12 Число (Среда): 200 День недели всегда отстаётся 1х1, из-за того, что цикл находится ниже - Если эл.Ключ = ДеньНачалаМесяца Тогда | |||
| 28
    
        МихаилМ 24.09.20✎ 14:55 | ||||
| 29
    
        Ёпрст гуру 24.09.20✎ 15:31 | 
        Ага.. его.. там она, а тут он..     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |