Домашнее задание №4 базового курса

Первое задание по 1-му блоку базового курса.

Для выполнения рекомендуется изучить следующие главы 1-го блока.
Глава 1. Типы данных
Глава 2. Контекст выполнения кода
Глава 3. Модули
Глава 4. Синтакс-помощник

К сожалению, у Вас недостаточно прав для просмотра этой записи. Если Вы еще не залогинены на сайте — залогиньтесь. Если Вы оплачивали курс, у Вас активирован токен доступа, Вы залогинены, но Вы видите эту запись — напишите нам на e-mail поддержки.

комментариев 139 на “Домашнее задание №4 базового курса”

  1. 1) Проверку возможности начала работы при входе в систему организовал в модуле управляемого приложения в процедуре «ПередНачаломРаботыСистемы». Вообще задачу можно решить двумя способами. Первый, с  помощью типовых функций работы с датой проверить вхождение текущей даты в интервал рабочего времени. Второй вариант осуществить эту проверку в запросе. Я сделал запросом. Который описал в общем модуле в экспортной функции «МожноНачинатьРаботу(ТекущаяДата)».
     
    &НаСервере
    Функция МожноНачинатьРаботу(ТекущаяДата) Экспорт
    Запрос = Новый Запрос;
    Запрос.Текст = ”
    |  ВЫБРАТЬ
    |
    |  ВЫБОР КОГДА &ТекущаяДата < ДОБАВИТЬКДАТЕ( НАЧАЛОПЕРИОДА(&ТекущаяДата, ДЕНЬ), ЧАС, 9)
    |      ИЛИ  &ТекущаяДата > ДОБАВИТЬКДАТЕ( НАЧАЛОПЕРИОДА(&ТекущаяДата, ДЕНЬ), ЧАС, 18) ТОГДА ЛОЖЬ
    |    ИНАЧЕ Истина
    |  КОНЕЦ КАК ВозможностьРаботы
    |”;
    Запрос.УстановитьПараметр(“ТекущаяДата”,       ТекущаяДата)
    Выборка = Запрос.Выполнить().Выбрать();
    Выборка.Следующий();
    Возврат Выборка.ВозможностьРаботы;
    КонецФункции
     
    Далее вызывал эту функцию перед началом работы системы. Процедура
     
    ПередНачаломРаботыСистемы(Отказ)
    Если НЕ ОбщегоНазначения.МожноНачинатьРаботу(ТекущаяДата()) Тогда
    Отказ = Истина;
    Предупреждение(“Сейчас заходить в конфигурацию нельзя!!!”);
    КонецЕсли;
    КонецПроцедуры
     
    2) С обедами всё запредельно просто. Помеченные значения в цикле добавлял в массив, в который была типизирована глобальная переменная «ГлОбед».
     
    3) Решение аналогично пункту 1, только процедура проверки возможности завершения вызывалась в процедуре «ПередЗавершениемРаботыСистемы», пользователь мог выбирать закрывать ему программу или нет и знаки сравнения в запросе изменены с точность наоборот.

    • Запрос рекомендуется использовать для работы с данными БД.
      В случае математических функций, операций сравнения лучше использовать методы платформы.

      • Евгений, полностью с Вами согласен. Вариант не самый оптимальный. Если честно, просто хотелось как-то не стандартно подойти к решению.

        • Эксперименты с запросами проводить полезно ;)

  2. глОбед – глобальную переменную располжил в модуле управляемого приложения, сказано сделать ее глобальной – добавил Экспорт.
     
    Проверку на попадание в рабочие часы проводил с помощью условия Час(ТекущаяДата())> 9 И Час(ТекущаяДата()) < 18 .
     
    Небольшую заминку вызвала путаница с Параметром отказа при завершении работы, упорно выставлял его не в той ветке ветвления (тупил что отказываюсь от продолжения работы).
     
     
    Перем глОбед Экспорт;
     
    Процедура ПередНачаломРаботыСистемы(Отказ)
    Если Час(ТекущаяДата())> 9 И Час(ТекущаяДата()) < 24 Тогда
     
    Список = Новый СписокЗначений();
    Список.Добавить(“Курица”);
    Список.Добавить(“Рыба”);
    Список.Добавить(“Мясо”);
     
    Список.ОтметитьЭлементы();
     
    Для Каждого Элемент Из Список Цикл
    Если Элемент.Пометка Тогда
    глОбед.Добавить(Элемент.Значение);
    КонецЕсли;
    КонецЦикла;
     
    Иначе
    Предупреждение(“Работать нельзя”);
    Отказ = Истина;
    КонецЕсли
    КонецПроцедуры
     
    Процедура ПередЗавершениемРаботыСистемы(Отказ)
    Если Час(ТекущаяДата())> 9 И Час(ТекущаяДата()) < 24 Тогда
    Ответ = Вопрос(“Вы уверены что хотите покинуть систему?”, РежимДиалогаВопрос.ДаНет);
    Если Ответ = КодВозвратаДиалога.Нет Тогда
    Отказ = Истина;
    КонецЕсли;
    КонецЕсли
    КонецПроцедуры
     
     
    глОбед = Новый Массив;
    глОбед – глобальную переменную располжил в модуле управляемого приложения, сказано сделать ее глобальной – добавил Экспорт.
     
    Проверку на попадание в рабочие часы проводил с помощью условия Час(ТекущаяДата())> 9 И Час(ТекущаяДата()) < 18 .
     
    Небольшую заминку вызвала путаница с Параметром отказа при завершении работы, упорно выставлял его не в той ветке ветвления (тупил что отказываюсь от продолжения работы).
     
     
    <code>
    Перем глОбед Экспорт;
     
    Процедура ПередНачаломРаботыСистемы(Отказ)
    Если Час(ТекущаяДата())> 9 И Час(ТекущаяДата()) < 24 Тогда
     
    Список = Новый СписокЗначений();
    Список.Добавить(“Курица”);
    Список.Добавить(“Рыба”);
    Список.Добавить(“Мясо”);
     
    Список.ОтметитьЭлементы();
     
    Для Каждого Элемент Из Список Цикл
    Если Элемент.Пометка Тогда
    глОбед.Добавить(Элемент.Значение);
    КонецЕсли;
    КонецЦикла;
     
    Иначе
    Предупреждение(“Работать нельзя”);
    Отказ = Истина;
    КонецЕсли
    КонецПроцедуры
     
    Процедура ПередЗавершениемРаботыСистемы(Отказ)
    Если Час(ТекущаяДата())> 9 И Час(ТекущаяДата()) < 24 Тогда
    Ответ = Вопрос(“Вы уверены что хотите покинуть систему?”, РежимДиалогаВопрос.ДаНет);
    Если Ответ = КодВозвратаДиалога.Нет Тогда
    Отказ = Истина;
    КонецЕсли;
    КонецЕсли
    КонецПроцедуры
     
     
    глОбед = Новый Массив;


    </code>

  3. Александр Гаренских 22.11.2010 в 14:38

    Задание выполнил. Лучше поздно, чем никогда)))). Время анализировал, получая час от текущей даты, после просмотра решения, переделал.

  4. Задание выполнил.

    Решение особых сложностей не вызвало. При первом решении – управился за половину дня, при втором – половину часа.
    После просмотра Вашего решения, переделываю всё как в Вашем эталонном решении, чтоб модуля, процедуры, константы – назывались одинаково.
    Важный нюанс данного задания – вызов системных модальных окон: предупреждений, вопросов.

  5. Задание выполнила. В модуле управляемого приложения
    1.перем глОбед.
    2. Функция ВремяВхода(Дата,Час,Минута,Секунда);
    Возврат НачалоДня(Дата)+Час*3600+Минута*60+Секунда
    КонецФункции

    3.В процедурах ПередНачаломРаботыСистемы() и ПередЗавершениемРаботыСистемы проверка на вход-выход через функцию ВремяВхода().
    4.В процедуре ПриНачалеРаботыСистемы заполнение СписокОбедов. Далее Если СписокОбедов.ОтметитьЭлементы()
    Для Каждого Элемент из СписокОбедов цикл
    Если Элемент.Пометка тогда
    глОбед.Добавить(Элемент);
    КонецЕсли;
    КонецЦикла;

  6. Выполнил.

  7. Все получилось, сделал.

  8. дз 4-ое самое легкое, можно его и усложнить.
    выполнено

  9. Сделал давно, хвосты чищу.

  10. Igor V.Borodin 05.10.2010 в 23:52

    Выполнил

  11. Кудрявцев Олег 23.09.2010 в 13:43

    Выполнил.
    Отличное задание. Заставило вспомнить что говорилось в первом блоке.

  12. Harley Davidson 18.09.2010 в 17:43

    Задание выполнено!

  13. ДЗ № 4 выполнено.

  14. Все нормально получилось. Сделано.

  15. Сергей Ермаков 09.09.2010 в 20:42

    Отчитываюсь с опозданием

  16. Леонид 09.09.2010 в 10:52

    Выполнил.

  17. ДЗ №4 сделано

  18. elitekGAVA 09.09.2010 в 09:13

    Выполнено

  19. Выполнено

  20. Баранов Николай 09.09.2010 в 02:20

    Выполнено! Сделал давно.

  21. Выполнено.

  22. Мало того, что отчитываюсь с запозданием, так по ходу еще и ветки путаю(в решениях местами отчитался)

    Готова.

  23. Отчитываюсь: ДЗ выполнено! (подчищаю хвосты)

  24. Александр Горлов 31.08.2010 в 14:03

    Подгоняю хвосты. ДЗ выполнено!

  25. Сделал – догоняю

  26. timur.bagautdinov 15.08.2010 в 10:01

    Выполнил

  27. Семенов Валерий 13.08.2010 в 11:42

    Выполнено

  28. ДЗ сделано

  29. Выполнено

  30. Сделал.

  31. Сделано было.

  32. Сделано

  33. Людмила Фролова 10.08.2010 в 09:46

    Разобралась. Сделала ДЗ №4.

  34. Людмила Фролова 10.08.2010 в 09:32

    Каюсь, подглядывала, но разобралась…до логического понимания. Раньше сделала, просто не отписывалась… Вариант совместимости – это, конечно, на переходный период? Или для универсальности?

    • Совместимость с 8.1 – это переходный период.
      Скоро поговорим об этом в мастер-группе.

  35. Быков Анатолий 09.08.2010 в 17:25

    Задание выполнил..

  36. Сделано.