1с Массивы/циклы

1. novobranec 15.09.20 04:22 Сейчас в теме
Добрый день, возник вопрос по задаче, уже 2й день ломаю голову, не могу понять, как реализовать.
нам нужно 21 день добавить в массив, каждый 3й день имеет - да.

Пример:
1 день, Понедельник - нет
2 день, Вторник - нет
3 день, Среда - да
4 день, Четверг - нет
5 день, Пятница - нет
6 день, Суббота - да
и т.д, нужное кол-во 21 день.
помогите пожалуйста
По теме из базы знаний
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
3. novobranec 15.09.20 04:54 Сейчас в теме
(1)Если никого не затрудник, то напишите код, как это всё реализововаться должно пожалуйста, я не особо понимаю написание самого кода
2. areavel 15.09.20 04:44 Сейчас в теме
Число дня дели на 3, если ЦЕЛ(ЧислоДня/3) = ЧислоДня/3 тогда ДА
9. FatPanzer 15.09.20 09:01 Сейчас в теме
(2) А если надо метить начиная со 02.09, например? А если в массиве есть переход между месяцами, где 31 день?
Ваш вариант - совсем не вариант.
В задаче нет установки по поводу того, что считается точкой отсчета для "каждый третий".
ipoloskov; +1 Ответить
4. PerlAmutor 129 15.09.20 06:36 Сейчас в теме

&НаКлиенте
Процедура Команда1(Команда)

    Дни       = 21;
    Результат = Новый Массив(Дни, 2);
    НовыйДень = НачалоМесяца(ТекущаяДата())-Дата(1,1,1);

    Для Инд = 1 По Дни Цикл

        Результат[Инд - 1][0] = Дата(1,1,1) + НовыйДень;
        ТретийДень            = (Инд % 3) = 0;

        Результат[Инд - 1][1] = ТретийДень;

        НовыйДень = НовыйДень + 86400;

    КонецЦикла;

    Для Каждого ДанныеДня Из Результат Цикл

        Сообщить(СтрШаблон("%1 : %2", Формат(ДанныеДня[0], "ДФ=dd.MM.yyyy"), ДанныеДня[1]));

    КонецЦикла;

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

Показать
Прикрепленные файлы:
КаждыйТретийДень.epf
ipoloskov; novobranec; +2 Ответить
5. comptr 30 15.09.20 07:21 Сейчас в теме
Что должно быть элементом массива? Строка Да/Нет ? Булево Истина/Ложь ? Или может быть структура с полями "День" - строка, "Трейтий" - булево?
7. novobranec 15.09.20 07:53 Сейчас в теме
(5)все данные должны хранится в массиве
8. comptr 30 15.09.20 08:00 Сейчас в теме
(7) что значит "Все"? В каком виде? Какой тип данных у элемента массива? Строка, Булево, Число, Структура?
Прежде чем писать код, надо понять задачу.
10. FatPanzer 15.09.20 09:05 Сейчас в теме
(7) В одной "строчке" массива может хранится либо "Номер дня" (1,2,3,4...), либо "День недели" (понедельник, вторник...), либо пометка (да, нет).
Или речь все-таки не о массиве? Покажите задачу целиком так, как вам её задали. А не так, как вы её себе придумали.
11. novobranec 16.09.20 10:37 Сейчас в теме
(10)Написать программу. Программа должна считать количество протеина необходимое на период (ВсегоДней).

Во-первых, расчёт всегда начинается с понедельника. Это первый день.

Во-вторых, я принимаю протеин каждый третий день (значение хранить в переменной ЧастотаПриема, значение может меняться):
1 день, понедельник — нет,
2 день, вторник — нет,
3 день, среда — да,
4 день, четверг — нет,
5 день, пятница — нет,
6 день, суббота — да,
7 день, воскресенье — нет,
8 день, понедельник — нет,
9 день, вторник — да
и так далее.

В-третьих, известно, сколько протеина я съедаю в будние(ПротеинВБудни) и сколько в выходные дни (ПротеинВВыходные).

В-четвёртых, период задаётся целым числом, от одного до бесконечности (хотя планы дальше чем на месяц я обычно не строю).

Программа должна:
1. Хранить всю информацию по приему в массиве (с первого по последний день)
2. Сообщить количество необходимого протеина понедельно
(Неделя 1 – 500гр
Неделя 2 – 700гр
Неделя 3 – 600гр)
3. Сообщить сколько всего потребуется протеина. (Всего – 1800гр)
12. FatPanzer 16.09.20 10:53 Сейчас в теме
13. novobranec 16.09.20 10:55 Сейчас в теме
(12)да, всё верно, задание должно быть выполнено на платформе 1с
14. FatPanzer 16.09.20 11:05 Сейчас в теме
(13)
1. Так вот, массивы информацию не хранят. Информация хранится в БД в виде специализированных таблиц - справочников, документов, регистров и прочая. Массивы - это переменные наборы информации для работы в программном коде (в оперативной памяти).
2. ВСЮ информацию хранить в одном месте у вас не получится - у вас как минимум есть константы, которые хранить в массиве нет смысла - периодичность приема, два количества приема, глубина расчета (период приема)
3. Что такое ПротеинВБудние - это количество за один будний день, или за все будние дни?

