Цель статьи
Вы когда-нибудь проходили собеседование, на котором дают разного рода задачи с проверкой результата? Простой код, результат которого нужно объяснить. Мое мнение таково, что подобные задачи вряд ли могут дать полную картину о компетенциях разработчика, поэтому собеседование лучше проводить другими путями.
Но, подобные задачки могут быть интересными головоломками и в какой-то мере показать ту боль, что прошел разработчик за годы работы с платформой. А там, где может быть что-то интересное, почему бы не поразбираться.
В одной из предыдущих статей "Баг или фича? Неожиданное поведение платформы" мы коснулись нескольких особенностей в поведении платформы 1С. Баги это или фичи, трудно сказать. Решать это Вам. Сегодня мы рассмотрим 30 простых фрагментов кода, а Вам нужно будет сказать какой результат выполнения будет для каждой из них.
Нет, это не проверка Ваших знаний, компетенций, навыков и целеустремленности. Цель публикации - сбор интересных и не очень задач, над которыми было бы интересно посидеть, проверить на сколько предсказуемо работает платформа 1С с Вашей точки зрения. Можно, конечно, эти задачи показывать и на собеседовании, но лучше обсудите с кандидатом предыдущий опыт работы. Так будет намного содержательней.
А все что ниже - это больше для веселья!
Среда выполнения
Весь продемонстрированный далее код выполнялся на платформе 1С версии 8.3.13.1690 в клиент-серверном варианте работы, управляемые формы. Никаких особых настроек не выполнялось. Обычно код задачи делится на клиентский и серверный. Можете вставить фрагмент в управляемую форму и разбить процедуры и функции по контексту выполнения с помощью директив "&НаКлиенте" и "&НаСервере".
Думаю, что поведение кода в задачах будет одинаковым как для файловой, так и для клиент-серверной базы, поэтому если сервера у Вас под рукой нет, то это не повод не попробовать эти задачи решить. Плюс ко всему, сама версия платформы не должна стать причиной разного поведения, даже если у Вас старая добрая версия 8.3.5! В последнем случае только некоторые из задач не могут быть решены (там где работа с потоками, например).
В общем, ничего особенного. Просто берете и делаете :)
Задачи
Хватит болтать, пора действовать!
Сложность задач не зависит от раздела и номера, все перемешано. Сделано это специально, чтобы у Вас не было ожиданий сложности. Так ведь интересней!
Рекомендую сначала прорешать задачу без конфигуратора с кратким объяснением своему решению, а после уже проверить себя, отдав код на выполнение платформе 1С. Выкладывать результаты для всех или нет - дело только Ваше. Но, думаю, что было бы интересно поднять обсуждение.
Первая порция задач.
Что выведет этот код? И выполнится ли?
&НаКлиенте
Процедура Задача1(Команда)
РезультатАлгоритма = Задача1НаСервере();
Сообщить(РезультатАлгоритма);
КонецПроцедуры
&НаСервере
Функция Задача1НаСервере()
Возврат ((Новый Структура) = (Новый Структура));
КонецФункции
Что выведет этот код? И выполнится ли?
&НаКлиенте
Процедура Задача2(Команда)
РезультатАлгоритма = Задача2НаСервере();
Сообщить(РезультатАлгоритма);
КонецПроцедуры
&НаСервере
Функция Задача2НаСервере()
Возврат ((Новый Массив(0)) = (Новый Массив(0)));
КонецФункции
№3: Сравнение незаполненных значений
Что выведет этот код? И выполнится ли?
&НаКлиенте
Процедура Задача3(Команда)
РезультатАлгоритма = Задача3НаСервере();
Сообщить(РезультатАлгоритма);
КонецПроцедуры
&НаСервере
Функция Задача3НаСервере()
Возврат (Null = Неопределено);
КонецФункции
Что выведет этот код? И выполнится ли?
&НаКлиенте
Процедура Задача4(Команда)
Задача4НаСервере();
КонецПроцедуры
&НаСервере
Функция Задача4НаСервере()
Возврат Сравнение1()
ИЛИ Сравнение2()
ИЛИ Сравнение3()
ИЛИ Сравнение4()
ИЛИ Сравнение5();
КонецФункции
Функция Сравнение1()
Сообщить("Сравнение 1");
Возврат Ложь;
КонецФункции
Функция Сравнение2()
Сообщить("Сравнение 2");
Возврат Ложь;
КонецФункции
Функция Сравнение3()
Сообщить("Сравнение 3");
Возврат Истина;
КонецФункции
Функция Сравнение4()
Сообщить("Сравнение 4");
Возврат Ложь;
КонецФункции
Функция Сравнение5()
Сообщить("Сравнение 5");
Возврат Истина;
КонецФункции
Что выведет этот код? И выполнится ли?
&НаКлиенте
Процедура Задача5(Команда)
Задача5НаСервере();
КонецПроцедуры
&НаСервере
Функция Задача5НаСервере()
Возврат Сравнение1()
И Сравнение2()
И Сравнение3()
И Сравнение4()
И Сравнение5();
КонецФункции
Функция Сравнение1()
Сообщить("Сравнение 1");
Возврат Ложь;
КонецФункции
Функция Сравнение2()
Сообщить("Сравнение 2");
Возврат Ложь;
КонецФункции
Функция Сравнение3()
Сообщить("Сравнение 3");
Возврат Истина;
КонецФункции
Функция Сравнение4()
Сообщить("Сравнение 4");
Возврат Ложь;
КонецФункции
Функция Сравнение5()
Сообщить("Сравнение 5");
Возврат Истина;
КонецФункции
№6: Обычная передача структуры
Что выведет этот код? И выполнится ли?
&НаКлиенте
Процедура Задача6(Команда)
СтруктураДанных = Новый Структура;
СтруктураДанных.Вставить("Значение", 1);
Задача6НаСервере(СтруктураДанных);
Сообщить(СтруктураДанных.Значение);
КонецПроцедуры
&НаСервере
Процедура Задача6НаСервере(СтруктураДанных)
СтруктураДанных.Значение = 100;
КонецПроцедуры
№7: Передача значения фиксированной структуры
Что выведет этот код? И выполнится ли?
&НаКлиенте
Процедура Задача7(Команда)
СтруктураДанных = Новый Структура;
СтруктураДанных.Вставить("Значение", 1);
ФиксированнаяСтруктураДанных = Новый ФиксированнаяСтруктура(СтруктураДанных);
Задача7НаСервере(ФиксированнаяСтруктураДанных.Значение);
Сообщить(СтруктураДанных.Значение);
КонецПроцедуры
&НаСервере
Процедура Задача7НаСервере(ПереданноеЗначение)
ПереданноеЗначение = 123456;
КонецПроцедуры
№8: Передача фиксированной структуры
Что выведет этот код? И выполнится ли?
&НаКлиенте
Процедура Задача8(Команда)
СтруктураДанных = Новый Структура;
СтруктураДанных.Вставить("Значение", 1);
ФиксированнаяСтруктураДанных = Новый ФиксированнаяСтруктура(СтруктураДанных);
Задача8НаСервере(ФиксированнаяСтруктураДанных);
Сообщить(ФиксированнаяСтруктураДанных.Значение);
КонецПроцедуры
&НаСервере
Процедура Задача8НаСервере(ФиксированнаяСтруктураДанных)
СтруктураДанных = Новый Структура;
СтруктураДанных.Вставить("Значение", 123);
ФиксированнаяСтруктураДанных = Новый ФиксированнаяСтруктура(СтруктураДанных);
КонецПроцедуры
Что выведет этот код? И выполнится ли?
&НаКлиенте
Процедура Задача9(Команда)
Задача9НаСервере();
КонецПроцедуры
&НаСервере
Процедура Задача9НаСервере()
ТекущаяДатаНаСервере = ТекущаяДатаСеанса();
ИзмененнаяДатаНаСервере = ТекущаяДатаНаСервере + 0.001;
ДатыРавны = (ТекущаяДатаНаСервере = ИзмененнаяДатаНаСервере);
Сообщить(ДатыРавны);
КонецПроцедуры
№10: Еще одно сравнение дат
Что выведет этот код? И выполнится ли?
&НаКлиенте
Процедура Задача10(Команда)
Задача10НаСервере();
КонецПроцедуры
&НаСервере
Процедура Задача10НаСервере()
ТекущаяДатаНаСервере = ТекущаяДатаСеанса();
ИзмененнаяДатаНаСервере = ТекущаяДатаНаСервере + 0.001;
ДатыРавны = (Строка(ТекущаяДатаНаСервере) = Строка(ИзмененнаяДатаНаСервере));
Сообщить(ДатыРавны);
КонецПроцедуры
На этом первая порция задач закончена. Выпейте крепкого чая и продолжим.
Вторая порция задач.
№11: Попытка в транзакции
Что выведет этот код? И выполнится ли?
&НаКлиенте
Процедура Задача11(Команда)
Задача11НаСервере();
КонецПроцедуры
&НаСервере
Процедура Задача11НаСервере()
НачатьТранзакцию();
Попытка
ХранилищеОбщихНастроек.Сохранить("МоеЗначение", "МойКлюч", Неопределено);
ВызватьИсключение "Ты не пройдешь!";
ЗафиксироватьТранзакцию();
Исключение
Если ТранзакцияАктивна() Тогда
ОтменитьТранзакцию();
КонецЕсли;
КонецПопытки;
ЗначениеИзХранилища = ХранилищеОбщихНастроек.Загрузить("МоеЗначение", "МойКлюч");
Сообщить(ЗначениеИзХранилища);
КонецПроцедуры
№12: Запутанная попытка в транзакции
Что выведет этот код? И выполнится ли?
&НаКлиенте
Процедура Задача12(Команда)
Задача12НаСервере();
КонецПроцедуры
&НаСервере
Процедура Задача12НаСервере()
ПроверочноеЗначение = Неопределено;
НачатьТранзакцию();
Попытка
ХранилищеОбщихНастроек.Сохранить("МоеЗначение", "МойКлюч", Неопределено);
ВызватьИсключение "Ты не пройдешь!";
ЗафиксироватьТранзакцию();
Исключение
ХранилищеОбщихНастроек.Сохранить("МоеЗначениеПроверочное", "МойКлючПроверочное", 110011);
ПроверочноеЗначение = ХранилищеОбщихНастроек.Загрузить("МоеЗначениеПроверочное", "МойКлючПроверочное");
Если ТранзакцияАктивна() Тогда
ОтменитьТранзакцию();
КонецЕсли;
КонецПопытки;
ЗначениеИзХранилища = ХранилищеОбщихНастроек.Загрузить("МоеЗначение", "МойКлюч");
Сообщить(ПроверочноеЗначение);
КонецПроцедуры
№13: Небольшое сравнение чисел
Что выведет этот код? И выполнится ли?
&НаКлиенте
Процедура Задача13(Команда)
Задача13НаСервере();
КонецПроцедуры
&НаСервере
Процедура Задача13НаСервере()
ЧислоПроверка = 0.000102410434234235348573456378465353465;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| &ЧислоПроверка КАК ЧислоПроверка
|ПОМЕСТИТЬ ВТ
|;
|
|ВЫБРАТЬ
| ВТ.ЧислоПроверка КАК ЧислоПроверка
|ИЗ
| ВТ КАК ВТ";
Запрос.УстановитьПараметр("ЧислоПроверка", ЧислоПроверка);
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
ЧислаРавны = Выборка.ЧислоПроверка = ЧислоПроверка;
Сообщить("ЧислаРавны: " + ЧислаРавны);
КонецПроцедуры
Что выведет этот код? И выполнится ли?
&НаКлиенте
Процедура Задача14(Команда)
Задача14НаСервере();
КонецПроцедуры
&НаСервере
Процедура Задача14НаСервере()
СтрокиРавны = ("Привет" = "ПРИВЕТ");
Сообщить(СтрокиРавны);
КонецПроцедуры
№15: Еще одно сравнение строк
Что выведет этот код? И выполнится ли?
&НаКлиенте
Процедура Задача15(Команда)
Задача15НаСервере();
КонецПроцедуры
&НаСервере
Процедура Задача15НаСервере()
СтрокиРавны = ("Привeт" = "Привет");
Сообщить(СтрокиРавны);
КонецПроцедуры
Что выведет этот код? И выполнится ли?
&НаКлиенте
Процедура Задача16(Команда)
Задача16НаСервере();
КонецПроцедуры
&НаСервере
Процедура Задача16НаСервере(НомерВызова = 0)
НомерВызова = НомерВызова + 1;
Сообщить(НомерВызова);
Задача16НаСервере(НомерВызова)
КонецПроцедуры
№17: Поиск в таблице значений
Что выведет этот код? И выполнится ли?
&НаКлиенте
Процедура Задача17(Команда)
Задача17НаСервере();
КонецПроцедуры
&НаСервере
Процедура Задача17НаСервере()
ТаблицаДанных = Новый ТаблицаЗначений;
ТаблицаДанных.Колонки.Добавить("ЗначениеПоиска");
ТаблицаДанных.Колонки.Добавить("Значение");
Запись = ТаблицаДанных.Добавить();
Запись.ЗначениеПоиска = "ЗначениеR39;поиска";
Запись.Значение = 100;
НайденноеЗначение = 0;
ПоискЗаписи = ТаблицаДанных.НайтиСтроки(Новый Структура("ЗначениеПоиска", "Значение поиска"));
Если ПоискЗаписи.Количество() > 0 Тогда
НайденноеЗначение = ПоискЗаписи.Получить(0).Значение;
Иначе
НайденноеЗначение = 0;
КонецЕсли;
Сообщить(НайденноеЗначение);
КонецПроцедуры
№18: Работа с потоками (на самом деле нет)
Что выведет этот код? И выполнится ли?
&НаКлиенте
Процедура Задача18(Команда)
Задача18НаСервере();
КонецПроцедуры
&НаСервере
Процедура Задача18НаСервере()
МассивЗначений = Новый Массив;
МассивЗначений.Добавить(0);
МассивЗначений.Добавить(1);
МассивЗначений.Добавить(2);
МассивЗначений.Добавить(3);
МассивЗначений.Добавить(4);
МассивЗначений.Добавить(5);
ПотокВПамяти = Новый ПотокВПамяти();
ЗаписьДанных = Новый ЗаписьДанных(ПотокВПамяти);
Для Каждого ЭлементМассива Из МассивЗначений Цикл
ЗаписьДанных.ЗаписатьЦелое64(ЭлементМассива);
КонецЦикла;
ЗаписьДанных.Закрыть();
МассивКакДвоичныеДанные = ПотокВПамяти.ЗакрытьИПолучитьДвоичныеДанные();
ВременныйФайл = ПолучитьИмяВременногоФайла("tmp");
МассивКакДвоичныеДанные.Записать(ВременныйФайл);
ТекстовыйДокумент = Новый ТекстовыйДокумент;
ТекстовыйДокумент.Прочитать(ВременныйФайл);
ВесьТекст = ТекстовыйДокумент.ПолучитьТекст();
Сообщить(ВесьТекст);
КонецПроцедуры
Что выведет этот код? И выполнится ли? (Только по Windows)
&НаКлиенте
Процедура Задача19(Команда)
WshShell = Новый COMОбъект("WScript.Shell");
WshShell.Run("notepad");
Задача19НаСервере(WshShell);
Сообщить("Ура, заработало!");
КонецПроцедуры
&НаСервере
Процедура Задача19НаСервере(WshShell)
WshShell.Run("notepad");
Сообщить("Привет с сервера!");
КонецПроцедуры
Что выведет этот код? И выполнится ли?
&НаКлиенте
Процедура Задача20(Команда)
Задача20НаСервере();
КонецПроцедуры
&НаСервере
Процедура Задача20НаСервере()
WshShell = Новый COMОбъект("WScript.Shell");
WshShell.Run("notepad");
АдресВХранилище = ПоместитьВоВременноеХранилище(WshShell, УникальныйИдентификатор);
ОбъектИзХранилища = ПолучитьИзВременногоХранилища(АдресВХранилище);
ТипОбъектаИзХранилища = ТипЗнч(ОбъектИзХранилища);
Сообщить(ТипОбъектаИзХранилища);
КонецПроцедуры
Вторая порция задач закончена. Можете передохнуть и потратить новый рабочий день на решение третьей порции задач! :)
Последняя порция задач.
Что выведет этот код? И выполнится ли?
&НаКлиенте
Процедура Задача21(Команда)
Задача21НаСервере();
КонецПроцедуры
&НаСервере
Процедура Задача21НаСервере()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| 1 КАК ЧислоЗначение
|ПОМЕСТИТЬ ВТ_Значения
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| 2
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| 3
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВТ_Значения_1.ЧислоЗначение КАК ЧислоЗначение_1,
| ВТ_Значения_2.ЧислоЗначение КАК ЧислоЗначение_2,
| ВТ_Значения_3.ЧислоЗначение КАК ЧислоЗначение_3
|ИЗ
| ВТ_Значения КАК ВТ_Значения_1,
| ВТ_Значения КАК ВТ_Значения_2,
| ВТ_Значения КАК ВТ_Значения_3";
РезультатыЗапроса = Запрос.ВыполнитьПакет();
Выборка1 = РезультатыЗапроса[0].Выбрать();
Выборка2 = РезультатыЗапроса[1].Выбрать();
ОбщееКоличествоЗаписей = Выборка1.Количество() + Выборка2.Количество();
Сообщить(ОбщееКоличествоЗаписей);
КонецПроцедуры
№22: Таблицы значений в запросе
Что выведет этот код? И выполнится ли?
&НаКлиенте
Процедура Задача22(Команда)
Задача22НаСервере();
КонецПроцедуры
&НаСервере
Процедура Задача22НаСервере()
ТаблицаДляЗапроса = Новый ТаблицаЗначений;
ТаблицаДляЗапроса.Колонки.Добавить("ЗначениеСтрока", Новый ОписаниеТипов("Строка",,,, Новый КвалификаторыСтроки(150)));
ТаблицаДляЗапроса.Колонки.Добавить("ЗначениеЧисло", Новый ОписаниеТипов("Число",,,Новый КвалификаторыЧисла(15,2)));
Запись = ТаблицаДляЗапроса.Добавить();
Запись.ЗначениеСтрока = "Один";
Запись.ЗначениеЧисло = 1;
Запись = ТаблицаДляЗапроса.Добавить();
Запись.ЗначениеСтрока = "Два";
Запись.ЗначениеЧисло = 2;
Запись = ТаблицаДляЗапроса.Добавить();
Запись.ЗначениеСтрока = "Три";
Запись.ЗначениеЧисло = 3;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Т1.ЗначениеСтрока КАК ЗначениеСтрока1,
| Т1.ЗначениеЧисло КАК ЗначениеЧисло1,
| Т2.ЗначениеСтрока КАК ЗначениеСтрока2,
| Т2.ЗначениеЧисло КАК ЗначениеЧисло2
|ПОМЕСТИТЬ ВТ_ДанныеТаблицыЗначений
|ИЗ
| &ТаблицаДляЗапроса КАК Т1,
| &ТаблицаДляЗапроса КАК Т2
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВТ_ДанныеТаблицыЗначений.ЗначениеСтрока1 КАК ЗначениеСтрока1,
| ВТ_ДанныеТаблицыЗначений.ЗначениеЧисло1 КАК ЗначениеЧисло1,
| ВТ_ДанныеТаблицыЗначений.ЗначениеСтрока1 КАК ЗначениеСтрока2,
| ВТ_ДанныеТаблицыЗначений.ЗначениеЧисло1 КАК ЗначениеЧисло2
|ИЗ
| ВТ_ДанныеТаблицыЗначений КАК ВТ_ДанныеТаблицыЗначений";
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
КоличествоЗаписей = Выборка.Количество();
Сообщить(КоличествоЗаписей);
КонецПроцедуры
Что выведет этот код? И выполнится ли?
&НаКлиенте
Процедура Задача23(Команда)
Задача23НаСервере();
КонецПроцедуры
&НаСервере
Процедура Задача23НаСервере()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 0
| Т.Значение КАК Значение
|ИЗ
| (ВЫБРАТЬ
| 1 КАК Значение
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| 2) КАК Т";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
КоличествоЗаписей = ВыборкаДетальныеЗаписи.Количество();
Сообщить(КоличествоЗаписей);
КонецПроцедуры
№24: Еще одна передача значений фиксированной структуры
Что выведет этот код? И выполнится ли?
&НаКлиенте
Процедура Задача24(Команда)
СтруктураДанных = Новый Структура;
СтруктураДанных.Вставить("Значение", 1);
ФиксированнаяСтруктураДанных = Новый ФиксированнаяСтруктура(СтруктураДанных);
Задача24НаСервере(ФиксированнаяСтруктураДанных.Значение);
Сообщить(СтруктураДанных.Значение);
КонецПроцедуры
&НаСервере
Процедура Задача24НаСервере(Знач ПереданноеЗначение)
ПереданноеЗначение = 123456;
КонецПроцедуры
№25: Особые операции с массивом
Что выведет этот код? И выполнится ли?
&НаКлиенте
Процедура Задача25(Команда)
МассивЗначений = Новый Массив;
МассивЗначений.Добавить(1000);
МассивЗначений.Добавить(Новый Структура("Значение", 2000));
МассивЗначений.Добавить(Дата(2019, 11, 11));
Задача25НаСервере(МассивЗначений, МассивЗначений);
РезультатВычислений = МассивЗначений.Получить(0)
+ МассивЗначений.Получить(1).Значение
+ Год(МассивЗначений.Получить(2));
Сообщить(РезультатВычислений);
КонецПроцедуры
&НаСервере
Процедура Задача25НаСервере(Знач МассивЗначений1, МассивЗначений2)
МассивЗначений1.Установить(0, 10000);
МассивЗначений1.Получить(1).Значение = 20000;
МассивЗначений1.Установить(2, Дата(2020,11,11));
МассивЗначений2.Установить(0, 10000);
МассивЗначений2.Получить(1).Значение = 20000;
МассивЗначений2.Установить(2, Дата(2020,11,11));
КонецПроцедуры
№26: Сравнение дат еще раз
Что выведет этот код? И выполнится ли?
&НаКлиенте
Процедура Задача26(Команда)
Задача26НаСервере();
КонецПроцедуры
&НаСервере
Процедура Задача26НаСервере()
ДатыРавны = (ТекущаяДата() = ТекущаяДатаСеанса());
Сообщить(ДатыРавны);
КонецПроцедуры
№27: Немного цикла и вычислений
Что выведет этот код? И выполнится ли?
&НаКлиенте
Процедура Задача27(Команда)
Задача27НаСервере();
КонецПроцедуры
&НаСервере
Процедура Задача27НаСервере()
РезультатВычислений = 0;
Для Сч = 1 По 10 Цикл
Остаток = Сч % 2;
Если Остаток > 0 Тогда
РезультатВычислений = РезультатВычислений + Сч;
КонецЕсли;
КонецЦикла;
Сообщить(РезультатВычислений);
КонецПроцедуры
№28: Проверка на заполненность
Что выведет этот код? И выполнится ли?
&НаКлиенте
Процедура Задача28(Команда)
Задача28НаСервере();
КонецПроцедуры
&НаСервере
Процедура Задача28НаСервере()
ПустойGUID = Новый УникальныйИдентификатор("00000000-0000-0000-0000-000000000000");
GUIDЗаполнен = ЗначениеЗаполнено(ПустойGUID);
Сообщить(GUIDЗаполнен);
КонецПроцедуры
№29: Математика наше все!
Что выведет этот код? И выполнится ли?
&НаКлиенте
Процедура Задача29(Команда)
Задача29НаСервере();
КонецПроцедуры
&НаСервере
Процедура Задача29НаСервере()
РезультатВычислений = Pow((5 * 1) / (7 % 2) * Sqrt(9), 2);
Сообщить(РезультатВычислений);
КонецПроцедуры
Что выведет этот код? И выполнится ли?
&НаКлиенте
Процедура Задача30(Команда)
Задача30НаСервере();
КонецПроцедуры
&НаСервере
Процедура Задача30НаСервере()
ИсходноеЗначение = 1.5;
НовоеЗначение1 = Окр(ИсходноеЗначение, 2, РежимОкругления.Окр15как20);
НовоеЗначение2 = Окр(ИсходноеЗначение, 2, РежимОкругления.Окр15как10);
ЗначенияРавны = (НовоеЗначение1 = НовоеЗначение2);
Сообщить(ЗначенияРавны);
КонецПроцедуры
Теперь откиньтесь на спинку компьютерного кресла и проверьте результаты на практике.
Так много кода! Так много задач! И так мало ответов!
Вам слово
Прошли весь путь и не нашли ответов? Все так. Думаю, нет смысла давать ответы на задачи, которые легко проверить в конфигураторе. Надеюсь, я смог хоть немного Вас запутать и улыбнуться.
Небольшой комментарий от автора
Это небольшая часть моей коллекции задач, которая скопилась у меня за многие годы. И, кстати, некоторые из них, не смотря на то, что сталкивался с ними ранее, я не смог решить сходу правильно.
Если в Ваших "чертогах разума" также есть интересные задачки или комментарии по задачам из статьи, то добро пожаловать в комментарии!
P.S. Лайк, репост, подписка!
Другие ссылки
Похожих тем не нашел, но если подскажите, то добавлю сюда.
Авторские разработки