author Уроки 1С - решения практических задач

Практические задачи с №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

Flag Counter