Ну а теперь самое главное - покажите, что вы пытаетесь сделать и что именно у вас не получается? На каком этапе остановились?
15. RustamZz 16.09.20 11:27 Сейчас в теме
(14) Так из постановки ясно что это студенту дали задание, а константы, документы, регистры и прочая они еще не изучали. Вместо того что бы попробовать разобраться самому нашел 1С форум и выложил сюда в надежде, что сейчас ему тут код напишут и он таким образом станет программистом.
16. FatPanzer 16.09.20 11:33 Сейчас в теме
(15) Да я это с самого первого поста понял еще когда комментариев не было ))) Просто хочу мягко опустить человека на землю.
Если он собирается быть программистом, он пытается, у него что-то не получается и он обращается за помощью с опытным коллегам - это одно дело.
А если ему надо просто сдать лабу и программистом он быть не желает - чувак, это тебе на форумы, где лабы за деньги делают. Это не сюда.
17. novobranec 16.09.20 11:33 Сейчас в теме
(14) не совсем понимаю, как сделать так, чтобы выводило количество каждую неделю, выводит общее кол-во, а вот за неделю не могу понять как сделать
Понедельник - нет
Вторник - Нет
Среда - Да ( 100)
Четверг - Нет
Пятница - Нет
Суббота - да(200)
Воскресенье - нет
Понедельник - нет
Вторник - да(100)
и т.д вплоть до 21 дня
Прикрепленные файлы:
18. FatPanzer 16.09.20 11:38 Сейчас в теме
(17) Нужен еще один счетчик "ВсегоЗаНеделю". И счетчик недель нужен. Как только счетчик дней = 7, то сообщаем результат за прошедшую неделю, обнуляем его и начинаем считать вторую неделю.

Вот только массивов в вашем решении нет.
19. novobranec 16.09.20 11:46 Сейчас в теме
(18)Если честно сказать, то понял, что ничего не понял .-.
20. FatPanzer 16.09.20 11:55 Сейчас в теме
(19) У вас уже есть один счетчик "Всего", куда вы суммируете общее количество (Всего = Всего + Будни и т.д.). А вам нужен еще один счетчик, в котором вы будете накапливать еженедельное количество (ВсегоЗаНеделю = ВсегоЗаНеделю + Будни).
Как только вы посчитали воскресенье (неделя вся рассчитана) - необходимо вывести значение этого еженедельного счетчика, после чего обнулить его и продолжить считать с понедельника.
То есть общий счетчик калорий у вас постоянный, не обнуляется и сообщается только после всего просчета.
А недельный счетчик сообщается раз в неделю, после чего обнуляется.
user1841192; novobranec; +2 Ответить
21. novobranec 16.09.20 11:59 Сейчас в теме
(20)Понял, спасибо большое
22. novobranec 16.09.20 13:40 Сейчас в теме
23. novobranec 16.09.20 14:13 Сейчас в теме
Получилось сделать только так, не могу реализовать так, чтобы эти 3 цикла, были сделаны в 1
(20)
Прикрепленные файлы:
24. -AI- 16.09.20 14:19 Сейчас в теме
(23) нельзя внутри цикла менять переменную являющуюся счётчиком цикла "для от до"

PS и где здесь массивы?
25. Release 16.09.20 14:42 Сейчас в теме
(24) в общем-то можно, но это может сломать мозг и испортить нервы следующему, кто это будет сопровождать.

(23) Что-то вроде этого:
ВсегоДней = 21;

Для День = 1 По ВсегоДней Цикл
	НомерНедели	= Цел(День - 1) / 7) + 1;
	НомерДня	= День - 7 * (НомерНедели - 1);
	
	Если НомерДня > 5 Тогда
		Выражение = "ПротеинВНеделю" + НомерНедели + " = ПротеинВНеделю" + НомерНедели + " + ПротеинВВвыходные;";
		
		Выполнить(Выражение);
	Иначе
		Выражение = "ПротеинВНеделю" + НомерНедели + " = ПротеинВНеделю" + НомерНедели + " + ПротеинВБудни;";
		
		Выполнить(Выражение);
	КонецЕсли;
КонецЦикла;
Показать
novobranec; +1 Ответить
Оставьте свое сообщение
Вакансии
Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)

Программист 1С
Москва
зарплата от 250 000 руб.
Полный день

Программист 1C
Волгоград
зарплата от 200 000 руб.
Полный день

Аналитик
Санкт-Петербург
зарплата от 200 000 руб. до 250 000 руб.
Полный день