Имя: Пароль:
1C
1С v8
График занятости в 1С. Нетипичная для 1С задача
, , ,
0 belka4_4
 
12.02.16
23:31
Автоматизирую аудиторный фонд вуза. А именно надо автоматизировать выделение помещений под проведение занятий (лекций, семинаров, лабораторных и др.мероприятий).
Есть аудитория. На каждый день по ней составлено расписание занятости на 8 пар. Т.е. количество хранимой информации на год для, например, 100 аудиторий - это 100*365*8. Конечно, это очень много. Тем более большая часть записей дублируется, т.к. расписание стабильно и известно на 1 сентября. Т.е. известно, что во вторник в 8.30 у данных групп на протяжении 16 недель стоит математика в такой-то аудитории.
Есть справочник Мероприятие, в котором хранится информация о времени мероприятия, участниках и графике (разовое, еженедельно, раз в 2 недели, раз в месяц, по датам). И есть регистр сведений с измерениями: Дата, пара (время), аудитория, и ресурс- мероприятие.
Надо чтобы забив информацию о мероприятии на основание его повторяемости создался как бы график занятости аудитории. Т.е. мы знаем все даты на семестр, когда будет занята аудитория. Но хранить на каждый случай (каждый вторник 8.30) отдельной записи в регистре смысла нет, т.е. надо как-то это оптимизировать.
Разумеется, стоит задача поиска свободной аудитории на определённую дату в определённое время.
Вопрос: как реализовать такой график???
Может, создание какого-либо массива, хранящего список дат, или как-то выгружать-загружать эти даты из файла...
Какие средства 1С придут в помощь?

Буду благодарна за любую информацию, которая поможет в этом деле (новый взгляд на решение задачи, примеры, примеры из типовых конфигураций, обработки какие-нибудь, которые функционально похожи на решаемую задачу). 1С только осваиваю, поэтому знания так себе.
1 Garykom
 
гуру
12.02.16
23:40
(0) п.1 можно не чужое фото?
п.2 фиолетово как хранить, главное как составлять расписание

ЗЫ еще давным давно делал программку для составления расписания, изучил кучу аналогов
понял что задача иногда не имеет оптимального решения

ЗЗЫ по теме хранения, ничего кроме уже хранить не нужно, достаточно отчетов которые просматривают записи "по периоду действия" и формируют расписание на нужный день

ЗЗЫ 100*365*8 = 292 000 и это совсем мало же, в 1мб все влезет легко ))
2 belka4_4
 
12.02.16
23:52
Расписание для групп составлять не нужно. Это как бы входная информация. Т.е. к тёте, которая выделяет аудитории, подходят и говорят: мне нужна аудитория по таким-то дням в такое-то время для стольки-то человек с такими-то параметрами (наличие видеопроектора, компов и т.д.).
Надо находить свободные: ЧтоЕсть за вычетом ЧтоУжеЗанято.
Аудиторий на самом деле не 100, конечно же. Вуз из 5 корпусов, каждый таит в себе 3-5 этажа. На этажах аудиторий 50 +-20.
Т.е. если хранить всё в лоб (на каждое время для каждой аудитории на каждую дату своя запись в регистре), то ничего не умрёт и будет нормально работать?
3 Фокусник
 
12.02.16
23:52
(0) как хранит, варианты:
Регистр сведений с измерениями: (справочник) , дата/время.
Ресурсы: занято (булево), группа (справочник), предмет (справочник)
Вероятно, потребуется документ ПланСвободныхАудиторий: формирует в этом РС записи в нужных измерениях с ресурсом Занято = ложь
Документ РасписаниеЗанятий - двигает РС с ресурсом Занято = Истина.
Срез последних по РС с отбором Где Занято = Ложь показывает свободные аудитории по дате/времени.
И т.д.
4 Asmody
 
12.02.16
23:53
(0) Смотря что ты хочешь с этим графиком делать. То, что ты описала, и есть расписание как таковое. Если тебе нужно быстро ответить, занята ли и кем/чем аудитория в конкретное время, то лучше хранить всё.
5 Garykom
 
гуру
12.02.16
23:54
(2) да но все записи ограничивать по периоду, т.е. если "мероприятие" периодическое то далее чем на год вперед не нужно его создавать

а получать легко просто берется нужный день и смотрим что есть из свободного
6 Фокусник
 
12.02.16
23:54
(2) это мизерные объемы для базы данных.
7 Asmody
 
12.02.16
23:59
А почему задача-то "нетипичная"? На 1С есть готовые решения для ВУЗов — это раз, на 1С есть планирование загрузки рабочих центров — а это похлеще расписания ВУЗа будет.
8 belka4_4
 
13.02.16
00:01
Фокусник:
(не знаю, как помечать, кому ответ адресован)
Т.е. предлагаете хранить так:
аудитория1,время 8.30 - занято, группой такой-то, читают то-то
аудитория1,время 10.00 - занято, группой такой-то, читают то-то
......
аудитория2,время 8.30 - занято, группой такой-то, читают то-то
аудитория2,время 8.30 - свободно, ничего, ничего
......

я правильно поняла?
просто не совсем понимаю смысл булевского занято. Ведь если есть запись-значит занято.

У меня в концепции предполагалось так:
аудитория1,дата такая-то время 8.30 - мероприятие такое-то
аудитория1,дата такая-то время 11.30 - мероприятие такое-то
аудитория2,дата такая-то время 8.30 - мероприятие такое-то
аудитория2,дата такая-то время 10.00 - мероприятие такое-то
9 belka4_4
 
