Решение ДЗ № 4 Базового курса
Представляем решение четвертого домашнего задания.
16 видео-уроков, рекомендую к просмотру всем участникам базового курса, поскольку в решении рассмотрены несколько подводных камней текущего задания.
К сожалению, у Вас недостаточно прав для просмотра этой записи. Если Вы еще не залогинены на сайте — залогиньтесь. Если Вы оплачивали курс, у Вас активирован токен доступа, Вы залогинены, но Вы видите эту запись — напишите нам на e-mail поддержки.
Задание выполнила, про обычное приложение даже и не думала, что надо отслеживать… в части задания про структуру поиск простого числа реализовала через алгоритм решето Эратосфена, в общем-то после просмотра материала про синтаксис-помощник им стало проще пользоваться…
Задание выполнил. Проблем не возникло. Разве что забыл про модуль обычного приложения. После просмотра решения попенял себе за невнимание к пользователям (при отказе не выдавал предупреждение) и невнимательность (в процедуре “ПередЗавершениемРаботыСистемы” использовал значки > и <, а вот = упустил )
Интересно, в процессе решения вылетала платформа не потому ли, что:
“Примечание:
Для режима запуска ОбычноеПриложение в данной процедуре не допускаются открытие форм и других окон, не поддерживаются выдача сообщений, установка текста в панели состояния, а также другие действия, требующие наличия главного окна.” (Синтакс-Помощник, ПередНачаломРаботыСистемы)
?
Да, не исключено.
Выполнил
В решениях автора принципиально не понравилось лишь одно:
“…Нужно стараться создавать решения, работающие при любых обстоятельствах..”, а при этом использование Прав(ТекущаяДата(),8) – как было показано в одной из мастер-групп – приведение типов в некоторых случаях может быть совершенно далеко от ожидаемого, а уж в соответствии с какими установками (региональными? системными в настройках приложения? установленной локализацией для базы? прочее?) ТекущаяДата() приводится к строке – лично мне – непонятно… ;-) Так что, выдирая время таким образом, можно незаметно наступить на грабли ;-)
Да, находясь в заморских странах, можно наступить на грабли)) Учтем.
такс, разбор показал следующие допущенные мной ошибки:
1. глОбед не объявил Экспортной; – критичная ошибка
2. в массив загнал не строки обедов, а элемент коллекции; – критичная ошибка;
.
обычное приложение – не отследил; хотя на задворках мысль мелькала, про общие модули тоже думал – но делать не стал, потому как принципиально по коду все понятно. Плюс к этому с толку сбило, что задание начал делать после того прочитал ДО модуля внешнего соединения + прочитал ДЗ. Решил что прочитанного – вполне хватит для выполнения ДЗ. Поэтому считаю – некритично, функционал требуемый реализован, другое дело что не всеми доступными методами.. ;-) Поэтому к авторам повторна убедительная просьба – даже для старых ДЗ выложить “метки” – после каких глав рекомендуется приступать к выполнению ДЗ.
Выполнено.
Выполнил. Использовал функции Час и Минута, но только потому что забыл про функцию НачалоДня;).
Сделал ДЗ№4. Начал делать, затем подсмотрел в комментарии, после чего скорректировал модуль. Честно, не додумался бы сразу и для обычного приложения делать проверку. Так же сразу не выносил все алгоритмы в общие модули. ГлОбед сохранил в переменную модуле приложения. Проверил, все работает. Была заминка в процедуре ПередЗавершениемРаботыСистемы(Отказ) Получалась так, что Отказ равен был Неопределено, после чего система не закрывалась, и ее нельзя было закрыть по крестику :-))
Проблемы с ПередЗавершениемРаботыСистемы(Отказ=Неопределено) у кого-нибудь повторились? Это фишка или баг?
Скорее последнее.
Done..Однако мысли о вынесении функционала в общий модуль как первый шаг к “кроссбраузерности” по отношению к тому, где же вызываются методы общего модуля – тонком или толстом клиентах- не дает покоя..
Задание выполнила. Правда, для обычного приложения добавила после просмотра эталонного решения.
поскольку в задании было все-таки ровно 9 и 18 часов, то использовал в условии функцию Час()
Сделал копию обработчиков событий в обоих модулях приложения, но потом понял, что исполняется только “управлямое приложение”.
Но что с глобальной переменной “глОбед”? Не будет где-нибудь конфликтов из-за одноименности?
Не будет конфликтов.
Одна переменная доступна при работе в обычном приложении, другая – в управляемом.
Задание выполнено, проблем не возникло
Выполнил, но оказалось частично. Где то вы говорите, что в задании не было указано где хранить обеды, поэтому не стали использовать перечисления, а где-то вы, наоборот, пишите то, что не указано в задании :), это я про обычный модуль и управляемый… сделал только в управляемом, но мог бы сделать и в обычном, по заданию не было сказано :(
Нужно стараться создавать решения, работающие при любых обстоятельствах..
Даже если об этом не сказано в задании ;)
Задание выполнил. Время определял через Час(), слостей не возникло.
Задание выполнил только сейчас. Посмотрим решение…
Мда… Не подумал про модуль обчного приложения…
Как я понял, вынос обедов в общий модуль не был выполнен, в приведенном решении, только потому, что у вас возникла ошибка платформы, и вы стали разносить методы взаимодействия с пользователем (Предупреждение, Вопрос…) в модулях соответствующих приложений.
У меня таких проблем не было. И сделал я все через общий модуль.
Да, отлично, все верно.
Погонял доработанный вариант, но с вызовами Предупреждение(), Вопрос() и ОтметитьЭлементы() в общем модуле РаботаСПользователями. Скомпилирован на клиенте (управляемое приложение и обычное приложение). Заходил-выходил несколько раз в режиме управляемого и обычного приложения под отладчиком и без оного, с выдачей предупреждения и вопроса. Ни одной ошибки, релиз платформы 8.2.11.236, база файловая локальная. Могу прислать выгрузку базы (20 кб). Как обычно отвечает 1С: “Воспроизвести проблему не удалось” :)
Меня самого удивило поведение системы.
Релиз платформы точно такой же.
Хорошо, что у вас проблема не воспроизводится.
Присылайте выгрузку, запущу у себя.
У меня релиз платформы 8.2.10.77 . Всё общее для модулей Управляемого приложения и Обычного приложения вынес в Общий модуль (как вы хотели сделать в видео по решению ДЗ №4). Все нормально работает (и в режиме обычного приложения в том числе). Глюков нет.
Глюк был “плавающий”, после перезагрузки исчез, такое бывает )
В решении задачи вы присваиваете глобальным переменным модуля приложения значение даты и времени, при том даты дня запуска, а не начала времен, так что если пользователь оставит программу до следующего дня открытой, то условие при выходе все будет считаться выходом в не рабочее время. Так же это конечно дело вкуса, но нагляднее использовать метод формат() вместо прав(,8) и опять же дело вкуса но мне всегда съедает мозг расчет времени методом 9*3600, нагляднее было бы использовать дата(1,1,1,9,0,0)
Да, вот этот момент я не учел. Спасибо.
Что касается описания времени, скорее дело привычки..
Честно признаться, забыл, что надо в двух модулях приложения делать и сделал только в управляемом..
Понравился способ проверки времени, я как раз применил более громоздкий – с часами и минутами.
Спасибо Евгений за идеи! ;)
Евгений, во сколько же Вы спать ложитесь, если при решении задачи был 2-й час ночи?
По-разному :)
Кто сделал в 2-х модулях приложения? Поднимите руки =) !