Практические задачи с №11 по №10
• Задачи с 1 по 10 • с 11 по 20 •
Задача №11. Конкатенация (операция склеивания объектов линейной структуры, обычно строк) строк с учетом преобразования типов данных (на выходе надо получить строку вида «01.02.1980, Иванов, 1250 руб.»)
Сотрудник = "Иванов"; |
//Тип "Строка" |
ДатаРождения = '19800201'; |
//Тип "Дата" |
Оклад = 1250; |
//Тип "Число" |
Результат = Формат(ДатаРождения, "ДФ=dd.MM.yyyy") + ", Иванов, " + Оклад + " руб."; |
//Разбираем операцию:
//1. форматируем дату вида 01.02.1980 00:00:00 в строку вида "01.02.1980"
//2. прибавляем строку вида ", Иванов, "
//3. т.к. первое значение конкатенации у нас строка, то число 1250 преобразуется в строку и добавляется в текст
//4. прибавляем строку вида " руб."
|
Сообщить(Результат); |
//Метод 'Сообщить' выводит в интерфейс пользователя «01.02.1980, Иванов, 1250 руб.» |
|
Задача №12. Попытка вывести одновременно числовые и строковые значения в сообщении (правильное решение проблемы)
ТабельныйНомер = 280; |
//Тип "Число" |
Оклад = 400; |
//Тип "Число" |
ПроцентПремии = 14; |
//Тип "Число" |
РазмерПремии = Оклад*ПроцентПремии/100; |
|
Сообщить(ТабельныйНомер + " - премия = " + РазмерПремии); |
//Выдаст ошибку "Преобразование значения к типу Число не может быть выполнено"
//потому, что первое значение в строке "Число", а второе - "Строка". Преобразовать "Строку" в "Число" невозможно
//если только в строке не содержится чистое число, типа ЧислоПлюсЧислоСтрокой = 2 + "2", результат 4 |
Сообщить( "" + ТабельныйНомер + " - премия = " + РазмерПремии) |
//Решение проблемы - добавляем в начало строки пустую строку "" и теперь преобразование второго и последующих значений "Число" в "Строку" возможно |
|
Задача №13. Находим количество дней между датами
НачалоМесяца = '20240501'; |
//Формат '20240501' используется во встроенном языке 1С, означает 01.05.2024 00:00:00 |
КонецМесяца = '20240531'; |
//Формат '20240501' используется во встроенном языке 1С, означает 31.05.2024 00:00:00 |
КоличествоДней = (КонецМесяца - НачалоМесяца)/86400 + 1; |
//31.05.2024 00:00:00 - 01.05.2024 00:00:00 = 2592000 секунд
//2592000 секунд/86400 секунд = 30 дней. Добавляем один день. |
Сообщить(КоличествоДней); |
//31 день |
|
|
|
Задача №14. Количество дней с начала года
НачалоГода = '20240101'; |
//Формат '20240101' используется во встроенном языке 1С, означает 01.01.2024 00:00:00 |
ТекДата = ТекущаяДата(); |
//Текущая дата() - сегодняшний день |
КоличествоДнейСНачалаГода = Цел((ТекДата - НачалоГода)/86400 + 1); |
//"Цел" - вычисляет целую часть результата разности, полностью отсекая дробную часть,
//т.к. разность дат дает остаток в виде часов, минут секунд текущего дня. Добавляем один день. |
Сообщить(КоличествоДнейСНачалаГода); |
//164 дня |
|
Задача №15. Исправить ошибки и написать правильный код
Перем КодВалюты;
Перем 1Сентября;
Перем ПервоеСентября;
Перем _Организация;
|
//Правильно
//Неправильно - имя переменной должно начинаться либо с буквы, либо с символа нижнего подчеркивания "_"
//Правильно
//Правильно |
|
Задача №16. Найти ошибку в коде
КодВалюты = 840; |
|
Если КодВалюты = 840 Тогда
Валюта = "USD"; |
|
КонецЕсли |
//Нет в конце точки с запятой ";" |
Сообщить(КодВалюты); |
//USD |
|
|
|
Задача №17. Вывести даты по дням. Цикл не работает - исправить
Цикл с ошибкой
ТекДата = '20240612'; |
|
КонМесяца = '20240630'; |
|
Пока ТекДата <= КонМесяца Цикл
Сообщить(ТекДата);
КонецЦикла; |
//Цикл будет бесконечным, т.к. "ТекДата" будет всегда меньше "КонМесяца" |
Цикл без ошибки
ТекДата = '20240612'; |
|
КонМесяца = '20240630'; |
|
Пока ТекДата <= КонМесяца Цикл
Сообщить(ТекДата);
ТекДата = ТекДата + 86400;
КонецЦикла; |
//Добавляем в цикл наращивание по 1 дню (86400 секунд - это одни сутки)
//тогда условие "Пока" будет выполнятся |
|
Задача №18. Цикл не работает - исправить
СуммаЧисел = 0; |
|
Неправильно
Для Счетчик По 200 Цикл
Правильно
Для Счетчик = 1 По 200 Цикл
СуммаЧисел = СуммаЧисел + Счетчик;
КонецЦикла; |
//Пропущено начальное значение "Счетчик"
//Добавили начальное значение "Счетчик" |
Сообщить(СуммаЧисел); |
//20100 |
|
|