1
0
mirror of https://github.com/netology-code/1c-homeworks.git synced 2024-11-16 07:10:14 +02:00

Update homework-2-6.md

This commit is contained in:
AndreevaAnastasia 2023-05-24 16:28:58 +05:00 committed by GitHub
parent 6c9a8a6fb4
commit d9b0a15168
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,39 +1,88 @@
# Задание к занятию "Циклы"
_Примерное время выполнения: 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)