комментария 3 на “Базовый курс. Занятие №4”

  1. Перем ГлОбед Экспорт;
    Перем НачалоРД,КонецРД;

    Процедура ПередНачаломРаботыСистемы(Отказ)  
       
        НачалоРД = Дата(НачалоДня(ТекущаяДата())+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);        
        КонецЕсли;
    КонецПроцедуры

    Процедура ПередЗавершениемРаботыСистемы(Отказ)
        Если (ТекущаяДата() < КонецРД)  Тогда      
            Воп=Вопрос("Рабочее время. Завершить работу ?",РежимДиалогаВопрос.ДаНет);   
            Если Воп=КодВозвратаДиалога.Нет Тогда
                Отказ=Истина;
            КонецЕсли;        
        КонецЕсли;
    КонецПроцедуры
  2. Михаил 15.12.2012 в 21:07

    Задание сделал. Модуль управляемого приложения выглядит так:

    Перем глОбед;

    Процедура ПередНачаломРаботыСистемы(Отказ)
       
        ТекГод   = Год(ТекущаяДата());
        ТекМесяц = Месяц(ТекущаяДата());
        ТекДень  = День(ТекущаяДата());
        НачалоРабочегоДня = Дата(ТекГод,ТекМесяц,ТекДень,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) По известному ключу в явном виде

     Числа.Число591

    2) Поиск по ключу в переменной через метод Свойство()

    Если Числа.Свойство(Х)=Истина Тогда
    КонецЕсли;
  3. Роман 04.12.2012 в 08:23

    Начал делать задание, так и не могу понять, как сделать проверку на время…
    Вот что сделал:

    Процедура ПередНачаломРаботыСистемы(Отказ)
        Если Дата(Формат(ТекущаяДата(), "ДЛФ=T") > 90538 тогда
            Предупреждение ("Выдать!");
        КонецЕсли
       
    КонецПроцедуры