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