Uploaded by Максим Минькевич

ПЗ (готовое)

advertisement
Учреждение образования «Белорусский государственный университет информатики и радиоэлектроники»
Институт информационных технологий
Факультет компьютерных технологий
УТВЕРЖДАЮ
Заведующий кафедрой ИСиТ
––––––––––––––––––––––––
(подпись)
––––––––––––––––– 2022 г.
ЗАДАНИЕ
по курсовому проектированию
студенту Минькевич Максим Николаевич
1. Тема работы Приложение для формирования расписания ИИТ БГУИР на
базе 1C
2. Срок сдачи студентом законченной работы––22.05.2022 г.–––
3. Исходные данные к работе
Входные данные: дата и время, аудитории, ФИО преподавателей, учебные
группы. Экспорт данных из Excel (согласно шаблону Приложение 1. Шаблон
расписания БГУИР), экспорт готового расписания в Excel (согласно шаблону
Приложение 2 Шаблон расписания ИИТ БГУИР). Аудитории, которые занимает БГУИР отмечать одним цветом, аудитории ИИТ БГУИР – другим. Разбиение по неделям, фильтр по 1 и 3 неделе. При открытии приложения на
экране отображалось только 3 недели (предыдущая, текущая, следующая).
Отображение определённого количества недель. Ограничение на 40 часов в
неделю для преподавателя. Запрет на пересечение аудиторий, групп и преподавателей в одно и тоже время. Возможно указания диапазона времени для
автоматического распределения преподавателей по аудиториям и кабинетам.
Элементы графического интерфейса (png, gif, шрифты различных форматов).
4. Содержание пояснительной записки
Введение
1. Анализ прототипов, литературных источников и формирование требований к
проектируемому программному средству
2. Анализ требований к программному средству и разработка технического задания (функциональных требований)
3. Проектирование программного средства
4. Создание (конструирование) программного средства
5. Оценка работы программного средства и анализ полученных результатов
6. Руководство пользователей (по установке и эксплуатации)
Заключение
Список используемых источников
5. Перечень графического материала
1. " Приложение для формирования расписания ИИТ БГУИР на базе 1C ", схема
программы, чертеж.
2. "Алгоритм проверки на пересечение аудиторий и преподавателей", схема
алгоритма, чертеж.
3. "Алгоритм автоматического распределения преподавателей по аудиториям и
часам", схема алгоритма, чертеж.
4. "Алгоритм экспорта расписания в Excel", схема алгоритма, чертеж.
5. "Алгоритм импорта расписания БГУИР", схема алгоритма, чертеж.
6. Консультант по курсовой работе C.А. Листопадов
7. Дата выдачи задания –
8. Календарный график работы над курсовой работой на весь период
проектирования (с обозначением сроков выполнения и процентом от общего
объёма работы):
№
Содержание работ
Срок
выполнения
% от общего
объёма работы
1
Раздел 1
22.02.2022
15 %
2
Разделы 2, 3
14.03.2022
30 %
2
3
4
Разделы 4, 5
Раздел 6
5
Оформление пояснительной записки и 22.05.2022
14.04.2022
14.05.2022
60 %
90 %
100 %
графического материала
6
Защита курсовой работы
РУКОВОДИТЕЛЬ––––––
C.А. Листопадов
(подпись)
Задание принял к исполнению –––____––
(дата и подпись студента)
3
Лит.
Изм. Лист
Разраб.
№ докум.
Минькевич
Подпись Датаа
Масса
Масштаб
Блок-схема по работе
приложения
1:1
Провер.
Т. Контр.
Лист1
Листов 1
4
Реценз.
Н. Контр.
Утвержд.
БУГИР
Лит.
Изм. Лист
Разраб.
Провер.
Т. Контр.
№ докум.
Минькевич
Подпись Датаа
Масса
Масштаб
Блок-схема алгоритма
проверки пересечение
аудиторий
1:1
Лист1
Листов 1
Реценз.
Н. Контр.
Утвержд.
БУГИР
5
Лит.
Изм. Лист
Разраб.
Провер.
Т. Контр.
№ докум.
Минькевич
Подпись Датаа
Блок-схема алгоритма автораспределение аудиторий и часов
Масса
Масштаб
1:1
Лист1
Листов 16
Реценз.
Н. Контр.
Утвержд.
БУГИР
Лит.
Изм. Лист
Разраб.
№ докум.
Минькевич
Подпись Датаа
Масса
Масштаб
Блок-схема алгоритма по
экспорту в EXCEL
1:1
Провер.
Т. Контр.
Лист1
Листов 1
Реценз.
Н. Контр.
Утвержд.
БУГИР
7
Лит.
Изм. Лист
Разраб.
Провер.
Т. Контр.
№ докум.
Минькевич
Подпись Датаа
Масса
Масштаб
Блок-схема алгоритма по
импорту расписания из
файла
1:1
Лист1
Листов 1
Реценз.
Н. Контр.
Утвержд.
БУГИР
8
СОДЕРЖАНИЕ
ВВЕДЕНИЕ ............................................................................................................ 11
1 Анализ прототипов, литературных источников и формирование
требований к проектируемому программному средству .................................. 13
1.1 Характеристика предметной области ..............................................................................13
1.2 Назначение информационной базы .................................................................................15
1.3 Описание аналогов ............................................................................................................15
2 Анализ требований к программному средству и разработка технического
задания (функциональных требований).............................................................. 21
2.1 Обоснование выбора языка программирования .............................................................21
2.2 Постановка задачи на разработку информационной базы ............................................23
2.3 Общие сведения информационной базы .........................................................................23
2.4 Функциональное назначение ............................................................................................24
2.5 Используемые технические средства ..............................................................................24
3
ПРОЕКТИРОВАНИЕ ПРОГРАММНОГО СРЕДСТВА............................. 25
3.1 Проектирование интерфейса ............................................................................................25
3.2 Логическая модель данных...............................................................................................25
3.3 Схема алгоритма программы по формированию расписания .......................................28
3.4 Схема алгоритма проверки на пересечение аудиторий и преподавателей ..................29
3.5 Схема алгоритма автоматического распределения преподавателей по аудиториям и
часам .........................................................................................................................................29
3.6 Схема алгоритма экспорта расписания в Excel ..............................................................31
3.7 Схема алгоритма импорта расписания ИИТ БГУИР .....................................................32
4
СОЗДАНИЕ (КОНСТРУИРОВАНИЕ) ПРОГРАММНОГО СРЕДСТВА 33
4.1
Физическая структура ..................................................................................................33
4.2
Логическая структура ...................................................................................................33
5 ОЦЕНКА РАБОТЫ ПРОГРАММНОГО СРЕДСТВА И АНАЛИЗ
ПОЛУЧЕННЫХ РЕЗУЛЬТАТОВ ....................................................................... 34
5.1 Тестовые примеры .............................................................................................................34
5.2 Анализ полученных результатов ......................................................................................35
6 РУКОВОДСТВО ПОЛЬЗОВАТЕЛЕЙ (ПО УСТАНОВКЕ И
ЭКСПЛУАТАЦИИ) .............................................................................................. 39
6.1
Установка приложения .................................................................................................39
6.2 Эксплуатации приложения ...............................................................................................43
ЗАКЛЮЧЕНИЕ ..................................................................................................... 46
СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ ................................................. 47
ПРИЛОЖЕНИЕ А ................................................................................................. 48
9
10
ВВЕДЕНИЕ
В наше время, которое называют веком информационных технологий,
особое значение во всех сферах человеческой деятельности играет информация. Все большее внимание уделяется информированности о том или ином
объекте, будь это крупная фирма или человек. Без полной информации практически невозможно решать серьезные задачи, добиваться реализации своей
цели.
Одна из важных проблем действительно качественной организации
учебного процесса в высшем учебном заведении является задача в создании
автоматизированного учебного расписания. Правильно и точное составленное
расписание обеспечивает равномерную загрузку студенческих групп и профессорско-преподавательского состава.
Но информация – это еще не все. В постоянно изменяющихся условиях
нужно особое внимание уделить динамике изменения информации и наиболее
быстрому доступу к ней. Не следует забывать и об удобстве и простоте пользования полученными данными. Время обработки информации иногда может
превышать время ее получения, что ведет к замедлению принятия решения.
Сейчас это особенно актуально, работающих по старинке, где теряется время
на поиск нужной информации.
Все вышеперечисленное практически невозможно себе представить без
применения современных средств, сбора и обработки информации. Именно с
использованием вычислительной техники достигаются высокие результаты в
скорости получения информации и удобства работы с ней. Весь этот процесс
перехода от старых принципов работы к информационным технологиям называется автоматизацией.
Персональный компьютер уменьшает время выполнения операций и при
наличии специального программного обеспечения возможно выполнение некоторых функций в автоматическом режиме.
При грамотном использовании программного обеспечения можно свести документооборот к минимуму, уменьшить количество промежуточной документации.
Объект исследования – программное обеспечение по формированию
расписания ИИТ БГУИР.
Предмет исследования – Приложение для формирования расписания
ИИТ БГУИР на базе 1C.
Цель данного курсового проекта – изучить и разработать информационную базу.
Задачи проекта:
– изучить особенности автоматизации формирования расписания;
– разработать структуру информационную базу;
– разработать и протестировать информационную базу.
Пояснительная записка к курсовому проекту состоит из 47 страниц, 24
рисунков, 7 таблиц, 10 источников.
11
12
1 Анализ прототипов, литературных источников и формирование требований к проектируемому программному средству
1.1 Характеристика предметной области
Задача составления расписаний являются предметом научных исследований с середины прошлого века. Область их применения включает в себя различные сферы человеческой деятельности, такие как: транспортные перевозки, массовое обслуживание, промышленность, образование и т. д. Практика
выдвигает множество задач, которые невозможно эффективно решить путем
полного перебора. Для большинства моделей теории расписаний нахождение оптимального расписания является трудноразрешимой задачей, а решение
приближенных к реальным условиям задач обладает ещё большей сложностью, так как данные решения должны удовлетворять многочисленным, зачастую конфликтующим между собой ограничениям производственного, организационного и психофизиологического характера. Выходом из данного положения является отказ от подхода, когда пригодным считается только самое
лучшее решение.
Рассмотрим задачу подобного класса, возникающую в конкретной области управленческой деятельности, – составление расписаний учебных занятий
в вузе.
Количественный и качественный рост высшей школы требует нового
подхода к решению задач управления учебной, научной и хозяйственной деятельностью вузов. Этот подход в последние годы находит свое воплощение
в применении современных средств вычислительной техники и математических методов в управлении высшими учебными заведениями. В современном
мире всё большее распространение получают различного рода системы автоматизации технических процессов, которые всегда выполнялись вручную.
Например, системы принятия решения в маркетинге, экспертные системы, заменяющие опытных специалистов, прогнозирующие системы в самых различных областях науки и техники. К таким же процессам относится и составление
расписания, которое до сих пор во многих учебных заведениях создается вручную на основе многолетнего опыта. Современные it-технологии располагают
средствами, позволяющими наилучшим образом организовать любой процесс,
в том числе и учебный.
Задача планирования расписания учебных занятий – это задача на составление расписания комбинаторного типа, характерной особенностью которой является огромная размерность и наличие большого числа ограничений
сложной формы. Фактически, в настоящее время, не существует универсальных методов решения таких задач. Прямое применение математической (классической) теории расписания к задаче составления учебных занятий не представляется возможным. Тем не менее, есть ряд эвристических и переборных
методов, которые вполне поддаются программированию.
13
Есть мнение, что опытный диспетчер сможет составить расписание так,
что оно будет отвечать интересам учебного процесса и общественной жизни
образовательного учреждения. Однако с этим нельзя согласиться. Ручное решение задачи составления расписания занятий требует больших затрат времени, квалифицированных специалистов, в то же время результат такого решения часто получается далеко не оптимальным. После ввода исходной информации требуется её согласование, в то время как невозможность получения
требуемого расписания может быть определена ещё на этапе анализа. Во время
составления расписания возможно возникновение тупиковых ситуаций. Всё
это требует изменения исходных данных и ослабления ограничений, и здесь
без человека не обойтись. Без внесения данных изменений расписание не будет иметь практической ценности. Также следует учесть тот момент, что расписание может меняться и во время его использования, т.е. после составления,
и здесь весьма важен человеческий фактор. В этом плане важна поддержка
данного процесса автоматизированными методами и процедурами. Основное
преимущество состоит в том, что автоматизированное составление устраняет
массу рутинной работы, такой как: поиск возможных вариантов внесения очередных элементов в расписание, проверку выполнения требований, поиск случайных ошибок в готовом расписании, оформление расписания на бумаге в
виде различных таблиц (для преподавателей, групп, по кабинетного), оставляя
человеку больше времени на более интеллектуальные действия. Компьютер в
данном случае также является инструментом, существенно усиливающим способности человека, т.к. человек не в состоянии перебрать и проанализировать
такое же количество вариантов расписаний, как компьютер.
В последние годы предпринимаются множественные попытки совершенствования планирования учебного процесса путем построения алгоритмов
оптимизации задач планирования учебной работы вуза с использованием вычислительной техники и программного обеспечения MicrosoftExcel. Практическое внедрение планирования учебного процесса с использованием веб-технологий имеет место лишь в немногих вузах. Анализ состояния этих разработок позволяет сделать следующие выводы:
– разработка и внедрение вузами задач АСУ осуществляется в инициативном порядке и эти работы, как правило, направлены на решение отдельных
проблем. Разобщенность групп исследователей и разработчиков привела к созданию множества систем, направленных на разработку алгоритмов и программ, рассчитанных на обслуживание только конкретного вуза.
– многие системы возлагают на разработчика расписания всю ответственность за учет реальных требований. В частности, учет требований преподавателей, ограничений на количество проводимых занятий в день, в неделю
– все эти и многие другие рутинные задачи в таких системах приходится решать человеку чаще всего методами перебора.
– имеющиеся программы не предполагают многопользовательский режим работы и не поддерживают весь необходимый электронный документооборот.
14
– не внедряется разработка типовых унифицированных элементов для
создания единой автоматизированной системы управления высшей школой.имеющиеся программы имеют весьма неудобный интерфейс для ввода исходных данных и редактирования полученного расписания.
В связи с расширением работ по совершенствованию системы управления высшей школой путем создания и внедрения в вузах различных автоматизированных систем управления возникает необходимость в средствах составления учебного расписания на вычислительной технике. Для этого необходимо четко формализовать требования к расписанию и разработать соответствующее алгоритмическое обеспечение.
1С:Предприятие – это (одновременно) и технологическая платформа, и
пользовательский режим работы. Технологическая платформа предоставляет
объекты (данных и метаданных) и механизмы управления объектами. Совокупность объектов (данных и метаданных), а также связей между ними, задаваемых программистом, представляет собой конфигурацию.
Конфигурации, которые входят в прикладной программным комплекс
(ППК) "1С:Предприятие", разработаны специально для автоматизации управления и учета организаций различных сфер деятельности.
Данная система состоит из качественных решений для комплексной автоматизации любых предприятий, содержит продукты для управления финансами, расчета зарплаты и управления кадрами, ведения бухгалтерского учета
и пр.
"1С:Предприятие" – одна из самых известных систем на территории Беларуси, а также ряда других стран благодаря ее функциональности, прозрачности, гибкости и ориентированности на различные категории пользователей.
1.2 Назначение информационной базы
Разрабатываемый комплекс задач «Приложение для формирования расписания ИИТ БГУИР на базе 1C» используется преподавателями университетов, и предназначен для автоматизации работы расписания университета
(ввод и хранение данных, сортировка информации, обработка путем ее редактирования, добавления и удаления, составление отчетов).
Обработку и контроль данных из первичных документов осуществляет
преподаватель. С помощью информационного обеспечения производится
сортировка и группировка данных.
1.3 Описание аналогов
15
На сегодняшний день существует большое количество различных автоматизированных систем, направленные на формирование учебного расписания. Ниже рассмотрим несколько таких систем.
Программа для составления расписания предназначена для решения задач автоматизированного составления учебных расписаний и оперативного
управления помещениями в ВУЗах. С его помощью составлять расписание
можно в автоматическом, ручном и смешанном режимах с учетом многих
ограничений и условий. При этом можно построить как допустимое расписание, так и оптимизированное, в котором сокращено количество окон или количество используемых помещений.
В программе реализован следующий функционал:








