Автор Тема: Задача 1.40  (Прочитано 13418 раз)

0 Пользователей и 1 Гость просматривают эту тему.

TuMyP1985

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Тимур
Задача 1.40
« Ответ #15 : Июль 07, 2013, 05:21:11 pm »
мой вариант
Вложения:
KTT_1_40.dt

artfa

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Артур
Задача 1.40
« Ответ #16 : Июль 17, 2013, 03:45:16 pm »
Еще одна задача у к\й нельзя создать 100% правильное решение.

 вопрос:
 в том случае если слушатель выбрал даты курса в к\е нет по расписанию этих курсов, или курсы есть но нет мест, запрещать ли проведение такого документа?

 я решил действовать по мягкому пути:
 слушатель записывается в те даты в к\х есть указанный слушателем курс, и есть место в классе, т.е. слушатель может выбрать один курс или множество на весь месяц, и может быть записан только на один день для слушания.
 в том случае если слушатель не записан ни на один из курсов ни на одну из дат, документ не проводится.
 для удобства создал регистр ИндивидуальныеРасписания, к\й можно сформировать из Заявки, открывается отчет уже сформированный с отбором по слушателю и по месяцу из заявки.
 слушатель указывает курсы и даты в таб.части Заявки, причем Заявку на месяц можно подать только одну, как и Расписание

 Не люблю я такие задачи в к\х нет явного правильного решения, на экзамене придется выбирать м\у законченностью решения и дефицитом времени
Вложения:
1.40.dt


axlch

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Алексей
Задача 1.40
« Ответ #17 : Август 09, 2013, 10:42:35 pm »
Задачка мутноватая, с подводным камнем, в виде коллизии в последнем условии к отчету: ведь в условии четко сказано - слушатель ходит на выбранный им курс в пределах выбранного им же периода и если нет места в одном классе - учится в другом(классные курсы :), но таково условие..),а в последнем условии к отчету появляются новые условия - оказывается слушатель должен привязывается к курсу-классу иначе приведенная формула расчета становится абсурдной (если предположить, что в определенный момент число слушателей, записавшихся на курс превышает число мест в рассматриваемом классе (например на один из курсов записалось не 15 а 25 человек - по условию занятия по данному курсу могут идти в 2-х классах) и если тупо вставить в отчет данную формулу, то может вылезти, что "% по посещению" в рассматриваемом классе превышает 100%)) Поэтому формула должна быть либо с ограничением по вместимости либо -
 Кол-воФактическиОтучившихсяВДанномКлассеСлушателейВПериодДействияРасписания / (Кол-воМестВКлассе * Кол-воДнейКогдаКлассЗанятВПериодДействияРасписания, а в остальном задачка не очень сложная - все условия легко воплотимы..
Вложения:
axlch_1_40.dt

oracle77

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Вася
Задача 1.40
« Ответ #18 : Февраль 12, 2014, 03:52:08 pm »
axlch вас чего заявке от балды любой может курсы посещать? где же поле слушатель?

 здолбала капча

Добавлено (12.02.2014, 15:25)
---------------------------------------------
метод Движения.Заполнение.Записывать() не нужен! это принудительная запись в регистр . без него документ и сам запишет данные ,

 очистить() в вместо Записывать()

Добавлено (12.02.2014, 15:52)
---------------------------------------------
метод Записать()


umbus

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Maikl
Задача 1.40
« Ответ #19 : Февраль 18, 2014, 10:07:22 pm »
Не знаю что "мутного" в условии увидели коллеги, ихмо все прозрачно. Вторая формула для отчета сокращается до очевидного 100*X/Y
 где X - общее кол-во слушателей, записавшихся в Класс (проведенным доком Заявка) за искомый период,
 Y = V*K, V - Вместимость данного Класса из Справочника, K - кол-во дней в искомом периоде. То есть Y это сколько суммарно позволяет вмещать класс за период отчета, если бы был заполенен полностью во все рабочие дни запрашиваемого периода =) Ну а первая формула - проста как дверь =)

  
 Прошу посмотреть Решение.

  
 На Хранилище и Справочник Задачи - не обращать внимание - это для самоорганизации при подготовке к экзамену =)

 В процедуре Обр-ка проведения, почему-то не работает типовой код для регистра:

 
Код
Процедура ОбработкаПроведения(Отказ, РежимПроведения)      

    Движения.ЗанятостьКлассов.Прочитать();      

    Движения.ЗанятостьКлассов.Очистить();      

    Движения.Записать();


 А этот код работает:

 
