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

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

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

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

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

  1. Капелев Сергей 08.07.2010 в 08:18

    Задание сделал. Время взял в виде дробного числа ЧЧ.ММ

    Функция РабочееВремя()
    Дата = ТекущаяДата();

    ТекВремя = Час(Дата) + Минута(Дата)/100;
    Если 9.30 <ТекВремя и ТекВремя<=18.00 Тогда

  2. 4-е задание сделано

  3. Андрей Антипенко 08.07.2010 в 06:50

    ДЗ4 выполнил

  4. Елена 08.07.2010 в 05:28

    Выполнено

  5. Игорь Серков 08.07.2010 в 05:27

    ДЗ4 готово. После таких подробных уроков, сложностей не возникло.

  6. Дз 4 Выполнил

  7. Александр Егошин 08.07.2010 в 02:08

    ДЗ №4 выполнил

  8. ДЗ №4 сделал.

  9. Улыбнула идея :)

  10. Выполнено

  11. ДЗ 4 выполнил

  12. Сделано

  13. Тимофей Житков 07.07.2010 в 21:18

    выполнено

  14. progr-2008 07.07.2010 в 20:23

    Получилось, если не использовать параметры сеанса.
    Сделала проверку в модуле сеанса, какой пользователь, с установкой параметров сеанса. Хотела еще сделать разный вход для пользователей – администратор без ограничений и остальные только в рабочее время – именно через установку параметров в модуле сеанса.
    А взять эти параметры из модуля управляемого приложения – не получилось, даже при указании сервера.

  15. ДЗ №4 сделал. Тормознул на списке значений. Помог повторный просмотр, и синтакс- помощник.

  16. Анатолий Белогорцев 07.07.2010 в 20:18

    При решении ДЗ особых проблем не возникло. Практически все есть в видеоуроках (и про множественный интерактивный выбор из списка значений и про события модуля управляемого приложения).

  17. Евгений Ершов 07.07.2010 в 20:05

    Сделал. Сначала не знал про метод ОтметитьЭлементы(). Поэтому сначала решил 2-мя способами:
    1 способ: В ПриНачалеРаботыСистемы() открываю обработку с формой, на которой разместил список с пометками.
    2 способ: Из этой же процедуры открываю общую форму (тоже со списком на форме)
    Ну и решил для себя усложнить задание. Чтобы пользователь в любое время мог редактировать список блюд (т.е. возможность повторного вызова формы со списком блюд)
    Возникло два вопроса:
    1. Есть ли возможность интерактивно открыть общую форму (из панели навигации или панели действий)? Вроде в состав подсистемы включил, а отображения не вижу в пользовательском режиме.
    2. Существует ли разница или особенность применения методов по открытию формы?
    ФормаВыбораОбеда = ПолучитьФорму(“ОбщаяФорма.ФормаВыбораОбеда”);
    ФормаВыбораОбеда.Открыть();
    Или:
    ОткрытьФорму(“ОбщаяФорма.ФормаВыбораОбеда”);
    Итак и так работает. А в чем изюминка?

    • Евгений Ершов 08.07.2010 в 09:25

      И ещё вопрос (может не в тему):
      Для чего существует возможность установить принадлежность к подсистеме общего модуля?

  18. YuriRomanov 07.07.2010 в 19:33

    ДЗ №4 готово

  19. Задание сделал.

  20. Дз №4 Выполнено.

  21. Константин Павленко 07.07.2010 в 18:18

    Задание выполнено, проблем не возникло. Использовал доп. функцию, т.к. вызывается в двух местах:
    Функция РабочееВремя()
    ТекущийЧас = Час(ТекущаяДата());
    Если ТекущийЧас >= 9 И ТекущийЧас < 18 Тогда
    Возврат Истина;
    Иначе
    Возврат Ложь;
    КонецЕсли;
    КонецФункции // РабочееВремя()

    Вроде бы не совсем хорошо зашивать время в код функции, к тому же могут быть часы и минуты. Но в задании сказано "с 9.00 до 18.00", поэтому пока не будем делать ЗУП :)

  22. Кучеров Дмитрий 07.07.2010 в 17:37

    Задание сделал. Правда еле вспомнил про метод ОтметитьЭлементы() для множественного выбора.

  23. Решено.

  24. Сергей Шульженко 07.07.2010 в 16:50

    Да. Было не сложно.

  25. Сделано.

  26. Антон 07.07.2010 в 15:51

    ДЗ № 4 выполнил, проблем не возникло.

  27. saveryanov 07.07.2010 в 15:47

    Сделано.
    Проверка времени работы:

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

    Выбор обеда через метод ОтметитьЭлементы

  28. Задание сделал

  29. Владимир Мединский 07.07.2010 в 15:06

    ДЗ выполнил сложностей не возникло. Модуль упр. приложения:

    Перем глОбед Экспорт;

    Процедура ПередНачаломРаботыСистемы(Отказ)
    Ч=Час(ТекущаяДата());
    Если (ч17)Тогда
    Кнопки=РежимДиалогаВопрос.ОК;
    Вопрос(“В конфигурацию нельзя заходить в нерабочее время”,Кнопки,20);
    Отказ=Истина;
    КонецЕсли;
    КонецПроцедуры

    Процедура ПриНачалеРаботыСистемы()
    СЗ=Новый СписокЗначений;
    СЗ.Добавить(“Курица”);
    Сз.Добавить(“Рыба”);
    Сз.Добавить(“Мясо”);
    Если СЗ.ОтметитьЭлементы(“Выберите обед”) ТОгда
    Для каждого Эл ИЗ СЗ Цикл
    Если Эл.Пометка Тогда
    глОбед.Добавить(Эл.Значение);
    КонецЕсли;
    КонецЦикла;
    КонецЕсли;
    КонецПроцедуры

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

    глОбед=Новый Массив;

  30. Задачу решил.

  31. Выполнено. Выбор из списка значений сделала в общей форме.

    • Кучеров Дмитрий 07.07.2010 в 17:46

      Попробуй СписокЗначений.ОтметитьЭлементы()

      • Не, я специально. Повышала навыки общения с управляемыми формами :) Пока с трудом получается.
        Через ОтметитьЭлементы() все понятно.

  32. Евгений Пехов 07.07.2010 в 12:15

    ДЗ4 Выполнил

  33. Михайлов Сергей 07.07.2010 в 12:00

    Задание сделал.

  34. Сделано.

  35. Задание выполнено. Столкнулся с проблемой, что глобальная переменная глОбед(объявлял в модуле управляемого приложения) не видна через контекстную подсказку, но присвоение ей значения отрабатывает нормально.

  36. ДЗ4 Выполнил сложностей не возникло

  37. ДЗ №4 выполнил.

  38. Ваши задание абсолютно практичны – подобное лет 10 назад я реализовывал на 1С 7.7

  39. ДЗ№4 Выполнено.
    Для вывода запроса обеда использовал метод СпискаЗначений:
    Обед.ОтметитьЭлементы(“Что вы будете сегодня на обед?”)

    Очень редко работаю с датами, посему были сложности:
    Как получить значение типа дата в формате ЧЧ:ММ:СС? Функция Дата() требует обязательного указания года, месяца и дня.

    Если использовать функцию Формат(), то она возвращает ЧЧ:ММ:СС, но это строка. И результат сравнения например “9:18:13” < "18:00:00" будет ложью (почему ложь – для меня так же осталось загадкой… пока не осознал).
    Таким образом повезло что в условии начало и конец рабочего дня – это четко 9 и 18 часов, а не, например, 9:20 и 17:53.

    • Илья Чернов 07.07.2010 в 09:16

      Время и так содержится в типе Дата, зачем его выделять?

    • Встроенные функции языка (Script functions)
      Час (Hour)
      Синтаксис:
      Час()
      Параметры:
      (обязательный)
      Тип: Дата. Исходная дата.
      Возвращаемое значение:
      Тип: Число. Час в указанной дате.
      Описание:
      Определяет час в указанной дате.

      Доступность:
      Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
      Пример:
      Сообщить(Час(ТекущаяДата()));

      • Через час и сделал. Как быть если день начинается в 9:23:13? Использовать условия на Час(), Минута(), Секунда()? :)

        • Сергей Шульженко 07.07.2010 в 16:50

          Может через Формат?

          • Про формат я писал еще в исходном сообщении :)

        • Илья Чернов 07.07.2010 в 17:07

          Как вариант:
          ВремяНачало = НачалоДня(ТекущаяДата()) + 9*3600;
          ВремяОкончания = НачалоДня(ТекущаяДата()) + 18*3600;
          А в условии проверять, что значение ТекущаяДата() попадает в интервал между ВремяНачало и ВремяОкончания

          • ВремяНачало = НачалоДня(ТекущаяДата()) + 9*3600;
            ВремяОкончания = ВремяНачало + 18*3600;

            Чтобы не тратить времени на выполнение функции ТекущаяДата().

            • Точнее ВремяОкончания = ВремяНачало + 9*3600

              • Это все понятно… Но.. Ладно, видимо так и придется с секундами ) Думал может есть что-то красивее

    • Кучеров Дмитрий 07.07.2010 в 17:50

      Функция Час() – вернет час без минут, а вдруг работаем с 8:30
      Можно сделать так
      НачалоРаботы = ДатаВремяНач – НачалоДня(ДатаВремяНач);
      КонецРаботы = ДатаВремяКон – НачалоДня(ДатаВремяКон);

      ТекВремя = ТекущаяДата();
      ТекВремя = ТекВремя – НачалоДня(ТекВремя);

      Примерно так -)))

      • Константин Павленко 07.07.2010 в 18:12

        А ДатаВремяНач, ДатаВремяКон откуда берёте?

  40. Илья Алексеевич 06.07.2010 в 23:52

    ДЗ4 Готово.
    Единственно что не нашел, так это как сделать чтобы в списке были галочки напротив выбираемых значений. Поэтому обошелся множественным выбором.