13.02.16
00:03
Asmody:
Нет ну на 1с некоторые и игрушки пишут) Не знала, что фирма 1С для вузов что-то реализует. Обычно производственные задачи решаются, т.к. наверное на них больше ориентир. Поэтому решила отнести к нетипичным задачам)
10 Garykom
 
гуру
13.02.16
00:11
11 Garykom
 
гуру
13.02.16
00:12
(10) проблема 1С что в 90% случаев проще взять готовое (типовое) решение и его внедрить с адаптацией и переносом/заполнением данных
12 Asmody
 
13.02.16
00:12
13 Garykom
 
гуру
13.02.16
00:13
(12) хаха, опоздал
14 Asmody
 
13.02.16
00:14
(13) Я "источник" конфы нашел с прямыми контактами
15 Garykom
 
гуру
13.02.16
00:23
(14) засчитано :)
16 belka4_4
 
13.02.16
01:17
Спасибо. Составление расписания не на моих плечах, но думаю факт распределения аудиторий мою задачу рассматривает. По крайней мере можно посмотреть как организовано хранение данных. Осталось найти только где это скачать чтоб посмотреть.
17 HeKrendel
 
13.02.16
02:14
(0) Действительно нетипичная задача для 1С знать на каком оборудовании будет производиться та или иная услуга
18 Mikhail Volkov
 
13.02.16
04:28
(17) Почему же нетипичная? Очень даже напоминает обработку "АРМ Запись на ремонт" из Альфа-Авто 5
19 kosts
 
13.02.16
10:47
(8) Значение "Занято/Свободно" надо.
Например сегодня кабинет бронируем. Завтра что-то поменялось и надо снять бронь.
По принципам 1С прошлые документы трогать нельзя.
Т.е. удалить запись о занятости нельзя.
Значит надо сделать запись о снятии брони.
Т.е. в регистре будет 2 записи.
20 belka4_4
 
13.02.16
13:56
(19)
А как тогда поиск свободной осуществлять? Я предполагала, что если о найденной в справочнике подходящей по параметрам аудитории на это время в эту дату нет записей - значит она свободна. А так получается дополнительно надо будет проверять содержание найденных записей и если последняя из них с пометкой "свободна", значит тоже нам подходит.
Или Вы предлагаете хранить в регистре изначально все значения с пометкой "свободна", потом добавлять инфу о её занятости или снова свободности и смотреть по последней записи? Тогда может можно менять саму запись... Или менять записи принципами 1с тоже нельзя?
Просто опять же если там будет странный человек, который никак не может определиться - имеем кучу записей...
21 Фокусник
 
13.02.16
14:04
(8) "просто не совсем понимаю смысл булевского занято. Ведь если есть запись-значит занято. "

Я исхожу из того, что есть 3 варианта:
1. дата/время, в которое аудитория МОЖЕТ быть занята, но не занята. Это булево Занято = ЛОЖЬ.

2. дата/время, в которое аудитория занята. Это булево Занято = ИСТИНА

3. Аудитория не занята, но и не может быть занята (допустим, ночное время, или выходной, или праздни, или ремонт делают в аудитории и т.д.). - это нет записи в РС.

Исходя из этого можно по РС определить: занятость и свободность аудиторий.
22 Asmody
 
13.02.16
15:16
(21) "аудитория не может быть занята" - это тоже "занято"
23 belka4_4
 
13.02.16
15:31
(21)
А если смотреть по значению ресурса Мероприятие?
Если заполнено - значит занято. Но это только в том случае, если можно менять записи в регистре... Можно?
24 kosts
 
13.02.16
17:13
(23) Ну в принципе менять можно, но если только для учебной задачи. Для профессиональной разработки лучше, что бы накапливались.

(20) >А как тогда поиск свободной осуществлять?
Сортировать список и смотреть крайний.

В 1С есть специальный механизм для упрощения получения таких данных. Называется периодический регистр сведений с его срезом последних.
Если в регистр записать несколько записей, а в выборке использовать срез последних по этому регистру на нужную дату - то как раз и получим состояние занятости на указанную дату дату.
25 Злопчинский
 
13.02.16
17:54
блин, развели соплей.
нормальная, достаточно тривиальная задача.
26 kosts
 
13.02.16
17:58
(25) Говорят некоторые рождаются с умением программировать на ассемблере
27 belka4_4
 
13.02.16
18:23
(24)
Идею периодического регистра отбросили сразу, т.к. не нужна информация, что было с аудиторией. Важно её состояние сейчас.
Поэтому если ничего лучше не придумаю, то буду менять значения ресурса Неопределено/СсылкаНаМероприятие.
28 Злопчинский
 
13.02.16
18:50
(26)  ну я прилично на ассемблере есовском попрограммил на больших эвм. По сравнению с высокоуровневым программированием это как нирвана...
29 Фокусник
 
13.02.16
20:27
(23) "Но это только в том случае, если можно менять записи в регистре... Можно?"

Менять записи можно, но, ИМХО, не нужно. Лучше пусть будет "история изменений", а актуальную информацию получаем через "срез последних" (регистр сведений - периодический).

(22) Дело хозяйское конечно, но мне думается, нужно разделять понятия: "нельзя занять" (выходной, ночь) и "занято" (идут занятия)...