составление расписаний в режимах:
o ручной,
o автоматический,
o смешанный,
а также в режимах:
o по помещениям,
o по группам,
o по преподавателям.
встроенные средства интеграции с "1С:Университет", "1С:Университет
ПРОФ";
удобная форма "шахматка" для быстрой ручной модификации расписания перетаскиванием "drap&drop"
составление нескольких расписаний и выбор лучшего;
составление расписаний в разрезе:
o семестров;
o сценариев ("пессимистичный", оптимистичный).;
o кафедр;
o типа расписания;
o периода, на который составлено расписание;
учет пожеланий и возможностей преподавателей, групп студентов, помещений;
консолидация расписаний. Например, расписания по кафедрам могут
быть объединены в расписание по факультетам → институтам → университету. В консолидированном расписании:
o устраняются временные коллизии, связанные с использованием
общих ресурсов (помещений, преподавателей, групп студентов);
o в общее расписание попадают "потоковые занятия", проводимые
для групп разных кафедр;
o в общее расписание попадают специализированные занятия в зарезервированные под факультет помещения (например, занятия
физической культурой);
оптимизация учебных расписаний по одному из критериев:
16
количество используемых помещений,
o минимизировать количество окон и т.д.;
сравнение на допустимость при составлении расписания в любом режиме:
o тип помещения / тип занятия,
o вместимость помещения / количество студентов в группе;
выбор произвольной периодичности расписания (неделя, две недели,
семестр, фиксированный период и т.д.);
составление расписания сессии;
учет параллельных занятий, разбиения на подгруппы и потоковых лекций при составлении расписания;
учет максимального допустимого количества занятий в день для
группы студентов или преподавателя при составлении расписания;
построение расписания для 2-х и более смен;
оперативное резервирование помещений (дополнительно можно указывать мероприятие и/или причину резервирования);
просмотр расписаний и ввод предпочтений по web-интерфейсу;
уведомление об изменении расписаний по e-mail для студентов и преподавателей (отсылаемый документ формируется автоматически в
форме отчета "Печать расписания");
быстрая форма замены занятий;
учет графика учебно-производственного процесса;
отчеты: "Проведенные занятия", "Использование помещений по периодам", "Нагрузка";
загрузка справочников (в том числе списки преподавателей, дисциплин, групп) и учебных планов в форматах Excel и XML. Учебный
план содержит сведения:
o количество занятий за период планирования;
o группа,
o дисциплина,
o краткое наименование дисциплины для вывода в расписании,
o преподаватель,
o количество академических часов,
o количество занятий,
o количество занятий за период планирования;
оперативное изменение расписаний (путем перетаскивания). Перетаскивать можно:
o занятие на пустую ячейку "шахматки",
o занятие на заполненную ячейку, при этом занятие, стоявшее в
ячейке, переместится в таблицу "Нераспределенные занятия";
o занятие из одной ячейки "шахматки" в другую;
разграничение доступа подокументно.
o















Процесс составления расписаний в системе делится на следующие этапы:
17




ввод первичной информации: курсы, группы, дисциплины, преподаватели, помещения;
ввод учебного плана на семестр, в котором указывается, кто, для кого,
какое занятие и в каком объеме должен провести;
ввод ограничений и предпочтений на преподавателей, студентов, помещения;
составление учебного расписания.
Интерфейс программы показан на рисунке 1.1.
Рисунок 1.1 – Интерфейс программы
При вводе нового расписания заполняются реквизиты:
семестр;
 сценарий («пессимистичный», оптимистичный).;
 кафедра, тип расписания;
 период, на который составлено расписание.
На следующем рисунке представлена основная форма для составления расписания («шахматка», строки – дни недели, пары, колонки - помещения), показано на рисунке 1.2.

18
Рисунок 1.2 – Заполнение нового расписания
На шахматке отображаются уже поставленные в расписание занятия, а специальным цветом подсвечиваются ячейки, куда может/не может быть установлено занятие из нижнего списка «неупорядоченных» занятий.
Цвета обозначают следующее:
желтый – преподаватель или группа заняты в это время; желтым выделяется вся строка времени;
 кирпичный – помещение занято (зарезервировано другой кафедрой);
 красный – помещение не подходит по типу или вместимости,
 зеленый – это же занятие;
 голубой – предпочтительное для занятия время (с точки зрения преподавателя или студентов);
 серый – помещение зарезервировано под данную кафедру.