Код
// Очистить записи документа, если он был ранее проведен      

 Если Проведен Тогда      

    Рег = РегистрыНакопления.ЗанятостьКлассов;      

    Набор = Рег.СоздатьНаборЗаписей();      

    Набор.Отбор.Регистратор.Установить(Ссылка);      

    Набор.Прочитать();      

    Набор.Очистить();      

    Набор.Записать();      

 КонецЕсли;


 Объясните почему?
 Основной Режим запуска - УП, Режим упр-я блокировкой - Управляемый surprised
Вложения:
1Cv8_1_40Maikl.dt
« Последнее редактирование: Февраль 18, 2014, 10:09:19 pm от Maikl »

Demy

  • Пользователь
  • **
  • Сообщений: 21
  • ФИО: Demy
Задача 1.40
« Ответ #20 : Июнь 19, 2014, 02:38:45 pm »
Цитата umbus ()
Объясните почему?
Ты не установил флаг записи. Добавь строку
Код
Движения.ЗанятостьКлассов.Записывать = Истина;
или замени последнюю строку на:
 
Код
Движения.ЗанятостьКлассов.Записать();
Хотя за давностью думаю ты уже и сам разобрался, но вдруг кому понадобится. smile

bsbo

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Борис
Задача 1.40
« Ответ #21 : Июнь 19, 2014, 03:19:49 pm »
Мое:)))
Вложения:
140.dt

Odines

  • Проверенный
  • ***
  • Сообщений: 112
  • ФИО: Odines
Re: Задача 1.40
« Ответ #22 : Март 25, 2015, 09:36:27 pm »
Мое

rusmosav

  • Проверенный
  • ***
  • Сообщений: 137
Re: Задача 1.40
« Ответ #23 : Май 06, 2015, 12:35:28 pm »
Прощу оценить.
« Последнее редактирование: Май 06, 2015, 04:28:24 pm от rusmosav »

Шахназар

  • Пользователь
  • **
  • Сообщений: 27
Re: Задача 1.40
« Ответ #24 : Май 08, 2015, 02:35:31 pm »
Мое
Красиво сделал. С Графиком РАботы. Как у настоящий пацанов!

axel_work

  • Проверенный
  • ***
  • Сообщений: 161
  • ФИО: Алексей
Re: Задача 1.40
« Ответ #25 : Февраль 19, 2016, 11:28:27 am »
Прощу оценить.

В обработке проведения Расписание - не лучше было использовать БлокироватьДляИзменения?


axel_work

  • Проверенный
  • ***
  • Сообщений: 161
  • ФИО: Алексей
Re: Задача 1.40
« Ответ #26 : Февраль 19, 2016, 11:32:36 am »
Просьба критиковать.

Отличие - контроль периодов заявки (на превышение курса), отчет сделал альтернативным методом.



alex_1980

  • Новичок
  • *
  • Сообщений: 4
  • ФИО: Алексей
Re: Задача 1.40
« Ответ #27 : Июнь 17, 2016, 10:09:00 am »
Задача необычная для понимания, но в целом не сложная для реализации

Мой вариант: РС График работы организации (сделал на основе уже имеющегося); РС Расписание (Изм. Дата Класс; Ресурс Курс) - для контроля не более одного курса в дату в классе - заполняется документом "Расписание"; РН оборотный Заявки (Изм. Класс, Курс; Ресурсы План заявок (заполняется док. "Расписание") , Факт Заявок (заполняется документом "Заявка")

В документах Расписание и Заявка указывается Дата начала и Длительность в днях. Контроль, который требуется в задаче реализован. Не реализован контроль планирования курса на выходной день

Отчет строится не сложно

alfalume

  • Проверенный
  • ***
  • Сообщений: 103
Re: Задача 1.40
« Ответ #28 : Сентябрь 07, 2016, 08:20:37 am »
мое решение

jonik

  • Проверенный
  • ***
  • Сообщений: 135
Re: Задача 1.40
« Ответ #29 : Сентябрь 27, 2017, 12:26:49 pm »
Всем привет. Задача зубодробительная это точно :o. Достаточно большой полет для фантазии (в плане реализации). Для решения принял несколько условий:
1) Курс не прерывается в рабочие дни
2) Начало и конец курса (в документе Расписание) устанавливается пользователем и строго по графику: пользователь сам считает количество рабочих дней.
Регистр ГрафикРаботы заполняется обработкой (переделал форму и код для упрощения). 2 справочника  - Курсы(реквизит Длительность) и Классы(реквизит Вместимость), 2 документа, 1 оборотный регистр. Проверку на пересечение в расписании делаю в процедуре ПриЗаписи. Отчет не совсем идентичен книжному, но только в таком виде можно правильно вычислить ПроцентПоПосещению - делаю это в СКД ч\з ВычислитьВыражениеСГруппировкойМассив().
« Последнее редактирование: Сентябрь 29, 2017, 04:14:52 pm от jonik »