You've already forked 1c-homeworks
							
							
				mirror of
				https://github.com/netology-code/1c-homeworks.git
				synced 2025-10-30 23:43:50 +02:00 
			
		
		
		
	Update homework-2-6.md
This commit is contained in:
		
				
					committed by
					
						 GitHub
						GitHub
					
				
			
			
				
	
			
			
			
						parent
						
							6c9a8a6fb4
						
					
				
				
					commit
					d9b0a15168
				
			| @@ -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) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user