mirror of
https://github.com/netology-code/1c-homeworks.git
synced 2024-11-24 08:02:20 +02:00
89 lines
9.1 KiB
Markdown
89 lines
9.1 KiB
Markdown
# Задание к занятию "Циклы"
|
|
_Примерное время выполнения: 60 минут_
|
|
|
|
Все задачи обязательны к выполнению. Пожалуйста, присылайте на проверку все задачи сразу.
|
|
|
|
Любые вопросы по решению задач задавайте в чате учебной группы.
|
|
|
|
## Цель задания
|
|
|
|
1. Закрепить на практике приемы разработки алгоритмов с циклами
|
|
|
|
Решение задания научит вас создавать алгоритмы с повторяющимися частями. Это базовый навык, необходимый для решения домашних заданий в будущем и разработки реальных приложений.
|
|
|
|
## Чеклист готовности к домашнему заданию
|
|
|
|
- [ ] Установлена учебная платформа версии 8.3.20 или больше.
|
|
- [ ] Развернута информационная база с конфигурацией **УправлениеИТФирмой**, полученная по итогу выполнения [домашнего задания к занятию Условия](/homework-2-5.md).
|
|
|
|
## Инструкция к заданию
|
|
|
|
1. Решите описанные задачи в конфигураторе.
|
|
2. Протестируйте решение в пользовательском режиме.
|
|
3. Отправьте на проверку в личном кабинете Нетологии внешнюю обработку **ПодсчетЧислаДней** с решением задачи 1, внешнюю обработку **ОбработкаТекста** с решением задачи 2 и файл выгрузки информационной базы (.dt) с конфигурацией, содержащей решение по задаче 3. Файлы прикрепите в раздел "решение" в практическом задании.
|
|
|
|
## Задача 1 "Подсчет числа дней"
|
|
|
|
### Описание задачи
|
|
Вы хотите предоставить пользователю возможность рассчитывать сколько рабочих дней между указанными датами.
|
|
|
|
### Требования к результату
|
|
Внешняя обработка **ПодсчетЧислаДней** с двумя реквизитами и полями ввода, задающими начало и конец интервала, и кнопкой "Подсчитать", по нажатию на которую подсчитывается и выводится пользователю число рабочих и выходных дней в указанном интервале дат.
|
|
|
|
### Процесс выполнения
|
|
1. Создайте внешнюю обработку с именем, например, **ПодсчетЧислаДней**.
|
|
2. Добавьте в нее два реквизита типа Дата - например, **ДатаНач** и **ДатаКон** - и перетащите их на форму.
|
|
3. Добавьте команду **Подсчитать** и перетащите ее кнопкой на форму.
|
|
4. В обработчике команды:
|
|
* Объявите две переменных-счетчика числа рабочих и выходных дней.
|
|
* Обойдите в цикле все даты от начальной до конечной включительно.
|
|
* В зависимости от дня недели даты прибавьте единицу к одному из двух счетчиков.
|
|
* Выведите результаты вызовом **Сообщить()**, формируя строку с помощью **СтрШаблон()**.
|
|
|
|
## Задача 2 "Обработка текста"
|
|
|
|
### Описание задачи
|
|
Вы хотите реализовать механизм, который ищет во введенном тексте самое длинное и самое короткое слово.
|
|
|
|
### Требования к результату
|
|
Внешняя обработка **ОбработкаТекста** с реквизитом и многострочным полем ввода для текста и кнопкой "Найти", по нажатию на которую определяется и выводится пользователю самое длинное и самое короткое слово.
|
|
|
|
### Процесс выполнения
|
|
1. Создайте внешнюю обработку с именем, например, **ОбработкаТекста**.
|
|
2. Добавьте в нее реквизит типа **Строка** - например, **Текст** - и перетащите его на форму, сделав многострочным полем ввода.
|
|
3. Добавьте команду **НайтиСлова** и перетащите ее кнопкой на форму.
|
|
4. В обработчике команды:
|
|
* Объявите две переменных для самого длинного и самого короткого слова.
|
|
* Разделите текст на слова вызовом **СтрРазделить()**.
|
|
* Обойдите в цикле все слова.
|
|
* В зависимости от длины сохраните текущее слово как самое длинное или самое короткое.
|
|
* Выведите результаты вызовом **Сообщить()**, формируя строку с помощью **СтрШаблон()**.
|
|
|
|
## Задача 3 "Развитие проверки введенных данных"
|
|
|
|
### Описание задачи
|
|
Вы хотите дополнительно снизить вероятность ошибки при заполнении реквизитов ИНН и КПП в справочнике **Контрагенты**, проверяя состав строк.
|
|
|
|
### Требования к результату
|
|
Выгрузка информационной базы (.dt) с конфигурацией, в которой есть справочник **Контрагенты** с ИНН, КПП. В дополнение к проверке из предыдущего задания необходимо проверять, что строки состоят только из цифр.
|
|
|
|
### Процесс выполнения
|
|
1. Используйте конфигурацию **УправлениеИТФирмой** со справочником **Контрагенты**.
|
|
2. Дополните обработчик события **ОбработкаПроверкиЗаполнения** алгоритмом проверки символов, из которых состоят ИНН и КПП:
|
|
* Используйте цикл со счетчиком для перебора символов;
|
|
* Для получения очередного символа используйте функцию **Сред()**;
|
|
* Для проверки является ли символ цифрой заранее определите строку, состоящую только из цифр, и ищите в ней очередной символ с помощью функции **СтрНайти()**.
|
|
* При выявлении ошибок устанавливайте параметр обработчика **Отказ** в **Истина** и выводите разумное сообщение вызовом **Сообщить()**.
|
|
|
|
## Критерии оценки
|
|
|
|
Задание считается выполненным при соблюдении следующих условий:
|
|
1. Решение включает внешнюю обработку **ПодсчетЧислаДней**, внешнюю обработку **ОбработкаТекста** и выгрузку в формате dt с конфигурацией **УправлениеИТФирмой**;
|
|
2. Обработка **ПодсчетЧислаДней** позволяет рассчитать сколько будней и сколько выходных дней между введенными датами;
|
|
3. Обработка **ОбработкаТекста** позволяет найти во введенном тексте самое длинное и самое короткое слово;
|
|
4. В конфигурации **УправлениеИТФирмой** при записи справочника контрагенты состав строк в реквизитах ИНН и КПП.
|
|
|
|
## Подсказка:
|
|
|
|
Чтобы вам было проще понять, что в итоге должно получиться, мы подготовили подсказки: анимационные изображения в формате gif или картинки. Чтобы их увидеть, кликните по [ссылке](https://github.com/netology-code/1c-homeworks/blob/vy-new-format/Examples/homework-2-6-example.md)
|