Если ((ТекущаяДата() > НачалоРД ) И (ТекущаяДата() < КонецРД)) Тогда
Отказ=Ложь;
Если Не Отказ Тогда
ВыбратьОбед();
СоздЧисла();
КонецЕсли;
Иначе
Сообщить("Сейчас заходить в систему нельзя !");
Отказ=Истина;
КонецЕсли;
КонецПроцедуры
Процедура ВыбратьОбед()
вопр= "Какой вариант обеда предпочитаете?";
Пока 1=1 Цикл
СписокЗначений=Новый СписокЗначений;
СписокЗначений.Добавить("Курица");
СписокЗначений.Добавить("Рыба");
СписокЗначений.Добавить("Мясо");
СписокЗначений.ОтметитьЭлементы(вопр);
ГлОбед=Новый Массив;
Для Каждого эл Из СписокЗначений Цикл
Если Эл.Пометка = Истина Тогда
ГлОбед.Добавить(Эл.Значение);
КонецЕсли;
КонецЦикла;
Если ГлОбед.Количество()>0 Тогда
Прервать;
Иначе
вопр="Необходимо выбрать обед!";
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура СоздЧисла()
Числа=Новый Структура("Число1,Число2,Число3","Простое","Простое","Простое");
Для сч=4 По 1000 Цикл
Для эл=2 По (сч-1) Цикл
Если ((сч/эл)-цел(сч/эл))=0 Тогда
Числа.Вставить(ключ,"Не простое");
Прервать;
КонецЕсли;
КонецЦикла;
КонецЦикла;
Попытка
Сообщить("Ключ число591, значение= "+Числа.Число591);
Исключение
КонецПопытки;
Х="Число332";
Если Числа.Свойство(Х) Тогда
Сообщить("Ключ число332, значение= "+Числа.Число332);
КонецЕсли;
КонецПроцедуры
Процедура ПередЗавершениемРаботыСистемы(Отказ)
Если (ТекущаяДата() < КонецРД) Тогда
Воп=Вопрос("Рабочее время. Завершить работу ?",РежимДиалогаВопрос.ДаНет);
Если Воп=КодВозвратаДиалога.Нет Тогда
Отказ=Истина;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Если (ТекущаяДата() < НачалоРабочегоДня) или (ТекущаяДата() > КонецРабочегоДня) Тогда
Предупреждение("Вход в конфигурацию во внерабочее время запрещен",10);
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
Процедура ПриНачалеРаботыСистемы()
Пока ВыборОбеда()=0 Цикл
КонецЦикла;
КонецПроцедуры
Функция ВыборОбеда()
СписокОбедов = Новый СписокЗначений;
СписокОбедов.Добавить("курица");
СписокОбедов.Добавить("рыба");
СписокОбедов.Добавить("мясо");
ОбедВыбран = 0;
Если СписокОбедов.ОтметитьЭлементы("Какой вариант обеда Вы предпочитаете?") = Истина Тогда
Для каждого Элемент Из СписокОбедов Цикл
Если Элемент.Пометка Тогда
глОбед.Добавить(Элемент.Значение);
ОбедВыбран=1;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Режим = РежимДиалогаВопрос.ДаНет;
Если Вопрос("Вы хотите закончить работу с программой до окнчания рабочего дня",Режим) = КодВозвратаДиалога.Нет Тогда
Отказ = Истина;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
глОбед = Новый Массив;
Числа = Новый Структура("Число1,Число2","Простое","Простое");
Для ПроверяемоеЧисло = 3 По 999 Цикл
ЗначениеЧисла = "Простое";
Для Инд=2 По ПроверяемоеЧисло-1 Цикл
Если Цел(ПроверяемоеЧисло/инд)*инд = ПроверяемоеЧисло Тогда
ЗначениеЧисла = "Не простое";
Прервать;
КонецЕсли;
КонецЦикла;
Вставку в структуру Числа по ключу Число1000 сделал явно, так как при преобразовании 1000 в строку появляется пробел “1 000”.
Проверил обращение к структуре:
1) По известному ключу в явном виде
Числа.Число591
2) Поиск по ключу в переменной через метод Свойство()
Все материалы этого сайта являются составной частью Базового / Продвинутого курсов по программированию - и являются объектами авторского и имущественного права.
Любое их распространение без письменного согласования с авторами запрещено.
Перем НачалоРД,КонецРД;
Процедура ПередНачаломРаботыСистемы(Отказ)
НачалоРД = Дата(НачалоДня(ТекущаяДата())+9*3600+5*60+38);
КонецРД = Дата(НачалоДня(ТекущаяДата())+18*3600+11*60+42);
Если ((ТекущаяДата() > НачалоРД ) И (ТекущаяДата() < КонецРД)) Тогда
Отказ=Ложь;
Если Не Отказ Тогда
ВыбратьОбед();
СоздЧисла();
КонецЕсли;
Иначе
Сообщить("Сейчас заходить в систему нельзя !");
Отказ=Истина;
КонецЕсли;
КонецПроцедуры
Процедура ВыбратьОбед()
вопр= "Какой вариант обеда предпочитаете?";
Пока 1=1 Цикл
СписокЗначений=Новый СписокЗначений;
СписокЗначений.Добавить("Курица");
СписокЗначений.Добавить("Рыба");
СписокЗначений.Добавить("Мясо");
СписокЗначений.ОтметитьЭлементы(вопр);
ГлОбед=Новый Массив;
Для Каждого эл Из СписокЗначений Цикл
Если Эл.Пометка = Истина Тогда
ГлОбед.Добавить(Эл.Значение);
КонецЕсли;
КонецЦикла;
Если ГлОбед.Количество()>0 Тогда
Прервать;
Иначе
вопр="Необходимо выбрать обед!";
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура СоздЧисла()
Числа=Новый Структура("Число1,Число2,Число3","Простое","Простое","Простое");
Для сч=4 По 1000 Цикл
ключ=? (сч<1000,"Число"+СокрЛП(строка(сч)),"Число1"+"000");
Числа.Вставить(ключ,"Простое");
Для эл=2 По (сч-1) Цикл
Если ((сч/эл)-цел(сч/эл))=0 Тогда
Числа.Вставить(ключ,"Не простое");
Прервать;
КонецЕсли;
КонецЦикла;
КонецЦикла;
Попытка
Сообщить("Ключ число591, значение= "+Числа.Число591);
Исключение
КонецПопытки;
Х="Число332";
Если Числа.Свойство(Х) Тогда
Сообщить("Ключ число332, значение= "+Числа.Число332);
КонецЕсли;
КонецПроцедуры
Процедура ПередЗавершениемРаботыСистемы(Отказ)
Если (ТекущаяДата() < КонецРД) Тогда
Воп=Вопрос("Рабочее время. Завершить работу ?",РежимДиалогаВопрос.ДаНет);
Если Воп=КодВозвратаДиалога.Нет Тогда
Отказ=Истина;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Задание сделал. Модуль управляемого приложения выглядит так:
Процедура ПередНачаломРаботыСистемы(Отказ)
ТекГод = Год(ТекущаяДата());
ТекМесяц = Месяц(ТекущаяДата());
ТекДень = День(ТекущаяДата());
НачалоРабочегоДня = Дата(ТекГод,ТекМесяц,ТекДень,9,5,38);
КонецРабочегоДня = Дата(ТекГод,ТекМесяц,ТекДень,18,11,42);
Если (ТекущаяДата() < НачалоРабочегоДня) или (ТекущаяДата() > КонецРабочегоДня) Тогда
Предупреждение("Вход в конфигурацию во внерабочее время запрещен",10);
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
Процедура ПриНачалеРаботыСистемы()
Пока ВыборОбеда()=0 Цикл
КонецЦикла;
КонецПроцедуры
Функция ВыборОбеда()
СписокОбедов = Новый СписокЗначений;
СписокОбедов.Добавить("курица");
СписокОбедов.Добавить("рыба");
СписокОбедов.Добавить("мясо");
ОбедВыбран = 0;
Если СписокОбедов.ОтметитьЭлементы("Какой вариант обеда Вы предпочитаете?") = Истина Тогда
Для каждого Элемент Из СписокОбедов Цикл
Если Элемент.Пометка Тогда
глОбед.Добавить(Элемент.Значение);
ОбедВыбран=1;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Возврат ОбедВыбран;
КонецФункции // ВыборОбеда()
Процедура ПередЗавершениемРаботыСистемы(Отказ)
ТекГод = Год(ТекущаяДата());
ТекМесяц = Месяц(ТекущаяДата());
ТекДень = День(ТекущаяДата());
КонецРабочегоДня = Дата(ТекГод,ТекМесяц,ТекДень,18,11,42);
Если ТекущаяДата() < КонецРабочегоДня Тогда
Режим = РежимДиалогаВопрос.ДаНет;
Если Вопрос("Вы хотите закончить работу с программой до окнчания рабочего дня",Режим) = КодВозвратаДиалога.Нет Тогда
Отказ = Истина;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
глОбед = Новый Массив;
Числа = Новый Структура("Число1,Число2","Простое","Простое");
Для ПроверяемоеЧисло = 3 По 999 Цикл
ЗначениеЧисла = "Простое";
Для Инд=2 По ПроверяемоеЧисло-1 Цикл
Если Цел(ПроверяемоеЧисло/инд)*инд = ПроверяемоеЧисло Тогда
ЗначениеЧисла = "Не простое";
Прервать;
КонецЕсли;
КонецЦикла;
Числа.Вставить("Число"+ПроверяемоеЧисло,ЗначениеЧисла);
КонецЦикла;
Числа.Вставить("Число1000","Не простое");
Вставку в структуру Числа по ключу Число1000 сделал явно, так как при преобразовании 1000 в строку появляется пробел “1 000”.
Проверил обращение к структуре:
1) По известному ключу в явном виде
2) Поиск по ключу в переменной через метод Свойство()
КонецЕсли;
Начал делать задание, так и не могу понять, как сделать проверку на время…
Вот что сделал:
Если Дата(Формат(ТекущаяДата(), "ДЛФ=T") > 90538 тогда
Предупреждение ("Выдать!");
КонецЕсли
КонецПроцедуры