Оператор может вручную перетаскивать занятия из нижнего списка в шахматку или двигать занятия по шахматке. Таким образом, рассчитав шахматку
автоматически, потом имеется возможность ее изменить вручную, или,
наоборот, проставив что-то вручную, остаток можно рассчитать автоматически. Система автоматически показывает все коллизии и несоблюдения условий и позволяет их быстро отрабатывать. Если в расписании присутствуют
ошибки, то они будут выведены в правой части экрана с описанием. При
двойном щелчке по ошибке на «шахматке» розовым цветом будут раскрашены ячейки, в которых найдена ошибка, показано на рисунке 1.3.

19
Рисунок 1.3 – Показанные ошибки в расписании
20
2 Анализ требований к программному средству и разработка технического задания (функциональных требований)
2.1 Обоснование выбора языка программирования
В настоящее время на рынке программных продуктов предлагаются различные информационные системы, предназначенные для решения задач бухгалтерского, налогового, складского учета и торговой деятельности предприятия. Среди них выделяется «1С:Предприятие 8» - комплексная система автоматизации управления предприятиям, в которой реализованы в полном объеме
все необходимые функции, так же данная система отличается высокой производительностью и мобильностью. Она постоянно дорабатывается и модернизируется, приобретая всё больше дополнительного функционала и обладает
всеми возможностями, необходимыми для ведения учета на любом предприятии.
При разработке платформы "1С: Предприятие 8" ее создатели сразу ориентировались на получение целостной базовой платформы, которая будет использоваться для построения разнообразных прикладных решений. При этом
данные прикладные решения могут создаваться не только специалистами
фирмы «1С», но и множеством других разработчиков, которые являются экспертами в тех или иных отраслях производственной деятельности. Поэтому
платформа изначально проектировалась как тиражируемый продукт. Этот
продукт включает все необходимые технологии для эксплуатации бизнес-приложений и инструменты для их разработки и модификации.
Опыт разработки прикладных решений показывает, что значительная
часть разработчиков не создает программы с нуля, а лишь дорабатывает типовые решения. Высокий уровень настраиваемости решений на специфические
требования пользователя является одним из важных преимуществ столь четкого разграничения между платформой и прикладными решениями.
Данное обстоятельство определяет особые требования к наглядности и
простоте понимания разработчиком уже существующих решений, а также
максимально учитывается во всех механизмах платформы. Выделение прикладного решения как самостоятельного элемента позволяет сформировать
целую область создания, распространения и поддержки разнообразных прикладных систем. В этой области можно сконцентрировать свои усилия только
на специфике данного класса задач.
В принципах построения платформы «1С:Предприятие 8» изначально
заложена строгая ориентация на разработку прикладного решения на основе
определенной модели.
Модель - это вся идеология построения прикладного решения. Здесь и
способы построения структур данных, и типы связей между данными, и принципы управления данными, и форматы описания бизнес-логики, и способы
21
связи данных с объектами интерфейса, и разделение функциональности по
уровням системы, а также многое другое.
Важно, что все приложения должны следовать принятой модели. Этим
обеспечивается единообразие и предсказуемость их поведения. Таким образом, разработчик, который желает отразить в прикладном бизнес-решении
специфику той или иной предметной области, имеет вполне определенный
набор способов реализации задачи средствами, заложенными в платформу.
Безусловно, такой подход в чем-то ограничивает свободу разработчика, но в
то же время он защищает от множества ошибок и позволяет довольно быстро
получить работоспособное решение, которое в дальнейшем сможет развиваться и поддерживаться не только им, но и другими специалистами.
Кроме того, наличие единой модели принципиальным образом сказывается и на простоте освоения системы. Вся разработка ведется в рамках одной
сквозной системы понятий и в едином пространстве типов данных. У разработчика не возникает необходимости осваивать несколько моделей представления и тратить усилия на реализацию переходов между ними на разных уровнях.
В системе «1С: Предприятие» все операции редактирования данных (создание, изменение и удаление) проводятся только с использованием объектной техники. Разработчики взаимодействуют с базами данных не на уровне
записей, а с помощью объектов, соответствующих хранимым в базах данных
сущностям. Работа с объектными сущностями поддерживается представлением сущностей базы данных в виде объектов встроенного языка программирования и специальными типами данных, служащими для представления объектных ссылок (ссылок на объекты базы данных). Зная объект, легко получить
его ссылку: зная ссылку - извлечь объект из базы данных. Данная техника
обеспечивает наглядный и естественный способ описания в исходном коде алгоритмов бизнес-логики, манипулирующих объектами, и гарантирует логическую целостность данных при любых операциях. Это напоминает написание
приложений объектных баз данных, с той лишь разницей, что сохранение данных происходит в таблицах реляционной СУБД. При этом в модулях, написанных на встроенном языке, может одновременно присутствовать несколько
объектов, относящихся к одной единице базы данных.
Для изменения хранимых данных не требуется писать сложные запросы
и преобразовывать результаты их обработки в объекты языка программирования. Достаточно получить объект из базы данных, изменить его свойства и
снова сохранить. Разработчик при этом имеет возможность написать обработчики событий, связанных с изменением данных, выполняя с их помощью различные проверки и изменяя при необходимости другие данные.
Платформа обеспечивает работу конфигурации и позволяет вносить в
нее изменения или создавать собственную конфигурацию.
Существует одна платформа – 1С:Предприятие 8, и множество конфигураций. Для функционирования какого-либо прикладного решения всегда
необходима платформа и какая-либо (одна) конфигурация.
22
Сама по себе платформа не может выполнять никаких задач автоматизации, так как она создана для обеспечения работы какой-либо конфигурации.
То же самое с конфигурацией: чтобы выполнить те задачи, для которых она
создана, необходимо наличие платформы, которая и управляет ее работой.
Тут и выходит на передний план конфигурируемость системы, поскольку платформа, помимо управления работы конфигурацией, содержит
средства, позволяющие вносить изменения в используемую конфигурацию.
Более того, платформа позволяет создавать свою собственную конфигурацию
"с нуля", если по каким-либо причинам использование типовой конфигурации
представляется нецелесообразным.
2.2 Постановка задачи на разработку информационной базы
Целью разрабатываемой информационной базы является программное
обеспечение по формированию расписания ИИТ БГУИР.
Для реализации данной информационной базы были сформированы следующие задачи:
– создать справочники «преподаватели», «предметы», «группы», «аудитории».
– создать реквизиты, табличные части и формы для справочников
– создать отчёт «недельное расписание»
– создать константу «недельное время преподавателя»
– создать подсистему «главное меню»
Функции, которые должна выполнять данная информационная база следующее:
– просмотр информации;
– добавление новой информации;
– удаление информации;
– редактирование уже добавленной информации;
– программа должна формировать макеты для печати;
– возможность сортировки и группировки данных;
– многооконный интерфейс;
– удобное меню.
2.3 Общие сведения информационной базы
Учёт клиентов предприятие разработан с использованием технологии
1С: Предприятие 8.3.
Информационная база состоит из 5 справочников, 1 документа, 2 перечислений, 1 отчёта, 1 констант и1 подсистем.
23
Интерфейс созданной информационной базы достаточно удобен и
прост, наглядно отображает его возможности. Разработанная информационное база выполняет все поставленные задачи.
Перед запуском программы убедитесь, что компьютер обладает минимальными системными требованиями:
 процессор Intel или AMD с частотой 1100 MHz;
 оперативная память: 128 МВ;
 50 MB на жёстком диске;
 операционная система Windows XP или выше;
