Имя: Пароль:
1C
 
Проблемы с циклом
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
(0)
на ис Ваша тема https://forum.infostart.ru/forum9/topic248355/
?
29 Ёпрст
 
24.09.20
15:31
Ага.. его.. там она, а тут он..