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

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

Для выполнения рекомендуется изучить следующие главы 1-го блока.
Глава 4. Синтакс-помощник
Глава 5. Свойства конфигурации
Глава 6. Подсистемы
Глава 7. Константы
Глава 8. Справочники

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

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

  1. Создал все объекты метаданных в соответствие с заданием.
    Проверку времени начала работы и времени окончания переделал. Убрал запрос. Сделал обычным сравнением.
    Синхронизацию пользователя со справочником «Пользователи» производил по  UUID.
    Выбор обеда сделал с помощью списка значений. В данной ситуации наверно самый удобный вариант.
    В целом с заданием проблем не возникло.

  2.  
    Модуль управляемого приложения
    ————————————-
     
    Перем глОбед Экспорт;
     
    Процедура ПередНачаломРаботыСистемы(Отказ)
    Если Не РаботаСПользователями.ПользовательАдминистратор() Тогда
    Если НЕ РаботаСПользователями.РазрешитьЗапуск() Тогда
    Отказ = Истина;
    Предупреждение(“Сейчас ” + Прав(ТекущаяДата(), 8)+ ” Пора спать!”);
    КонецЕсли;
    КонецЕсли;
     
    КонецПроцедуры
     
    Процедура ПриНачалеРаботыСистемы()
     
    Пользователь = РаботаСПользователями.СнихронизироватьПользователей();
     
    СписокОбедов = РаботаСПользователями.СписокОбедов();
    Если СписокОбедов.ОтметитьЭлементы() Тогда
    Для каждого Элемент Из СписокОбедов Цикл
    Если Элемент.Пометка Тогда
    РаботаСПользователями.ДобавитьОбедПользователю(Пользователь, ТекущаяДата(), Элемент.Значение);
    КонецЕсли;
    КонецЦикла;
    КонецЕсли;
    КонецПроцедуры
     
    Процедура ПередЗавершениемРаботыСистемы(Отказ)
    Если Не РаботаСПользователями.ПользовательАдминистратор() Тогда
    Если РаботаСПользователями.РазрешитьЗапуск()  Тогда
    Если Вопрос(“Действительно выйти?”, РежимДиалогаВопрос.ДаНет) = КодВозвратаДиалога.Нет Тогда
    Отказ = Истина;
    КонецЕсли;
    КонецЕсли;
    КонецЕсли;
     
    КонецПроцедуры
     
     
     

  3. Александр Гаренских 29.11.2010 в 09:30

    Выполнил. Синхронизацию сделал по имени, после просмотра переделал. Сделал серверных вызовов больше, чем нужно и долго разбирался с выбором через форму справочника (стал сразу делать через форму выбора).

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

    Если ОбщийМодуль1.ПроверкаВходаВыходаНаСервере() тогда
    режим=РежимДиалогаВопрос.ДаНет;
    Ответ=Вопрос(“Рабочий день не завершился. Вы действительно желаете выйти?”,Режим,0);
    Если Ответ=КодВозвратаДиалога.Да тогда
    Отказ=Истина
    КонецЕсли;
    КонецЕсли;
    КонецПроцедуры
    В ОбщемМодуле1 объявила
    1. Функция ПроверкаВходаВыходаНаСервере() Экспорт;
    НачалоРабочегоДня=Формат(Константы.НачалоРабочегоДня.Получить(),”ДЛФ=В”);
    КонецРабочегоДня=Формат(Константы.НачалоРабочегоДня.Получить(),”ДЛФ=В”);
    ТекущееВремя=Формат(ТекущаяДата(),”Длф=в”);
    Возврат Не(ТекущееВремя>=НачалоРабочегоДня и ТекущееВремя<=КонецРабочегоДня);
    КонецФункции
    2. Функция ПолучитьВариантыОбедов()
    реализую через перебор элементов справочника ВариантыОбедов, если стоит отметка добавляю в список значений СписокВариантовОбедов.  Возврат СписокВариантовОбедов
    3. Функция ПроверкаНаличияПользователя()
    ТекущийПользователь =Справочники.Пользователи.НайтиПоНаименованию(ПользователиИнформационнойБазы.ТекущийПользователь().Имя);
    Далее если в справочнике Пользователи не определен элемент с ТекущийПользователь.Наименование , добавляем его в справочник. Возврат реквизит Администратор (справочника Пользователи)
    4. Процедура ЗаписатьВариантыОбедов(СписокВариантовОбедов).
    Осталось сверить с эталонным решением.
     
     

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

    Основная сложность была при передаче параметров между клиентом и сервером.,  т.к. данные БД мы читаем только на сервере, а дилинговые окна делаем на клиенте.
    Помнил что в эталонном решении синхронизация пользователей  идёт по УникальномуИдентификатору – но повторить не смог (работал с UUID справочника, а не пользователя), сделал по наименованию, после просмотра – сделал как надо.
    В 4-ом задании говорилось что пользователь может выбрать несколько обедов, в 5-ом: определите реквизит Варианты обедов (ссылка на соответствующий справочник), возможно нужно было делать не реквизит, а табличную часть.

  6. Выполнил.
    Долго соображал, как обратиться к серверу из модуля упр. приложения без использования флажка “Вызов сервера”. В итоге понял, что никак. После этого процесс пошел. Основные трудности состояли в разнесении операций между сервером и клиентом.

  7. Трояновский Евгений 03.11.2010 в 18:29

    Выполнил. Заморочился минимизацией серверных выозов, унификацией и минимальным числом передаваемых параметров. Потом стал смотреть на эти вещи проще – и легко сделал. Да, открыл для себя комбинацию клавиш Ctrl-Пробел. ))

  8. выполнил, но синхронизацию только делал по именам как в типовых.

  9. Готово

  10. Кудрявцев Олег 23.09.2010 в 19:52

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

  11. Harley Davidson 20.09.2010 в 21:55

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

  12. ДЗ № 5 выполнено.

  13. Сделано. Интересно, а реально в таком режиме где-нибудь обеды заказывают?

  14. Сергей Ермаков 09.09.2010 в 20:44

    Готово

  15. Комментариев 109, но я их не вижу. На всякий случай пишу – выполнено.

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

    Выполнил.