2.4 Функциональное назначение
Данный комплекс задач предназначен для оптимального ведение
расписания ИИТ БГУИР, хранения данных, ведения отчетности и
формирования расписания за определенный промежуток времени. Реализация
комплекса задач позволяет вести учёт по всем добавленным расписаниями.
Данный комплекс задач можно внедрить, так как его использование
произведет значительный экономический эффект.
2.5 Используемые технические средства
Минимальные системные требования, которые должны быть у разработчика и пользователя для стабильной работы и запуска информационной базы,
должны быть следующие:
– процессор: Pentium 2 и выше;
– объем оперативной памяти 128 мб и больше;
– операционная система Windows XP и выше;
– место на жестком диске 50 мб;
– видеокарта на 128 мб.
Оптимальные системные требования, которым должен соответствовать
компьютер для стабильной и отзывчивой работы информационной базы, следующие:
– процессор: Intel i3-1205;
– объем оперативной памяти 512мб;
– операционная система Windows 7;
– место на жестком диске 100 мб;
– видеокарта на 512 мб.
Также пользователю либо разработчику для работы необходимо иметь
следующие:
– мышь;
– клавиатура;
– монитор.
24
3 ПРОЕКТИРОВАНИЕ ПРОГРАММНОГО СРЕДСТВА
3.1 Проектирование интерфейса
В данном проекте должен быть создан понятный и удобный интерфейс,
созданы такие справочники как «преподаватели», «группы», «аудитории»,
«группы».
Требуется создать документ «расписание», в котором хранится вся информация об расписании.
Добавить возможность экспорта или импорта расписание в EXCEL, за
выбранный период.
Внедрить проверку на пересечение аудитории/групп и оставшихся часов преподавателя.
3.2 Логическая модель данных
При разработки логической модели информационной базы для корректной работы необходимо 4 справочников, 1 документ. Информация о преподавателях хранится в справочнике «Преподаватели», структура справочника показана в таблице 3.1. Справочник хранит основную информацию о преподавателе. С помощью данного справочника можно просматривать всех преподавателей, а так-же добавлять либо же редактировать новых или старых преподавателей.
Таблица 3.1 – Справочник преподаватели
Наименование
Тип данных
1
2
Описание
3
ФИО
Текст
ФИО преподавателя
Должность
Текст
ЗакрепленныйПредмет
Текст
ЗакрепленнаяАудитория
Текст
Должность преподавателя
Закрепленный предмет
за преподавателя
Закрепленная аудитория за преподавателем
25
ЗакрепленныйКорпус
Текст
1
2
ЭлектроннаяПочта
Текст
МобильныйТелефон
Числовой
Закрепленный корпус
за преподавателем
3
Электронная почта преподавателя
Мобильный телефон
преподавателя
Информация о учебных группах хранится в справочнике «УчебныеГруппы», структура справочника показана в таблице 3.2. Справочник хранит основную информацию о учебных группах. С помощью данного справочника можно просматривать все учебные группы, а так-же, добавлять либо же
редактировать новые или старые группы.
Таблица 3.2 – Справочник учебные группы
Наименование
Тип данных
1
2
Описание
3
Наименование
Текст
Название группы
Код
Числовой
Уникальный код
группы
Информация о аудиториях хранится в справочнике «Аудитории», структура справочника показана в таблице 3.3. Справочник хранит основную информацию о аудиториях. С помощью данного справочника можно просматривать все добавленные аудитории, а так-же, добавлять либо же редактировать
новые или старые аудитории.
Таблица 3.3 – Справочник аудитории
Наименование
Тип данных
1
2
Наименование
Текст
Код
Числовой
Описание
3
Наименование аудитории
Уникальный код аудитории
26
Информация о предметах хранится в справочнике «Предметы», структура справочника показана в таблице 3.4. Справочник хранит основную информацию о предметах. С помощью данного справочника можно просматривать все добавленные предметы, а так-же, добавлять либо же редактировать
новые или старые предметы.
Таблица 3.4 – Справочник предметы
Наименование
Тип данных
1
2
Наименование
Текст
Код
Числовой
Описание
3
Наименование предмета
Уникальный код предмета
Информация о расписании занятий хранится в документе «СозданиеРасписания», структура документа показана в таблице 3.5. Документ хранит основную информацию о расписании. С помощью данного документа можно
просматривать все созданные расписания, а так-же, формировать новое расписание.
Таблица 3.5 – Документ создание расписания
Наименование
Тип данных
1
НомерГруппы
ДатаНачалоРасписание
2
СсылкаСправочникУчебныеГруппы
Дата
ДатаОкончаниеРасписание
Код
Дата
ДеньНедели
Текст
Числовой
Описание
3
Номер группы
Дата начала периода
расписания
Дата конца периода
расписания
Уникальный код документа
Название дня недели
27
НачалоЗанятий
Дата и время
Время начала пары
КонецЗанятий
Дата и время
Время окончание пары
1
Группа
Аудитория
Преподаватель
ОставшиесяНедельныеЧасыПреподавателя
2
СсылкаСправочникУчебныеГруппы
СсылкаСправочникАудитории
СсылкаСправочникПреподаватели
Числовой
3
Номер группы
Номер аудитории
ФИО Преподавателя
Количество свободных
часов преподавателя
3.3 Схема алгоритма программы по формированию расписания
Схема алгоритма программы по формированию расписания ИИТ
БГУИР представлена на рисунке 3.1.
Рисунок 3.2 – Схема алгоритма программы по формированию расписания
28
3.4 Схема алгоритма проверки на пересечение аудиторий и
преподавателей
Схема алгоритма проверки на пересечение аудиторий и преподавателей
представлена на рисунке 3.3.
Рисунок 3.3 – Схема алгоритма проверки на пересечение аудиторий и преподавателей представлена
3.5 Схема алгоритма автоматического распределения преподавателей по аудиториям и часам
Схема алгоритма автоматического распределения преподавателей по
аудиториям и часам 3.4.
29
Рисунок 3.4 – Схема алгоритма автоматического распределения преподавателей по аудиториям и часам
30
3.6 Схема алгоритма экспорта расписания в Excel
Рисунок 3.5 – Схема алгоритма по экспорту расписания в EXCEL
31
3.7 Схема алгоритма импорта расписания ИИТ БГУИР
Рисунок 3.6 – Схема алгоритма по импорту расписания из файла
32
4 СОЗДАНИЕ (КОНСТРУИРОВАНИЕ) ПРОГРАММНОГО
СРЕДСТВА
4.1 Физическая структура
Приложение содержит в себе формы элементов, подсистемы и интерфейсы которые отвечают за следующие функции:
1) Форма элементов справочника «преподаватели» нужна для заполнения в справочник новой информации
2) Форма элементов справочника «аудитории» нужна для заполнения в
справочник новой информации
3) Форма элементов справочника «предметы» нужна для заполнения в
справочник новой информации
4) Форма элементов справочника «группы» нужна для заполнения в
справочник новой информации
5) Форма элементов документа «созданиеРасписания» нужна для составление нового расписания
6) Подсистема «Главная» нужна для отображение основного интерфейса приложение
4.2 Логическая структура
При разработке приложения разработать следующие методы:
1) Функция ПолучитьКонстанту() – функция по получению константы
, по хранению количество часов в неделю на преподавателя
2) Функция ПолучитьОставшиесяВремяПреподавателяНаСервере() –
функция по получению свободных часов преподавателя
3) Процедура Таблица1АудиторияПервойПодгруппыПриИзменении(Элемент) – процедура по предотвращению пересечение аудиторий
4) Процедура Таблица1ПреподовательПриИзменении(Элемент) – процедура по предотвращению пересечение преподавателей и аудитории в одно время
5) Процедура ТЗПонедельникПриОткрытии(Элемент) – процедура по
заполнению полей при открытии формы документа
33
5 ОЦЕНКА РАБОТЫ ПРОГРАММНОГО СРЕДСТВА И
АНАЛИЗ ПОЛУЧЕННЫХ РЕЗУЛЬТАТОВ
5.1 Тестовые примеры
Тестирование (Testing) – процесс анализа программного средства и сопутствующей документации с целью выявления дефектов и повышения качества продукта.
Конечной целью тестирования является предоставление пользователю
качественного программного обеспечения (ПО).
Качество (Quality) – степень, с которой компонент, система или процесс
соответствует зафиксированным требованиям и/или ожиданиям и нуждам
пользователя или заказчика.
льзователя или заказчика [3]. Дефект (defect, bug, ошибка) – ключевой
термин тестирования, означающий отклонение фактического результата от
ожидаемого. Для обнаружения дефекта необходимо выполнить три условия:
знать фактический результат, знать ожидаемый результат, зафиксировать факт
разницы между фактическим и ожидаемым результатом.
Процесс тестирования как процесс поиска дефектов сводится к следующей последовательности действий:
1.
Узнаем ожидаемый результат.
2.
Узнаем фактический результат.
3.
Сравниваем ожидаемый и фактический результаты
Источником ожидаемого результата является спецификация – детальное описание того, как должно работать ПО.
В общем случае любой дефект представляет собой отклонение от
спецификации. Важно обнаружить эти дефекты до того, как их найдут
конечные пользователи.
Виды тестирования:
Тестирование безопасности (Safety Testing) – тестирование программного продукта с целью определить его способность при использовании оговоренным образом оставаться в рамках приемлемого риска
причинения вреда здоровью, бизнесу, программам, собственности или
окружающей среде.
Тестирование защищенности (Security Testing) – тестирование с
целью оценить защищенность программного продукта от внешних воздействий (от проникновений). На практике зачастую под термином тестирование безопасности понимают в том числе и тестирование защищенности.
Рассмотрим пограничные виды тестирования.
34
Тестирование совместимости (Compatibility Testing) – проверка
работоспособности приложения в различных средах (браузеры и их версии, операционные системы, их типа, версии и разрядность). Виды тестирования совместимости: кроссбраузерное тестирование (различные
браузеры или версии браузеров), кроссплатформенное тестирование
(различные операционные системы или версии операционных систем).
Рассмотрим нефункциональные виды тестирования, направленные на проверку характеристик или свойств программы (внешний вид,
удобство использования, скорость работы и т.п.).
Тестирование требований (Requirements Testing) – проверка требований на соответствие основным атрибутам качества.
Тестирование прототипа (Prototyte Testing) – метод выявления
структурных, логических ошибок и ошибок проектирования на ранней
стадии развития продукта до начала фактической разработки.
Тестирование пользовательского интерфейса (GUI Testing) – тестирование, выполняемое путем взаимодействия с системой через графический интерфейс пользователя (правописание выводимой информации; расположение и выравнивание элементов GUI; соответствие названий форм / элементов GUI их назначению; унификация стиля, цвета,
шрифта; окна сообщений; изменение размеров окна, поведение курсора
и горячие клавиши)
меров окна, поведение курсора и горячие клавиши) Тестирование
удобства использования (Usability Testing) – тестирование с целью определения степени понятности, легкости в изучении и использовании, привлекательности программного продукта для пользователя при условии
использования в заданных условиях эксплуатации (на этом уровне обращают внимание на визуальное оформление, навигацию, логичность,
наличие обратной связи и др.).
В результате тестирования приложения были проведены следующие тесты:
1) Авторизация пользователя
2) Создание нового расписания
3) Проверка на пересечение аудиторий
4) Проверка экспорта расписания в EXCEL
5.2 Анализ полученных результатов
Тестируем авторизацию пользователя в 1С, при неправильном вводе логина и пароля, получаем ошибку, результат показан на рисунке 5.1.
35
Рисунок 5.1 – Вид формы при некорректном вводе логина или пароля
При корректном вводу логина и пароля откроется следующая форма, показана
на рисунке 5.2.
Рисунок 5.2 – Вид формы при корректном вводе пароля и логина
Следующим тестом будет создания нового расписания, для успешной работы
требуется создать новый документ, заполнить все необходимые поля и нажать
36
на кнопку «записать и закрыть», после чего документ будет успешно создан,
показано на рисунке 5.3.
Рисунок 5.3 – Успешное создание нового расписания
В случае если поля при создании расписания не будут заполнены, будет
выведена следующая ошибка, показана на рисунке 5.4.
37
Рисунок 5.4 – Ошибка при составлении расписания
Следующим шагом тестирование будет, проверка на пересечение аудиторий в
одно и тоже время, при пересечении аудиторий программа выдаст следующую
ошибку, показано на рисунке 5.5.
Рисунок 5.5 – Ошибка при пересечении аудиторий в одно и тоже время занятий
Последним тестированием будет тестирование функции экспорта в EXCEL файл, для этого переходим в документы с расписаниями, выбираем за
нужный период и открываем форму, затем нажимаем кнопку «ЭКСПОРТ»,
указываем путь для сохранения файла и нажимаем кнопку «сохранить», после
чего в выбранном каталоге будет создан EXCEL файл с выгруженным туда
расписанием, показано на рисунке 5.6.
38
Рисунок 5.6 – Выгрузка расписания в EXCEL
6 РУКОВОДСТВО ПОЛЬЗОВАТЕЛЕЙ (ПО УСТАНОВКЕ И
ЭКСПЛУАТАЦИИ)
6.1 Установка приложения
В установочной папке вы найдете длинный список файлов. Вам нужно
запустить лишь setup.exe, показано на рисунке 6.1.
39
Рисунок 6.1 – .exe файл для установки
Запустите файл Setup двойным нажатием, и установка начнется, показано на рисунке 6.2. Здесь не должно возникнуть никаких сложностей. На всех
вкладках, кроме вкладки «Выборочная установка», нажимайте «Далее».
Рисунок 6.2 – Установка программного обеспечения 1C:Предприятие
Рекомендуем выбрать первые три компонента и пункт «Интерфейсы на
различных языках» при необходимости и нажать «Далее», показано на рисунке 6.3.
40
Рисунок 6.3 – Установка программного обеспечения 1C:Предприятие
В следующем окне мастер установки сообщит, что все готово. Нажмите
кнопку «Установить» и дождитесь окончания инсталляции.
В новом окне система предложит установить драйвер защиты показано
на рисунке 6.4. Если вы приобрели версию USB, то не снимайте галочку. Если
у вас вариант поставки с программной защитой, то можете не устанавливать
драйвер. Нажмите «Далее».
41
Рисунок 6.3 – Установка программного обеспечения 1C:Предприятие
В новом окне вы увидите, что установка «1С:Предприятие» завершена.
Если не хотите ознакомиться со справочной информацией, то снимите галочку
и нажмите «Готово», показано на рисунке 6.5.
42
Рисунок 6.4 – Завершение установки программного обеспечения 1C:Предприятие
Все готово! Вы успешно завершили установку платформы «1С» на ваш
компьютер. После этого на рабочем столе появится ярлык для быстрого запуска системы. Переходим непосредственно к установке конфигурации «1С».
6.2 Эксплуатации приложения
Для входа в приложение, запускаем «1С:Предприятие», двойным кликом мыши, затем вводим логин и пароль, показано на рисунке 6.5.
Рисунок 6.5 – Окно авторизации пользователя
После успешной авторизации пользователя, откроется главный интерфейс информационной базы, показано на рисунке 6.6.
43
Рисунок 6.6 – Интерфейс приложения
Для создания нового расписания, переходим на вкладку «Создание расписания», затем нажимаем кнопку создать, после чего нам откроется форма
документа, показана на рисунке 6.7.
Рисунок 6.7 – Создание расписания
Для успешного создания расписания, заполняем все пустые поля и таблицу, после чего нажимаем кнопку «провести и закрыть», после этого документ будет создан и записан. Для добавление строк в таблицу, нажимаем
кнопку «Добавить», показано на рисунке 6.8.
44
Рисунок 6.8 – Добавление строк в таблицу
Для экспорта расписания в EXCEL файл, требуется нажать на кнопку
«Экспорт в excel», показано на рисунке 6.9.
Рисунок 6.9 – Экспорт в EXCEL
45
ЗАКЛЮЧЕНИЕ
В данном курсовом проекте, была разработана информационная база
«Приложение по формированию расписания ИИТ БГУИР».
В ходе работы проанализировано современное состояние проблемы автоматизации составления учебного расписания. Изучена предметная область
автоматизации и разработана структура системы.
При разработке информационной базы были проанализированы: состав
и структура информации, установлены функциональные зависимости реквизитов, выделены информационные объекты.
Информационная база была в разработана в программном комплексе 1С:
Предприятие версии 8.3.
Результат разработки информационной базы был достигнут, поставленная цель – информационная база «Приложение по формированию расписания
ИИТ БГУИР» была выполнена. Для этого были разработаны алгоритмы для
реализации данной информационной базы с использованием программного
комплекса 1С.
Разработанная информационная база может использоваться в разных
учебных заведениях.
Функции, которые выполняет информационная база следующие:
– просмотр расписания
– добавление нового расписания
– удаление расписания
– поиск расписания за период
– составление макета на печать
Информационная база имеет большое количество различных возможностей и ориентирована на пользователя, не имеющего большого опыта работы
с информационными продуктами такого типа. Это качество значительно расширяет круг возможных пользователей информационной базы и увеличивает
ее коммерческую привлекательность.
46
СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ
1 Абрамян, М. 1C: Предприятие 8. Управление торговыми операциями
в вопросах и ответах / М. Абрамян. – М.: БХВ-Петербург, 2016. – 436 c.
2 Албахари, Д. Архитектура компьютеров 3.0. Справочник / Д. Албахари. – М.: БХВ-Петербург, 2015. – 499 c.
3 Блюстайн, М. Язык UML. Руководство пользователя / Майкл
Блюстайн. – М.: ДМК Пресс, 2016. – 336 c.
4 Вагнер, Б. «1С»: Управление торговлей 8.2 с нуля. Конфигурирование
и настройка / Б. Вагнер. – М.: ЛОРИ, 2017. – 320 c.
5 Гросс, К. 1С: Предприятие 8 Зарплата и кадры в вопросах и ответах /
К. Гросс. – М.: Вильямс, 2016. – 480 c.
6 Дейтел, П. Видео-самоучитель Microsoft Word / П. Дейтел. – М.: Питер, 2016. – 312 c.
7 Зиборов, В.В. Информационная система / В.В. Зиборов. – М.: БХВПетербург, 2015. – 480 c.
8 Ишкова, Э.А. 1С: Предприятие 8.3. Программирование и визуальная
разработка на примерах / Э.А. Ишкова. – М.: Наука и техника, 2017. – 496 c.
9 Кариев, Ч.А. Системное проектирование сложных программных
средств / Ч.А. Кариев. – М.: Интернет–университет информационных технологий, Бином. Лаборатория знаний, 2015. – 501 c.
10 Культин, Н. Аппаратное обеспечение и эффективное программирование / Н. Культин. – М.: БХВ-Петербург, 2015. – 625 c.
47
ПРИЛОЖЕНИЕ А
(обязательное)
Листинг программы
&НаСервере
Процедура ПриОткрытииНаСервере()
Объект.Дата = ТекущаяДата();
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ПриОткрытииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ТЗПонедельникПриАктивизацииСтроки(Элемент)
//
ТекущиеДанные = ЭтаФорма.Элементы.ТЗПонедельник.ТекущиеДанные;
//
//
Попытка
//
ТекущиеДанные.ДеньНедели = "Понедельник";
//Исключение
//
Сообщить("1");
//
КонецПопытки;
КонецПроцедуры
&НаСервере
Процедура ТЗПонедельникПриИзмененииНаСервере()
КонецПроцедуры
&НаКлиенте
Процедура ТЗПонедельникПриИзменении(Элемент)
ТЗПонедельникПриИзмененииНаСервере();
ТекущиеДанные = ЭтаФорма.Элементы.ТЗПонедельник.ТекущиеДанные;
ТекущиеДанные.ДеньНедели = "Понедельник";
КонецПроцедуры
48
&НаСервере
Процедура ТЗПонедельникНачалоЗанятийПриИзмененииНаСервере()
КонецПроцедуры
&НаКлиенте
Процедура ТЗПонедельникНачалоЗанятийПриИзменении(Элемент)
ТЗПонедельникНачалоЗанятийПриИзмененииНаСервере();
ТекущиеДанные = ЭтаФорма.Элементы.ТЗПонедельник.ТекущиеДанные;
Если ТекущиеДанные.НачалоЗанятий = Дата(0001,01,01,09,00,00) Тогда
ТекущиеДанные.КонецЗанятий = Дата(0001,01,01,10,20,00);
ИначеЕсли ТекущиеДанные.НачалоЗанятий = Дата(0001,01,01,10,35,00) Тогда
ТекущиеДанные.КонецЗанятий = Дата(0001,01,01,10,20,00);
ИначеЕсли ТекущиеДанные.НачалоЗанятий = Дата(0001,01,01,12,25,00) Тогда
ТекущиеДанные.КонецЗанятий = Дата(0001,01,01,13,45,00);
ИначеЕсли ТекущиеДанные.НачалоЗанятий = Дата(0001,01,01,14,00,00) Тогда
ТекущиеДанные.КонецЗанятий = Дата(0001,01,01,15,20,00);
ИначеЕсли ТекущиеДанные.НачалоЗанятий = Дата(0001,01,01,15,50,00) Тогда
ТекущиеДанные.КонецЗанятий = Дата(0001,01,01,17,10,00);
ИначеЕсли ТекущиеДанные.НачалоЗанятий = Дата(0001,01,01,17,25,00) Тогда
ТекущиеДанные.КонецЗанятий = Дата(0001,01,01,18,45,00);
КонецЕсли;
КонецПроцедуры
&НаСервере
49
Процедура ТЗПонедельникПреподовательПриИзмененииНаСервере()
КонецПроцедуры
&НаКлиенте
Процедура ТЗПонедельникПреподовательПриИзменении(Элемент)
ТЗПонедельникПреподовательПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаЗначенийПонедельникПриИзменении(Элемент)
ТекущиеДанные = ЭтаФорма.Элементы.ТаблицаЗначенийПонедельник.ТекущиеДанные;
ТекущиеДанные.ДеньНедели = "Понедельник";
КонецПроцедуры
&НаКлиенте
Процедура Таблица1НачалоЗанятийПриИзменении(Элемент)
ТЗПонедельникНачалоЗанятийПриИзмененииНаСервере();
ТекущиеДанные = ЭтаФорма.Элементы.ТаблицаЗначенийПонедельник.ТекущиеДанные;
Если ТекущиеДанные.НачалоЗанятий = Дата(0001,01,01,09,00,00) Тогда
ТекущиеДанные.КонецЗанятий = Дата(0001,01,01,10,20,00);
ИначеЕсли ТекущиеДанные.НачалоЗанятий = Дата(0001,01,01,10,35,00) Тогда
ТекущиеДанные.КонецЗанятий = Дата(0001,01,01,11,55,00);
ИначеЕсли ТекущиеДанные.НачалоЗанятий = Дата(0001,01,01,12,25,00) Тогда
ТекущиеДанные.КонецЗанятий = Дата(0001,01,01,13,45,00);
ИначеЕсли ТекущиеДанные.НачалоЗанятий = Дата(0001,01,01,14,00,00) Тогда
50
ТекущиеДанные.КонецЗанятий = Дата(0001,01,01,15,20,00);
ИначеЕсли ТекущиеДанные.НачалоЗанятий = Дата(0001,01,01,15,50,00) Тогда
ТекущиеДанные.КонецЗанятий = Дата(0001,01,01,17,10,00);
ИначеЕсли ТекущиеДанные.НачалоЗанятий = Дата(0001,01,01,17,25,00) Тогда
ТекущиеДанные.КонецЗанятий = Дата(0001,01,01,18,45,00);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура Таблица1ПреподовательПриИзмененииНаСервере()
//// СОЗДАЁМ ТЗ , ЗДЕСЬ БУДЕМ ХРАНИТЬ ВСЕ ОСТАВШИЕСЯ ВРЕМЯ ПРЕПОДОВ
//
//ТЗОставшиесяВремяПрепода = Новый ТаблицаЗначений;
//ТЗОставшиесяВремяПрепода.Колонки.Добавить("ОсталосьВремени");
//
//
//// ПРОВЕРКА ОСТАВШИЕГОСЯ ВРЕМЕНИ ПРЕПОДА ПОНЕДЕЛЬНИК
//Запрос = Новый Запрос;
//Запрос.Текст =
//
"ВЫБРАТЬ
//
|
СозданиеРасписанияТЗПонедельник.ОставшиесяНедельныеЧасыПреподователя КАК ОставшиесяНедельныеЧасыПреподователя
//
|ИЗ
//
|
Документ.СозданиеРасписания.ТЗПонедельник КАК СозданиеРасписанияТЗПонедельник
//
|
ЛЕВОЕ СОЕДИНЕНИЕ Документ.СозданиеРасписания
КАК СозданиеРасписания
//
|
ПО СозданиеРасписанияТЗПонедельник.Ссылка = СозданиеРасписания.Ссылка
//
|ГДЕ
//
|
СозданиеРасписания.ДатаНачалоРасписание = &ДатаНачалоРасписание
//
|
И СозданиеРасписания.ДатаОкончаниеРасписание = &ДатаОкончаниеРасписание";
51
//
//Запрос.УстановитьПараметр("ДатаНачалоРасписание", Объект.ДатаНачалоРасписание);
//Запрос.УстановитьПараметр("ДатаОкончаниеРасписание",
Объект.ДатаОкончаниеРасписание);
//
//РезультатЗапроса = Запрос.Выполнить();
//
//ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
//
//Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
//
//
Стр = ТЗОставшиесяВремяПрепода.Добавить();
//
//
Стр.ОсталосьВремени = ВыборкаДетальныеЗаписи.ОставшиесяНедельныеЧасыПреподователя;
//
//КонецЦикла;
//
//// ПРОВЕРКА ОСТАВШИЕГОСЯ ВРЕМЕНИ ПРЕПОДА ВТОРНИК
//Запрос = Новый Запрос;
//Запрос.Текст =
//
"ВЫБРАТЬ
//
|
СозданиеРасписанияТЗВторник.ОставшиесяНедельныеЧасыПреподователя КАК ОставшиесяНедельныеЧасыПреподователя
//
|ИЗ
//
|
Документ.СозданиеРасписания.ТЗВторник КАК СозданиеРасписанияТЗВторник
//
|
ЛЕВОЕ СОЕДИНЕНИЕ Документ.СозданиеРасписания
КАК СозданиеРасписания
//
|
ПО СозданиеРасписанияТЗВторник.Ссылка = СозданиеРасписания.Ссылка
//
|ГДЕ
//
|
СозданиеРасписания.ДатаНачалоРасписание = &ДатаНачалоРасписание
//
|
И СозданиеРасписания.ДатаОкончаниеРасписание = &ДатаОкончаниеРасписание";
//
//Запрос.УстановитьПараметр("ДатаНачалоРасписание", Объект.ДатаНачалоРасписание);
//Запрос.УстановитьПараметр("ДатаОкончаниеРасписание",
Объект.ДатаОкончаниеРасписание);
//
52
//РезультатЗапроса = Запрос.Выполнить();
//
//ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
//
//Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
//
//
Стр = ТЗОставшиесяВремяПрепода.Добавить();
//
//
Стр.ОсталосьВремени = ВыборкаДетальныеЗаписи.ОставшиесяНедельныеЧасыПреподователя;
//
//КонецЦикла;
//
//
// ПРОВЕРКА ОСТАВШИЕГОСЯ ВРЕМЕНИ ПРЕПОДА СРЕДА
//Запрос = Новый Запрос;
//Запрос.Текст =
//
"ВЫБРАТЬ
//
|
СозданиеРасписанияТЗСреда.ОставшиесяНедельныеЧасыПреподователя КАК ОставшиесяНедельныеЧасыПреподователя
//
|ИЗ
//
|
Документ.СозданиеРасписания.ТЗСреда КАК СозданиеРасписанияТЗСреда
//
|
ЛЕВОЕ СОЕДИНЕНИЕ Документ.СозданиеРасписания
КАК СозданиеРасписания
//
|
ПО СозданиеРасписанияТЗСреда.Ссылка = СозданиеРасписания.Ссылка
//
|ГДЕ
//
|
СозданиеРасписания.ДатаНачалоРасписание = &ДатаНачалоРасписание
//
|
И СозданиеРасписания.ДатаОкончаниеРасписание = &ДатаОкончаниеРасписание";
//
//Запрос.УстановитьПараметр("ДатаНачалоРасписание", Объект.ДатаНачалоРасписание);
//Запрос.УстановитьПараметр("ДатаОкончаниеРасписание",
Объект.ДатаОкончаниеРасписание);
//
//РезультатЗапроса = Запрос.Выполнить();
//
//ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
//
//Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
//
53
//
Стр = ТЗОставшиесяВремяПрепода.Добавить();
//
//
Стр.ОсталосьВремени = ВыборкаДетальныеЗаписи.ОставшиесяНедельныеЧасыПреподователя;
//
//КонецЦикла;
//
// ПРОВЕРКА ОСТАВШИЕГОСЯ ВРЕМЕНИ ПРЕПОДА ЧЕТВЕРГ
//Запрос = Новый Запрос;
//Запрос.Текст =
//
"ВЫБРАТЬ
//
|
СозданиеРасписанияТЗЧетверг.ОставшиесяНедельныеЧасыПреподователя КАК ОставшиесяНедельныеЧасыПреподователя
//
|ИЗ
//
|
Документ.СозданиеРасписания.ТЗЧетверг КАК СозданиеРасписанияТЗЧетверг
//
|
ЛЕВОЕ СОЕДИНЕНИЕ Документ.СозданиеРасписания
КАК СозданиеРасписания
//
|
ПО СозданиеРасписанияТЗЧетверг.Ссылка = СозданиеРасписания.Ссылка
//
|ГДЕ
//
|
СозданиеРасписания.ДатаНачалоРасписание = &ДатаНачалоРасписание
//
|
И СозданиеРасписания.ДатаОкончаниеРасписание = &ДатаОкончаниеРасписание";
//
//Запрос.УстановитьПараметр("ДатаНачалоРасписание", Объект.ДатаНачалоРасписание);
//Запрос.УстановитьПараметр("ДатаОкончаниеРасписание",
Объект.ДатаОкончаниеРасписание);
//
//РезультатЗапроса = Запрос.Выполнить();
//
//ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
//
//Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
//
//
Стр = ТЗОставшиесяВремяПрепода.Добавить();
//
//
Стр.ОсталосьВремени = ВыборкаДетальныеЗаписи.ОставшиесяНедельныеЧасыПреподователя;
//
//КонецЦикла;
54
//
//
// ПРОВЕРКА ОСТАВШИЕГОСЯ ВРЕМЕНИ ПРЕПОДА ПЯТНИЦА
//Запрос = Новый Запрос;
//Запрос.Текст =
//
"ВЫБРАТЬ
//
|
СозданиеРасписанияТЗПятница.ОставшиесяНедельныеЧасыПреподователя КАК ОставшиесяНедельныеЧасыПреподователя
//
|ИЗ
//
|
Документ.СозданиеРасписания.ТЗПятница КАК СозданиеРасписанияТЗПятница
//
|
ЛЕВОЕ СОЕДИНЕНИЕ Документ.СозданиеРасписания
КАК СозданиеРасписания
//
|
ПО СозданиеРасписанияТЗПятница.Ссылка = СозданиеРасписания.Ссылка
//
|ГДЕ
//
|
СозданиеРасписания.ДатаНачалоРасписание = &ДатаНачалоРасписание
//
|
И СозданиеРасписания.ДатаОкончаниеРасписание = &ДатаОкончаниеРасписание";
//
//Запрос.УстановитьПараметр("ДатаНачалоРасписание", Объект.ДатаНачалоРасписание);
//Запрос.УстановитьПараметр("ДатаОкончаниеРасписание",
Объект.ДатаОкончаниеРасписание);
//
//РезультатЗапроса = Запрос.Выполнить();
//
//ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
//
//Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
//
//
Стр = ТЗОставшиесяВремяПрепода.Добавить();
//
//
Стр.ОсталосьВремени = ВыборкаДетальныеЗаписи.ОставшиесяНедельныеЧасыПреподователя;
//
//КонецЦикла;
//
// ПРОВЕРКА ОСТАВШИЕГОСЯ ВРЕМЕНИ ПРЕПОДА СУББОТА
//Запрос = Новый Запрос;
//Запрос.Текст =
//
"ВЫБРАТЬ
55
//
|
СозданиеРасписанияТЗСуббота.ОставшиесяНедельныеЧасыПреподователя КАК ОставшиесяНедельныеЧасыПреподователя
//
|ИЗ
//
|
Документ.СозданиеРасписания.ТЗСуббота КАК СозданиеРасписанияТЗСуббота
//
|
ЛЕВОЕ СОЕДИНЕНИЕ Документ.СозданиеРасписания
КАК СозданиеРасписания
//
|
ПО СозданиеРасписанияТЗСуббота.Ссылка = СозданиеРасписания.Ссылка
//
|ГДЕ
//
|
СозданиеРасписания.ДатаНачалоРасписание = &ДатаНачалоРасписание
//
|
И СозданиеРасписания.ДатаОкончаниеРасписание = &ДатаОкончаниеРасписание";
//
//Запрос.УстановитьПараметр("ДатаНачалоРасписание", Объект.ДатаНачалоРасписание);
//Запрос.УстановитьПараметр("ДатаОкончаниеРасписание",
Объект.ДатаОкончаниеРасписание);
//
//РезультатЗапроса = Запрос.Выполнить();
//
//ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
//
//Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
//
//
Стр = ТЗОставшиесяВремяПрепода.Добавить();
//
//
Стр.ОсталосьВремени = ВыборкаДетальныеЗаписи.ОставшиесяНедельныеЧасыПреподователя;
//
//КонецЦикла;
//
//ТЗОставшиесяВремяПрепода.Сортировать("ОсталосьВремени УБЫВ");
//
////Сообщить(ТЗОставшиесяВремяПрепода.Количество());
//
//Если ТЗОставшиесяВремяПрепода.Количество() > 0 Тогда
//
//
//ТекущиеДанные = ЭтаФорма.Элементы.ТаблицаЗначенийПонедельник.ТекущиеДанные;
//
//
//
//ТекущиеДанные.ОставшиесяНедельныеЧасыПреподователя = 333;
56
//
//
//
//Сообщить("Я сработал 1");
//
//ИначеЕсли ТЗОставшиесяВремяПрепода.Количество() = 0 Тогда
//
//Для Каждого Стр Из ТЗОставшиесяВремяПрепода Цикл
//
//
Сообщить(Стр.ОсталосьВремени);
//
//
Сообщить("Я сработал 2");
//
//КонецЦикла;
//
//КонецЕсли;
//ПоместитьВоВременноеХранилище(ТЗОставшиесяВремяПрепода,ЭтаФорма.УникальныйИдентификатор);
//МассивСтруктур = Новый Массив;
//
//Для Каждого Стр Из ТЗОставшиесяВремяПрепода Цикл
//
//
ЭлементСтр = Новый Структура;
//
//
Для Каждого Строка Из ТЗОставшиесяВремяПрепода.Колонки Цикл
//
//
ЭлементСтр.Вставить(Строка.ОсталосьВремени,
Стр[Строка.ОсталосьВремени]);
//
//
КонецЦикла;
//
//
МассивСтруктур.Добавить(ЭлементСтр);
//
//КонецЦикла;
//
//
Для Каждого Стр Из МассивСтруктур Цикл
//
//
Сообщить("1");
//
//
КонецЦикла;
КонецПроцедуры
57
&НаКлиенте
Процедура Таблица1ПреподовательПриИзменении(Элемент)
Таблица1ПреподовательПриИзмененииНаСервере();
ТекущиеДанные = ЭтаФорма.Элементы.ТаблицаЗначенийПонедельник.ТекущиеДанные;
МассивПоискПреподскихЧасов = Новый Массив;
// Получаем затраченное время на текую пару
ДатаЧислом = ТекущиеДанные.КонецЗанятий - ТекущиеДанные.НачалоЗанятий;
ТекущиеДанные.ОтнятоеВремяПрепода = ДатаЧислом;
Для Каждого Стр Из Объект.ТЗПонедельник Цикл
Если Стр.Преподователь = ТекущиеДанные.Преподователь Тогда
МассивПоискПреподскихЧасов.Добавить(Стр.ОтнятоеВремяПрепода);
КонецЕсли;
КонецЦикла;
Для Каждого Стр Из Объект.ТЗВторник Цикл
Если Стр.Преподователь = ТекущиеДанные.Преподователь Тогда
МассивПоискПреподскихЧасов.Добавить(Стр.ОтнятоеВремяПрепода);
КонецЕсли;
КонецЦикла;
Для Каждого Стр Из Объект.ТЗСреда Цикл
Если Стр.Преподователь = ТекущиеДанные.Преподователь Тогда
58
МассивПоискПреподскихЧасов.Добавить(Стр.ОтнятоеВремяПрепода);
КонецЕсли;
КонецЦикла;
Для Каждого Стр Из Объект.ТЗЧетверг Цикл
Если Стр.Преподователь = ТекущиеДанные.Преподователь Тогда
МассивПоискПреподскихЧасов.Добавить(Стр.ОтнятоеВремяПрепода);
КонецЕсли;
КонецЦикла;
Для Каждого Стр Из Объект.ТЗПятница Цикл
Если Стр.Преподователь = ТекущиеДанные.Преподователь Тогда
МассивПоискПреподскихЧасов.Добавить(Стр.ОтнятоеВремяПрепода);
КонецЕсли;
КонецЦикла;
Для Каждого Стр Из Объект.ТЗСуббота Цикл
Если Стр.Преподователь = ТекущиеДанные.Преподователь Тогда
МассивПоискПреподскихЧасов.Добавить(Стр.ОтнятоеВремяПрепода);
КонецЕсли;
КонецЦикла;
СписокЗнач = Новый СписокЗначений;
Для Каждого ЭлементыМассива Из МассивПоискПреподскихЧасов Цикл
59
//Сообщить("яя" + ЭлементыМассива);
СписокЗнач.Добавить(ЭлементыМассива,ЭлементыМассива);
КонецЦикла;
СписокЗнач.СортироватьПоЗначению(НаправлениеСортировки.Убыв);
СуммаЗанятыхЧасов = 0;
Для Каждого Элемент Из СписокЗнач Цикл
//Сообщить(Элемент.Значение);
ЧислоТест = Число(Элемент.Значение);
СуммаЗанятыхЧасов = СуммаЗанятыхЧасов + ЧислоТест;
КонецЦикла;
///////////////////////////////////////////////////////////
Сообщить(СуммаЗанятыхЧасов);
Если ТекущиеДанные.НачалоЗанятий <> '00010101' И ТекущиеДанные.КонецЗанятий <> '00010101' Тогда
СтрокаПрепод = Строка(ТекущиеДанные.Преподователь);
Объект.ПреподДляСервера = СтрокаПрепод;
//ПереносТЗ = ПолучитьИзВременногоХранилища(ПоместитьВоВременноеХранилище);
//Сообщить(Объект.Тест);
МассивЗначенийАвтомобили = ПолучитьАвтомобилиНаСервере();
//Сообщить(МассивЗначенийАвтомобили.Количество());
Если МассивЗначенийАвтомобили.Количество() >= 1 Тогда
Для Каждого Элемент Из МассивЗначенийАвтомобили Цикл
//Сообщить(Элемент.ОсталосьВремениПрепода);
ТекущиеДанные.ОставшиесяНедельныеЧасыПреподователя =
Элемент.ОсталосьВремениПрепода - СуммаЗанятыхЧасов;
60
ОсталосьВремениПрепода = Элемент.ОсталосьВремениПрепода - СуммаЗанятыхЧасов;
ОсталосьВремениПрепода = ОсталосьВремениПрепода / 60;
ТекущиеДанные.ОставшиесяВремяВЧасах = ОсталосьВремениПрепода / 60;
КонецЦикла;
// Получаем затраченное время на текую пару
ДатаЧислом = ТекущиеДанные.КонецЗанятий - ТекущиеДанные.НачалоЗанятий;
ТекущиеДанные.ОставшиесяНедельныеЧасыПреподователя =
ТекущиеДанные.ОставшиесяНедельныеЧасыПреподователя - ДатаЧислом;
//Сообщить(ДатаЧислом);
ИначеЕсли МассивЗначенийАвтомобили.Количество() = 0 Тогда
ПолученнаяКонстанта = ПолучитьКонстанту();
// Получаем затраченное время на текую пару
ДатаЧислом = ТекущиеДанные.КонецЗанятий - ТекущиеДанные.НачалоЗанятий;
ТекущиеДанные.ОставшиесяНедельныеЧасыПреподователя =
ПолученнаяКонстанта - ДатаЧислом - СуммаЗанятыхЧасов;
ОсталосьВремениПрепода = ПолученнаяКонстанта - ДатаЧислом - СуммаЗанятыхЧасов;
ОсталосьВремениПрепода = ОсталосьВремениПрепода / 60;
ТекущиеДанные.ОставшиесяВремяВЧасах = ОсталосьВремениПрепода / 60;
КонецЕсли;
Иначе
Сообщить("Необходимо заполнить начало и конец пар!");
61
КонецЕсли;
//// ДЕЛАЕМ ПРОВЕРКУ, ЕСЛИ ОСТАЛОСЬ 0 ЧАСОВ, ТОГДА НЕ ДАЁМ ЗАПИСАТЬ
Если ОсталосьВремениПрепода <= 0 Тогда
Сообщить("У преподователя осталось 0 свободных часов" + Символы.ПС + "Поле будет очищено!");
ТекущиеДанные.Преподователь = "";
ТекущиеДанные.ОставшиесяНедельныеЧасыПреподователя = 0;
ТекущиеДанные.ОтнятоеВремяПрепода = 0;
ТекущиеДанные.ОставшиесяВремяВЧасах = 0;
КонецЕсли;
КонецПроцедуры
// СОЗДАЁМ ФУНЦИЮ И ВЫТЯГИВАЕМ ЗНАЧЕНИЕ КОНСТАНТЫ В КОТОРОЙ ХРАНЯТСЯ
ЧАСЫ В НЕДЕЛЮ НА ПРЕПОДА
&НаСервере
Функция ПолучитьКонстанту()
ПолученнаяКонстанта = Константы.ОграниченныеЧасыПреподователя.Получить();
Возврат ПолученнаяКонстанта;
Конецфункции
&НаСервере
Функция ПолучитьСвободноеВремяПреподавателяНаСервере()
ТЗОставшиесяВремяПрепода = Новый ТаблицаЗначений;
ТЗОставшиесяВремяПрепода.Колонки.Добавить("ОсталосьВремени");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|СозданиеРасписанияТЗПонедельник.ОставшиесяНедельныеЧасыПреподователя КАК ОставшиесяНедельныеЧасыПреподователя
|ИЗ
|Документ.СозданиеРасписания.ТЗВторник КАК СозданиеРасписанияТЗПонедельник
62
|
ЛЕВОЕ СОЕДИНЕНИЕ Документ.СозданиеРасписания КАК СозданиеРасписания
|
ПО (СозданиеРасписанияТЗПонедельник.Ссылка = СозданиеРасписания.Ссылка)
|ГДЕ
|СозданиеРасписания.ДатаНачалоРасписание = &ДатаНачалоРасписание
|И СозданиеРасписания.ДатаОкончаниеРасписание = &ДатаОкончаниеРасписание
|И СозданиеРасписанияТЗПонедельник.Преподователь = &Преподователь";
Запрос.УстановитьПараметр("ДатаНачалоРасписание", Объект.ДатаНачалоРасписание);
Запрос.УстановитьПараметр("ДатаОкончаниеРасписание",
Объект.ДатаОкончаниеРасписание);
Запрос.УстановитьПараметр("Преподователь",
Справочники.Преподователи.НайтиПоНаименованию(Объект.ПреподДляСервера));
//Сообщить(Объект.ПреподДляСервера);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
МассивЗначенийОсталосьВремениПрепода = Новый Массив;
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Стр = ТЗОставшиесяВремяПрепода.Добавить();
Стр.ОсталосьВремени
дельныеЧасыПреподователя;
=
ВыборкаДетальныеЗаписи.ОставшиесяНе-
КонецЦикла;
// ПРОВЕРКА ОСТАВШИЕГОСЯ ВРЕМЕНИ ПРЕПОДА ВТОРНИК
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|СозданиеРасписанияТЗПонедельник.ОставшиесяНедельныеЧасыПреподователя КАК ОставшиесяНедельныеЧасыПреподователя
|ИЗ
|Документ.СозданиеРасписания.ТЗСреда КАК СозданиеРасписанияТЗПонедельник
63
|
ЛЕВОЕ СОЕДИНЕНИЕ Документ.СозданиеРасписания КАК СозданиеРасписания
|
ПО (СозданиеРасписанияТЗПонедельник.Ссылка = СозданиеРасписания.Ссылка)
|ГДЕ
|СозданиеРасписания.ДатаНачалоРасписание = &ДатаНачалоРасписание
|И СозданиеРасписания.ДатаОкончаниеРасписание = &ДатаОкончаниеРасписание
|И СозданиеРасписанияТЗПонедельник.Преподователь = &Преподователь";
Запрос.УстановитьПараметр("ДатаНачалоРасписание", Объект.ДатаНачалоРасписание);
Запрос.УстановитьПараметр("ДатаОкончаниеРасписание",
Объект.ДатаОкончаниеРасписание);
Запрос.УстановитьПараметр("Преподователь",
Справочники.Преподователи.НайтиПоНаименованию(Объект.ПреподДляСервера));
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Стр = ТЗОставшиесяВремяПрепода.Добавить();
Стр.ОсталосьВремени
дельныеЧасыПреподователя;
=
ВыборкаДетальныеЗаписи.ОставшиесяНе-
КонецЦикла;
// ПРОВЕРКА ОСТАВШИЕГОСЯ ВРЕМЕНИ ПРЕПОДА СРЕДА
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|СозданиеРасписанияТЗПонедельник.ОставшиесяНедельныеЧасыПреподователя КАК ОставшиесяНедельныеЧасыПреподователя
|ИЗ
|Документ.СозданиеРасписания.ТЗЧетверг КАК СозданиеРасписанияТЗПонедельник
|
ЛЕВОЕ СОЕДИНЕНИЕ Документ.СозданиеРасписания КАК СозданиеРасписания
|
ПО (СозданиеРасписанияТЗПонедельник.Ссылка = СозданиеРасписания.Ссылка)
64
|ГДЕ
|СозданиеРасписания.ДатаНачалоРасписание = &ДатаНачалоРасписание
|И СозданиеРасписания.ДатаОкончаниеРасписание = &ДатаОкончаниеРасписание
|И СозданиеРасписанияТЗПонедельник.Преподователь = &Преподователь";
Запрос.УстановитьПараметр("ДатаНачалоРасписание", Объект.ДатаНачалоРасписание);
Запрос.УстановитьПараметр("ДатаОкончаниеРасписание",
Объект.ДатаОкончаниеРасписание);
Запрос.УстановитьПараметр("Преподователь",
Справочники.Преподователи.НайтиПоНаименованию(Объект.ПреподДляСервера));
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Стр = ТЗОставшиесяВремяПрепода.Добавить();
Стр.ОсталосьВремени
дельныеЧасыПреподователя;
=
ВыборкаДетальныеЗаписи.ОставшиесяНе-
КонецЦикла;
// ПРОВЕРКА ОСТАВШИЕГОСЯ ВРЕМЕНИ ПРЕПОДА ЧЕТВЕРГ
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|СозданиеРасписанияТЗПонедельник.ОставшиесяНедельныеЧасыПреподователя КАК ОставшиесяНедельныеЧасыПреподователя
|ИЗ
|Документ.СозданиеРасписания.ТЗПятница КАК СозданиеРасписанияТЗПонедельник
|
ЛЕВОЕ СОЕДИНЕНИЕ Документ.СозданиеРасписания КАК СозданиеРасписания
|
ПО (СозданиеРасписанияТЗПонедельник.Ссылка = СозданиеРасписания.Ссылка)
|ГДЕ
|СозданиеРасписания.ДатаНачалоРасписание = &ДатаНачалоРасписание
|И СозданиеРасписания.ДатаОкончаниеРасписание = &ДатаОкончаниеРасписание
65
|И СозданиеРасписанияТЗПонедельник.Преподователь = &Преподователь";
Запрос.УстановитьПараметр("ДатаНачалоРасписание", Объект.ДатаНачалоРасписание);
Запрос.УстановитьПараметр("ДатаОкончаниеРасписание",
Объект.ДатаОкончаниеРасписание);
Запрос.УстановитьПараметр("Преподователь",
Справочники.Преподователи.НайтиПоНаименованию(Объект.ПреподДляСервера));
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Стр = ТЗОставшиесяВремяПрепода.Добавить();
Стр.ОсталосьВремени
дельныеЧасыПреподователя;
=
ВыборкаДетальныеЗаписи.ОставшиесяНе-
КонецЦикла;
// ПРОВЕРКА ОСТАВШИЕГОСЯ ВРЕМЕНИ ПРЕПОДА ПЯТНИЦА
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|СозданиеРасписанияТЗПонедельник.ОставшиесяНедельныеЧасыПреподователя КАК ОставшиесяНедельныеЧасыПреподователя
|ИЗ
|Документ.СозданиеРасписания.ТЗСуббота КАК СозданиеРасписанияТЗПонедельник
|
ЛЕВОЕ СОЕДИНЕНИЕ Документ.СозданиеРасписания КАК СозданиеРасписания
|
ПО (СозданиеРасписанияТЗПонедельник.Ссылка = СозданиеРасписания.Ссылка)
|ГДЕ
|СозданиеРасписания.ДатаНачалоРасписание = &ДатаНачалоРасписание
|И СозданиеРасписания.ДатаОкончаниеРасписание = &ДатаОкончаниеРасписание
|И СозданиеРасписанияТЗПонедельник.Преподователь = &Преподователь";
Запрос.УстановитьПараметр("ДатаНачалоРасписание", Объект.ДатаНачалоРасписание);
66
Запрос.УстановитьПараметр("ДатаОкончаниеРасписание",
Объект.ДатаОкончаниеРасписание);
Запрос.УстановитьПараметр("Преподователь",
Справочники.Преподователи.НайтиПоНаименованию(Объект.ПреподДляСервера));
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Стр = ТЗОставшиесяВремяПрепода.Добавить();
Стр.ОсталосьВремени
дельныеЧасыПреподователя;
=
ВыборкаДетальныеЗаписи.ОставшиесяНе-
КонецЦикла;
// ПРОВЕРКА ОСТАВШИЕГОСЯ ВРЕМЕНИ ПРЕПОДА СУББОТА
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|СозданиеРасписанияТЗПонедельник.ОставшиесяНедельныеЧасыПреподователя КАК ОставшиесяНедельныеЧасыПреподователя
|ИЗ
|Документ.СозданиеРасписания.ТЗПонедельник КАК СозданиеРасписанияТЗПонедельник
|
ЛЕВОЕ СОЕДИНЕНИЕ Документ.СозданиеРасписания КАК СозданиеРасписания
|
ПО (СозданиеРасписанияТЗПонедельник.Ссылка = СозданиеРасписания.Ссылка)
|ГДЕ
|СозданиеРасписания.ДатаНачалоРасписание = &ДатаНачалоРасписание
|И СозданиеРасписания.ДатаОкончаниеРасписание = &ДатаОкончаниеРасписание
|И СозданиеРасписанияТЗПонедельник.Преподователь = &Преподователь";
Запрос.УстановитьПараметр("ДатаНачалоРасписание", Объект.ДатаНачалоРасписание);
Запрос.УстановитьПараметр("ДатаОкончаниеРасписание",
Объект.ДатаОкончаниеРасписание);
Запрос.УстановитьПараметр("Преподователь",
Справочники.Преподователи.НайтиПоНаименованию(Объект.ПреподДляСервера));
67
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Стр = ТЗОставшиесяВремяПрепода.Добавить();
Стр.ОсталосьВремени
дельныеЧасыПреподователя;
=
ВыборкаДетальныеЗаписи.ОставшиесяНе-
КонецЦикла;
ТЗОставшиесяВремяПрепода.Сортировать("ОсталосьВремени УБЫВ");
Для Каждого Стр Из ТЗОставшиесяВремяПрепода Цикл
СтрокаОсталосьВремениПрепода = Новый Структура;
СтрокаОсталосьВремениПрепода.Вставить("ОсталосьВремениПрепода",Стр.ОсталосьВремени);
МассивЗначенийОсталосьВремениПрепода.Добавить(
СтрокаОсталосьВремениПрепода);
//Сообщить(Стр.ОсталосьВремени);
КонецЦикла;
Возврат МассивЗначенийОсталосьВремениПрепода;
КонецФункции
&НаСервере
Процедура Таблица1АудиторияПервойПодгруппыПриИзмененииНаСервере()
// Вставить содержимое обработчика.
КонецПроцедуры
&НаКлиенте
Процедура Таблица1АудиторияПервойПодгруппыПриИзменении(Элемент)
Таблица1АудиторияПервойПодгруппыПриИзмененииНаСервере();
// ПОЛУЧАЕМ ТЕКУЩИЕ ДАННЫЕ ТАБЛИЦЫ
68
ТекущиеДанные = ЭтаФорма.Элементы.ТаблицаЗначенийПонедельник.ТекущиеДанные;
Для Каждого Стр Из Объект.ТЗПонедельник Цикл
Если (ТекущиеДанные.НачалоЗанятий = Стр.НачалоЗанятий) И (ТекущиеДанные.КонецЗанятий = Стр.КонецЗанятий) И (ТекущиеДанные.Аудитория =
Стр.Аудитория) И (ТекущиеДанные.НомерСтроки <> Стр.НомерСтроки) Тогда
Сообщить("Аудитории и время пересекаются!");
ТекущиеДанные.НачалоЗанятий = '00010101';
ТекущиеДанные.КонецЗанятий = '00010101';
ТекущиеДанные.Аудитория = "";
КонецЕсли;
КонецЦикла;
КонецПроцедуры
69
Download