Загрузка данных
Задачи 3–8. Полные коды
---
Задача 3. Вывести каждый день месяца по введённой дате
Условие: пользователь вводит дату, вывести все дни её месяца.
```1С
ДатаВвед = Дата(1, 1, 1);
ВвестиДату(ДатаВвед, "Введите дату", ЧастьДаты.Дата);
ГодВвед = Год(ДатаВвед);
МесяцВвед = Месяц(ДатаВвед);
ДнейВМесяце = День(КонецМесяца(ДатаВвед));
Для Д = 1 По ДнейВМесяце Цикл
ТекДата = Дата(ГодВвед, МесяцВвед, Д);
Сообщить(Формат(ТекДата, "ДФ=""дд.ММ.гггг"""));
КонецЦикла;
```
Пример для даты 15.04.2012:
```
01.04.2012
02.04.2012
...
30.04.2012
```
---
Задача 4. Названия дней недели для недели введённой даты
Условие: вывести все 7 дней недели (Пн–Вс) с датами — той недели, куда попадает введённая дата.
```1С
ДатаВвед = Дата(1, 1, 1);
ВвестиДату(ДатаВвед, "Введите дату", ЧастьДаты.Дата);
Понедельник = НачалоНедели(ДатаВвед);
Для Сдвиг = 0 По 6 Цикл
ТекДата = Понедельник + Сдвиг * 86400;
НомерДня = ДеньНедели(ТекДата);
Если НомерДня = 1 Тогда
Название = "Понедельник";
ИначеЕсли НомерДня = 2 Тогда
Название = "Вторник";
ИначеЕсли НомерДня = 3 Тогда
Название = "Среда";
ИначеЕсли НомерДня = 4 Тогда
Название = "Четверг";
ИначеЕсли НомерДня = 5 Тогда
Название = "Пятница";
ИначеЕсли НомерДня = 6 Тогда
Название = "Суббота";
Иначе
Название = "Воскресенье";
КонецЕсли;
Сообщить(Формат(ТекДата, "ДФ=""дд.ММ.гггг""") + " — " + Название);
КонецЦикла;
```
Пример для даты 15.04.2012 (воскресенье):
```
09.04.2012 — Понедельник
10.04.2012 — Вторник
11.04.2012 — Среда
12.04.2012 — Четверг
13.04.2012 — Пятница
14.04.2012 — Суббота
15.04.2012 — Воскресенье
```
---
Задача 5. Все дни между двумя датами, кроме сб и вс
Условие: две даты, первая должна быть раньше второй. Вывести все дни, кроме субботы и воскресенья.
```1С
Дата1 = Дата(1, 1, 1);
Дата2 = Дата(1, 1, 1);
ВвестиДату(Дата1, "Введите первую дату", ЧастьДаты.Дата);
ВвестиДату(Дата2, "Введите вторую дату", ЧастьДаты.Дата);
Если Дата1 > Дата2 Тогда
Сообщить("Ошибка: первая дата должна быть раньше второй");
Иначе
Дней = (НачалоДня(Дата2) - НачалоДня(Дата1)) / 86400;
Для Сдвиг = 0 По Дней Цикл
ТекДата = Дата1 + Сдвиг * 86400;
НомерДня = ДеньНедели(ТекДата);
// 6 — суббота, 7 — воскресенье
Если НомерДня = 6 ИЛИ НомерДня = 7 Тогда
Продолжить;
КонецЕсли;
Сообщить(Формат(ТекДата, "ДФ=""дд.ММ.гггг"""));
КонецЦикла;
КонецЕсли;
```
Пример для 13.04.2012 – 18.04.2012:
```
13.04.2012
16.04.2012
17.04.2012
18.04.2012
```
(14 и 15 — сб и вс — пропущены)
---
Задача 6. Вывести 12 месяцев через Формат
Условие: вывести названия всех 12 месяцев, используя цикл и Формат.
```1С
Для М = 1 По 12 Цикл
ДемоДата = Дата(2026, М, 1);
Сообщить(М + " — " + Формат(ДемоДата, "ДФ=""ММММ"""));
КонецЦикла;
```
Результат:
```
1 — январь
2 — февраль
3 — март
4 — апрель
5 — май
6 — июнь
7 — июль
8 — август
9 — сентябрь
10 — октябрь
11 — ноябрь
12 — декабрь
```
---
Задача 7. Многострочная строка → вывод построчно
Условие: пользователь вводит многострочный текст, вывести каждую строку отдельно.
```1С
Текст = "";
ВвестиСтроку(Текст, "Введите многострочный текст", 0, Истина);
КолСтрок = СтрЧислоСтрок(Текст);
Для Сч = 1 По КолСтрок Цикл
Стр = СтрПолучитьСтроку(Текст, Сч);
Сообщить("Строка " + Сч + ": " + Стр);
КонецЦикла;
```
Пример ввода:
```
Первая строка
Вторая строка
Третья строка
```
Результат:
```
Строка 1: Первая строка
Строка 2: Вторая строка
Строка 3: Третья строка
```
---
Задача 8. Предложение → вывод каждого слова отдельно
Условие: пользователь вводит предложение, вывести каждое слово отдельно.
```1С
Предложение = "";
ВвестиСтроку(Предложение, "Введите предложение", 200);
Предложение = СокрЛП(Предложение);
// Убираем двойные пробелы (дважды, для тройных и т.д.)
Предложение = СтрЗаменить(Предложение, " ", " ");
Предложение = СтрЗаменить(Предложение, " ", " ");
// Заменяем пробелы на переносы строк
Предложение = СтрЗаменить(Предложение, " ", Символы.ПС);
КолСлов = СтрЧислоСтрок(Предложение);
Для Сч = 1 По КолСлов Цикл
Слово = СокрЛП(СтрПолучитьСтроку(Предложение, Сч));
Если НЕ ПустаяСтрока(Слово) Тогда
Сообщить("Слово " + Сч + ": " + Слово);
КонецЕсли;
КонецЦикла;
```
Пример ввода:
```
Сегодня хорошая погода
```
Результат:
```
Слово 1: Сегодня
Слово 2: хорошая
Слово 3: погода
```
---
Ключевые приёмы в задачах 3–8
Приём Где применяется
Для … По … Цикл Все задачи
Дата + N * 86400 — сдвиг на N дней Задачи 4, 5
ДеньНедели(Дата) — номер дня недели (1=Пн, 7=Вс) Задачи 4, 5
НачалоНедели(Дата) — понедельник недели Задача 4
Продолжить — пропуск итерации Задача 5
Формат(Дата, "ДФ=""ММММ""") — название месяца Задача 6
СтрЧислоСтрок + СтрПолучитьСтроку Задачи 7, 8
СтрЗаменить(…, " ", Символы.ПС) — разбить на слова Задача 8
Важные числа
Число Смысл
86400 секунд в сутках (1 день при прибавлении к дате)
1 (в ДеньНедели) понедельник
6 суббота
7 воскресенье
0 в ВвестиСтроку(…, 0, Истина) без ограничения длины + многострочный ввод