Код
|
Наименование
роли
|
Описание
роли
|
Тип
привилегии
|
1400
|
Модуль
повышения квалификации
|
Дает
полный доступ к модулю
|
Подразделение
|
1401
|
Программы
обучения
|
Позволяет
редактировать программы обучения
|
Нет
|
1402
|
Планирование
мероприятий
|
Позволяет
редактировать учебные группы по программам обучения и сроки их проведения
|
Подразделение
|
1403
|
Просмотр
мероприятий
|
Дает
доступ ко всему модулю без возможности редактирования
|
Подразделение
|
1404
|
Проведение
мероприятий
|
Позволяет
проводить мероприятия по повышению квалификации
|
Подразделение
|
Кроме того, в Системе также действуют единые
ограничения и права на работу с документами: создание, редактирование,
назначение подписей и регистрацию приказов, договоров и прочих документов,
формирование которых реализовано в Системе. К примеру, сотрудник может вносить
изменения в какой-либо документ, только если он является его создателем и если
этот документ еще не подписан.
В соответствии с требованиями к защите
информации от несанкционированного доступа реализована иерархия пользователей
ФПКП с описанием доступного им функционала и номерами выданных ролей,
представленная на Рис. 2.7.
Рис. 2.7 Иерархия ролей пользователей
Декан ФПКП имеет полные права на доступ к
модулю.
При использовании модуля в филиалах МИИТа права
буду раздаваться по тем же шаблонам, которые представлены на Рис. 2.7.
Список возможных ролей и видов привилегий при
назначении системных прав сотрудников для разграничения доступа к информации
при работе с модулем «Повышение квалификации преподавателей» АСУ МИИТ приведен
в Таблице 2.3.
Таблица 2.3 Матрица доступа
Наименование
таблицы
|
Сотрудник
отдела планирования ФПКП
|
Сотрудник
отдела проведения ФПКП
|
Декан
ФПКП
|
Документы
|
NA
|
RW
|
RW
|
Студенты
|
R
|
R
|
R
|
Сотрудники
|
R
|
R
|
R
|
Сертификат
|
NA
|
RW
|
RW
|
Договора
|
NA
|
RW
|
RW
|
Куратор
группы
|
RW
|
R
|
RW
|
Кто
есть кто
|
NA
|
NA
|
NA
|
Методический
комплекс
|
RW
|
R
|
RW
|
Подразделения
|
R
|
R
|
R
|
Учебная
нагрузка умк
|
RW
|
R
|
RW
|
План
повышения квалификации
|
RW
|
R
|
RW
|
Специальности
комплекса
|
RW
|
R
|
RW
|
Параграфы
|
RW
|
RW
|
RW
|
Группы
повышения квалификации
|
RW
|
R
|
RW
|
Учебная
группа
|
RW
|
R
|
RW
|
Бумаги
|
RW
|
RW
|
RW
|
Примечание:- нет никакого доступа;- только
чтение;- только запись;- чтение и запись.
2.5 Разработка структуры ПО
.5.1 Описание основных модулей, используемых в
приложении
В Таблице 2.4 описаны основные модули,
используемые в приложении.
Таблица 2.4. Описание модулей приложения
Название
модуля
|
Описание
|
Описываемая
модулем форма
|
Функциональное
предназначение
|
PK_PPS
|
Файл
проекта
|
|
Инициализация
приложения, авторизация пользователя, создание основной формы
|
Main
|
Главный
модуль
|
Main_Form
|
Проверка
прав пользователя, создание остальных форм
|
Dictionaries
|
Форма
работы со справочниками
|
Form_Dictionaties
|
Создание,
редактирование и удаление записей в списках учебных групп, учебных программ,
организаторов обучения
|
Plan
|
Форма
работы с содержание методического комплекса
|
Form_Plan
|
Создание,
редактирование и удаление записей в списке специальностей методического
комплекса
|
Event
|
Форма
работы с планирование и проведением мероприятий по повышению квалификации
|
Form_Event
|
Создание,
редактирование и удаление плана повышения квалификации и его позиций, задание
сроков проведение, кураторов групп, зачисление/отчисление слушателей, работа
с договорами и т.д.
|
GridEditClass
|
Модуль,
описывающий процедуры и функции для работы с компонентом cxGrid
|
|
Описывает
процедуры и функции для стандартного описания компонента cxGrid, процедуры
добавления, обновления, удаления данных из cxGrid
|
LP_u_CX_tools
|
Содержит
набор общих процедур для стандартных действий и описание общих компонентов
|
|
Описание
стандартных кнопок диалога, их событий, описание создания и вызова
динамической модальной формы
|
LP_u_MA_Interface
|
Описание
интерфейса доступа к серверу приложений
|
|
Описание
интерфейса доступа к серверу приложений, описание действий, выполняемых в
навигации (выбор, удалить бумагу, создание бумаги, просмотр или изменение
свойств, отправка на подпись, подписание, возвращение на доработку, передача
бумаги другому пользователю)
|
Standart_New
|
Модуль,
описывающий процедуры и функции для работы с компонентом cxTreeList
|
|
Обновление
дерева строк, добавление в cxTreeList, поиск строки с заданным значением,
описывает свойства стандартного контекстного меню
|
SqlStringList
|
Модуль,
описывающий обертки к компоненту cxGridTableView
|
|
Организация
оберток к cxGridTableView, модуль реализует чтение из базы методом SelectData
по GUID_Select
|
Wrappers
|
Модуль,
описывающий стандартные несписковые сx-компоненты
|
|
Расширяет
возможности стандартных несписковых компонентов (cxTextEdit, cxPopupEdit,
cxButtonEdit, cxSpinEdit, cxDateEdit и др.), с целью организации их
индивидуального и группового поведения, ориентированного на работу с учетом
особенностей корпоративной системы
|
RegService
|
Модуль,
описывающий процедуры и функции для работы с реестром
|
|
Позволяет
при завершении работы с приложением сохранять текущие параметры компонентов в
реестр (размер формы, ее положение, размер панелей, положение сплитеров,
размер всех cx-компонентов) и при запуске приложения читать эти параметры из
реестра
|
Find_Org
|
Модуль,
описывающий компоненты для поиска организации
|
Form_Find_Org
|
Позволяет
находить организацию по маске поиска
|
Form_About
|
Модуль
с информацией о приложении
|
Form_About
|
Показывает
информацию о модулей, текущем пользователе, список ролей и т.д.
|
Form_SE
|
Модуль
поиска сотрудника
|
Form_SE
|
Позволяет
найти сотрудника в базе по заданным параметрам
|
Form_Document
|
Модуль
работы с документами
|
Form_Document
|
Позволяет
производить работу с различными документами
|
UnivQuestionare
|
Модуль
анкета
|
FUnivQuestionare
|
Позволяет
просматривать и редактировать данные о выбранном человеке
|
Рассмотрим взаимодействие программных модулей на
диаграмме классов (Рис. 2.8).
Классы связаны между собой отношениями
ассоциации, которые отражают структурные отношения между объектами. Кратность,
указанная на одном конце ассоциации, говорит о том, сколько объектов должно
соответствовать каждому объекту на другом конце [6].
С помощью агрегирования показано, какой из
классов имеет более высокий ранг.
Программный код основных модулей приложения
приведен в Приложении Б.
Рис. 2.8. Диаграмма классов, отображающая
взаимодействие программных модулей в разрабатываемой системы
.5.2 Описание основных SQL-запросов,
используемых в приложении
В корпоративной системе АСУ МИИТ запросы
хранятся в редакторе хранилищ Editor AS. Редактор хранилищ - специально
разработанное приложение, которое служит для связывания данных из БД с
приложением, разработанным в Delphi. Редактор хранилищ позволяет передавать
параметры, задаваемые пользователем в шаблоны SQL-запросов. Шаблоны
SQL-запросов представляют собой SQL-запросы с параметрами. В зависимости от
передаваемых параметров будут меняться данные, возвращаемые SQL-запросом.
Каждый SQL-запрос в редакторе хранилищ имеет идентификатор - TGUID. В таблице
2.5 представлены основные SQL-запросы, используемые в приложении,
автоматизирующем технологию организации повышения квалификации преподавателей.
Полный список использованных в ходе разработки
приложения SQL-запросов приведен в приложении В.
Таблица 2.5 Основные SQL-запросы
№
|
Название
запроса
|
GUID
|
Описание
запроса
|
Параметры
|
1
|
R_C_Groups
|
{5E30FFBA-B616-4850-A7E4-C5F69A7BD61A}
|
Список
группы ПК для выбранного плана ПК
|
%p1[i]% - ID Плана ПК
|
2
|
Add_Com_Spec
|
{9342C728-4700-4D8A-AE36-CC7F69ED905D}
|
Добавление
специальности методического комплекса
|
%p1[i]%
- ID Дисциплины %p2[i]% - ID Специальности подразделения %p3[i]% - ID
Параграфа %p4[i]% - ID Вида обучения %p5[i]% - Количество часов %p6[i]% - ID
Вида дисциплины %p7[i]% - Количество часов самостоятельной работы
|
3
|
Met_Complex
|
{0793BD99-678C-4E5A-99E3-F51F5227A816}
|
Методические
комплексы выбранной специальности подразделения
|
%p1[i]%
- ID Специальности подразделения
|
4
|
Get_Data_For_Plan
|
{4E97B054-EE9C-4449-A155-5B834991F360}
|
Формирование
плана повышения квалификации
|
%p1[i]%
- ID Параграфа Плана ПК
|
5
|
R_C_Plan
|
{01A115AA-8C51-4430-A175-E78BCE51FFDE}
|
Список
позиций (программ обучения с предварительными сроками проведения) плана
повышения квалификации на заданный документ
|
%p1[i]%
- ID Параграфа плана
|
6
|
Get_List_Spec_By_Params
|
{5F33C483-BA63-4F6C-A11D-28639EA7581B}
|
По
заданным параметрам возвращает список программ обучения
|
%p1[i]%
- уровень специальности %p2[i]% - ID подразделения-организатора
|
7
|
Orders
|
{C67E9825-6FE4-4461-83E9-1A5225B7F0CE}
|
Все
приказы на данного человека
|
%p1[i]%
- ID Человека.
|
8
|
Listeners
|
{39FD4EC1-0E3B-4913-BDD1-0FBAD73E2C9E}
|
Участники
выбранного плана ПК
|
%p1[i]% - ID Плана ПК
|
9
|
Delete_Student
|
{10AB233D-23D2-405C-B4A4-97531EA9D56A}
|
Удаляет
информацию о студенте (студента, договор с начислениями (если есть), приказы)
|
%p1[i]%
- ID Договора %p2[i]% - ID Студента
|
10
|
Make_New_Cert_By_Params
|
{055DE14D-CF20-44BA-8893-E85527F8BC7E}
|
Выдача
сертификата
|
По
заданному id_student = p1, id_paragraph = p2 журнала выдачи дипломов выдаёт
сертификат с рег. номером p3, видом документа p4 и номером p5, p6 -
количество фактических часов.
|
11
|
Autorepr
|
{1CFCDE6B-464C-4D9C-B933-245FFC48CFEA}
|
Добавляет
представителя МИИТа в заданный договор
|
%p1[i]%
- ID договора
|
12
|
Add_Contract
|
{2DF7D738-A733-4AE6-A137-E32E7DCF882B}
|
Добавление
договора
|
%p1[i]%
- ID Человека %p2[i]% - ID Контрагента организации %p3[d]% - Дата начала
%p4[d]% - Дата окончания %p5[i]% - ID Параграфа (для договора) %p6[i]% - ID
Источника финансирования %p7[i]% - ID Специальности подразделения %p8[i]% -
ID Учебной группы %p9[i]% - ID Вида основания зачисления %p10[i]% - ID
Приказа о зачислении (id_paragraph) %p11[s]% - Сумма %p12[s]% - если <>
'', то добавить ссылку на договор студента (ID Параграфа договора)
|
|
|
|
|
|
|
|
|
.6 Инструкция пользователя
.6.1 Общие сведения
Модуль позволяет вести планирование и
осуществлять проведение мероприятий по повышению квалификации
профессорско-преподавательского состава вуза и сторонних организаций.
Модуль включает в себя следующие функциональные
блоки:
Справочники - работа с перечнем программ и
организаторами обучения;
Содержание программ - работа с программами
обучения;
Мероприятия - формирование плана проведения
обучения и проведение мероприятий по обучению.
Работа осуществляется с использованием
стандартных элементов управления, используемых во всех модуля Системы:
группируемые списки, навигация, обмен сообщениями и т.д.
.6.2 Начало работы
Запуск приложения осуществляется после ввода
имени пользователя и пароля (авторизации). Без авторизации работа с Системой
невозможна.
.6.2.1 Пользователь и пароль
Доступ к Системе осуществляется на основе
принципа авторизации. Для этого необходимо ввести имя пользователя в базе
данных (далее - БД) и пароль. При вводе этих данных учитывается регистр букв и
язык. Значение вводимого пароля отображается на экране в виде «*» для
предотвращения возможности его разглашения (Рис. 2.9).
Рис. 2.9 Вход в систему
Имя пользователя соответствует имени последнего
подключения к Системе с данного компьютера. Здесь же указывается время его
подключения.
Сменить текущего пользователя (подключиться под
другим именем) можно с помощью основного пункта меню «Сменить пользователя»
(Рис. 2.10):
Рис. 2.10 Смена пользователя
При этом откроется стандартное окно подключения
(Рис. 2.9). Если попытки подключения под новым пользователем не было, то окно
можно закрыть и продолжать работу под старым именем, в противном случае
необходимо ввести старое имя и его пароль. Если имя и пароль введены неверно,
то при закрытии окна работа приложения завершится, т.к. старый сеанс работы с
БД уже завершен.
2.6.2.2 Подключение к тестовой базе данных
В целях обучения пользователей работе с Системой
есть возможность подключиться к тестовой базе без дополнительной настройки
подключения.
Это возможно только при наличии тестовой БД, в
которую можно вносить изменения, в том числе заведомо содержащие ошибки и
неверную (тестовую) информацию в целях моделирования разных ситуаций,
возникающих при реальной работе пользователей в Системе.
Идея и смысл работы в тестовой БД - обучить
новых сотрудников выполнять свою ежедневную работу в Системе. В таком режиме
работы отсутствует риск потери данных или внесения ошибок в реальные данные
корпоративной БД.
Для подключения к тестовой БД необходимо
получить логин и пароль, а при вводе имени пользователя указать в квадратных
скобках имя тестовой БД (в данном примере имя тестовой БД «test»), а затем
сразу (без пробелов и без каких-либо других символов разделения) логин в ней
(Рис. 2.11):
Рис. 2.11 Подключение к тестовой БД
Следует отметить, что вся работа, произведенная
в тестовой БД, никак не отразится на основной, и наоборот. При подключении к
тестовой БД Пользователь просто обучается и тренируется, а не работает. Для
ввода данных в основную БД надо сначала подключиться к ней, а потом начинать
работу.
.6.3 Справочники
Работа с модулем начинается с подготовки
справочников. К справочникам, относящимся к модулю, относятся списки программ
обучения и организаторов обучения.
Доступ к форме работы со справочниками
осуществляется с помощью пункта основного меню «Справочники» (Рис. 2.12):
Рис. 2.12 Справочники
В открывшейся форме осуществляется работа со
списком программ обучения и организаторов обучения. Форма разделена на 2
страницы, на которых размещены соответствующие списки (Рис. 2.13):
Рис. 2.13 Форма справочников
.6.3.1 Программы обучения
На странице «Программы обучения» формы «Справочники»
осуществляется работа со списком программ обучения. Если у Пользователя
достаточно прав (см. п. 2.4), то список можно редактировать (добавлять,
изменять и удалять записи).
С помощью контекстного меню списка
осуществляется доступ к вводу нового значения, удалению выделенных значений,
обновлению данных (перечитывание списка из БД), а также к настройкам вида
отображения списка (Рис. 2.14):
Рис. 2.14 Контекстное меню программ обучения
При вводе новой программы обучения необходимо
ввести ее наименование и номер (если он есть):
Рис. 2.15 Ввод новой программы обучения
Для добавления новой программы обучения следует
нажать на кнопку «Принять» или клавишу [Enter]. Добавленное значение отразится
в списке программ обучения.
Редактирование и удаление данных осуществляется
стандартным способом.
.6.3.2 Организаторы обучения
На странице «Организаторы обучения» формы
«Справочники» осуществляется работа со списком организаторов обучения по
программам обучения и учебными группами по каждой из позиций списка. Если у
Пользователя достаточно прав (см. п. 2.4), то списки можно редактировать
(добавлять, изменять и удалять записи).
Под списком программ расположен список учебных
групп текущей (выбранной) программы. Выбор текущей программы осуществляется
щелчком мыши или клавишей [Enter] на интересующей позиции списка (Рис. 2.16):
Рис. 2.16 Организаторы обучения
С помощью контекстных меню списков
осуществляется доступ к добавлению нового значения в список, удалению
выделенных записей в списке, обновлению данных (перечитывание списка из БД), а
также к настройкам вида отображения списка (Рис. 2.17):
Рис. 2.17 Контекстное меню организаторов
обучения
Кроме того, контекстное меню списка
организаторов обучения содержит также пункт обнуления источника финансирования
по умолчанию, с помощью которого Вы можете убрать ссылку на источник
финансирования договоров этой программы, которая будет предлагаться
пользователям по умолчанию.
При вводе нового организатора обучения
необходимо выбрать институт, подразделение, программу обучения, форму обучения,
период действия и источник финансирования договоров по умолчанию (Рис. 2.18):
Рис. 2.18 Ввод нового организатора обучения
Выбор значений осуществляется из выпадающих
списков. Список программ обучения задается на странице «Программы обучения»
(см. п. 2.6.3.1), а все остальные списки задаются в других модулях Системы.
Для добавления новой программы обучения следует
нажать на кнопку «Принять» или клавишу [Enter]. Добавленное значение отразится
в списке организаторов обучения.
Редактирование и удаление данных осуществляется
стандартным способом.
При вводе новой учебной группы текущей
(выбранной в списке) позиции организатора обучения необходимо ввести ее номер и
период действия (Рис. 2.19):
Рис. 2.19 Ввод новой учебной группы
Для добавления новой группы обучения следует
нажать на кнопку «Принять» или клавишу [Enter]. Добавленное значение отразится
в списке учебных групп по текущей позиции в списке организаторов обучения.
Редактирование и удаление данных осуществляется
стандартным способом.
.6.4 Содержание программ
Описание программ обучения осуществляется в
одноименной форме. Доступ к этой форме осуществляется с помощью пункта
основного меню «Содержание программ» (Рис. 2.20):
Рис. 2.20 Содержание программ
В открывшейся форме осуществляется работа по
описанию программ обучения по всем формам и организаторам обучения,
предварительно введенных в справочниках (см. п. 2.6.3). Если у Пользователя
достаточно прав (см. п. 2.4), то введенные описания можно редактировать
(добавлять, изменять и удалять записи).
Форма содержит список описанных программ
обучения, над которым размещен фильтр по организатору обучения. Если в фильтре задано
подразделение (выбирается из списка подразделений), то в списке отражаются
только те программы обучения, организаторами которых является это
подразделение.
С помощью контекстного меню списка
осуществляется доступ к добавлению нового значения в список, удалению
выделенных записей в списке, обновлению данных (перечитывание списка из БД), а
также к настройкам вида отображения списка и работе с текущим документом:
Рис. 2.21 Содержание методического комплекса
Каждое описание программы обучения связывается с
документом вида «Программа обучения», с которым можно производить стандартные
действия с документами в Системе (назначать подписи, регистрировать, возвращать
на доработку и т.д.), поэтому на доступность по изменению данных накладываются
дополнительные ограничения по правам доступа к этому документу и его текущему
статусу.
Рис. 2.22 Ввод нового описания программы
обучения
Для добавления нового описания программы
обучения следует нажать на кнопку «Принять» или клавишу [Enter]. Добавленное
значение отразится в списке.
Редактирование и удаление данных осуществляется
стандартным способом.
.6.5 Мероприятия
Основная работа по планированию и проведению
мероприятий по обучению осуществляется в форме «Мероприятия». Доступ к этой
форме осуществляется с помощью пункта основного меню «Мероприятия» (Рис. 2.23):
Рис. 2.23 Мероприятия
В открывшейся форме осуществляется работа по
формированию приказа об утверждении плана обучения, а также по его исполнению
(проведению обучения).
Форма разделена на две части. Слева расположен
список, отражающий позиции плана обучения с панелью фильтрации по документу, а
справа от него - списки с фактическими сроками проведения обучения и
участниками (слушателями) текущей (выбранной) позиции в этом списке (Рис.
2.24):
Рис. 2.24 Форма мероприятий
2.6.5.1 Планирование мероприятий
Перед началом формирования проекта приказа по
планированию повышения квалификации профессорско-преподавательского состава
необходимо сформировать списки программ обучения, организаторов обучения, а
также описать программы обучения по каждому из организаторов обучения (см.
разделы 2.6.3 и 2.6.4).
Формирование плана проведения повышения
квалификации осуществляется с помощью списка позиций плана. Если у Пользователя
достаточно прав (см. п. 2.6.2.3), то этот список можно редактировать
(добавлять, изменять и удалять записи):
Рис. 2.25 Позиции плана повышения квалификации
Над списком размещена панель фильтрации списка
по году и приказу утверждения плана. Если в ней задан конкретный план, то будут
заполнены поля с названием и аннотацией плана (Рис. 2.26):
Рис. 2.26 План повышения квалификации
При внесении изменений в поля названия и
аннотации станут доступны кнопки применения и отклонения внесенных изменений:
Рис. 2.27 Изменение плана повышения квалификации
Каждая позиция списка связывается с документом
вида «План повышения квалификации», с которым можно производить стандартные
действия с документами в Системе (назначать подписи, регистрировать, возвращать
на доработку и т.д.), поэтому на доступность по изменению данных накладываются
дополнительные ограничения по правам доступа к этому документу и его текущему
статусу.
При добавлении новой позиции в проект приказа об
утверждении плана повышения квалификации необходимо указать программу обучения
с организатором обучения, проект приказа и планируемые сроки проведения
обучения (Рис. 2.28):
Рис. 2.28 Добавление позиции плана повышения
квалификации
Для добавления новой позиции в проект приказа
следует нажать на кнопку «Принять» или клавишу [Enter]. Добавленное значение
отразится в списке.
Редактирование и удаление данных осуществляется
стандартным способом.
Если планируется обучение по одной программе
несколько раз в год, следует добавить новые позиции с необходимыми сроками в
список.
После того, как завершен ввод всех позиций плана
приема в проект приказа, нужно отправить документ на подпись и зарегистрировать
его в Системе.
.6.5.2 Проведение обучения
После того, как приказ о плане проведения
повышения квалификации утвержден, можно приступать к проведению мероприятий по
обучению.
Для этого необходимо ввести фактические сроки
проведения обучения с указанием номеров групп обучения, введенных в Систему по
текущей позиции плана (см. п. 2.6.3).
Затем Пользователь может приступать к
формированию проекта приказа о зачислении в число слушателей текущей позиции
плана, подготовить договора на оплату обучения (если это необходимо), а по
окончании обучения сформировать приказы об окончании обучения (см. ниже).
.6.5.2.1 Сроки обучения
Сроки проведения фактического обучения по
текущей позиции плана повышения квалификации задаются на странице «Сроки
проведения». Для этого необходимо найти интересующую позицию в списке плана и
выбрать ее щелчком мыши или клавишей [Enter] на ней (Рис. 2.29):
Рис. 2.29 Сроки проведения
Если у Пользователя достаточно прав (см. п.
2.6.2.3), то список можно редактировать (добавлять, изменять и удалять записи).
С помощью контекстного меню списка
осуществляется доступ к вводу нового значения, удалению выделенных значений,
обновлению данных (перечитывание списка из БД), а также к настройкам вида
отображения списка (Рис. 2.30):
Рис. 2.30 Контекстное меню сроков проведения
При вводе нового фактического срока проведения
обучения по текущей программе необходимо выбрать учебную группы, программу
обучения и задать сроки его проведения (Рис. 2.31):
Рис. 2.31 Добавление группы повышения
квалификации
Список учебных групп по текущей программе
задается в разделе «Справочники» (см. п. 2.6.3.2). Список описаний программ с
количеством часов задается в разделе «Содержание программ» (см. п. 2.6.4).
Для добавления нового срока обучения следует
нажать на кнопку «Принять» или клавишу [Enter]. Добавленное значение отразится
в списке фактических сроков обучения.
Редактирование и удаление данных осуществляется
стандартным способом.
Под списком сроков проведения расположен список
кураторов текущей учебной группы.
Если у Пользователя достаточно прав (см. п.
2.4), то список можно редактировать (добавлять, изменять и удалять записи).
С помощью контекстного меню списка
осуществляется доступ к вводу нового значения, удалению выделенных значений,
обновлению данных (перечитывание списка из БД), а также к настройкам вида
отображения списка (Рис. 2.32):
Рис. 2.32 Контекстное меню кураторов текущей
группы
При вводе нового куратора текущей учебной группы
(выбранной в списке фактических сроков проведения обучения) необходимо найти
куратора с помощью стандартной формы поиска человека и задать дату его
назначения куратором группы (Рис. 2.33):
Рис. 2.33 Добавление нового куратора группы
Список анкет формируется в модуле кадрового
учета Системы.
Для добавления нового куратора следует нажать на
кнопку «Принять» или клавишу [Enter]. Добавленное значение отразится в списке
кураторов текущей учебной группы.
Редактирование и удаление данных осуществляется
стандартным способом.
.6.5.2.2 Список слушателей
Работа со списками слушателей текущей позиции
плана повышения квалификации осуществляется на странице «Участники». Для этого
необходимо найти интересующую позицию в списке плана и выбрать ее щелчком мыши
или клавишей [Enter] на ней (Рис. 2.34):
Рис. 2.34 Участники
Если у Пользователя достаточно прав (см. п.
2.4), то список можно редактировать (добавлять, изменять и удалять записи).
С помощью контекстного меню списка
осуществляется доступ к вводу нового значения, удалению выделенных значений,
работе с договором, обновлению данных (перечитывание списка из БД), а также к
настройкам вида отображения списка (Рис. 2.35):
Рис. 2.35 Контекстное меню участников
При вводе нового слушателя необходимо найти его
анкету с помощью стандартной формы поиска человека, выбрать учебную группу со
сроком проведения обучения из списка (см. п. 2.6.5.2.1), указать основание,
проект приказа о зачислении и параметры договора (если обучение проводится на
платной основе) (Рис. 2.36):
Рис. 2.36 Добавление нового участника
Если у слушателя уже есть договор на обучение в
этой группе, то его можно указать в поле «Ссылка на договор» (в этом случае
параметры договора станут недоступными).
Если оплату договора осуществляет третье
организация, то ее необходимо указать в поле «Организация» с помощью
стандартной формы поиска организации. В этом случае станут доступными
дополнительные поля для заполнения о представителе организации в договоре.
После заполнения всех обязательных полей (они
подсвечиваются цветом) станет доступна кнопка «Принять», нажатием на которую
новый слушатель добавляется в список участников обучения.
Редактирование и удаление данных осуществляется
стандартным способом. При необходимости внесения изменений в договорные
отношения с текущим участником (добавить или удалить договор) Вы можете
воспользоваться контекстным меню списка участников обучения.
Под списком участников расположена панель с
отображением учебных приказов по текущему участнику, его анкеты и заключенного
договора (Рис. 2.37):
Рис. 2.37 Анкета
После того, как Пользователь завершил ввод всех
слушателей в проект приказа, он должен отправить документ на подпись и
зарегистрировать его в Системе.
.6.5.2.3 Окончание обучения
По окончании обучения Пользователь может
сформировать приказ об окончании обучения (при успешном окончании обучения) или
об исключении из числа слушателей (при досрочном или неуспешном окончании
обучения). Для этого нужно выделить участников в списке и воспользоваться
пунктом «Окончание обучения» контекстного меню списка участников (Рис. 2.38):
Рис. 2.38 Окончание обучения в контекстном меню
участников
В открывшемся окне необходимо указать проект
приказа об окончании обучения (или отчислении), указать основание окончания и его
дату:
Рис. 2.39 Окончание обучения
После заполнения всех обязательных полей (они
подсвечиваются цветом) станет доступна кнопка «Принять», при нажатии на которую
Система спросит у Пользователя подтверждения его действий (Рис. 2.40):
Рис. 2.40 Запрос на подтверждения окончания
обучения
При подтверждении выделенные участники обучения
исключатся из числа слушателей с указанными атрибутами.
.6.6 О программе
Доступ к этой форме осуществляется через пункт
основного меню «О программе» или по клавише [F11] (Рис. 2.41):
Рис. 2.41 О программе
.6.6.1 Текущий пользователь
В открывшемся окне выводится информация о
разработчиках, текущем пользователе и его ролях, заданных администратором
Системы (см. п. 2.6.3.1). С помощью контекстного меню списка ролей можно
обновить этот список в случае его изменения во время выполнения приложения. При
этом обновится и доступ текущего пользователя к функциям и модулям в соответствии
с обновленным списком его ролей.
.6.6.2 Изменение пароля
Пользователь может изменить свой пароль с
помощью кнопки «Пароль», при нажатии на которую открывается модальное окно
ввода нового пароля (Рис. 2.42):
Рис. 2.42 Форма изменение пароля
Сначала необходимо ввести текущий пароль, с
помощью которого пользователь получил доступ к Системе, а затем 2 раза новый
пароль (в соответствующих полях). После правильного ввода старого пароля станут
доступны поля для ввода нового пароля, а после ввода нового пароля и его
подтверждения станет доступна кнопка «Принять». Чтобы задать новый пароль
необходимо нажать на кнопку «Принять» или клавишу [Enter] в любом поле, а для
отмены указанного действия клавишу [Esc], кнопку «Отмена» или закрыть форму
(Рис. 2.43):
Рис. 2.43 Смена пароля
2.6.7 Сохранение параметров
Настройка всех списков (сортировка, фильтрация,
ширина и видимость столбцов) сохраняются при выходе из приложения в реестре Windows
текущего пользователя.
Имя раздела в реестре Windows:
«HKEY_CURRENT_USER\Software\AS Pilot
group\Parameters\ПК ППС».
3. Системотехнические расчеты
.1 Расчет времени реакции системы
.1.1 Обоснование расчета времени реакции
При создании информационных систем в ряде
случаев возникает необходимость в оценке некоторых временных характеристик.
Зная архитектуру системы, ее принцип действия и количество пользователей, можно
определить временные показатели функционирования ИС, произведя определенные расчеты.
Одним из важных временных показателей, который
рассматривается при проектировании информационных систем, является время
реакции системы. Под этим показателем понимают время от поступления запроса в
систему на выполнение операций до получения результатов работы системы.
В данном случае под временем реакции будем
подразумевать время получения ответа на SQL-запросы различного типа.
.1.2 Описание технологии передачи работы системы
Если пользователь хочет получить данные на
SQL-запрос, то в системе происходят следующие действия. Машина пользователя
(клиентская машина) порождает сообщение (запрос), которое отправляется по сети
на сервер приложений. На сервере приложений сообщение распознается как
SQL-запрос и вызывается метод обработки этого запроса. Дальше сообщение
поступает на сервер БД, где извлекаются данные, удовлетворяющие запросу.
Полученные данные поступают в виде сообщения ответа на сервер приложений.
Сервер приложений отправляет сообщение (данные) клиенту.
Рис. 3.1 Архитектура работы системы
.1.3 Переход к модели в терминах СМО
Система АСУ МИИТа является информационной
системой коллективного использования, поэтому ее можно описать в терминах
систем массового обслуживания (СМО).
Перейдем к модели в терминах СМО, основываясь на
описанной выше технологии передачи и обработки запросов на получение данных.
При работе системы учтем ряд введенных допущений.
Клиентская машина, на которой установлено
приложение, автоматизирующее организацию повышения квалификации (АРМ) формирует
сообщение с интенсивностью λ (СМО1,
интенсивность обработки - µ1). При этом пользователь не дожидается ответа для
дальнейшей своей работы. Сообщение поступает на сервер приложений (СМО2),
помимо этих сообщений на сервер приложений поступают сообщения от других
источников с интенсивностью λd. Полученные
сообщения обрабатываются сервером приложений с интенсивностью µ2. Сервер
приложений передает сообщение серверу БД (СМО3), который обрабатывает его с
интенсивностью µ3 и, после обработки, отправляет результат серверу приложений,
который отправляет ответ обратно клиенту.
Для расчета введем следующие допущения:
поток запросов - простейший;
время обработки одного запроса - случайная
величина;
время обработки запроса распределено по
экспоненциальному закону;
очередь для поступающих запросов не ограничена;
интенсивность поступления запросов постоянна;
время, затрачиваемое маршрутизатором на
определение маршрута передаваемых данных, пренебрежимо мало и рассматриваться
не будет;
время передачи сообщений по сети пренебрежимо
мало и рассматриваться не будет;
каждый запрос пользователя в АРМ порождает одно
сообщения, направляемое на обработку серверам, и одно сообщение от серверов в
АРМ;
оперативный, аналитический запросы и запрос на
выполнения отчета различаются лишь своей сложностью, т.е. разным временем
обработки на сервере БД, остальные же параметры остаются неизменными.
Вся процедура обработки заявок на получение
отчета производится путем последовательного выполнения следующих операций:
формирование запроса клиентской машиной и
передача сформированного сообщения серверу приложений;
прием и обработка запроса сервером приложений,
его передача серверу БД;
прием и обработка запроса сервером БД, передача
ответа обратно серверу приложений;
прием сообщения (ответа) сервером приложений, и
его передача клиенту;
прием клиентской машиной ответа, отображение
полученных данных.
Схему такой системы можно представить в виде
пяти последовательно включенных одноканальных СМО с неограниченной очередью,
каждая из которых соответствует одной из вышеперечисленных операций (рис. 3.2).
Рис. 3.2 Система обработки запросов в терминах
СМО
- интенсивность
сообщений в АРМ.
- интенсивность
поступления сообщений на сервера от других источников.
- интенсивность
обработки запросов в АРМ.
- интенсивность
обработки запросов на сервере приложений.
- интенсивность
обработки запросов на сервере БД.- число клиентских машин, на которых
установлен АРМ.
.1.4 Исходные данные, необходимые для расчета
времени реакции
Расчеты будем производить, исходя из наихудших
условий эксплуатации - высокая загрузка. В то же время предполагаем, что
компьютеры, на которых выполняются компоненты подсистемы, обладают достаточными
для работы характеристиками.
= 20 сек-1 (данные
сетевого отдела АСУ МИИТа).
Один пользователь может отправлять в подсистему
максимум 10 заявок в минуту (из наихудших условий).
Таким образом, интенсивность потока заявок в АРМ
составляет:
= 10 / 60 с ≈
0,17 сек-1.
Время обработки сообщения на клиентской машине
равно 0,1 сек., следовательно, интенсивность равна:
µ1 = 1/0,1=10 сек-1.
Прием и обработка входного сообщения на сервере
приложений состоит из последовательно выполняемых действий:
принятие сервером входного сообщения,
распознавание SQL-запроса;
отправка сообщения (SQL-запрос) на сервер БД.
Выполнение всех этих операций составляет
приблизительно:= 0,015 сек.
Интенсивность обработки поступающих сообщений
составляет:
µ2 = 1/ mc2 = 1/0,015 сек ≈ 66,7 сек-1.
Прием и обработка входного сообщения на сервере
БД состоит из последовательно выполняемых действий:
принятие сервером входного сообщения, извлечение
необходимых данных;
отправка ответа (данные) на сервер приложений.
Прием и обработка полученных от сервера БД
данных обрабатывается сервером приложений приблизительно столько же, сколько и
при приеме входного сообщения от клиентской машины. Поэтому расчет для СМО2 и
СМО4 будет одинаковым.
Аналогично одинаковым будет расчет для СМО1 и
СМО5.
Максимальное количество пользователей, которые
могут использовать приложение, автоматизирующее технологию организации
повышения квалификации, равно 42.= 42.
.1.5 Расчет среднего времени реакции системы
Среднее время пребывания (реакции) сообщения в
подсистеме рассчитаем по следующей формуле:
Т = mТ1 + mТ2 + mТ3 + mТ2 + mТ1Т = 2mТ1 + 2mТ2 +
mТ3Т =
Найдем зависимость среднего времени реакции
системы от среднего времени обработки одной заявки на сервере БД (см. Таблицу
3.1).
Таблица 3.1 Зависимость среднего времени реакции
системы от среднего времени обработки одной заявки на сервере БД
Среднее
время обработки одной заявки на сервере БД, mc2, сек.
|
Интенсивность
обработки заявок на сервере БД, µ3, 1/сек.
|
Среднее
время реакции системы, mТ, сек.
|
0,001
|
1000
|
0,2697
|
0,002
|
500
|
0,2708
|
0,003
|
333,33
|
0,2720
|
0,004
|
250
|
0,2734
|
0,005
|
200
|
0,2747
|
0,006
|
166,7
|
0,2763
|
0,007
|
142,86
|
0,2779
|
0,008
|
125
|
0,2800
|
0,009
|
111,11
|
0,2817
|
0,01
|
100
|
0,2839
|
0,011
|
90,91
|
0,2864
|
0,012
|
83,33
|
0,2891
|
0,013
|
76,92
|
0,2922
|
0,014
|
71,42857
|
0,2956
|
0,015
|
66,7
|
0,2995
|
0,016
|
62,5
|
0,3041
|
0,017
|
58,82
|
0,3094
|
0,018
|
55,56
|
0,3157
|
0,019
|
52,63
|
0,3232
|
0,02
|
50
|
0,3323
|
0,021
|
47,62
|
0,3436
|
0,022
|
45,45
|
0,3582
|
0,023
|
43,48
|
0,3774
|
0,024
|
41,67
|
0,4041
|
0,025
|
40
|
0,4435
|
0,026
|
38,46
|
0,5078
|
0,027
|
37,04
|
0,6314
|
0,028
|
35,71
|
0,9659
|
0,029
|
34,48
|
5,201
|
0,03
|
33,33
|
12,7687
|
График, построенный на основе Таблицы 3.1,
приведен на Рис. 3.2.
Рис. 3.2 Зависимость среднего времени реакции
системы от среднего времени обработки одной заявки на сервере БД
.2 Вывод
Исходя из расчетных данных, можно сделать
выводы:
Требования к среднему времени выполнения оперативного
запроса (1 сек.) выполняются при среднем времени обработки одной заявки на
сервере БД, меньшем 0,028 сек.;
Требования к среднему времени составления
отчетов (5 сек.) выполняются при среднем времени обработки одной заявки на
сервере БД, меньшем 0,029 сек.;
Требования к среднему времени выполнения
аналитического запроса (10 сек.) выполняются при среднем времени обработки
одной заявки на сервере БД, меньшем 0,03 сек.
4. Человеко-машинное взаимодействие
В данном разделе описаны особенности такой профессии
как «Инспектор факультета повышения квалификации преподавателей», раскрывается
специфика труда и требований, которые могут предъявляться к специалисту.
.1 Профессиограмма - «Инспектор факультета
повышения квалификации преподавателей»
Название должности - инспектор.
Место в административной иерархии
.1 Инспектор факультета повышения квалификации
преподавателей назначается на должность и освобождается от должности в
установленном действующим трудовым законодательством порядке приказом ректора
университета.
.2 Инспектор подконтролен непосредственно декану
факультета повышения квалификации преподавателей.
.3 Инспектор подотчетен старшему инспектору
факультета повышения квалификации преподавателей.
Функциональные обязанности
Инспектор факультета повышения квалификации
преподавателей:
.1 Следит за корректностью данных в списках
учебных программ, организаторов обучения, учебных групп и т.д.
.2 Производит планирование процесса повышения
квалификации преподавателей.
.2 Производит поддержку процесса проведения мероприятий
по повышению квалификации преподавателей.
.5 Соблюдает трудовую и производственную
дисциплину, правила и нормы охраны труда, требования производственной санитарии
и гигиены, требования противопожарной безопасности, гражданской обороны.
Примечание:
Фактически в данной профессии переплетаются
несколько функций: управленческая (управление процессами планирования и
проведения мероприятий по повышению квалификации преподавателей) и юридическая
(работа с законодательными актами и положениями о платной образовательной
деятельности МИИТа).
Обеспечение (работник)
.1 Квалификационная готовность
.1.1 При приеме на должность достоинством
кандидата будет наличие опыта в платной образовательной деятельности. Для
доказательства этого достаточно записи в трудовой книжке и собеседования.
.1.2 На должность Инспектора назначается лицо,
имеющее среднее образование.
Образованность можно проверить различными
методами (см. пункт 5.1).
Интеллект кандидата можно проверить с помощью
теста IQ (см. пункт 5.3.) или теста Равена (см. пункт 5.6). Достаточным уровнем
можно считать коэффициент IQ, равный 90, или средний уровень развития
интеллекта по тесту Равена.
.1.3 Инспектор должен владеть компьютером на
пользовательском уровне: уметь пользоваться основными функциями подготовки
текста в офисных программных средствах (типа Word и Excel), электронной почтой,
браузерами, архиваторами, уметь вести БД при готовых интерфейсах [8].
Более подробно требования описаны в пункте 5.2.
.1.4 Инспектор должен уметь разбираться в
юридических вопросах, таких как:
.1.4.1 Законы, постановления, распоряжения,
приказы, другие руководящие документы и нормативные акты, касающиеся работы
предприятия;
.1.4.2 Законодательство о труде;
.1.4.3 Правила внутреннего трудового распорядка;
.1.4.4 Правила и нормы охраны труда;
.1.4.5 Правила техники безопасности,
производственной санитарии и гигиены, противопожарной безопасности, гражданской
обороны.
Юридическая грамотность кандидата также
проверяется путем собеседования.
.1.5 Инспектор должен уметь работать в коллективе.
В ходе работы необходимо взаимодействие с филиалами и подразделениями
университета для составления плана повышения квалификации, поддержки процесса
проведения мероприятий по повышению квалификации.
.2 Физиологические и личностные особенности.
.2.1 Динамичность мышления.
Динамичность мышления - умение быстро, творчески
ориентироваться в деле.
Одним из возможных способов проверки может быть
тест IQ (см. пункт 5.3.). Как уже было отмечено выше, достаточным можно считать
коэффициент IQ, равный 90.
.2.2 Инспектор должен обладать следующими
личностными качествами:
.2.2.1 Внимательность (особая внимательность
требуется при создании договоров, актов и квитанций об оплате). Одним из
возможных способов проверки может быть метод «красно-черная таблица» (см. пункт
5.4).
.2.3.2 Устойчивость, умение заниматься
монотонной работой. Методом оценки может выступать иллюзия Китаока (см. пункт
5.7.).
.2.2.3 Ответственность.
.3 Противопоказания
.3.1 Неспособность к работе, требующей
повышенного внимания.
Обеспечение (работодатель)
.1 Работодатель должен предоставить работнику
персональное рабочее место в соответствии с ГОСТ 12.2.032-78. ("Система
стандартов безопасности труда. Рабочее место при выполнении работ сидя. Общие
эргономические требования")
.2 Работодатель должен предоставить работнику
рабочий график в соответствии с трудовым договором.
.3 Работодатель обязан оплачивать труд работника
в соответствии с трудовым договором и ТК РФ при выполнении работником всех
своих обязанностей. Способ оплаты устанавливается в трудовом договоре.
.4 Работодатель должен предоставить работнику
безопасное помещение для ведения трудовой деятельности, оборудованное
противопожарной сигнализацией и средствами тушения пожара.
.5. Работодатель должен обеспечить безопасность
работника в соответствии с СанПиН 2.2.2.542-96 ("Гигиенические требования
к видеодисплейным терминалам, персональным электронно-вычислительным машинам и
организации работы"), который был разработан на основе ГОСТ Р. 50948-96.
.6 Работодатель должен проинформировать работника
о действии в нештатных ситуациях и дать список контактов, к которым работник
должен обращаться при возникновении нештатной ситуации.
.7 Работодатель должен проинформировать
работника о действиях при пожаре и о планах эвакуации из помещения при чрезвычайных
ситуациях.
Для оценки профессионально важных качеств
рекомендованы следующие методы:
.1 Для проверки письменной грамотности можно
предложить кандидату на должность написать диктант среднего уровня сложности.
Для проверки грамотности устной речи - вести
собеседование с возможностью высказывания кандидатом своего мнения на
поставленную проблему. Следить за построением предложений, наличием сленга или
диалекта.
При проверке математических знаний можно
попросить в уме сосчитать дробное вычисление или решить пропорцию.
.2 Работа в MS Office:
работа с документами в редакторе MS Word: ввод,
редактирование, форматирование и печать текстовых документов, включающих
таблицы, списки, колонки, рисунки;
работа в электронной таблице MS Excel: работа с
«книгами», «листами». Вычислительные операции с ячейками электронной таблицы.
Работа с формулами, построение диаграмм и графиков;
работа с презентациями в MS PowerPoint: работа
со слайдами презентаций. Шаблоны презентаций, работа с текстом. Просмотр и
произвольная демонстрация.
Проверка данного навыка осуществляется
выполнением примерного задания в MS Office.
.3 Тест IQ (англ. Intellectual quotent),
показатель умственного развития, уровня имеющихся знаний и осведомленности,
получаемый на основе различных тестовых методик.
Идея количественного определения уровня
интеллектуального развития (IQ) детей с помощью системы тестов впервые была
разработана французским психологом А. Бине (1905).
Задания в шкалах Бине были сгруппированы по
возрастам (от 3 до 13 лет). Для каждого возраста подбирались определенные
тесты.
Они считались соответствующими данной возрастной
ступени, если их решало большинство детей данного возраста (80-90%). Детям до 6
лет предлагалось по 4 задания, а детям старше 6 лет - 6 заданий. Задания
подбирались путем исследования большой группы детей (300 чел.).
Показателем интеллекта в шкалах Бине был
умственный возраст, который мог расходиться с хронологическим. Умственный
возраст определялся по успешности выполнения тестовых заданий. Испытание
начиналось с предъявления тестовых заданий, соответствующих хронологическому
возрасту ребенка. Если он справлялся со всеми заданиями, ему предлагались
задания более старшей возрастной группы. Если он решал не все, а некоторые из
них, испытание прекращалось. Если же ребенок не справлялся со всеми заданиями
своей возрастной группы, ему давались задания, предназначенные для более
младшего возраста Испытания проводились до тех пор, пока не выявлялся возраст,
все задания которого решались испытуемым. Максимальный возраст, все задания
которого решаются испытуемым, называют базовым умственным возрастом.
Несовпадение умственного и хронологического
возраста считалось показателем либо умственной отсталости (если умственный
возраст ниже хронологического), либо одаренности (если умственный возраст выше
хронологического)
Вторая редакция шкалы Бине послужила основой
работы по проверке и стандартизации, проведенной в Стэндфордском университете
(США) коллективом сотрудников под руководством Л. М. Термена. Этот вариант
тестовой шкалы Бине был предложен в 1916 г и имел так много серьезных изменений
по сравнению с основным, что был назван шкалой Стэнфорд-Бине. Основных отличий
от тестов Бине было два: введение в качестве показателя по тесту коэффициента
интеллектуальности (IQ), определяющегося отношением между умственным и
хронологическим возрастами, и применение критерия оценки тестирования, для чего
вводилось понятие статистической нормы.
Коэффициент IQ был предложен В. Штерном,
считавшим существенным недостатком показателя умственного возраста то, что одна
и та же разность между умственным и хронологическим возрастом для различных
возрастных ступеней имеет неодинаковое значение. Чтобы устранить этот
недостаток, Штерн предложил определять частное, получаемое при делении
умственного возраста на хронологический. Этот показатель, умноженный на 100, он
и назвал коэффициентом интеллектуальности. Используя этот показатель, можно
классифицировать нормальных детей по степени умственного развития [7].
С помощью теста на IQ в США, например,
проводится отбор в армию, оценивается степень подготовленности учащихся,
проводятся социолого-психологические обследования. Данная методика была
откалибрована для призыва призывников. Позже выяснилась ее переносимость на
менеджеров. Насчет переноса на другие специальности прямых доказательств нет. В
настоящее время тесты IQ стали распространенными без достаточного научного
основания.
.4 «Красно-черная таблица».
Назначение теста: оценка переключения и
распределения внимания.
Описание теста: исследование проводится с
помощью специальных бланков, на которых 25 красных и 24 черных числа.
Испытуемый должен вначале отыскать черные числа в порядке возрастания, затем
красные числа в убывающем порядке.
Третье задание заключается в попеременном поиске
черных чисел в возрастающем и красных чисел в убывающем порядке. Основной
показатель - время выполнения.
Первые два задания выполняются с использованием
одного бланка, третье задание - на другом бланке.
Рис. 4.1. Красно-черная таблица
.5 Тестирование на знание Гражданского кодекса
РФ, Федерального закона ФЗ-125, нормативных актов в сфере платной
образовательной деятельности и сфере повышения квалификации. Можно провести в
виде собеседования с кандидатом.
.6 Тест Равена - тест, предназначенный для
дифференцировки лиц по уровню их интеллектуального развития. Авторы теста Джон
Равен и Л. Пенроуз. Предложен в 1936 году.
Более высокие показатели по этому тесту
показывают те, кто а) быстрее, и б) точнее определяет логические закономерности
в построении упорядоченного ряда состоящего из графических объектов, имеющих
ограниченное количество признаков.
Другое название этого теста «Прогрессивные
матрицы Равена» указывает на то, что задачи теста упорядочены по признаку
возрастания трудности их решения. То есть, в каждой из пяти серий (в серии по
12 задач), каждая последующая задача серии относительно сложней предыдущей. На
решение задач теста вводится временное ограничение - подсчитывается количество
правильно решенных за 20 минут задач. Возможен вариант, когда время на решение
всех 60 задач не ограничено. В этом случае результат корректируется по
специальной таблице.
а) по десятибалльной шкале (стандартная оценка в
стенах), учитывающей только количество правильно решенных задач;
б) по 19-балльной, учитывающей количество и
трудность решенных задач;
в) по привычной пятибалльной (школьной, но с
«плюсами» и «минусами»).
И, наконец, четвертая, качественная, оценка.
Если испытуемый решил все задачи теста, но многие, в том числе и легкие, задачи
решил неверно, его можно отнести к категории «скоростников». Если же испытуемый
решил мало задач (например, около половины задач теста), но, без единой ошибки,
его можно отнести к категории «точняков», или тугодумов.
При интерпретации результата теста
«Прогрессивные матрицы Равена» выделяют следующие пять уровней развития
интеллекта:
-й уровень (результат более 95 %) - особо
высокий интеллект;
-й уровень (результат 75-94 %) - интеллект выше
среднего;
-й уровень (результат 25-74 %) - средний
интеллект;
-й уровень (результат 5-24 %) - интеллект ниже
среднего;
-й уровень (результат ниже 5 %) - дефект
интеллекта.
Рис. 4.2 Тест Равена
Составляющих в таблице должно быть не больше
2-х. Если больше двух, следовательно, может быть бесконечно много решений для
подстановки неизвестного варианта.
5.7 Тестирование разработано на основе
оптических иллюзий движения Акиеши Китаока.
Рис. 4.3 Интерфейс программы с иллюзией
.2 Вывод
Разработаны предложения по методике оценке
качества персонала. Проверили на действующем факультета повышения квалификации
преподавателей. На основе этого сделан вывод о том, что уровень компетенции
сотрудников превосходит необходимый.
Также, на основе представленных требований к
кандидатам на должность Инспектора факультета повышения квалификации
преподавателей и требований к интерфейсу модулей АСУ МИИТ был создан
пользовательский интерфейс, который соответствует компетенции сотрудников.
Рис. 4.4 Пользовательский интерфейс
5. Экономическая часть
.1 Постановка экономической задачи
В дипломной работе решается задача организации
повышения квалификации преподавателей в рамках АСУ МИИТ.
С точки зрения масштабируемости проект относится
к локальным инновационным проектам, реализация которых оказывает влияние на
экономическую и социальную ситуацию. С точки зрения функциональности - к
проектам прикладного характера (инновационный проект, автоматизирующий
отдельные функции и задачи в деятельности МИИТа).
Реализация проекта предполагает достижение
следующих результатов:
снижение трудоемкости и повышение качества
организации повышения квалификации преподавателей в рамках АСУ МИИТ;
повышение согласованности работы структурных
подразделений: факультета повышения квалификации преподавателей (ФПКП),
управления финансов и бухгалтерского учета (УФБУ) и других подразделений МИИТа,
которые участвуют организации повышения квалификации преподавателей;
повышение производительности труда,
профессионального мастерства и компетенций;
повышение качества обработки информации.
Областью формирования результатов проекта
является:
автоматизация организации повышения квалификации
преподавателей в рамках АСУ МИИТ;
совершенствование организационной структуры
организации повышения квалификации преподавателей в рамках АСУ МИИТ;
кадровый потенциал;
программно - информационное обеспечение.
Затраты, связанные с инвестированием в проект,
включают капитальные (капитальные вложения в создание и приобретение
программных и аппаратных комплексов, информационного обеспечения) и текущие
затраты (расходы на оплату труда разработчиков, на содержание и эксплуатацию комплексов).
Для обоснования целесообразности разработки
задачи организации повышения квалификации преподавателей в рамках АСУ МИИТ
следует рассчитать показатели, относящиеся к двум видам эффективности:
коммерческая;
социальная.
Показателями коммерческой эффективности
являются:
сокращение затрат на выполнение процессов
организации повышения квалификации преподавателей;
снижение затрат на создание, передачу и
обработку и хранение информации, используя базу АСУ МИИТа.
Показателями социальной эффективности являются:
удобство проведения организации повышения
квалификации преподавателей;
повышение уровня производительности труда
работников ФПКП, УФБУ и других подразделений/филиалов МИИТа.
.2. Расчет затрат, связанных с разработкой
проекта автоматизации
Эти затраты определяются как сумма затрат на
техническое обеспечение, программное обеспечение, информационное и
организационное.
.2.1 Расчет затрат на техническое обеспечение
Проект автоматизации реализуется на имеющемся
оборудовании, которое не закупается специально, а использует часть свободного
ресурса, следовательно, удельная стоимость технического обеспечения
рассчитывается по формуле:
Куд = Ц*t/T,
где: Ц - стоимость первоначальная, используемого
оборудования;- время, в течение года, когда проект автоматизации занимает
имеющееся оборудование;
Т - временной ресурс имеющегося оборудования.
Перечень работ, выполненных в ходе задачи
организации повышения квалификации преподавателей в рамках АСУ МИИТ, приведен в
таблице 5.1.
Таблица 5.1 Работы, выполненные при разработке
задачи организации повышения квалификации преподавателей
№
п/п
|
Этап
проектирования
|
Длительность
|
1
|
Получение
задания на проектирование
|
1
|
2
|
Изучение
задания
|
2
|
3
|
Сбор
и изучение научно-технической литературы
|
7
|
4
|
Анализ
существующей системы
|
10
|
5
|
Обоснование
целесообразности решения поставленной задачи
|
2
|
6
|
Формулировка
требований к поставленной задаче
|
1
|
7
|
Выбор
средств разработки
|
2
|
8
|
Моделирование
предметной области
|
7
|
9
|
Разработка
модели данных
|
6
|
10
|
Разработка
структуры ПО
|
4
|
11
|
Разработка
ПО
|
32
|
12
|
Тестирование
ПО
|
2
|
13
|
Корректировка
ПО
|
4
|
14
|
Системотехнические
и экономические расчеты
|
4
|
15
|
Составление
пояснительной записки
|
4
|
|
Итого:
|
88
|
Для оценки стоимости ПО или затрат на разработку
в денежном выражении возможно составить таблицу следующего вида:
Таблица 5.2
Этап
проект-ирования
|
Трудоемкость
в ч/часах
|
ЗП
+ ЕСН (228,4 руб./час)
|
Эл.энерго
и амортизация в час (3,9 + 27,98)
|
Накладные
расходы (8,5 руб./ч)
|
∑затраты
(руб.)
|
1
|
8
|
1827,2
|
255,04
|
68
|
2150,24
|
2
|
16
|
3654,4
|
510,08
|
136
|
4300,48
|
3
|
56
|
12790,4
|
1785,28
|
476
|
15051,68
|
4
|
80
|
18272
|
2550,4
|
680
|
21502,4
|
5
|
16
|
3654,4
|
510,08
|
136
|
4300,48
|
6
|
8
|
1827,2
|
255,04
|
68
|
2150,24
|
7
|
16
|
3654,4
|
510,08
|
136
|
4300,48
|
8
|
56
|
12790,4
|
1785,28
|
476
|
15051,68
|
9
|
48
|
10963,2
|
1530,24
|
408
|
12901,44
|
10
|
32
|
7308,8
|
1020,16
|
272
|
8600,96
|
11
|
256
|
58470,4
|
8161,28
|
2176
|
68807,68
|
12
|
16
|
3654,4
|
510,08
|
136
|
4300,48
|
13
|
32
|
7308,8
|
1020,16
|
272
|
8600,96
|
14
|
32
|
7308,8
|
1020,16
|
272
|
8600,96
|
15
|
32
|
7308,8
|
1020,16
|
272
|
8600,96
|
Итого:
|
|
|
|
|
189221,12
|
Стоимость часа оплаты труда разработчика с
единым социальным налогом (0,34 от зарплаты) рассчитывается по формуле:
,
где: Оклад (оклад i-го разработчика) = 30000
руб.;
ЕСН (ставка единого социального налога) = 0,34
от зарплаты;
Стоимость часа оплаты труда разработчика:
30000*1*(1+0,34)/176
= 228,4 руб./час
Затраты на электроэнергию, потребляемой в час,
рассчитываются по формуле:
,
где: Mj - потребляемая мощность j-го
оборудования, используемого в работе;рс - количество единиц оборудования,
используемого в работе;
Сэч - стоимость 1 кВт/час.
Стоимость 1 кВт/час для различного оборудования
приведена в таблице 5.3.
Таблица 5.3
Оборудование
|
Mj
()
|
Kрс
|
Сэч
()
|
Компьютер
|
0,6
|
1
|
1,5
|
Сервер
|
1
|
2
|
1,5
|
Зэ = (0,6*1*1,5) + (1*2*1,5) = 3,9 руб./ч
Часовая амортизация зависит от цены компьютера и
режима его работы.
Стоимость оборудования, необходимого для задачи
организации повышения квалификации преподавателей в рамках АСУ МИИТ,
представлена в таблице 5.4.
Таблица 5.4 Стоимость оборудования для
разработки задачи организации повышения квалификации преподавателей в рамках
АСУ МИИТ
Наименование
оборудования
|
Количество
единиц оборудования
|
Цена,
руб.
|
Σ
Цена,
руб.
|
Системный
блок
|
1
|
20000
|
20000
|
Монитор
|
1
|
10000
|
10000
|
Клавиатура
|
1
|
2300
|
1500
|
Мышь
|
1
|
1700
|
700
|
Принтер
|
1
|
7000
|
7000
|
Сервер
базы данных
|
1
|
350000
|
350000
|
Сервер
приложений
|
1
|
148000
|
148000
|
Итого:
|
|
|
537200
|
Для режима работы ПК, соответствующего наличию
выходных и праздничных дней, и 8-ми часовому рабочему дню, можно считать
часовую амортизацию по формуле:
,
где: Ц - цена ЭВМ;
,11- норма амортизации в год;
- норма работы часов в месяц.
За = (537200*0,11)/(12*176) = 27,98 руб./ч
К накладным расходам в процессе проектирования
относятся расходы на бумагу, расходные материалы в принтере, отопление и
освещение помещения, где находятся компьютер, используемый для проектирования.
Расчет накладных расходов:
Кн - накладные расходы за период создания
проекта
Знр - накладные расходы в час
Кн = 6000 руб.
Тпроект = 88*8 = 704 ч
Знр = Кн / Тпроект
Знр = 6000 / 704 = 8,5 руб./ч
.2.2 Затраты на создание программных комплексов
Расчет удельной стоимости лицензионного
программного обеспечения, используемого для разработки задачи организации
повышения квалификации преподавателей.
Если лицензионное ПО используется в нескольких
проектах, то затраты, относимые на данный проект принимаются в зависимости от
использования ресурса как удельные затраты на лицензионное программное
обеспечение (Куд), используемое в проекте.
Куд = Ц*t/(T*т) (руб.),
где: Ц - лицензионная стоимость, используемых
программных средств;- период проектирования ИнП;- временной ресурс
лицензионного ПО;
т - потенциальное количество проектов,
использующих данный продукт.
Если в лицензии не указан срок ее действия, для
целей бухгалтерского учета он принимается на уровне 20 лет, для целей
налогообложения - 10 лет (но в обоих случаях не более срока деятельности
организации).
Таблица 5.5 Стоимость программного обеспечения
Наименование
элемента ПО
|
Кол-во
|
Назначение
|
Цена,
(руб.)
|
Oracle
DB
|
1
|
Система
управления базой данных
|
25873825
|
Delphi
|
1
|
Среда
разработки приложения
|
72
708
|
PL/SQL
Developer
|
1
|
Среда
написания SQL-запросов
|
1050
|
Итого:
|
|
|
25947583
|
Куд (Oracle DB) = (25873825*88)/(10*365*30) =
20793,58 руб.
Куд (Delphi) = (72708*88)/(10*365*30) = 58,43
руб.
Куд (PL/SQL
Developer) = (1050*88)/(10*365*30) = 0,84 руб.
Куд = Куд
(Oracle DB) + Куд (Delphi) + Куд
(PL/SQL Developer) =
= 20793,58 + 58,43 + 0,84 = 20852,85 руб.
Рассчитаем затраты на разработку и приобретение
программных комплексов:
Зпр =( ЗПч+ Зэ+ За+ З пп +Знр)* Тпроект =
189221,12 руб.
Кр = Зпр + Куд = 189221,12 + 20852,85 =
210073,97 руб.
.2.3 Затраты на приобретение аппаратных
комплексов
Капитальные вложения, связанные с приобретением
аппаратных комплексов, определяются по формуле:
,
где: Kтсу - затраты на приобретение
вычислительной техники, периферийных устройств, вспомогательного оборудования,
организационной техники (определяются по прейскурантным ценам), руб.
Стоимость вычислительной техники и периферийных
устройств, необходимых для разработки задачи организации повышения квалификации
преподавателей, была представлена в таблице 5.6.
Т.к. для разработки задачи оборудование не
закупается специально, а используется имеющийся аппаратный комплекс, то
определяется удельная стоимость имеющегося технического оснащения:
тсу = Kто* t/(T*т) (руб.),
где: Kто - стоимость имеющегося аппаратного
комплекса, руб.;- время (в течение года) использования имеющегося комплекса;
Т - временной ресурс имеющегося комплекса.
т - потенциальное количество проектов,
использующих данное оборудование.
Для эксплуатации проекта необходимо следующее
оборудование: 5 компьютеров и 1 принтер для факультета повышения квалификации
преподавателей (ФПКП), 37 компьютеров и 19 принтеров для остальных филиалов
МИИТа, осуществляющих повышение квалификации преподавателей.
Таблица 5.6 Стоимость оборудования для
эксплуатации проекта
Наименование
оборудования
|
Количество
единиц оборудования
|
Цена,
руб.
|
Σ
Цена,
руб.
|
Системный
блок
|
42
|
15000
|
630000
|
Монитор
|
42
|
8000
|
336000
|
Клавиатура
|
42
|
700
|
29400
|
Мышь
|
42
|
300
|
12600
|
Принтер
|
20
|
3000
|
Сервер
базы данных
|
1
|
350000
|
350000
|
Сервер
приложений
|
1
|
148000
|
148000
|
Итого:
|
|
|
1566000
|
Предполагается, что временной ресурс имеющегося
оборудования:
серверов - 5 лет;
компьютера - 3 года;
принтера - 3 года;
Примем во внимание, что на каждом компьютере
работает в среднем 4 приложения, следовательно т = 4.
Получаем:
Кто уд (Сервер БД,сервер приложений)=
(498000*22*12)/(5*22*12*30)=
= 3320 руб.
Кто уд (Компьютер,принтер)=
=((630000+336000+29400+12600+60000)*22*12) /(3*22*12*4)=
= 89000 руб.
Кто уд = Кто уд (Сервер БД,сервер приложений) +
+ Кто уд (Компьютер, принтер)= 3320 + 89000 =
92320 руб.
Стоимость оргтехники равна затратам на 40
картриджей для принтера (700 руб.).
Следовательно, удельные капитальные вложения на
приобретение аппаратного комплекса будут равны:ак = Kтсу = Кто уд + Корг =
92320 + (40 * 700) = 120320 руб.
.2.4 Затраты на создание информационного и
организационного обеспечения
Капитальные вложения в создание информационного
и организационного обеспечения могут быть определены по формуле:
КО = КИО + КОО,
где: KИО - затраты на создание информационного
обеспечения, руб.;ОО - затраты на создание организационного обеспечения, руб.
Затраты на информационное обеспечение
рассчитываются аналогично затратам на ПО по фактически выполненному перечню
работ. Работы, выполненные по информационному обеспечению, представлены в
таблице 5.7.
Таблица 5.7 Работы, выполненные по
информационному обеспечению
№
п/п
|
Этап
проектирования
|
Длительность
|
1
|
Получение
задания на проектирование
|
1
|
2
|
Изучение
задания
|
2
|
3
|
Сбор
и изучение научно-технической литературы
|
7
|
4
|
Анализ
существующей системы
|
10
|
5
|
Обоснование
целесообразности решения поставленной задачи
|
2
|
|
Итого:
|
22
|
Оценка затрат на информационное обеспечение в
денежном выражении по каждому этапу проектирования представлена в таблице 5.8.
Таблица 5.8 Затраты на информационное
обеспечение
Этап
проект-ирования
|
Трудоемкость
в ч/часах
|
ЗП
+ ЕСН (228,4 руб./час)
|
Эл.энерго
и амортизация в час (3,9 + 27,98)
|
Накладные
расходы (8,5 руб./ч)
|
∑
Затраты (руб.)
|
1
|
8
|
1827,2
|
255,04
|
68
|
2150,24
|
2
|
16
|
3654,4
|
510,08
|
136
|
4300,48
|
3
|
56
|
12790,4
|
1785,28
|
476
|
15051,68
|
4
|
80
|
18272
|
2550,4
|
680
|
21502,4
|
5
|
16
|
3654,4
|
510,08
|
68
|
4300,48
|
Итого:
|
|
|
|
|
47305,28
|
|
|
|
|
|
|
|
ИО = 47305,28 руб.
Затраты на организационное обеспечение включают
расходы на написание инструкции пользователю и обучение сотрудников работе с
проектом.
Работы, выполненные по организационному
обеспечению, представлены в таблице 5.9.
Таблица 5.9 Работы, выполненные по
организационному обеспечению
Этап
проектирования
|
Работы
|
Кол-во
дней
|
15
|
Составление
пояснительной записки
|
4
|
Итого:
|
|
4
|
Оценка затрат на составление пояснительной
записки в денежном выражении представлена в таблице 5.10.
Таблица 5.10 Затраты на составление инструкции
Этап
проект-ирования
|
Трудоемкость
в ч/часах
|
ЗП
+ ЕСН (228,4 руб./час)
|
Эл.энерго
и амортизация в час (3,9 + 27,98)
|
Накладные
расходы (8,5 руб./ч)
|
∑затраты
(руб.)
|
15
|
32
|
7308,8
|
1020,16
|
272
|
8600,96
|
Итого:
|
|
|
|
|
8600,96
|
си = 8600,96 руб.
Затраты на обучение могут быть рассчитаны с
учетом двух моделей обучения:
обучение силами разработчиков;
обучение в лицензированных учебных центрах.
Рассчитаем затраты на обучение силами
разработчиков:
Заработная плата на период обучения:
,
где: -
оклад разработчика ИП;
- оклад
обучаемого;
- количество
участников соответствующей категории;- количество рабочих дней в месяце;-
количество дней обучения.
Ор = 30000 руб.
Ооб = 10000 руб.
Мк = 42= 22= 5
ЗПоб = (30000 +10000 * 42 )*5/22 = 102272,72
руб.
Заработная плата с ЕСН:
,
где: ЗПоб - оклад разработчика ИП;
Кс - коэффициент с учетом ЕСН.
ЗПесн = 102272,72 * 0,34 = 34772,72 руб.
Амортизация оборудования:
,
где: -
стоимость оборудования;
На - норма амортизации в год; - количество дней
обучения.
Цоб = 537200 руб.
На = 0,11= 5
Аоб = (537200*0.11/365)*5 = 809,5 руб.
Амортизация программного обеспечения:
где: Цпо - стоимость ПО;
На - норма амортизации в год; - количество дней
обучения.
Апо = (25947583*0.11/365)*5 = 39099 руб.
Расходы на электроэнергию:
,
где: -
мощность потребляемая оборудованием;
- количество дней
обучения;
- стоимость 1
квт*ч.лампочек = 0,02 кВт/ч * 8шткомпьютера = 0,6 кВт /чсерверов = 1 кВт
/ч*2шт= 5
Цквт*ч = 1,5 руб/кВтэл.эн. = (0,02 * 8 +0,6 +
1*2)*5*8*1,5 = 252 руб.
Материалы на организацию и сопровождение
процесса обучения:
где: Рм - расход материала;
Цм - цена материала.
Для проведения обучения необходимо закупить 1
пачку бумаги ценой 70 руб. и 3 упаковки ручек ценой 100 руб.бум = 1
Цбум = 70 руб.руч = 3
Цруч = 100 руб.
Моб = (1*70) + (3*100) = 370 руб.
Эксплуатация помещений:
где: -
расходы по содержанию помещения;- количество дней обучения;
- нормативная
площадь для оборудования и обучения.
Поскольку обучение проводится в пределах
университета в свободных аудиториях, то затраты на эксплуатацию помещений можно
принять равными нулю.
=0
Следовательно, основные прямые затраты:
=
=102272,72+34772,72+809,5+39099+
252+370 = 177575,94 руб.
Прочие прямые затраты составляют 30% прямых
затрат:
= *
0,3
= 177575,94 * 0,3
= 53272,78 руб.
Итого прямых затрат на обучение:
Зпр_об=+
Зпр_об =177575,94 +53272,78 =230848,72 руб.
Рассчитаем накладные расходы по формуле:
где: -
норма накладных расходов;
- прямая
заработная плата
=85%
=102272,72
Всего:
Теперь можно рассчитать КО:
КО= КИО + КОО = КИО + Кси+Коб
КО = 47305,28 + 8600,96 + 317780,53 = 373686,77
руб.
.2.5 Суммарные капитальные затраты на разработку
и внедрение проекта
Капитальные затраты на разработку и внедрение
проекта будут равны:
К = Кр + Как+ КО = 210073,97 + 120320 +
373686,77 = 704080,74 руб.
.2.6 Текущие затраты на эксплуатацию внедряемых
систем
Годовые текущие затраты определяются как:
З = З1 + З2 + З3 + З4 + З5 + З6 + З7 + З8 + З9
где З1 - основная и дополнительная заработная
плата;
З2 - ЕСН;
З3 - расходы на командировки;
З4 - расходы на содержание легкового транспорта
(ремонт и амортизация);
З5 - канцелярские и типографские расходы;
З6 - почтово-телеграфные и телефонные расходы;
З7 - расходы на содержание и эксплуатацию
зданий, помещений и инвентаря (ремонт, амортизация, стоимость электроэнергии);
З8 - расходы на содержание и эксплуатацию
аппаратного и программного комплекса и оргтехники (ремонт, амортизация,
стоимость вспомогательных материалов и электроэнергии);
З9 - прочие расходы, не вошедшие в перечисленные
статьи расходов (стоимость услуг сторонних организаций, затраты на мобильную
связь, и другие расходы).
Годовая заработная плата сотрудника факультета
повышения квалификации преподаваталей (ФПКП) равна:
Количество сотрудников, использующих проект
равно 42.
Сумма годовых отчислений на ЕСН составит:
Расходы на командировки, содержание легкового
транспорта, почтово-телеграфные и телефонные расходы считаем равными нулю.
З3 = 0
З4 = 0
З6 = 0
Канцелярские и типографские расходы:
В среднем в месяц на канцелярские и типографские
расходы тратится 1000 руб.
Будем считать, что на человека приходится 4 м2.
Расходы на содержание и эксплуатацию зданий,
помещений и инвентаря будем рассчитывать как коммунальные платежи для помещения
площадью (4 * 42) = 168 м2.
Оплата 1 м2 составляет 33 руб.
Годовые расходы на содержание и эксплуатацию
аппаратного и программного комплекса будут включать годовые затраты на
амортизацию программного комплекса (Запр), годовые затраты на амортизацию
аппаратного комплекса (Заап) и годовую стоимость электроэнергии (Зэ):
Годовые затраты на амортизацию программного
комплекса будут складываться из удельной стоимости лицензионного ПО и затрат на
создание программного комплекса. Норма амортизации принимается равной 20%:
Запр = Кр * 0,2 = 210073,97 * 0,2 = 42014,79
руб.
Годовые затраты на амортизацию аппаратного
комплекса будут равны:
Заап = Кто уд * 0,11 = 92320 * 0,11 = 10155,2
руб.
Годовая стоимость потребляемой электроэнергии
составит:
Следовательно, годовые расходы на содержание и
эксплуатацию аппаратного и программного комплекса будут равны:
З8 = 42014,79 + 10155,2 + 8236,8 = 60406,79 руб.
Прочие расходы будем считать равными нулю.
З9 = 0
В итоге получаем, что годовые текущие затраты,
связанные с проектом, равны:
З = З1 + З2 + З5 + З7 +З8 = 12600000 + 102000 +
12000 + 66528 + +60406,79 = 12840934,79 руб.
5.3 Расчет экономической эффективности
Подсчитаем годовые затраты на организацию
процесса повышения квалификации преподавателей до внедрения проекта. Затраты на
приобретение аппаратного и лицензионного программного обеспечения (кроме PL/SQL
Developer и Delphi, так как - это средства разработки) останутся прежними,
потому что до внедрения проекта использовались те же программные и аппаратные
средства (использовались другие приложения, для поддержания которых необходимы
были те же программные и аппаратные средства).
При внедрении разрабатываемого приложения можно
добиться снижения затрат на организацию планирования и проведения мероприятий
по повышению квалификации преподавателей.
Стоимостная оценка потерь времени сотрудника
МИИТа (сотрудника ФПКП, УФБУ, управления кадров и ряда других подразделений или
филиалов МИИТа, которые участвуют поддержке процесса повышения квалификации
преподавателей) на выполнение работы по организации повышения квалификации
преподавателей, включающей доставку и передачу документов из подразделения в
подразделение, можно произвести по формуле:
, где
Зм - месячная заработная плата приведенного выше
сотрудника МИИТа на работу в локальной системе;
Т - число рабочих часов в месяц;
ЕСН - ставка единого социального налога.
Зм=25000 руб.
ЕСН = 0,34
Получаем:
Сч = 25000*(1+0,34)/60 =190,34 руб./час
Учитывая, что в МИИТе с разрабатываемым
приложением должно работать около 42 сотрудников, экономию от сокращения затрат
на работу в локальной системе:
РР = Сч * ∆t * n * N,
где: Сч - стоимостная оценка потерь времени сотрудника
МИИТа;
∆t - среднее значение разницы во времени
(в существующей и создаваемой системах), затрачиваемом на выполнение работы по
организации повышения квалификации преподавателей (4 час);- количество
сотрудников, работающих с приложением;- среднее число документов (планов,
отчетов) на каждого сотрудника МИИТа в год (50).
Получаем:
РР = 190,34 * 4 * 42 * 50 = 1598856 руб./год
Здо_внедрения = З1 + З2 + З3 + З4 + З5 + З6 + З7
+ З8 + З9 + РР
Все значения З останутся прежними, кроме З8
Не учитываем PL/SQL Developer и Delphi:
Запр = (Зпр + Куд(Oracle)*0,2) =(189221,12 +
20793,58) * 0,2 = 42002,94
З8 = 42002,94 + 10155,2 + 8236,8 = 60394,94 руб.
Здо_внедрения = 12600000 + 102000 + 12000 +
66528 +60394,94 + 1598856 = = 14439778,94 руб.
Зпосле_внедрения = 12840934,79 руб.
Экономическая эффективность равна:
Э = 14439778,94 - 12840934,79 = 1598844,15
руб./год
Капитальные затраты на разработку и внедрение
проекта будут равны:
К = 704080,74 руб.
Так как Э > K, то можно сделать вывод о
целесообразности разработки и применения приложения, автоматизирующего
технологию организации повышения квалификации преподавателей в рамках АСУ МИИТ.
Заключение
При разработке дипломного проекта было
разработано приложение, автоматизирующее технологию организации повышения
квалификации преподавателей в рамках АСУ МИИТ.
Созданное приложение отвечает всем основным
поставленным требованиям:
интеграция с корпоративной системой университета
(АСУ МИИТ);
реализация всего требуемого функционала;
заполнение и корректировка содержимого
документов, используя данные БД АСУ МИИТ;
просмотр и отправка на печать сформированных
документов;
время выполнения запросов не превышает требуемое
при определенных условиях;
организация разграничения доступа на уровне СУБД
(объектные привилегии) и на уровне приложения (программные роли).
Список литературы
http://mvf.klerk.ru/zakon/125fz.htm
(полный текст ФЗ 125)
М.Р.
Когаловский. Энциклопедия технологий баз данных. М.
Финансы
и
статистика,
2002Engineering, Jakob Nielsen San Francisco, 1993
Проектирование
информационных систем на железнодорожном транспорте. Э.К. Лецкий, З.А. Крепкая.
И.В. МарковаРуководство пользователя. Грейди Буч, Джеймс Рамбо Айвар Джекобсон
Программирование
в Delphi 6, Архангельский А.А.
Психологическая
диагностика, Учебное пособие / Под П 86 ред. К.М. Гуревича и Е.М. Борисовой. -
М.: Изд-во УРАО, 1997 г.
Человеко-машинное
взаимодействие, Методические указания к дипломному проектированию, Дружинин
Ю.Г.://ru.wikipedia.org
Качество
информации, Дружинин Г.В., Сергеева И.В. - М.: Радио и связь, 1990 г.
Приложение А
Описание ER-модели
Entity
|
|
Entity
|
Name
|
Definition
|
Бумаги
|
Сведения
о документах
|
Группы
повышения квалификации
|
Группы
повышения квалификации
|
Договора
|
Сведения
о договорах
|
Документы
|
Содержит
документы, удостоверяющие личность сотрудников (паспорт, военный билет).
|
Кто
есть кто
|
Сведения
о пользователях системы
|
Куратор
группы
|
Куратор
группы
|
Методический
комплекс
|
Методический
комплекс
|
Параграфы
|
Сведения
о параграфах
|
План
повышения квалификации
|
План
повышения квалификации
|
Подразделения
|
Сведения
о подразделениях
|
Сертификат
|
Содержит
информацию о документах, подтверждающих полученное образование (вуз, ФПК,
аспирантура, докторантура и т.д.).
|
Сотрудники
|
Содержит
список сотрудников
|
Специальности
комплекса
|
Специальности
комплекса
|
Студенты
|
Сведения
о студентах
|
Учебная
группа
|
Список
учебных групп
|
Учебная
нагрузка умк
|
Учебная
нагрузка в рамках умк
|
|
|
|
Attribute(s) of "Бумаги"
Entity
|
Name
|
Definition
|
ID
бумаги
|
Внутрисистемный
номер бумаги
|
ID
вида бумаги
|
Внутрисистемный
номер вида бумаги
|
номер
бумаги
|
Номер
бумаги
|
ID
периода нумерации
|
Внутрисистемный
номер периода нумерации бумаги
|
ID
серии бумаг
|
Внутрисистемный
номер серии бумаги
|
дата
|
Дата
|
временный
номер
|
Временный
номер бумаги
|
основание
|
Основание
|
аннотация
|
Аннотация
|
примечание
|
Примечание
|
готов?
|
Признак
готовности документа
|
пошел?
|
Признак
того, что документ ушел на подпись
|
Дата
создания бумаги
|
дата
изменения
|
Дата
внесения изменений в документ
|
ID
пользователя системы
|
ID
Пользователя системы, создавшего этот документ
|
Attribute(s)
of "Группы повышения квалификации" Entity
|
Name
|
Definition
|
ID
группы пк
|
Внутрисистемный
номер группы повышения квалификации
|
ID
плана пк
|
Внутрисистемный
номер плана повышения квалификации
|
ID
учебной группы
|
Внутрисистемный
номер учебного группы
|
ID
методического комплекса
|
Внутрисистемный
номер методического комплекса
|
дата
начала
|
Планируемая
дата начала обучения
|
дата
окончания
|
Планируемая
дата окончания обучения
|
Attribute(s) of "Договора"
Entity
|
Name
|
Definition
|
ID
договора
|
Внутрисистемный
номер договора
|
ID
кто
|
Внутрисистемный
номер организации, которая заключает договор
|
ID
с кем
|
Внутрисистемный
номер организации, с которой заключается договор
|
дата
начала
|
Дата
начала действия договора
|
дата
оконч план
|
Планируемая
дата окончания договора
|
дата
окончания
|
Дата
окончания договора
|
ID
параграфа
|
Внутрисистемный
номер параграфа
|
предмет
|
Предмет
договора
|
ID
источника фин
|
Внутрисистемный
номер источника финансирования
|
ID
счета
|
Внутрисистемный
номер счета
|
в
рамках
|
Внутрисистемный
номер договора
|
Attribute(s) of "Документы"
Entity
|
Name
|
Definition
|
ID
документа
|
Внутрисистемный
номер документа
|
ID
вида документа
|
Внутрисистемный
номер вида документа
|
когда
выдан
|
Когда
выдан
|
серия
|
Серия
|
номер
|
Номер
|
кто
выдал
|
Кто
выдал
|
ID
сотрудника
|
Внутрисистемный
номер сотрудника
|
дата
окончания
|
Окончание
действия
|
Attribute(s) of "Кто есть кто"
Entity
|
Name
|
Definition
|
ID
пользователя системы
|
Внутрисистемный
номер пользователя системы
|
ID
сотрудника
|
Внутрисистемный
номер сотрудника
|
ID
пользователя
|
Внутрисистемный
номер пользователя
|
дата
начала
|
Дата
начала действия
|
дата
окончания
|
Дата
окончания действия
|
логин
|
Логин
пользователя
|
примечание
|
Описание
пользователя
|
логин
в ОС
|
Имя
пользователя в операционной системе
|
ID
сервера приложений
|
Внутрисистемный
номер сервера приложений
|
ID
подразделения
|
Внутрисистемный
номер подразделения, (укрупненно) к которому относится пользователь
|
Attribute(s) of "Куратор группы"
Entity
|
Name
|
Definition
|
ID
учебной группы
|
Внутрисистемный
номер учебного группы
|
ID
сотрудника
|
Внутрисистемный
номер сотрудника
|
дата
начала
|
Дата
начала действия
|
дата
окончания
|
Дата
окончания действия
|
Attribute(s) of "Методический комплекс"
Entity
|
Name
|
Definition
|
ID
методического комплекса
|
Внутрисистемный
номер методического комплекса
|
ID
подразделения
|
Внутрисистемный
номер кафедры
|
ID
дисциплины
|
Внутрисистемный
номер дисциплины
|
Attribute(s) of "Параграфы"
Entity
|
Name
|
Definition
|
ID
параграфа
|
Внутрисистемный
номер параграфа
|
ID
вида бумаги
|
Внутрисистемный
вида бумаги
|
ID
бумаги
|
Внутрисистемный
номер бумаги
|
порядок
|
Порядок
|
отмена
|
Отмена
документа
|
Attribute(s)
of "План повышения квалификации" Entity
|
Name
|
Definition
|
ID
плана пк
|
Внутрисистемный
номер плана повышения квалификации
|
ID
параграфа
|
Внутрисистемный
номер параграфа
|
ID
обучаемой спец
|
Внутрисистемный
номер обучаемой специальности
|
дата
начала
|
Дата
начала действия
|
дата
окончания
|
Дата
окончания действия
|
Attribute(s) of "Подразделения"
Entity
|
Name
|
Definition
|
ID
подразделения
|
Внутрисистемный
номер подразделения
|
ID
метатермина
|
Внутрисистемный
номер метатермина
|
ID
контрагента
|
Внутрисистемный
номер контрагента
|
Attribute(s) of "Сертификат"
Entity
|
Name
|
Definition
|
ID
сертификата
|
Внутрисистемный
номер сертификата
|
ID
вида уровня образования
|
Внутрисистемный
номер вида образования
|
дата
начала
|
Дата
начала обучения
|
дата
окончания
|
Дата
окончания обучения
|
примечание
|
Примечание
|
ID
специальности
|
Внутрисистемный
номер специальности
|
ID
квалификации
|
Внутрисистемный
номер квалификации
|
признак
отличия
|
Признак
отличия: 1 - золотой медалист, 2 - серебрянный и др.
|
ID
документа
|
Внутрисистемный
номер документа
|
оценок
5
|
число
оценок 5
|
оценок
4
|
число
оценок 4
|
оценок
3
|
число
оценок 3
|
ID
вида уч заведения
|
Внутрисистемный
номер вида учебного заведения
|
прослушано
часов
|
Количество
прослушанных часов
|
Attribute(s) of "Сотрудники"
Entity
|
|
Name
|
Definition
|
ID
сотрудника
|
Внутрисистемный
номер сотрудника
|
ID
контрагента
|
Внутрисистемный
номер контрагента сотрудника
|
фамилия
|
Фамилия
сотрудника
|
ID
склонения ф
|
Внутрисистемный
номер склонения фамилии
|
имя
|
Имя
сотрудника
|
ID
склонения и
|
Внутрисистемный
номер склонения имени
|
отчество
|
Отчество
сотрудника
|
ID
склонения от
|
Внутрисистемный
номер склонения отчества
|
пол
|
Пол
|
дата
рожнения
|
Дата
рождения
|
дата
окончания
|
Дата
окончания действия
|
ИНН
|
Номер
ИНН
|
номер
пенс страх
|
Номер
пенсионного свидетельства
|
ID
национальности
|
Внутрисистемный
номер национальности
|
ID
метатермина
|
Внутрисистемный
номер метатермина
|
|
|
|
Attribute(s)
of "Специальности комплекса" Entity
|
Name
|
Definition
|
ID
методического комплекса
|
Внутрисистемный
номер методического комплекса
|
ID
обучаемой спец
|
Внутрисистемный
номер обучаемой специальности
|
ID
параграфа программы
|
Внутрисистемный
номер параметра программы
|
ID
вида дисциплины
|
Внутрисистемный
номер вида дисциплины
|
ID
типа дисциплины
|
Внутрисистемный
номер типа дисциплины
|
ID
параграфа кафедры
|
Внутрисистемный
номер протокола заседания кафедры
|
ID
параграфа умо
|
Внутрисистемный
номер параграфа протокола заседания учебно-методического совета
|
Attribute(s) of "Студенты"
Entity
|
Name
|
Definition
|
ID
студента
|
Внутрисистемный
номер студента
|
ID
сотрудника
|
Внутрисистемный
номер сотрудника
|
ID
учебной группы
|
Внутрисистемный
номер учебного группы
|
ID
вида зачисления
|
Внутрисистемный
номер вида зачисления
|
ID
приказа о зач
|
Внутрисистемный
номер приказа о зачислении
|
дата
начала
|
Дата
начала действия
|
окончание
плановое
|
Планируемая
дата окончания
|
ID
договора
|
Внутрисистемный
номер договора
|
ID
документа
|
Внутрисистемный
номер бумаги
|
ID
вида программы
|
Внутрисистемный
номер вида программы, по которой обучается студент (ускоренная, сокращенная и
др.)
|
условный
срок
|
Дата
условного перевода. заполняется в случае если человек при переводе имеет
задолжности и должен их ликвидировать к этой дате
|
ID
учебного плана
|
Внутрисистемный
номер учебного плана
|
Attribute(s) of "Учебная группа"
Entity
|
Name
|
Definition
|
ID
учебной группы
|
Внутрисистемный
номер учебного группы
|
ID
обучаемой спец
|
Внутрисистемный
номер обучаемой специальности
|
наименование
|
Наименование
учебного группы
|
уровень
группы
|
0
- группы не учитываемые в учебном отделе 1 - курс 2 - поток 3 - группа
|
дата
начала
|
Дата
начала действия
|
дата
окончания
|
Дата
окончания действия
|
входит
|
Входит
|
максимальный
размер
|
Рекомендуемое
число участников в группе
|
ID
вида группы
|
Внутрисистемный
номер вида группы
|
курс
|
Курс
обучения
|
аббревиатура
|
Аббревиатура,
если не указана, то берется аббревиатура специальности
|
Attribute(s) of "Учебная нагрузка умк"
Entity
|
Name
|
Definition
|
ID
учебной нагрузки умк
|
Внутрисистемный
номер учебной нагрузки УМК
|
ID
методического комплекса
|
Внутрисистемный
номер методического комплекса
|
ID
вида обучения
|
Внутрисистемный
номер вида обучения
|
ID
вида нагрузки
|
Внутрисистемный
номер вида нагрузки
|
семестр
|
Семестр
(1..12)
|
часы
|
Количество
часов
|
Table
|
Table
|
Name
|
Certificate
|
Complex_specialities
|
Contracts
|
Curator_group
|
Division
|
Documents
|
Educational_group
|
Educational_load_umk
|
Employees
|
Methodical_complex
|
Orders
|
Paragraphs
|
Refresher_course_group
|
Refresher_course_plan
|
Students
|
Who_Is_Who
|
Column(s) of
"Certificate" Table
|
Name
|
Datatype
|
Is
PK
|
Is
FK
|
ID_certificate
|
NUMBER(10)
|
Yes
|
No
|
IDk_level_formation
|
NUMBER(10)
|
No
|
No
|
d_start
|
DATE
|
No
|
No
|
d_end
|
DATE
|
No
|
No
|
note
|
VARCHAR2(500)
|
No
|
No
|
ID_speciality
|
NUMBER(10)
|
No
|
No
|
ID_qualification
|
NUMBER(10)
|
No
|
No
|
attribute_difference
|
INTEGER
|
No
|
No
|
ID_doc
|
NUMBER(10)
|
No
|
Yes
|
INTEGER
|
No
|
No
|
estimations_4
|
INTEGER
|
No
|
No
|
estimations_3
|
INTEGER
|
No
|
No
|
IDk_ed_institution
|
NUMBER(10)
|
No
|
No
|
heard_hours
|
FLOAT
|
No
|
No
|
Column(s) of
"Complex_specialities" Table
|
Name
|
Datatype
|
Is
PK
|
Is
FK
|
ID_p_dp
|
NUMBER(10)
|
No
|
Yes
|
IDt_discipline
|
NUMBER(10)
|
No
|
No
|
IDk_discipline
|
NUMBER(10)
|
No
|
No
|
ID_d_specialitie
|
NUMBER(10)
|
No
|
No
|
ID_methodical_complex
|
INTEGER
|
No
|
Yes
|
ID_p_k
|
NUMBER(10)
|
No
|
Yes
|
ID_p_umo
|
NUMBER(10)
|
No
|
Yes
|
Column(s) of "Contracts"
Table
|
Name
|
Datatype
|
Is
PK
|
Is
FK
|
ID_contract
|
NUMBER(10)
|
Yes
|
No
|
ID_who
|
NUMBER(10)
|
No
|
No
|
ID_with_whom
|
NUMBER(10)
|
No
|
No
|
d_start
|
DATE
|
No
|
No
|
dp_end
|
DATE
|
No
|
No
|
d_end
|
DATE
|
No
|
No
|
ID_paragraph
|
NUMBER(10)
|
No
|
Yes
|
subject
|
VARCHAR2(500)
|
No
|
No
|
ID_source
|
NUMBER(10)
|
No
|
No
|
ID_account
|
NUMBER(10)
|
No
|
No
|
ID_contract_main
|
NUMBER(10)
|
No
|
Yes
|
Column(s) of
"Curator_group" Table
|
Name
|
Datatype
|
Is
PK
|
Is
FK
|
ID_ed_group
|
NUMBER(10)
|
Yes
|
Yes
|
ID_e
|
NUMBER(10)
|
Yes
|
Yes
|
d_start
|
DATE
|
Yes
|
No
|
d_end
|
DATE
|
No
|
No
|
Column(s) of "Division"
Table
|
Name
|
Datatype
|
Is
PK
|
Is
FK
|
ID_d
|
NUMBER(10)
|
Yes
|
No
|
ID_metaterm
|
NUMBER(10)
|
No
|
No
|
ID_contractor
|
NUMBER(10)
|
No
|
No
|
Column(s) of "Documents"
Table
|
Name
|
Datatype
|
Is
PK
|
Is
FK
|
ID_doc
|
NUMBER(10)
|
Yes
|
No
|
IDk_doc
|
NUMBER(10)
|
No
|
No
|
when_given
|
DATE
|
No
|
No
|
series
|
VARCHAR2(20)
|
No
|
No
|
identifier
|
VARCHAR2(30)
|
No
|
No
|
who_given
|
VARCHAR2(500)
|
No
|
No
|
ID_e
|
NUMBER(10)
|
No
|
Yes
|
d_end
|
DATE
|
No
|
No
|
Column(s) of
"Educational_group" Table
|
Name
|
Datatype
|
Is
PK
|
Is
FK
|
ID_ed_group
|
NUMBER(10)
|
Yes
|
No
|
ID_d_specialitie
|
NUMBER(10)
|
No
|
No
|
name
|
VARCHAR2(100)
|
No
|
No
|
level_group
|
INTEGER
|
No
|
No
|
d_start
|
DATE
|
No
|
No
|
d_end
|
DATE
|
No
|
No
|
ID_ed_group_main
|
NUMBER(10)
|
No
|
Yes
|
maximal_size
|
INTEGER
|
No
|
No
|
IDk_group
|
NUMBER(10)
|
No
|
No
|
course
|
INTEGER
|
No
|
No
|
abbreviation
|
VARCHAR2(20)
|
No
|
No
|
Column(s) of
"Educational_load_umk" Table
|
Name
|
Datatype
|
Is
PK
|
Is
FK
|
ID_educational_load_umk
|
INTEGER
|
Yes
|
No
|
ID_methodical_complex
|
INTEGER
|
No
|
Yes
|
IDk_training
|
NUMBER(10)
|
No
|
No
|
IDk_lesson
|
NUMBER(10)
|
No
|
No
|
semester
|
INTEGER
|
No
|
No
|
hours
|
FLOAT
|
No
|
No
|
Column(s) of "Employees"
Table
|
Name
|
Datatype
|
Is
PK
|
Is
FK
|
ID_e
|
NUMBER(10)
|
Yes
|
No
|
ID_contractor
|
NUMBER(10)
|
No
|
No
|
surname
|
VARCHAR2(60)
|
No
|
No
|
ID_declination_s
|
NUMBER(10)
|
No
|
No
|
name
|
VARCHAR2(50)
|
No
|
No
|
ID_declination_n
|
NUMBER(10)
|
No
|
No
|
patronymic
|
VARCHAR2(50)
|
No
|
No
|
ID_declination_p
|
NUMBER(10)
|
No
|
No
|
sex
|
NUMBER(1)
|
No
|
No
|
date_of_birth
|
DATE
|
No
|
No
|
d_end
|
DATE
|
No
|
No
|
INN
|
VARCHAR2(30)
|
No
|
No
|
insurance_pension
|
VARCHAR2(30)
|
No
|
No
|
ID_nationality
|
NUMBER(10)
|
No
|
No
|
ID_metaterm
|
NUMBER(10)
|
No
|
No
|
Column(s) of
"Methodical_complex" Table
|
Name
|
Datatype
|
Is
PK
|
Is
FK
|
ID_methodical_complex
|
INTEGER
|
Yes
|
No
|
ID_d
|
NUMBER(10)
|
No
|
Yes
|
ID_discipline
|
NUMBER(10)
|
No
|
No
|
Column(s) of "Orders"
Table
|
Name
|
Datatype
|
Is
PK
|
Is
FK
|
ID_order
|
NUMBER(10)
|
Yes
|
No
|
IDk_order
|
NUMBER(10)
|
No
|
No
|
number_paper
|
No
|
No
|
ID_period_numbering
|
NUMBER(10)
|
No
|
No
|
ID_series_paper
|
NUMBER(10)
|
No
|
No
|
hisdate
|
DATE
|
No
|
No
|
temp_identifier
|
NUMBER(10)
|
No
|
No
|
basis
|
VARCHAR2(800)
|
No
|
No
|
summary
|
VARCHAR2(500)
|
No
|
No
|
note
|
VARCHAR2(800)
|
No
|
No
|
If_ready
|
SMALLINT
|
No
|
No
|
if_gone
|
SMALLINT
|
No
|
No
|
d_creation
|
DATE
|
No
|
No
|
d_modification
|
DATE
|
No
|
No
|
ID_ERP_user
|
NUMBER(10)
|
No
|
Yes
|
Column(s) of
"Paragraphs" Table
|
Name
|
Datatype
|
Is
PK
|
Is
FK
|
ID_paragraph
|
NUMBER(10)
|
Yes
|
No
|
IDk_order
|
NUMBER(10)
|
No
|
No
|
ID_order
|
NUMBER(10)
|
No
|
Yes
|
index_p
|
INTEGER
|
No
|
No
|
cancellation
|
NUMBER(10)
|
No
|
Yes
|
Column(s) of
"Refresher_course_group" Table
|
Name
|
Datatype
|
Is
PK
|
Is
FK
|
ID_rc_group
|
INTEGER
|
Yes
|
No
|
ID_refresher_course_plan
|
INTEGER
|
No
|
Yes
|
ID_ed_group
|
NUMBER(10)
|
No
|
Yes
|
ID_methodical_complex
|
INTEGER
|
No
|
Yes
|
d_start
|
DATE
|
No
|
No
|
d_end
|
DATE
|
No
|
No
|
Column(s) of
"Refresher_course_plan" Table
|
Name
|
Datatype
|
Is
PK
|
Is
FK
|
ID_refresher_course_plan
|
INTEGER
|
Yes
|
No
|
ID_paragraph
|
NUMBER(10)
|
No
|
Yes
|
ID_d_specialitie
|
NUMBER(10)
|
No
|
No
|
d_start
|
DATE
|
No
|
No
|
d_end
|
DATE
|
No
|
No
|
Column(s) of "Students"
Table
|
Name
|
Datatype
|
Is
PK
|
Is
FK
|
ID_student
|
NUMBER(10)
|
Yes
|
No
|
ID_e
|
NUMBER(10)
|
No
|
Yes
|
ID_ed_group
|
NUMBER(10)
|
No
|
Yes
|
IDkba_transfer
|
NUMBER(10)
|
No
|
No
|
ID_order_start
|
NUMBER(10)
|
No
|
Yes
|
d_start
|
DATE
|
No
|
No
|
dp_end
|
DATE
|
No
|
No
|
ID_order_contract
|
NUMBER(10)
|
No
|
Yes
|
ID_doc
|
NUMBER(10)
|
No
|
Yes
|
IDk_program
|
NUMBER(10)
|
No
|
No
|
d_trial
|
DATE
|
No
|
No
|
ID_educational_plan
|
NUMBER(10)
|
No
|
No
|
Column(s) of
"Who_Is_Who" Table
|
Name
|
Datatype
|
Is
PK
|
Is
FK
|
ID_ERP_user
|
NUMBER(10)
|
Yes
|
No
|
ID_e
|
NUMBER(10)
|
No
|
Yes
|
ID_user
|
NUMBER(10)
|
No
|
No
|
d_start
|
DATE
|
No
|
No
|
d_end
|
DATE
|
No
|
No
|
login
|
VARCHAR2(20)
|
No
|
No
|
note
|
VARCHAR2(200)
|
No
|
No
|
login_OS
|
VARCHAR2(30)
|
No
|
No
|
ID_as
|
NUMBER(10)
|
No
|
No
|
ID_d
|
NUMBER(10)
|
No
|
Yes
|
Приложение Б. Код программы
program pk,,,in 'модули\Главная\Main.pas'
{Form_Main},_cx in 'общие модули\Формы\О
программе\About_cx.pas'
{Form_About},in 'общие модули\System\SysServices.pas',in
'общие
модули\System\wrappers.pas',in
'общие
модули\System\GridEditClass.pas',_u_CX_tools
in 'общие
модули\System\LP_u_CX_tools.pas',_u_MA_Interface
in 'общие
модули\System\LP_u_MA_Interface.pas',_new
in 'общие
модули\System\Standart_new.pas',in
'общие
модули\System\SqlStringList.pas',_Admin_Data
in 'общие
модули\SQL_Data\Get_Admin_Data.pas',_Single_Data
in 'общие
модули\SQL_Data\Get_Single_Data.pas',_PK_PPS_Data
in 'общие
модули\SQL_Data\Get_PK_PPS_Data.pas',in
'общие
модули\System\uListener.pas',in
'модули\Мероприятия\Event.pas'
{Form_Event},
SE in 'общие модули\Формы\Поиск\SE.pas'
{Form_SE},_Org in 'общие модули\Формы\Организации\Find_Org.pas'
{Form_Find_Org},in 'общие модули\Формы\Анкета\UnivQuestionnaire.pas'
{FUnivQuestionare},_U in 'общие модули\Формы\фото\photo_U.pas' {fPhoto},
New_For_All in 'общие
модули\Формы\Ввод
новых
значений\New_For_All.pas'
{Form_New_For_All},_U in 'общие
модули\Формы\адреса\address_U.pas'
{fAddr},in 'общие модули\Формы\Документы\UnitDocuments.pas'
{FormDocuments},in 'общие модули\System\RegService.pas',in
'общие
модули\Формы\фото\WebCam.pas'
{WebCamera},in 'модули\Справочники\Dictionaries.pas'
{Form_Dictionaries},in 'модули\Планирование\Plan.pas'
{Form_Plan},in 'общие модули\System\SysEnvironment.pas';
{$R *.res}_LANG_RUSSIAN = (SUBLANG_DEFAULT
shl 10) or LANG_RUSSIAN;not MSystemServices.Connect(True,
True)Exit;System.DebugHook >0MSystemServices.IsDebugMode:=True;
// Включим
по-умолчанию
русский
язык!(PChar(IntToHex(KB_LANG_RUSSIAN,
8)), KLF_ACTIVATE);.Initialize;
//локализация
DevExpress;.RefreshLoginInfo;.RefreshRolesInfo;(Application.Handle,
SW_HIDE);.Title := 'Повышение
квалификации';.CreateForm(TForm_Main,
Form_Main);.Run;.Main, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms,, ExtCtrls, dxBar, dxBarExtItems, cxClasses, ActnList,
ImgList,, About_cx, Plan, Event, Dictionaries;
const
{ Путь для сохранения в реестре }
Reg_Path = '\Software\AS Pilot
group\Parameters\Модуль повышения
квалификации';_Main
= class(TForm): TcxPropertiesStore;: TcxPropertiesStore;_Aple: TImageList;:
TImageList;: TActionList;_Plan: TAction;_Exit: TAction;: TActionList;_Options:
TAction;: TdxBarManager;Bar1: TdxBar;: TdxBarSubItem;: TdxBarLargeButton;:
TdxBarSubItem;: TdxBarLargeButton;: TdxBarLargeButton;:
TdxBarLargeButton;_Main: TPanel;: TPanel;_Message: TAction;:
TdxBarButton;_Change_User: TAction;_Refresh_Roles: TAction;: TdxBarButton;:
TdxBarLargeButton;_Event: TAction;: TdxBarLargeButton;_Dictionaries:
TAction;Action_MessageExecute(Sender:
TObject);Action_Change_UserExecute(Sender: TObject);Action_Refresh_RolesExecute(Sender:
TObject);Action_ExitExecute(Sender: TObject);Action_AboutExecute(Sender:
TObject);Action_PlanExecute(Sender: TObject);FormClose(Sender: TObject; var
Action: TCloseAction);FormCreate(Sender: TObject);Action_EventExecute(Sender:
TObject);FormShow(Sender: TObject);Action_DictionariesExecute(Sender: TObject);
{ Private declarations }
{ Форма
"О
программе"
}
F_About: TForm_About;
{ Форма "Планирование" }_Plan:
TForm_Plan;
{ Форма "Мероприятия" }_Event:
TForm_Event;
{ Форма "Справочники" }
F_Disctionaries: TForm_Dictionaries;
{ Public declarations }_NAME:
string;
{ Обновить
роли
}Refresh_Roles;
{ Скрыть
все
}Hide_All;;_Main: TForm_Main;
{$R *.dfm}SysServices,
LP_u_MA_Interface, grideditclass, standart_new, Get_PK_PPS_Data;
{ Обмен
сообщениями
}TForm_Main.Action_MessageExecute(Sender: TObject);
(vnListAgent as
IvnMessageAgent).MA_MessageWindow;;
{ Изменить
текущего
пользователя
}TForm_Main.Action_Change_UserExecute(Sender: TObject);not
MSystemServices.Connect(True)
then Close
{ Обновить роли нового пользователя }
else Action_Refresh_Roles.Execute;;
{ Справочники
}TForm_Main.Action_DictionariesExecute(Sender: TObject);
begin
{ Скрываем все }_All;
{ Если формы нет, создаем ее, инициализируем,
проверяем роли и встраиваем }
if F_Disctionaries =
nilbegin_Disctionaries :=
TForm_Dictionaries.Create(Self);_Disctionaries.Init(Reg_Path+'\Справочники');_Disctionaries.Refresh_Roles;_Disctionaries.ManualDock(Panel1,
nil, alClient);;
{ Показываем
форму
}_Disctionaries.Realign;_Disctionaries.PageControl_Main.Realign;_Disctionaries.Panel_Main.Realign;_Disctionaries.Panel_Filter.Realign;_Disctionaries.PopupEdit_Filter_Org.Realign;Self.Caption
<> ''Self.Caption := Self.Caption + '. ' +
F_Disctionaries.CaptionSelf.Caption := F_Disctionaries.Caption;.Title :=
Self.Caption;_Disctionaries.Show;;
{ Скрыть
все
формы
}TForm_Main.Hide_All;F_Plan <> nilF_Plan.VisibleF_Plan.Hide;F_Event
<> nilF_Event.VisibleF_Event.Hide;
//Self.Caption :=
My_Get_Version('InternalName');.Caption := ERP_NAME;.Title := Self.Caption;;
{ Обновить
роли
пользователя
}TForm_Main.Refresh_Roles;data: olevariant; i: integer;:=
MSystemServices.SelectData(Get_Params_Module, CreateVarAr(['2000']), i
, 'Не смогли прочитать настройку модуля');
if VarIsArray(data)ERP_NAME :=
VarToStr(data[0][0])ERP_NAME := '';:=
MSystemServices.SelectData(Get_Params_Module, CreateVarAr(['2014']), i
, 'Не смогли прочитать настройку модуля');
if VarIsArray(data)ERP_NAME <>
''ERP_NAME := ERP_NAME + '. ';_NAME := ERP_NAME + VarToStr(data[0][0]);;.Caption
:= ERP_NAME;
{ Проверка доступности показа формы планирования
}
Action_Plan.Enabled :=
TForm_Plan.IsRoleAccessible;(F_Plan <> nil)beginF_Plan.Visible and not
Action_Plan.EnabledHide_AllF_Plan.Refresh_Roles;F_Plan.Visibleif Self.Caption
<> ''Self.Caption := Self.Caption + '. ' + F_Plan.CaptionSelf.Caption :=
F_Plan.Caption;
end;
{ Проверка доступности показа формы мероприятий
}
Action_Event.Enabled :=
TForm_Event.IsRoleAccessible;(F_Event <> nil)beginF_Event.Visible and not
Action_Event.EnabledHide_AllF_Event.Refresh_Roles;F_Event.VisibleSelf.Caption
<> ''Self.Caption := Self.Caption + '. ' + F_Event.CaptionSelf.Caption :=
F_Event.Caption;;_Dictionaries.Enabled :=
TForm_Dictionaries.IsRoleAccessible;(F_Disctionaries <>
nil)beginF_Disctionaries.Visible and not Action_Event.EnabledHide_AllF_Disctionaries.Refresh_Roles;F_Disctionaries.VisibleSelf.Caption
<> ''Self.Caption := Self.Caption + '. ' +
F_Disctionaries.CaptionSelf.Caption := F_Disctionaries.Caption;;.Title :=
Self.Caption;
end;
{ Перечитать роли текущего юзверя }
procedure
TForm_Main.Action_Refresh_RolesExecute(Sender: TObject);
begin
{ Если создана форма, то и там обновим роли }
if F_About <>
nilGet_SqlData_cxGrid(F_About.Tree_Roles_User).Read_Data
{ Иначе - сами их прочтем и определим
доступность }
else begin.RefreshLoginInfo;.RefreshRolesInfo;_Roles;;;
{ Проведение
мероприятий
}TForm_Main.Action_EventExecute(Sender: TObject);
begin
{ Скрываем все }_All;
{ Если формы нет, создаем ее, инициализируем,
проверяем роли и встраиваем }
if F_Event = nilbegin_Event :=
TForm_Event.Create(Self);_Event.Init(Reg_Path+'\Мероприятия');_Event.Refresh_Roles;_Event.ManualDock(Panel1,
nil, alClient);;
{ Показываем
форму
}_Event.Realign;_Event.PageControl_Main.Realign;_Event.Panel_Main.Realign;Self.Caption
<> ''Self.Caption := Self.Caption + '. ' + F_Event.CaptionSelf.Caption :=
F_Event.Caption;.Title := Self.Caption;_Event.Show;;
{ Выход
из
программы
}TForm_Main.Action_ExitExecute(Sender: TObject);
begin;;
{ Открыть форму о программе }
procedure TForm_Main.Action_AboutExecute(Sender:
TObject);
begin
{ Если формы нет, создаем ее и инициализируем }
if F_About = nilbegin_About :=
TForm_About.Create(Self);_About.Refresh_Roles :=
Refresh_Roles;_About.Init(Reg_Path+'\О
программе');
end;
{ Показываем форму в модальном окне }_About.ShowModal;;
{ Планирование обучения }
procedure
TForm_Main.Action_PlanExecute(Sender: TObject);
begin
{ Скрываем все }_All;
{ Если формы нет, создаем ее, инициализируем,
проверяем роли и встраиваем }
if F_Plan = nilbegin_Plan :=
TForm_Plan.Create(Self);_Plan.Init(Reg_Path+'\Планирование');_Plan.Refresh_Roles;_Plan.ManualDock(Panel1,
nil, alClient);;
{ Показываем
форму
}_Plan.Realign;_Plan.PageControl_Main.Realign;_Plan.Panel_Main.Realign;_Plan.Panel_Filter.Realign;_Plan.PopupEdit_Filter_Org.Realign;Self.Caption
<> ''Self.Caption := Self.Caption + '. ' + F_Plan.CaptionSelf.Caption :=
F_Plan.Caption;
F_Plan.Show;;
{ Сохраним параметры окна }
procedure
TForm_Main.FormClose(Sender: TObject; var Action:
TCloseAction);.SaveToRegistry(Reg_Path+'\Главное
окно\Меню');
cxPropertiesStore1.StoreTo(False);
{ При свернутости и распахнутости окна размеры
не сохранять! }
if WindowState =
wsNormalcxPropertiesStore2.StoreTo(False);;
{ Инициализация
}TForm_Main.FormCreate(Sender: TObject);
begin
{ Загружаем параметры из реестра }
cxPropertiesStore1.StorageName:=Reg_Path+'\Главное
окно';.StorageName:=Reg_Path+'\Главное
окно\Размеры';:=poDesigned;.RestoreFrom;.RestoreFrom;.LoadFromRegistry(Reg_Path+'\Главное
окно\Меню');;TForm_Main.FormShow(Sender:
TObject);_Roles;
{ Скроем
все
}_All;;.Dictionaries, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms,, ExtCtrls, cxPC, cxControls, cxSplitter, cxStyles,
cxCustomData,, cxFilter, cxData, cxDataStorage, cxEdit, cxGridLevel,,
cxGridTableView, cxGridBandedTableView,, cxGrid, cxEditRepositoryItems,
cxClasses, cxTL,, cxPropertiesStore, cxTextEdit, cxMaskEdit,
cxDropDownEdit,,wrappers, ActnList, cxLookAndFeels, cxLookAndFeelPainters,
cxSpinEdit,, GridEditClass, cxButtonEdit, cxTimeEdit, SE;
const
{ Роль на редактирование специальностей,
организаторов обучения }
Action_Q_Edit_Spec = '1401';
{ Роль на редактирование учебных групп }
Action_Q_Edit_Groups = '1402';
{ Вид уровня специальности "Повышение
квалификации" }_Level_Spec = '70';
{ Вид дисциплины "Повышение квалификации
}_Discipline = '59454';
{ Вид уровня образования "Повышение
квалификации" }_Level_Formation = '70508';
{ Путь для сохранения в реестре }
Reg_Path = '\Software\AS Pilot
group\Parameters\Модуль повышения
квалификации\Справочники';
{ Путь для сохранения списков }_Path =
'\Параметры списков\';
{ Путь для добавления }_Path = 'Модуль повышения
квалификации\Справочники\Добавление\';
type_Dictionaries =
class(TForm)_Main: TPanel;: TcxEditStyleController;: TcxStyleRepository;_Group:
TcxStyle;_s_ContentEVEN: TcxStyle;_Filter_Box: TcxStyle;_Footer:
TcxStyle;_Inactive: TcxStyle;_Indicator: TcxStyle;_Preview:
TcxStyle;_Selection: TcxStyle;_ContentOdd: TcxStyle;_Content_TEXT:
TcxStyle;_Content_POPUP: TcxStyle;_Content_DATE: TcxStyle;_Content_QUALIFIER:
TcxStyle;_Footer_Column: TcxStyle;_Content_ID: TcxStyle;_Content_Memo:
TcxStyle;_Content_Project: TcxStyle;_Content_Cancel:
TcxStyle;_Content_ProjectSend: TcxStyle;_Content_Owner:
TcxStyle;_Content_NotOwner: TcxStyle;_Content_Hot_Track: TcxStyle;_Inc_Search:
TcxStyle;_Group_By_Box: TcxStyle;_Header: TcxStyle;_Style_1:
TcxTreeListStyleSheet;_Style_1: TcxGridBandedTableViewStyleSheet;:
TcxEditRepository;_Date_None_Blank: TcxEditRepositoryDateItem;_Date_With_Blank:
TcxEditRepositoryDateItem;_Spin_ID: TcxEditRepositorySpinItem;_Text_RO:
TcxEditRepositoryTextItem;_Memo_RO: TcxEditRepositoryMemoItem;_Date_RO:
TcxEditRepositoryDateItem;: TcxPropertiesStore;_Filter: TPanel;: TcxSplitter;:
TcxLabel;_Filter_Org: TcxPopupEdit;_Text: TcxEditRepositoryTextItem;:
TActionList;_Insert_Spec_Div: TAction;_Insert_Spec: TAction;_tv_spec:
TAction;_tv_spec_div: TAction;_tv_intitutes: TAction;_tv_kind_training:
TAction;_tv_k_l_f: TAction;_tv_org_div: TAction;_tv_source_finansing:
TAction;_Insert_Ed_Group: TAction;_Main: TcxPageControl;_Spec: TcxTabSheet;_Spec:
TcxGrid;_Spec: TcxGridBandedTableView;_Spec_Name: TcxGridBandedColumn;_Spec_Q:
TcxGridBandedColumn;_Spec_ID: TcxGridBandedColumn;_Spec_IDK_Level_Spec:
TcxGridBandedColumn;_Spec_id_discipline:
TcxGridBandedColumn;_Spec_idk_discipline: TcxGridBandedColumn;_Spec_Level1:
TcxGridLevel;_Org: TcxTabSheet;_Spec_Div: TcxGrid;_spec_div:
TcxGridBandedTableView;_spec_div_name_spec:
TcxGridBandedColumn;_spec_div_name_div:
TcxGridBandedColumn;_spec_div_kind_training:
TcxGridBandedColumn;_spec_div_institute: TcxGridBandedColumn;_spec_div_source:
TcxGridBandedColumn;_spec_div_d_start: TcxGridBandedColumn;_spec_div_d_end:
TcxGridBandedColumn;_spec_div_id_spec_div:
TcxGridBandedColumn;_spec_div_id_spec: TcxGridBandedColumn;_spec_div_id_d:
TcxGridBandedColumn;_spec_div_idk_training:
TcxGridBandedColumn;_spec_div_id_d_institute:
TcxGridBandedColumn;_spec_div_id_source:
TcxGridBandedColumn;_spec_div_idk_level_formation: TcxGridBandedColumn;:
TcxGridLevel;_Ed_Group: TcxGrid;_ed_group:
TcxGridBandedTableView;_ed_group_name: TcxGridBandedColumn;_ed_group_kind_group:
TcxGridBandedColumn;_ed_group_d_start: TcxGridBandedColumn;_ed_group_d_end:
TcxGridBandedColumn;_ed_group_id_ed_group:
TcxGridBandedColumn;_ed_group_id_spec_div:
TcxGridBandedColumn;_ed_group_idk_group: TcxGridBandedColumn;_ed_group_level_group:
TcxGridBandedColumn;: TcxGridLevel;: TcxSplitter;_Editing: TcxTabSheet;:
TcxPageControl;_Division: TcxTabSheet;_Org_Division: TcxGrid;_Org_Division:
TcxGridBandedTableView;_Org_Division_Abbr: TcxGridBandedColumn;_Org_Division_Name:
TcxGridBandedColumn;_Org_Division_ID: TcxGridBandedColumn;_Org_Division_Level1:
TcxGridLevel;_Institutes: TcxTabSheet;_Institutes: TcxGrid;_institutes:
TcxGridBandedTableView;_institutes_Abbr: TcxGridBandedColumn;_institutes_Name:
TcxGridBandedColumn;_institutes_ID: TcxGridBandedColumn;:
TcxGridLevel;_Kind_Training: TcxTabSheet;_Kind_Training:
TcxGrid;_Kind_Training: TcxGridBandedTableView;_Kind_Training_Name:
TcxGridBandedColumn;_Kind_Training_IDK_TRAINING: TcxGridBandedColumn;:
TcxGridLevel;_K_L_F: TcxTabSheet;_K_L_F: TcxGrid;_klf:
TcxGridBandedTableView;_klf_idk_lf: TcxGridBandedColumn;_klf_name:
TcxGridBandedColumn;_klf_qualifer: TcxGridBandedColumn;: TcxGridLevel;_SF:
TcxTabSheet;_Source_Financing: TcxGrid;_Source_Financing: TcxGridBandedTableView;_Source_Financing_Abbreviation:
TcxGridBandedColumn;_Source_Financing_Name:
TcxGridBandedColumn;_Source_Financing_Abbr_Div:
TcxGridBandedColumn;_Source_Financing_Division:
TcxGridBandedColumn;_Source_Financing_Kind_Source:
TcxGridBandedColumn;_Source_Financing_Activity:
TcxGridBandedColumn;_Source_Financing_Date_Close:
TcxGridBandedColumn;_Source_Financing_ID:
TcxGridBandedColumn;_Source_Financing_ID_D:
TcxGridBandedColumn;_Source_Financing_ID_Kind_Source:
TcxGridBandedColumn;_Source_Financing_ID_Activity: TcxGridBandedColumn;:
TcxGridLevel;_Add: TcxTabSheet;: TcxPageControl;_Add_Spec:
TcxTabSheet;_New_Spec: TPanel;: TcxLabel;_Spec_Name: TcxTextEdit;_Spec_Quality:
TcxTextEdit;: TcxLabel;_New_Spec_Div: TcxTabSheet;_New_Spec_Div: TPanel;:
TcxLabel;: TcxLabel;: TcxLabel;: TcxLabel;: TcxLabel;_Spec_Div_D_Start:
TcxDateEdit;_Spec_Div_D_End: TcxDateEdit;_Spec_Div_Institute: TcxPopupEdit;:
TcxLabel;_Spec_Div_Div: TcxPopupEdit;_Spec_Div_Spec: TcxPopupEdit;_Spec_Div_KT:
TcxPopupEdit;: TcxLabel;_Spec_Div_SF: TcxPopupEdit;_Ed_Group:
TcxTabSheet;_New_Ed_Group: TPanel;: TcxLabel;_New_Ed_Group_Name: TcxTextEdit;:
TcxLabel;_New_Ed_Group_D_End: TcxDateEdit;_New_Ed_Group_D_Start: TcxDateEdit;:
TcxLabel;_SD_Params: TPanel;: TcxPageControl;: TcxTabSheet;:
TcxTabSheet;_Commission: TcxGrid;_Commission:
TcxGridBandedTableView;_Commission_Order: TcxGridBandedColumn;_Commission_Kind:
TcxGridBandedColumn;_Commission_Start: TcxGridBandedColumn;_Commission_End:
TcxGridBandedColumn;_Commission_ID_Paragraph: TcxGridBandedColumn;_Commission_ID_Spec:
TcxGridBandedColumn;_Commission_ID_D: TcxGridBandedColumn;_Commission_ID_Order:
TcxGridBandedColumn;_Commission_Level5: TcxGridLevel;_New_Sommission:
TcxTabSheet;_New_Commission: TPanel;: TcxLabel;: TcxLabel;_New_Commission_End:
TcxDateEdit;_New_Commission_Start: TcxDateEdit;: TcxLabel;_New_Commission:
TcxButtonEdit;_Commission_IDK_Order:
TcxGridBandedColumn;_Commission_Status_Order:
TcxGridBandedColumn;_Commission_ID_MT: TcxGridBandedColumn;_Commission_ID_MO:
TcxGridBandedColumn;_Commission_ID_ERP: TcxGridBandedColumn;_Commission_User:
TcxGridBandedColumn;_New_Commission: TAction;_Insert_New_Commission:
TAction;_Commission_ID: TcxGridBandedColumn;_Commission_ID_Kind:
TcxGridBandedColumn;_Members: TcxGrid;_Members: TcxGridBandedTableView;_Members_Order:
TcxGridBandedColumn;_Members_Kind: TcxGridBandedColumn;_Members_Start:
TcxGridBandedColumn;_Members_End: TcxGridBandedColumn;_Members_User:
TcxGridBandedColumn;_Members_ID_Paragraph:
TcxGridBandedColumn;_Members_ID_Order: TcxGridBandedColumn;_Members_IDK_Order:
TcxGridBandedColumn;_Members_Status_Order: TcxGridBandedColumn;_Members_ID_MT:
TcxGridBandedColumn;_Members_ID_MO: TcxGridBandedColumn;_Members_ID_ERP:
TcxGridBandedColumn;_Members_ID_Commission:
TcxGridBandedColumn;_Members_Level1: TcxGridLevel;_Members_Post:
TcxGridBandedColumn;_Members_FIO: TcxGridBandedColumn;_Members_ID_Post:
TcxGridBandedColumn;_Members_ID_E: TcxGridBandedColumn;:
TcxSplitter;_New_Member: TcxTabSheet;_New_Member: TPanel;: TcxLabel;:
TcxLabel;_New_Member_End: TcxDateEdit;_New_Member_Start: TcxDateEdit;:
TcxLabel;_New_Member: TcxButtonEdit;: TcxLabel;_Post: TcxGrid;_Post:
TcxGridBandedTableView;_Post_Name: TcxGridBandedColumn;_Post_ID:
TcxGridBandedColumn;_Post_Level1: TcxGridLevel;_New_Member_Post:
TcxPopupEdit;_New_Member: TAction;_Members_ID: TcxGridBandedColumn;:
TcxLabel;_New_Member_FIO: TcxPopupEdit;_Insert_New_Member:
TAction;FormDestroy(Sender: TObject);Action_Insert_Spec_DivExecute(Sender:
TObject);Action_Insert_SpecExecute(Sender: TObject);Fill_tv_specExecute(Sender:
TObject);PageControl_MainPageChanging(Sender: TObject;: TcxTabSheet; var
AllowChange: Boolean);Fill_tv_spec_divExecute(Sender:
TObject);Fill_tv_intitutesExecute(Sender:
TObject);Fill_tv_kind_trainingExecute(Sender:
TObject);Fill_tv_k_l_fExecute(Sender: TObject);Fill_tv_org_divExecute(Sender:
TObject);Fill_tv_source_finansingExecute(Sender:
TObject);tv_spec_div_institutePropertiesInitPopup(Sender:
TObject);tv_spec_div_name_divPropertiesInitPopup(Sender:
TObject);tv_spec_div_name_specPropertiesInitPopup(Sender:
TObject);tv_spec_div_kind_trainingPropertiesInitPopup(Sender:
TObject);tv_spec_div_sourcePropertiesInitPopup(Sender:
TObject);PopupEdit_Filter_OrgPropertiesInitPopup(Sender:
TObject);cxPopupEditNew_Spec_Div_DivPropertiesInitPopup(Sender: TObject);cxPopupEditNew_Spec_Div_SpecPropertiesInitPopup(Sender:
TObject);cxPopupEditNew_Spec_Div_KTPropertiesInitPopup(Sender:
TObject);cxPopupEditNew_Spec_Div_SFPropertiesInitPopup(Sender:
TObject);Action_Insert_Ed_GroupExecute(Sender: TObject);cxPopupEditNew_Spec_Div_InstitutePropertiesInitPopup(:
TObject);tv_SpecSelectionChanged(Sender:
TcxCustomGridTableView);tv_SpecEditing(Sender: TcxCustomGridTableView;:
TcxCustomGridTableItem; var AAllow:
Boolean);tv_spec_divSelectionChanged(Sender: TcxCustomGridTableView);tv_spec_divEditing(Sender:
TcxCustomGridTableView;: TcxCustomGridTableItem; var AAllow:
Boolean);tv_ed_groupSelectionChanged(Sender:
TcxCustomGridTableView);tv_ed_groupEditing(Sender: TcxCustomGridTableView;:
TcxCustomGridTableItem; var AAllow: Boolean);FormShow(Sender:
TObject);tv_SpecMouseDown(Sender: TObject; Button: TMouseButton;: TShiftState;
X, Y: Integer);tv_SpecKeyDown(Sender: TObject; var Key: Word;:
TShiftState);tv_ed_groupKeyDown(Sender: TObject; var Key: Word;:
TShiftState);tv_ed_groupMouseDown(Sender: TObject; Button: TMouseButton;:
TShiftState; X, Y: Integer);tv_spec_divKeyDown(Sender: TObject; var Key: Word;:
TShiftState);tv_spec_divMouseDown(Sender: TObject; Button: TMouseButton;:
TShiftState; X, Y: Integer);PopupEdit_Filter_OrgPropertiesEditValueChanged(Sender:
TObject);Action_New_CommissionExecute(Sender:
TObject);cxPageControl3Change(Sender:
TObject);Action_Insert_New_CommissionExecute(Sender:
TObject);Action_New_MemberExecute(Sender:
TObject);Action_Insert_New_MemberExecute(Sender: TObject);
private
{ Private declarations }
{ Доступность редактирования специальностей мет.
комплекса, специальностей и организаторов обучения }_Spec: boolean;
{ Доступность редактирования учебных групп,
сроков проведения и плана ПК }_Groups: boolean;
{ Объект для работы со списками }_TableView:
TSqlData_cxGridTableView;
{ Путь реестра (для загрузки/сохранения
параметров) }
Curr_Reg_Path: String;
{ Контейнеры
оберток
}_Institute_Filter, cW_New_Spec, cW_New_Ed_Group, cW_New_Spec_Div
, cW_New_Commission, cw_New_Member: TContainerWrappers;
{ Форма поиска человека }_Form_SE: TForm_SE;
{ Обработчики событий изменения в контейнерах
оберток }
procedure
DoChanged_cW_New_Spec(AWrapper:
TCustomEditWrapper);DoChanged_cW_New_Spec_Div(AWrapper: TCustomEditWrapper);DoChanged_cW_Intitute_Filter(AWrapper:
TCustomEditWrapper);DoChanged_cW_New_Ed_Group(AWrapper:
TCustomEditWrapper);Before_Delete_Exchange(Sender: TSqlData_cxGridTableView;:
Integer; var ExchangeParameters: OleVariant);
{ Смена записи в tv_spec_div }
procedure
OnChoiceGridRecord_tv_spec_div(Sender: TSqlData_cxGridTableView; AGridRecord:
TcxGridDataRow);
{ Установка
доступности
добавления
}Allow_Insert(TV: TcxCustomGridTableView; Roles: array of boolean);
{ Установка доступности редактирования таблицы
(с документом) }
function Allow_Editing(TV:
TcxCustomGridTableView; Status_Column: TcxGridColumn;_ERP_Column:
TcxGridColumn; Roles: array of boolean): boolean; overload;
{ Установка доступности редактирования таблицы
(без документа) }
function Allow_Editing(TV: TcxCustomGridTableView;
Roles: array of boolean): boolean; overload;
{ Установка доступности удаления из таблицы (с
документом) }
procedure Allow_Delete(TV:
TcxCustomGridTableView; Status_Column: TcxGridColumn;_ERP_Column:
TcxGridColumn; Roles: array of boolean); overload;
{ Установка доступности удаления из таблицы (без
документа) }
procedure Allow_Delete(TV:
TcxCustomGridTableView; Roles: array of boolean); overload;
{ Сохранение/восстановление
параметров
списков
}Save_Restore_Params(RReg_Path: String = Reg_Path; PIs_Load: Boolean = True);
{ Инициализация
формы
}Init(AReg_Path: String = Reg_Path; AForm_SE: TForm_SE = nil);
{ Обновить
роли
}Refresh_Roles;
{ Проверка доступности ко всей форме без
создания ее самой }
class function IsRoleAccessible:
Boolean;;_Dictionaries: TForm_Dictionaries;
{$R *.dfm}SysServices,
Get_PK_PPS_Data, standart_new, get_single_data, LP_u_CX_tools;
{ Сохранение/восстановление
параметров
списков
}TForm_Dictionaries.Save_Restore_Params(RReg_Path: String = Reg_Path; PIs_Load:
Boolean = True);.StorageName:=RReg_Path+'\Общие
параметры';
if PIs_Load
{ Восстановление параметров }begin // 1
{ Восстановим общие параметры }.RestoreFrom;
{ Восстановим значения фильтра по институтам }
if PopupEdit_Filter_Org.Tag <>
0begin // 2_Institute_Filter.Wrappers[PopupEdit_Filter_Org].Value :=
IntToStr(PopupEdit_Filter_Org.Tag);_Institute_Filter.Wrappers[PopupEdit_Filter_Org].ValueDisplay
:= PopupEdit_Filter_Org.Text;// 2begin //
3_Institute_Filter.Wrappers[PopupEdit_Filter_Org].Value :=
'';_Institute_Filter.Wrappers[PopupEdit_Filter_Org].ValueDisplay := '';
end; // 3// 1
{ Сохранение параметров }begin // 4
{ Сохраним значения фильтра по институтам }
if
VarToStr(cW_Institute_Filter.Wrappers[PopupEdit_Filter_Org].Value) <>
''begin // 5_Filter_Org.Tag :=
StrToInt(VarToStr(cW_Institute_Filter.Wrappers[PopupEdit_Filter_Org].Value));_Filter_Org.Text
:= VarToStr(cW_Institute_Filter.Wrappers[PopupEdit_Filter_Org].ValueDisplay);//
5begin // 6_Filter_Org.Tag := 0;_Filter_Org.Text := '';; // 6
{ Сохраним
общие
параметры
}.StoreTo(True);
end; // 4
{ Сохранение или загрузки параметров списков (в
зависимости от параметра PIs_Load) }
Restore_cxGridTableView(tv_spec, PIs_Load,
RReg_Path+Grid_Path+Get_SqlData_cxGrid(tv_spec).Table_Name);_cxGridTableView(tv_spec_div,
PIs_Load,
RReg_Path+Grid_Path+Get_SqlData_cxGrid(tv_spec_div).Table_Name);_cxGridTableView(tv_ed_group,
PIs_Load, RReg_Path+Grid_Path+Get_SqlData_cxGrid(tv_ed_group).Table_Name);_cxGridTableView(tv_Org_Division,
PIs_Load,
RReg_Path+Grid_Path+Get_SqlData_cxGrid(tv_Org_Division).Table_Name);_cxGridTableView(tv_institutes,
PIs_Load,
RReg_Path+Grid_Path+Get_SqlData_cxGrid(tv_institutes).Table_Name);_cxGridTableView(tv_Kind_Training,
PIs_Load,
RReg_Path+Grid_Path+Get_SqlData_cxGrid(tv_Kind_Training).Table_Name);_cxGridTableView(tv_klf,
PIs_Load,
RReg_Path+Grid_Path+Get_SqlData_cxGrid(tv_klf).Table_Name);_cxGridTableView(tv_Source_Financing,
PIs_Load, RReg_Path+Grid_Path+Get_SqlData_cxGrid(tv_Source_Financing).Table_Name);_cxGridTableView(TTree_Commission,
PIs_Load, RReg_Path+Grid_Path+Get_SqlData_cxGrid(TTree_Commission).Table_Name);
end;
{ Проверка доступности ко всей форме без
создания ее самой! }
class function TForm_Dictionaries.IsRoleAccessible:
Boolean;:= vnSessionAgent.IsRoleSomehowAccessible('', '',
Action_Q_Edit_Spec)vnSessionAgent.IsRoleSomehowAccessible('', '',
Action_Q_Edit_Groups)vnSessionAgent.IsDBA;;
{ Проверка
прав
}TForm_Dictionaries.Refresh_Roles;DBA: boolean;
{ Проверка
наличия
ролей
}:= vnSessionAgent.IsDBA;_Spec := vnSessionAgent.IsRoleSomehowAccessible('',
'', Action_Q_Edit_Spec) or DBA;_Groups :=
vnSessionAgent.IsRoleSomehowAccessible('', '', Action_Q_Edit_Groups) or
DBA;PageControl_Main.ActivePageIndex = 1cxPageControl3Change(cxPageControl3);;
{ Установка
доступности
добавления
}TForm_Dictionaries.Allow_Insert(TV: TcxCustomGridTableView; Roles: array of
boolean);i: integer;: boolean;_TableView :=
Get_SqlData_cxGrid(TV);(FSqlData_TableView <> nil) and (Length(Roles)
> 0)begin // 1not FSqlData_TableView.IsFirstReadbegin // 2:= False;i := 0 to
Length(Roles) - 1Allow := Allow or Roles[i];_TableView.ActionInsert.Enabled :=
Allow;// 2FSqlData_TableView.ActionInsert.Enabled := False;
end; // 1;
{ Установка доступности редактирования таблицы
(с документом) }
function
TForm_Dictionaries.Allow_Editing(TV: TcxCustomGridTableView; Status_Column:
TcxGridColumn;_ERP_Column: TcxGridColumn; Roles: array of boolean):
boolean;status, id_erp: string;: integer;: boolean;_TableView :=
Get_SqlData_cxGrid(TV);(FSqlData_TableView <> nil) and (Length(Roles)
> 0)begin // 1(TV.DataController.FocusedRecordIndex <> -1)begin // 2:=
VarToStr(TV.DataController.Values[TV.DataController.FocusedRecordIndex
,Status_Column.Index]);_erp :=
VarToStr(TV.DataController.Values[TV.DataController.FocusedRecordIndex
,ID_ERP_Column.Index]);:= False;i :=
0 to Length(Roles) - 1Allow := Allow or Roles[i];:= (status = '2') and (id_erp
= vnSessionAgent.ID_ERP_User) and Allow;// 2Result := False;; // 1
end;
{ Установка доступности редактирования таблицы
(без документа) }
function
TForm_Dictionaries.Allow_Editing(TV: TcxCustomGridTableView; Roles: array of
boolean): boolean;i: integer;: boolean;_TableView :=
Get_SqlData_cxGrid(TV);(FSqlData_TableView <> nil) and (Length(Roles)
> 0)begin // 1:= False;i := 0 to Length(Roles) - 1Allow := Allow or
Roles[i];:= (TV.DataController.FocusedRecordIndex <> -1) and Allow;//
1Result := False;;
{ Установка доступности удаления из таблицы (с
документом) }
procedure TForm_Dictionaries.Allow_Delete(TV:
TcxCustomGridTableView; Status_Column: TcxGridColumn;_ERP_Column:
TcxGridColumn; Roles: array of boolean);i: integer;: boolean;_TableView :=
Get_SqlData_cxGrid(TV);(FSqlData_TableView <> nil) and (Length(Roles) >
0)begin // 1:= False;i := 0 to Length(Roles) - 1Allow := Allow or
Roles[i];_TableView.ActionDelete.Enabled := Is_Value(Status_Column, '2',
false)Is_Value(ID_ERP_Column, vnSessionAgent.ID_ERP_User,
false)(TV.Controller.SelectedRecordCount > 0) and Allow;
end; // 1;
{ Установка доступности удаления из таблицы (без
документа) }
procedure
TForm_Dictionaries.Allow_Delete(TV: TcxCustomGridTableView; Roles: array of
boolean);i: integer;: boolean;_TableView :=
Get_SqlData_cxGrid(TV);(FSqlData_TableView <> nil) and (Length(Roles)
> 0)begin // 1:= False;i := 0 to Length(Roles) - 1Allow := Allow or
Roles[i];_TableView.ActionDelete.Enabled := (TV.Controller.SelectedRecordCount
> 0)Allow;; // 1;TForm_Dictionaries.Before_Delete_Exchange(Sender:
TSqlData_cxGridTableView;: Integer; var ExchangeParameters:
OleVariant);Sender.GridTableView = tv_specwith
Sender.GridTableView.DataController do:=
CreateVarAr([Values[FocusedRecordIndex,
tv_Spec_ID.Index]]);;TForm_Dictionaries.tv_ed_groupEditing(Sender:
TcxCustomGridTableView;: TcxCustomGridTableItem; var AAllow:
Boolean);_Editing(Sender,
[REdit_Groups]);;TForm_Dictionaries.tv_ed_groupKeyDown(Sender: TObject; var
Key: Word;: TShiftState);Key = VK_INSERTAllow_Insert(tv_ed_group,
[REdit_Groups]);;TForm_Dictionaries.tv_ed_groupMouseDown(Sender: TObject;
Button: TMouseButton;: TShiftState; X, Y: Integer);Button =
mbRightAllow_Insert(tv_ed_group,
[REdit_Groups]);;TForm_Dictionaries.tv_ed_groupSelectionChanged(:
TcxCustomGridTableView);Sender = TTree_Commissionwith
TTree_Commission.Controller do_SqlData_cxGrid(TTree_Commission).ActionDelete.Enabled
:=
(SelectedRowCount >
0)Get_SqlData_cxGrid(TTree_Commission).ActionInsert.EnabledIs_Value(Tree_Commission_Status_Order,
'2', False)(vnSessionAgent.IsDBA or vnSessionAgent.IsRoleAccessible('', '',
'902'
,
[VarToStr(SelectedRows[0].Values[Tree_Commission_ID_MT.Index])]
,
[VarToStr(SelectedRows[0].Values[Tree_Commission_ID_MO.Index])]
,
[VarToStr(SelectedRows[0].Values[Tree_Commission_ID_ERP.Index])]))Sender =
TTree_Memberswith TTree_Members.Controller do_SqlData_cxGrid(TTree_Members).ActionDelete.Enabled
:=
(SelectedRowCount >
0)Get_SqlData_cxGrid(TTree_Members).ActionInsert.EnabledIs_Value(Tree_Members_Start,
'2', False)(vnSessionAgent.IsDBA or vnSessionAgent.IsRoleAccessible('', '',
'902'
, [VarToStr(SelectedRows[0].Values[Tree_Members_ID_MT.Index])]
,
[VarToStr(SelectedRows[0].Values[Tree_Members_ID_MO.Index])]
,
[VarToStr(SelectedRows[0].Values[Tree_Members_ID_ERP.Index])]))Allow_Delete(Sender,
[REdit_Groups]);;TForm_Dictionaries.tv_SpecEditing(Sender: TcxCustomGridTableView;:
TcxCustomGridTableItem; var AAllow:
Boolean);_Editing(Sender,[REdit_Spec]);;TForm_Dictionaries.tv_SpecKeyDown(Sender:
TObject; var Key: Word;: TShiftState);Key = VK_INSERTAllow_Insert(tv_spec,
[REdit_Spec]);;TForm_Dictionaries.tv_SpecMouseDown(Sender: TObject; Button:
TMouseButton;: TShiftState; X, Y: Integer);Button =
mbRightAllow_Insert(tv_spec,
[REdit_Spec]);;TForm_Dictionaries.tv_SpecSelectionChanged(Sender:
TcxCustomGridTableView);_Delete(Sender, [REdit_Spec]);;TForm_Dictionaries.tv_spec_divEditing(Sender:
TcxCustomGridTableView;: TcxCustomGridTableItem; var AAllow:
Boolean);_Editing(Sender,
[REdit_Spec]);;TForm_Dictionaries.tv_spec_divKeyDown(Sender: TObject; var Key:
Word;: TShiftState);Key = VK_INSERTAllow_Insert(tv_spec_div, [REdit_Spec]);;TForm_Dictionaries.tv_spec_divMouseDown(Sender:
TObject; Button: TMouseButton;: TShiftState; X, Y: Integer);Button =
mbRightAllow_Insert(tv_spec_div,
[REdit_Spec]);;TForm_Dictionaries.tv_spec_divSelectionChanged(:
TcxCustomGridTableView);_Delete(Sender,
[REdit_Spec]);;TForm_Dictionaries.tv_spec_div_institutePropertiesInitPopup(Sender:
TObject);_tv_intitutesExecute(self);;TForm_Dictionaries.tv_spec_div_kind_trainingPropertiesInitPopup(:
TObject);_tv_kind_trainingExecute(self);;TForm_Dictionaries.tv_spec_div_name_divPropertiesInitPopup(Sender:
TObject);_tv_org_divExecute(self);;TForm_Dictionaries.tv_spec_div_name_specPropertiesInitPopup(Sender:
TObject);_tv_specExecute(self);;TForm_Dictionaries.tv_spec_div_sourcePropertiesInitPopup(Sender:
TObject);_tv_source_finansingExecute(self);;
{ Настройка
списков
}TForm_Dictionaries.Init(AReg_Path: String = Reg_Path; AForm_SE: TForm_SE =
nil);_New_Commission_Start.Date := Date;_New_Member_Start.Date := Date;AForm_SE
<> nil then_Form_SE := AForm_SE;not assigned(Current_Form_SE)
then_Form_SE := TForm_SE.Create(self);_Reg_Path := AReg_Path;
{ Описание
для
различных
оберток
}
//
*****************************************************************************_Institute_Filter
:= TContainerWrappers.Create;_Institute_Filter.AddPopupEdit(PopupEdit_Filter_Org,
false, false, cxGrid_Institutes,_institutes ,tv_institutes_ID,
[tv_institutes_Abbr, tv_institutes_Name],
'');_Institute_Filter.OnChangedValueWrapper := DoChanged_cW_Intitute_Filter;;
// *****************************************************************************
//
*****************************************************************************_New_Spec
:= TContainerWrappers.Create;_New_Spec.AddCustomEdit(cxTextEditNew_Spec_Name,
true, false, '');_New_Spec.AddCustomEdit(cxTextEditNew_Spec_Quality, false,
false, '');_New_Spec.OnChangeWrapper := DoChanged_cW_New_Spec;
//
*****************************************************************************
//
*****************************************************************************_New_Ed_Group
:=
TContainerWrappers.Create;_New_Ed_Group.AddCustomEdit(cxTextEdit_New_Ed_Group_Name,
true, false, '');_New_Ed_Group.AddCustomEdit(cxDateEdit_New_Ed_Group_D_Start,
true, false, '');_New_Ed_Group.AddCustomEdit(cxDateEdit_New_Ed_Group_D_End,
false, false, '');_New_Ed_Group.OnChangeWrapper := DoChanged_cW_New_Ed_Group;
//
*****************************************************************************
//
*****************************************************************************_New_Spec_Div
:=
TContainerWrappers.Create;_New_Spec_Div.AddPopupEdit(cxPopupEditNew_Spec_Div_Institute,
true, false, cxGrid_Institutes,_institutes, tv_institutes_ID,
[tv_institutes_Abbr, tv_institutes_Name],
'');_New_Spec_Div.AddPopupEdit(cxPopupEditNew_Spec_Div_Div, true, false,
cxGrid_Org_Division,_Org_Division, tv_Org_Division_ID, [tv_Org_Division_Abbr,
tv_Org_Division_Name],
'');_New_Spec_Div.AddPopupEdit(cxPopupEditNew_Spec_Div_Spec, true, false,
cxGrid_Spec,_spec, tv_Spec_ID, [tv_Spec_Name], '');_New_Spec_Div.AddPopupEdit(cxPopupEditNew_Spec_Div_KT,
true, false, cxGrid_Kind_Training,_Kind_Training,
tv_Kind_Training_IDK_TRAINING, [tv_Kind_Training_Name],
'');_New_Spec_Div.AddCustomEdit(cxDateEditNew_Spec_Div_D_Start, true, false,
'');_New_Spec_Div.AddCustomEdit(cxDateEditNew_Spec_Div_D_End, false, false,
'');_New_Spec_Div.AddPopupEdit(cxPopupEditNew_Spec_Div_SF, false, false,
cxGrid_Source_Financing,_Source_Financing, tv_Source_Financing_ID,
[tv_Source_Financing_Name], '');_New_Spec_Div.OnChangeWrapper := DoChanged_cW_New_Spec_Div;
//
*****************************************************************************
// ---------------------------------------------
// добавление подразделение-организаторов
обучения
//
---------------------------------------------Get_SqlData_cxGrid(tv_Org_Division)
= nil
then with
TSqlData_cxGridTableView.Create(tv_Org_Division)begin_Name := 'Организаторы
обучения';:=
false;_Select := Get_List_Divisions;:= True;:=
CreateVarAr([IDK_Level_Spec]);_Columns.Add(tv_Org_Division_Abbr);_Columns.Add(tv_Org_Division_Name);_Columns.Add(tv_Org_Division_ID);_Columns.Add(tv_Org_Division_ID);_Column
:= tv_Org_Division_Abbr;.Add(tv_Org_Division_Abbr);.Add(tv_Org_Division_Name);;
//
---------------------------------------------
// ---------------------------------------------
// добавление
институтов
//
---------------------------------------------Get_SqlData_cxGrid(tv_institutes)
= nilwith TSqlData_cxGridTableView.Create(tv_institutes)begin:= false;_Name :=
'Институты';_Select
:= Get_List_Institutes;:= True;:=
CreateVarAr([IDK_Level_Spec]);_Columns.Add(tv_institutes_Abbr);_Columns.Add(tv_institutes_Name);_Columns.Add(tv_institutes_ID);_Columns.Add(tv_institutes_ID);_Column
:= tv_institutes_Abbr;.Add(tv_institutes_Abbr);.Add(tv_institutes_Name);;
// ---------------------------------------------
//
---------------------------------------------
// добавление
специальностей
//
---------------------------------------------Get_SqlData_cxGrid(tv_Spec) =
nilwith TSqlData_cxGridTableView.Create(tv_Spec)begin:= true;_Name := 'Специальности';_Select
:= Get_List_Spec_By_Params;_Update := d_P_SPECIALITY;_Delete := Delete_Spec;:=
True;_Delete_Exchange := Before_Delete_Exchange;:=
CreateVarAr([IDK_Level_Spec,'']);_Columns.Add(tv_Spec_Name,
2);_Columns.Add(tv_Spec_Q, 1);_Columns.Add(tv_Spec_ID,
0);_Columns.Add(tv_Spec_IDK_Level_Spec,
6);_Columns.Add(tv_Spec_id_discipline);_Columns.Add(tv_Spec_idk_discipline);_Columns.Add(tv_Spec_ID,
0);_Column := tv_Spec_Name;.Add(tv_Spec_Name);.OnExecute :=
Action_Insert_Spec.OnExecute;
end;
// ---------------------------------------------
// добавление организаторов обучения
(специальности подразделений)
//
---------------------------------------------Get_SqlData_cxGrid(tv_spec_div) =
nilwith TSqlData_cxGridTableView.Create(tv_spec_div)begin:= true;:= false;_Name
:= 'Специальности
подразделений';_Select
:= Spec_div;_Update := d_P_SPECIALITIES_DIVISION;:= True;:=
CreateVarAr([IDK_Level_Spec,'']);_Column := tv_spec_div_institute;:=
tv_spec_div_institute;Select_Columnsbegin(tv_spec_div_name_spec,1);(tv_spec_div_name_div,2);(tv_spec_div_kind_training,3);(tv_spec_div_institute,6);(tv_spec_div_source,12);(tv_spec_div_d_start,4);(tv_spec_div_d_end,5);(tv_spec_div_id_spec_div,0);(tv_spec_div_id_spec,1);(tv_spec_div_id_d,2);(tv_spec_div_idk_training,3);(tv_spec_div_id_d_institute,6);(tv_spec_div_id_source,12);(tv_spec_div_idk_level_formation,8);;_Columns.Add(tv_spec_div_id_spec_div,0);_Columns.Add(tv_spec_div_source,12);PopupColumnsList.Add(tv_spec_div_institute)begin:=
tv_spec_div_id_d_institute;:= tv_institutes_ID;:=
tv_institutes_Name;;PopupColumnsList.Add(tv_spec_div_name_div)begin:=
tv_spec_div_id_d;:= tv_Org_Division_ID;:=
tv_Org_Division_Name;;PopupColumnsList.Add(tv_spec_div_name_spec)begin:=
tv_spec_div_id_spec;:= tv_Spec_ID;:= tv_Spec_Name;;PopupColumnsList.Add(tv_spec_div_kind_training)begin:=
tv_spec_div_idk_training;:= tv_Kind_Training_IDK_TRAINING;:=
tv_Kind_Training_Name;;PopupColumnsList.Add(tv_spec_div_source)begin:=
tv_spec_div_id_source;:= tv_Source_Financing_ID;:= tv_Source_Financing_Name;;Insert_Columnsbegin(tv_spec_div_id_spec,1);(tv_spec_div_id_d,2);(tv_spec_div_idk_training,3);(tv_spec_div_d_start,4);(tv_spec_div_d_end,5);(tv_spec_div_id_d_institute,6);(tv_spec_div_idk_level_formation,8);(tv_spec_div_id_source,12);;.Visible
:= True;.OnExecute :=
Action_Insert_Spec_Div.OnExecute;.Add(ActionInsert);.Add(ActionDelete);.Add(nil);.Add(Clear_Columns.ClearActions[tv_spec_div_source]);.Add(nil);.Add(ActionUpdate);:=
lmLastChoice;:= OnChoiceGridRecord_tv_spec_div;;
// ---------------------------------------------
//------------------------------------------------------------
//Вид
обученияTSqlData_cxGridTableView.Create(tv_Kind_Training)begin:=False;_Name:='Виды
обучения';_Select:=Kind_Training;:=
True;:=False;Select_Columnsbegin(tv_Kind_Training_IDK_TRAINING);(tv_Kind_Training_Name);;_Columns.Add(tv_Kind_Training_IDK_TRAINING);_Column:=tv_Kind_Training_Name;:=tv_Kind_Training_Name;;
//-----------------------------------------------------------
//------------------------------------------------------------
//Вид
уровня
образованияTSqlData_cxGridTableView.Create(tv_klf)begin:=False;_Name:='Виды
уровня
образования';_Select:=K_L_F;:=
True;:=False;Select_Columnsbegin(tv_klf_name);(tv_klf_idk_lf);(tv_klf_qualifer);;_Columns.Add(tv_klf_idk_lf);_Column
:= tv_klf_name;:= tv_klf_name;;
//-----------------------------------------------------------
//-----------------------------------------
//Источник
финансированияGet_SqlData_cxGrid(tv_Source_Financing)
= nilwith TSqlData_cxGridTableView.Create(tv_Source_Financing)
do begin_Name:='Источники финансирования';
GUID_Select:=S_F;:= True;:= false;:=
1;_Columns.Add(tv_Source_Financing_Abbreviation);_Columns.Add(tv_Source_Financing_Name);_Columns.Add(tv_Source_Financing_Abbr_Div);_Columns.Add(tv_Source_Financing_Division);_Columns.Add(tv_Source_Financing_Kind_Source);_Columns.Add(tv_Source_Financing_Activity);_Columns.Add(tv_Source_Financing_Date_Close);_Columns.Add(tv_Source_Financing_ID);_Columns.Add(tv_Source_Financing_ID_D);_Columns.Add(tv_Source_Financing_ID_Kind_Source);_Columns.Add(tv_Source_Financing_ID_Activity);_Columns.Add(tv_Source_Financing_ID);.Add(ActionUpdate);_Column:=tv_Source_Financing_Abbreviation;:=tv_Source_Financing_Name;;
//------------------------------------------------------------
//
---------------------------------------------
//Учебные
группыTSqlData_cxGridTableView.Create(tv_ed_group)begin:=True;_Name:='Учебные
группы';:=
CreateVarAr(['']);_Select := Ed_Groups;_Update := d_P_EDUCATIONAL_GROUP;:=
True;:=False;Select_Columnsbegin(tv_ed_group_name,1);(tv_ed_group_kind_group,8);(tv_ed_group_d_start,4);(tv_ed_group_d_end,5);(tv_ed_group_id_ed_group,0);(tv_ed_group_id_spec_div,2);(tv_ed_group_idk_group,8);(tv_ed_group_level_group,3);;Insert_Columnsbegin(tv_ed_group_name,1);(tv_ed_group_id_spec_div,2);(tv_ed_group_level_group,3);(tv_ed_group_d_start,4);(tv_ed_group_d_end,5);(tv_ed_group_idk_group,8);;_Columns.Add(tv_ed_group_id_ed_group,0);.OnExecute
:=
Action_Insert_Ed_Group.OnExecute;.Add(ActionInsert);.Add(ActionDelete);.Add(nil);.Add(ActionUpdate);_Column
:= tv_ed_group_name;:= tv_ed_group_name;;
// КомиссииGet_SqlData_cxGrid(TTree_Commission)
= nilwith TSqlData_cxGridTableView.Create(TTree_Commission)begin_Name :=
TTree_Commission.Bands.Items[0].Caption;_Select := Get_List_Commissions_By_ID_D_And_ID_Spec;_Update
:= d_P_COMMISSION;:= True;:= lmLastChoice;:= OnChoiceGridRecord_tv_spec_div;:=
2;.Add([1,
2]);_Columns.Add(Tree_Commission_Order);_Columns.Add(Tree_Commission_Kind);_Columns.Add(Tree_Commission_User);_Columns.Add(Tree_Commission_Start,
4);_Columns.Add(Tree_Commission_End,
5);_Columns.Add(Tree_Commission_ID_Paragraph,
2);_Columns.Add(Tree_Commission_ID_Order,
2);_Columns.Add(Tree_Commission_IDK_Order,
2);_Columns.Add(Tree_Commission_Status_Order, 2);_Columns.Add(Tree_Commission_ID_ERP,
2);_Columns.Add(Tree_Commission_ID_MT, 2);_Columns.Add(Tree_Commission_ID_MO,
2);_Columns.Add(Tree_Commission_ID_Spec, 8);_Columns.Add(Tree_Commission_ID_D,
9);_Columns.Add(Tree_Commission_ID, 1);_Columns.Add(Tree_Commission_ID_Kind,
3);_Columns.Add(Tree_Commission_ID,
1);_Columns.Add(Tree_Commission_ID_Paragraph,
2);_Columns.Add(Tree_Commission_ID_Spec, 8);_Columns.Add(Tree_Commission_ID_D,
9);_Columns.Add(Tree_Commission_ID_Kind, 3);_Columns.Add(Tree_Commission_Start,
4);_Columns.Add(Tree_Commission_End, 5);.Column_ID_order :=
Tree_Commission_ID_Order;.Column_ID_paragraph :=
Tree_Commission_ID_Paragraph;.Column_IDk_order :=
Tree_Commission_IDK_Order;.Column_ID_erp_user :=
Tree_Commission_ID_ERP;.Column_Status_Order := Tree_Commission_Status_Order;.Column_User_Name
:= Tree_Commission_User;.Column_Status_Text :=
Tree_Commission_Order;.Column_name_Kind_paragraph :=
Tree_Commission_Kind;.Add(ActionInsert);.Add(ActionDelete);.Add(nil);.Add(OptionsOrder.ActionNavigate);.Add(OptionsOrder.ActionPreview);.Add(nil);.Add(ActionUpdate);_Column
:= Tree_Commission_Order;:= Tree_Commission_Order;.OnExecute :=
Action_New_Commission.OnExecute;_New_Commission :=
TContainerWrappers.Create;_New_Commission.AddButtonOrderEdit(ButtonEdit_New_Commission,
True, False, ''
, ['306']
, [OBE_CHOOSE, OBE_NEW,
OBE_INNAVIGATE, OBE_PREVIEW]
, [nil, nil, nil,
nil]);_New_Commission.AddCustomEdit(DateEdit_New_Commission_Start, true, false,
'');_New_Commission.AddCustomEdit(DateEdit_New_Commission_End, false, false,
'');_New_Commission.ActionEnter := Action_Insert_New_Commission;;
// Должности
в
комиссияхGet_SqlData_cxGrid(TTree_Post)
= nilwith TSqlData_cxGridTableView.Create(TTree_Post)begin_Name :=
TTree_Post.Bands.Items[0].Caption;_Select := Get_Posts_For_Members;:= True;:=
false;_Columns.Add(Tree_Post_Name);_Columns.Add(Tree_Post_ID);_Columns.Add(Tree_Post_ID);.Add(ActionUpdate);_Column
:= Tree_Post_Name;:= Tree_Post_Name;;
// Члены
КомиссииGet_SqlData_cxGrid(TTree_Members)
= nilwith TSqlData_cxGridTableView.Create(TTree_Members)begin_Name :=
TTree_Members.Bands.Items[0].Caption;_Select :=
Get_Members_Commission_By_ID;_Update := d_P_COMMISSION_MEMBERS;:= True;:=
1;.Add([1]);_Columns.Add(Tree_Members_Order);_Columns.Add(Tree_Members_Kind);_Columns.Add(Tree_Members_Post,
7);_Columns.Add(Tree_Members_FIO, 1);_Columns.Add(Tree_Members_User,
3);_Columns.Add(Tree_Members_Start, 4);_Columns.Add(Tree_Members_End,
6);_Columns.Add(Tree_Members_ID_Paragraph,
3);_Columns.Add(Tree_Members_ID_Order, 3);_Columns.Add(Tree_Members_IDK_Order,
3);_Columns.Add(Tree_Members_Status_Order, 3);_Columns.Add(Tree_Members_ID_ERP,
3);_Columns.Add(Tree_Members_ID_MT, 3);_Columns.Add(Tree_Members_ID_MO,
3);_Columns.Add(Tree_Members_ID_Post,
7);_Columns.Add(Tree_Members_ID_Commission, 2);_Columns.Add(Tree_Members_ID_E, 1);_Columns.Add(Tree_Members_ID,
0);_Columns.Add(Tree_Members_ID, 0);_Columns.Add(Tree_Members_ID_Paragraph,
3);_Columns.Add(Tree_Members_ID_Commission,
2);_Columns.Add(Tree_Members_ID_Post, 7);_Columns.Add(Tree_Members_ID_E,
1);_Columns.Add(Tree_Members_Start, 4);_Columns.Add(Tree_Members_End,
6);.Column_ID_order := Tree_Members_ID_Order;.Column_ID_paragraph :=
Tree_Members_ID_Paragraph;.Column_IDk_order :=
Tree_Members_IDK_Order;.Column_ID_erp_user :=
Tree_Members_ID_ERP;.Column_Status_Order := Tree_Members_Status_Order;.Column_User_Name
:= Tree_Members_User;.Column_Status_Text :=
Tree_Members_Order;.Column_name_Kind_paragraph :=
Tree_Members_Kind;.Add(ActionInsert);.Add(ActionDelete);.Add(nil);.Add(OptionsOrder.ActionNavigate);.Add(OptionsOrder.ActionPreview);.Add(nil);.Add(ActionUpdate);PopupColumnsList.Add(Tree_Members_Post)
do:= Tree_Members_ID_Post;:= Tree_Post_ID;:=
Tree_Post_Name;;PopupColumnsList.Add(Tree_Members_FIO) do:=
Tree_Members_ID_E;:= Current_Form_SE.cxGrid_FIO_ID_E;:= Current_Form_SE.cxGrid_FIO_Full;;_Column
:= Tree_Members_Post;.OnExecute :=
Action_New_Member.OnExecute;(Tree_Members_FIO.Properties).PopupControl
:=_Form_SE;_New_Member_FIO.Properties.PopupControl :=
Current_Form_SE;_New_Member := TContainerWrappers.Create;_New_Member.AddButtonOrderEdit(ButtonEdit_New_Member,
True, False, ''
, ['306']
, [OBE_CHOOSE, OBE_NEW,
OBE_INNAVIGATE, OBE_PREVIEW]
, [nil, nil, nil,
nil]);_New_Member.AddPopupEdit(PopupEdit_New_Member_FIO, True, False
, Current_Form_SE.cxGrid1,
Current_Form_SE.cxGrid_FIO
, Current_Form_SE.cxGrid_FIO_ID_E,
[Current_Form_SE.cxGrid_FIO_Full],
'');_New_Member.AddPopupEdit(PopupEdit_New_Member_Post, True, False
, nil, nil, Tree_Post_ID,
[Tree_Post_Name], '');_New_Member.AddCustomEdit(DateEdit_New_Member_Start,
true, false, '');_New_Member.AddCustomEdit(DateEdit_New_Member_End, false,
false, '');_New_Member.ActionEnter := Action_Insert_New_Member;;
//-----------------------------------------------------------
{ Cкрываем
ненужные
страницы
}_Editing.TabVisible := False;_Add.TabVisible := False;
{ Прочитаем
параметры
из
реестра
}_Restore_Params(Curr_Reg_Path,
True);;TForm_Dictionaries.Action_Insert_Ed_GroupExecute(Sender: TObject);
//const Name = 'Учебные
группы';:
TSForm;// 1:= CreateSForm(self, 'fNew_Ed_Group'
, cxTabSheet_Ed_Group.Caption
, Add_Path +
cxTabSheet_Ed_Group.Caption, Panel_New_Ed_Group,
tdb_Apply);VarToStr(cW_New_Ed_Group.Wrappers[cxDateEdit_New_Ed_Group_D_Start].Value)
= ''cW_New_Ed_Group.Wrappers[cxDateEdit_New_Ed_Group_D_Start].Value
:=(Date);_New_Ed_Group.OnChangeWrapper(nil);.Position :=
poScreenCenter;mf.ShowModal = mrOkbegin // 2_TableView :=
Get_SqlData_cxGrid(tv_ed_group);FSqlData_TableView <> nilbegin //
3_TableView.Insert_New(([_New_Ed_Group.Wrappers[cxTextEdit_New_Ed_Group_Name].Value
,tv_spec_div.DataController.Values[tv_spec_div.DataController.FocusedRecordIndex
,tv_spec_div_id_spec_div.Index]
,'1'
,cW_New_Ed_Group.Wrappers[cxDateEdit_New_Ed_Group_D_Start].Value
,cW_New_Ed_Group.Wrappers[cxDateEdit_New_Ed_Group_D_End].Value
,'5'
])); // 3; // 2// 1assigned(mf)FreeAndNil(mf);;
// 1;
{ Добавить
новую
комиссию}TForm_Dictionaries.Action_Insert_New_CommissionExecute(:
TObject);_New_Commission.ChangesAcceptWrappers;cW_New_Commission,
Get_SqlData_cxGrid(TTree_Commission)
doInsert_New(CreateVarAr([VarToStr(Wrappers[ButtonEdit_New_Commission].Value)
, VarToStr(Parameters[2])
, VarToStr(Parameters[1])
, '3'
,
VarToStr(Wrappers[DateEdit_New_Commission_Start].Value)
,
VarToStr(Wrappers[DateEdit_New_Commission_End].Value)]))(Panel_New_Commission).ModalResult
:= mrok;(cW_New_Commission.Wrappers[ButtonEdit_New_Commission]).IsEmpty :=
False;
Read_Data;;;
{ Добавить члена комиссии}
procedure
TForm_Dictionaries.Action_Insert_New_MemberExecute(Sender:
TObject);_New_Member.ChangesAcceptWrappers;cw_New_Member, Get_SqlData_cxGrid(TTree_Members)
doInsert_New(CreateVarAr([VarToStr(Wrappers[ButtonEdit_New_Member].Value)
, VarToStr(Parameters[1])
,
VarToStr(Wrappers[PopupEdit_New_Member_Post].Value)
,
VarToStr(Wrappers[PopupEdit_New_Member_FIO].Value)
,
VarToStr(Wrappers[DateEdit_New_Member_Start].Value)
,
VarToStr(Wrappers[DateEdit_New_Member_End].Value)]))(Panel_New_Member).ModalResult
:= mrok;(cw_New_Member.Wrappers[ButtonEdit_New_Member]).IsEmpty :=
False;_Data;;;TForm_Dictionaries.Action_Insert_SpecExecute(Sender: TObject);
//const Name = 'Программа
обучения';:
TSForm;// 1:= CreateSForm(self, 'fNew_Spec', cxTabSheet_Add_Spec.Caption
, Add_Path +
cxTabSheet_Add_Spec.Caption, Panel_New_Spec,
tdb_Apply);_New_Spec.OnChangeWrapper(nil);.Position := poScreenCenter;mf.ShowModal
= mrOkbegin // 2_TableView := Get_SqlData_cxGrid(tv_Spec);FSqlData_TableView
<> nilbegin //
3MSystemServices.ExchangeData(Add_Spec,([cW_New_Spec.Wrappers[cxTextEditNew_Spec_Name].Value
,cW_New_Spec.Wrappers[cxTextEditNew_Spec_Quality].Value
,IDK_Level_Spec
,IDK_Discipline
])
,'Добавление
программы
обучения.')begin
// 4_TableView.Read_Data;(tv_spec,[tv_Spec_Name,tv_Spec_Q]
,VarArrayOf([cW_New_Spec.Wrappers[cxTextEditNew_Spec_Name].Value
,cW_New_Spec.Wrappers[cxTextEditNew_Spec_Quality].Value])
,true);; // 4; // 3; // 2//
1assigned(mf)FreeAndNil(mf);; //
1;TForm_Dictionaries.Action_Insert_Spec_DivExecute(Sender: TObject);
//const Name = 'Организаторы
обучения';:
TSForm;// 1:= CreateSForm(self, 'fNew_Spec_Div'
, cxTabSheet_New_Spec_Div.Caption
, Add_Path +
cxTabSheet_New_Spec_Div.Caption, Panel_New_Spec_Div,
tdb_Apply);VarToStr(cW_New_Spec_Div.Wrappers[cxDateEditNew_Spec_Div_D_Start].Value)
= ''cW_New_Spec_Div.Wrappers[cxDateEditNew_Spec_Div_D_Start].Value :=
DateToStr(Date);_New_Spec_Div.OnChangeWrapper(nil);.Position :=
poScreenCenter;mf.ShowModal = mrOkbegin // 2_TableView :=
Get_SqlData_cxGrid(tv_spec_div);FSqlData_TableView <> nilbegin //
3_TableView.Insert_New(([_New_Spec_Div.Wrappers[cxPopupEditNew_Spec_Div_Spec].Value
,cW_New_Spec_Div.Wrappers[cxPopupEditNew_Spec_Div_Div].Value
,cW_New_Spec_Div.Wrappers[cxPopupEditNew_Spec_Div_KT].Value
,cW_New_Spec_Div.Wrappers[cxDateEditNew_Spec_Div_D_Start].Value
,cW_New_Spec_Div.Wrappers[cxDateEditNew_Spec_Div_D_End].Value
,cW_New_Spec_Div.Wrappers[cxPopupEditNew_Spec_Div_Institute].Value
,IDK_Level_Formation
,cW_New_Spec_Div.Wrappers[cxPopupEditNew_Spec_Div_SF].Value
])); // 3; // 2//
1assigned(mf)FreeAndNil(mf);; // 1;
{ Добавление
новой
комиссии}TForm_Dictionaries.Action_New_CommissionExecute(Sender:
TObject);new_form: TSForm;// 1_form := CreateSForm(self, 'fNew_Commission'
, cxTabSheet_New_Sommission.Caption
, Add_Path +
cxTabSheet_New_Sommission.Caption, Panel_New_Commission,
tdb_Apply);_form.Position := poScreenCenter;_form.PanelButtons.auto_cxOkButton.Action
:= cW_New_Commission.ActionEnter;_form.ShowModal;//
1assigned(new_form)FreeAndNil(new_form);; // 1;
{ Добавление
члена
комиссии}TForm_Dictionaries.Action_New_MemberExecute(Sender:
TObject);new_form: TSForm;// 1_form := CreateSForm(self, 'fNew_Member'
, cxTabSheet_New_Member.Caption
, Add_Path +
cxTabSheet_New_Member.Caption, Panel_New_Member, tdb_Apply);_form.Position :=
poScreenCenter;_form.PanelButtons.auto_cxOkButton.Action :=
cw_New_Member.ActionEnter;_form.ShowModal;//
1assigned(new_form)FreeAndNil(new_form);; // 1;
{ Обновим
нужные
данные}TForm_Dictionaries.cxPageControl3Change(Sender:
TObject);Get_SqlData_cxGrid(tv_ed_group) <> nilSender =
cxPageControl3cxPageControl3.ActivePageIndex = 0Get_SqlData_cxGrid(tv_ed_group).Read_Data_FirstGet_SqlData_cxGrid(TTree_Commission).Read_Data_First;;TForm_Dictionaries.cxPopupEditNew_Spec_Div_DivPropertiesInitPopup(:
TObject);_tv_org_divExecute(self);;TForm_Dictionaries.cxPopupEditNew_Spec_Div_InstitutePropertiesInitPopup(:
TObject);_tv_intitutesExecute(self);;TForm_Dictionaries.cxPopupEditNew_Spec_Div_KTPropertiesInitPopup(:
TObject);_tv_kind_trainingExecute(self);;TForm_Dictionaries.cxPopupEditNew_Spec_Div_SFPropertiesInitPopup(:
TObject);_tv_source_finansingExecute(self);;TForm_Dictionaries.cxPopupEditNew_Spec_Div_SpecPropertiesInitPopup(:
TObject);_tv_specExecute(self);;TForm_Dictionaries.Fill_tv_intitutesExecute(Sender:
TObject);_TableView := Get_SqlData_cxGrid(tv_institutes);(FSqlData_TableView <>
nil) and
FSqlData_TableView.IsFirstReadFSqlData_TableView.Read_Data_First;;TForm_Dictionaries.Fill_tv_kind_trainingExecute(Sender:
TObject);_TableView := Get_SqlData_cxGrid(tv_Kind_Training);(FSqlData_TableView
<> nil) and FSqlData_TableView.IsFirstReadFSqlData_TableView.Read_Data_First;;TForm_Dictionaries.Fill_tv_k_l_fExecute(Sender:
TObject);_TableView := Get_SqlData_cxGrid(tv_klf);(FSqlData_TableView <>
nil) and
FSqlData_TableView.IsFirstReadFSqlData_TableView.Read_Data_First;;TForm_Dictionaries.Fill_tv_org_divExecute(Sender:
TObject);_TableView := Get_SqlData_cxGrid(tv_Org_Division);(FSqlData_TableView
<> nil) and
FSqlData_TableView.IsFirstReadFSqlData_TableView.Read_Data_First;;TForm_Dictionaries.Fill_tv_source_finansingExecute(Sender:
TObject);_TableView :=
Get_SqlData_cxGrid(tv_Source_Financing);(FSqlData_TableView <> nil) and
FSqlData_TableView.IsFirstReadFSqlData_TableView.Read_Data_First;;TForm_Dictionaries.Fill_tv_specExecute(Sender:
TObject);Param1: string;_TableView := Get_SqlData_cxGrid(tv_Spec);(FSqlData_TableView
<> nil)begin // 1:=
VarToStr(cW_Institute_Filter.Wrappers[PopupEdit_Filter_Org].Value);VarToStr(FSqlData_TableView.Params[1])
<> Param1begin // 2_TableView.Params[1] := Param1;_TableView.Read_Data;//
2FSqlData_TableView.IsFirstReadFSqlData_TableView.Read_Data_First;; //
1;TForm_Dictionaries.Fill_tv_spec_divExecute(Sender: TObject);Param1:
string;_TableView := Get_SqlData_cxGrid(tv_spec_div);(FSqlData_TableView
<> nil)begin // 1:= VarToStr(cW_Institute_Filter.Wrappers[PopupEdit_Filter_Org].Value);VarToStr(FSqlData_TableView.Params[1])
<> Param1begin // 2_TableView.Params[1] := Param1;_TableView.Read_Data;//
2FSqlData_TableView.IsFirstReadFSqlData_TableView.Read_Data_First;; //
1;TForm_Dictionaries.FormDestroy(Sender: TObject);
begin
{ Сохраним параметры в реестр }
Save_Restore_Params(Curr_Reg_Path,
False);;TForm_Dictionaries.FormShow(Sender: TObject);
{ Перечитываем
списки
}PageControl_Main.ActivePage =
cxTabSheet_SpecFill_tv_specExecute(self);PageControl_Main.ActivePage =
cxTabSheet_OrgFill_tv_spec_divExecute(self);;
{ Изменили
фильтр!}TForm_Dictionaries.PageControl_MainPageChanging(Sender:
TObject;: TcxTabSheet; var AllowChange: Boolean);NewPage =
cxTabSheet_SpecFill_tv_specExecute(self);NewPage =
cxTabSheet_OrgFill_tv_spec_divExecute(self);;
{ Подразделение}TForm_Dictionaries.PopupEdit_Filter_OrgPropertiesEditValueChanged(:
TObject);cW_Institute_Filter.Wrappers[PopupEdit_Filter_Org] <> nil
thenGet_SqlData_cxGrid(tv_Source_Financing).Parameters[1]
<>
VarToStr(cW_Institute_Filter.Wrappers[PopupEdit_Filter_Org].Value)_SqlData_cxGrid(tv_Source_Financing).Parameters[1]
:=(cW_Institute_Filter.Wrappers[PopupEdit_Filter_Org].Value);_SqlData_cxGrid(tv_Source_Financing).IsFirstRead
:= True;;;TForm_Dictionaries.PopupEdit_Filter_OrgPropertiesInitPopup(Sender:
TObject);_tv_intitutesExecute(self);;TForm_Dictionaries.DoChanged_cW_New_Spec(AWrapper:
TCustomEditWrapper);_OkButton(Panel_New_Spec,
cW_New_Spec.IsNotEmptyMandatory);;TForm_Dictionaries.DoChanged_cW_New_Spec_Div(AWrapper:
TCustomEditWrapper);_OkButton(Panel_New_Spec_Div,
cW_New_Spec_Div.IsNotEmptyMandatory);;TForm_Dictionaries.DoChanged_cW_New_Ed_Group(AWrapper:
TCustomEditWrapper);_OkButton(Panel_New_Ed_Group,
cW_New_Ed_Group.IsNotEmptyMandatory);;TForm_Dictionaries.DoChanged_cW_Intitute_Filter(AWrapper:
TCustomEditWrapper);PageControl_Main.ActivePage =
cxTabSheet_SpecFill_tv_specExecute(self);PageControl_Main.ActivePage =
cxTabSheet_OrgFill_tv_spec_divExecute(self);
end;
{ Выбрали новую специальность подразделения}
procedure TForm_Dictionaries.OnChoiceGridRecord_tv_spec_div(Sender:
TSqlData_cxGridTableView; AGridRecord: TcxGridDataRow);_TableView :=
Get_SqlData_cxGrid(tv_ed_group);(FSqlData_TableView <> nil) and (Sender
<> nil)Sender.GridTableView = tv_spec_divSender, GridTableView.DataController
do(LastChoiceIndex >= 0)(LastChoiceIndex <
GridTableView.DataController.RecordCount)// 1_TableView.Params[0]
:=(Values[Sender.LastChoiceIndex,
tv_spec_div_id_spec_div.Index]);_TableView.IsFirstRead :=
True;_TableView.ActionInsert.Enabled := Sender.ActionDelete.Enabled;_SqlData_cxGrid(TTree_Commission).ActionInsert.Enabled
:= Sender.ActionDelete.Enabled;_SqlData_cxGrid(TTree_Commission).Parameters[1]
:=(Values[Sender.LastChoiceIndex,
tv_spec_div_id_d_institute.Index]);Get_SqlData_cxGrid(TTree_Commission).Parameters[2]
<>(Values[Sender.LastChoiceIndex,
tv_spec_div_id_spec.Index])_SqlData_cxGrid(TTree_Commission).Parameters[2]
:=(Values[Sender.LastChoiceIndex,
tv_spec_div_id_spec.Index]);_SqlData_cxGrid(TTree_Commission).IsFirstRead :=
True;;// 1_TableView.Params[0] :=
'';_TableView.ClearData;_TableView.ActionInsert.Enabled :=
False;_SqlData_cxGrid(TTree_Commission).Parameters[1] :=
'';_SqlData_cxGrid(TTree_Commission).Parameters[2] :=
'';_SqlData_cxGrid(TTree_Commission).ClearData;_SqlData_cxGrid(TTree_Commission).ActionInsert.Enabled
:= False;;Change(cxPageControl3);Sender.GridTableView =
TTree_CommissionSender.GridTableView.DataController do(Sender.LastChoiceIndex
>= 0)(Sender.LastChoiceIndex <
RecordCount)_SqlData_cxGrid(TTree_Members).ActionInsert.Enabled := Sender.ActionDelete.Enabled;Get_SqlData_cxGrid(TTree_Members).Parameters[1]
<>(Values[Sender.LastChoiceIndex,
Tree_Commission_ID.Index])_SqlData_cxGrid(TTree_Members).Parameters[1]
:=(Values[Sender.LastChoiceIndex, Tree_Commission_ID.Index]);_SqlData_cxGrid(TTree_Members).Read_Data;Get_SqlData_cxGrid(TTree_Members).Read_Data_First_SqlData_cxGrid(TTree_Members).Parameters[1]
:=
'';_SqlData_cxGrid(TTree_Members).ClearData;_SqlData_cxGrid(TTree_Members).ActionInsert.Enabled
:= False;;;;.Plan, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms,, ExtCtrls, cxPC, cxControls, cxSplitter, cxStyles, cxCustomData,,
cxFilter, cxData, cxDataStorage, cxEdit, cxGridLevel,, cxGridTableView,
cxGridBandedTableView,, cxGrid, cxEditRepositoryItems, cxClasses, cxTL,,
cxPropertiesStore, cxTextEdit, cxMaskEdit, cxDropDownEdit,,wrappers, ActnList,
cxLookAndFeels, cxLookAndFeelPainters, cxSpinEdit,, GridEditClass,cxButtonEdit,
cxTimeEdit;
{ Роль
на
редактирование
специальностей
мет.
комплекса,
специальностей,
организаторов обучения }_Q_Edit_Spec = '1401';
{ Роль на редактирование учебных групп, сроков
проведения и плана ПК }
Action_Q_Edit_Groups = '1402';
{ Вид уровня специальности "Повышение
квалификации" }_Level_Spec = '70';
{ Вид дисциплины "Повышение квалификации }_Discipline
= '59454';
{ Вид уровня образования "Повышение
квалификации" }_Level_Formation = '70508';
{ Путь для сохранения в реестре }_Path =
'\Software\AS Pilot group\Parameters\Модуль повышения
квалификации\Планирование';
{ Путь для сохранения списков }_Path =
'\Параметры списков\';
{ Путь для добавления }_Path= 'Модуль повышения
квалификации\Планирование\Добавление\';
type_Plan = class(TForm)_Main:
TPanel;_Main: TcxPageControl;: TcxEditStyleController;:
TcxStyleRepository;_Group: TcxStyle;_s_ContentEVEN: TcxStyle;_Filter_Box:
TcxStyle;_Footer: TcxStyle;_Inactive: TcxStyle;_Indicator: TcxStyle;_Preview:
TcxStyle;_Selection: TcxStyle;_ContentOdd: TcxStyle;_Content_TEXT:
TcxStyle;_Content_POPUP: TcxStyle;_Content_DATE: TcxStyle;_Content_QUALIFIER:
TcxStyle;_Footer_Column: TcxStyle;_Content_ID: TcxStyle;_Content_Memo:
TcxStyle;_Content_Project: TcxStyle;_Content_Cancel:
TcxStyle;_Content_ProjectSend: TcxStyle;_Content_Owner:
TcxStyle;_Content_NotOwner: TcxStyle;_Content_Hot_Track: TcxStyle;_Inc_Search:
TcxStyle;_Group_By_Box: TcxStyle;_Header: TcxStyle;_Style_1:
TcxTreeListStyleSheet;_Style_1: TcxGridBandedTableViewStyleSheet;:
TcxEditRepository;_Date_None_Blank: TcxEditRepositoryDateItem;_Date_With_Blank:
TcxEditRepositoryDateItem;_Spin_ID: TcxEditRepositorySpinItem;_Text_RO:
TcxEditRepositoryTextItem;_Memo_RO: TcxEditRepositoryMemoItem;_Date_RO:
TcxEditRepositoryDateItem;: TcxPropertiesStore;_Filter: TPanel;:
TcxLabel;_Filter_Org: TcxPopupEdit;_Text: TcxEditRepositoryTextItem;:
TActionList;_Editing: TcxTabSheet;: TcxPageControl;_Institutes:
TcxTabSheet;_Institutes: TcxGrid;_institutes:
TcxGridBandedTableView;_institutes_Abbr: TcxGridBandedColumn;_institutes_Name:
TcxGridBandedColumn;_institutes_ID: TcxGridBandedColumn;: TcxGridLevel;_Add:
TcxTabSheet;: TcxPageControl;_tv_intitutes: TAction;_Com_Spec:
TcxGrid;_com_spec: TcxGridBandedTableView;_com_spec_name_spec:
TcxGridBandedColumn;_com_spec_name_div:
TcxGridBandedColumn;_com_spec_kind_training:
TcxGridBandedColumn;_com_spec_id_spec_div: TcxGridBandedColumn;_com_spec_id_spec:
TcxGridBandedColumn;_com_spec_id_d_spec_div:
TcxGridBandedColumn;_com_spec_idk_training: TcxGridBandedColumn;:
TcxGridLevel;_com_spec_id_p_dp: TcxGridBandedColumn;_com_spec_id_order:
TcxGridBandedColumn;_com_spec_idk_order: TcxGridBandedColumn;_com_spec_status_text:
TcxGridBandedColumn;_com_spec_status_order:
TcxGridBandedColumn;_com_spec_id_met_complex: TcxGridBandedColumn;_tv_com_spec:
TAction;_Insert_Com_Spec: TAction;_New_Com_Spec: TcxTabSheet;_New_Com_Spec:
TPanel;: TcxLabel;: TcxLabel;: TcxLabel;: TcxLabel;_New_Com_Spec:
TcxPopupEdit;: TcxLabel;_New_Com_Spec_Kind_Training:
TcxPopupEdit;_New_Com_Spec_Div: TcxPopupEdit;_New_Com_Spec_Paragraph:
TcxButtonEdit;_New_Com_Spec_Hours: TcxSpinEdit;_com_spec_hours:
TcxGridBandedColumn;_com_spec_id_e_l_umk: TcxGridBandedColumn;_Spec_Div:
TcxTabSheet;_Spec_Div_Popup: TcxGrid;_spec_div_popup:
TcxGridBandedTableView;_spec_div_popup_name_spec:
TcxGridBandedColumn;_spec_div_popup_name_div:
TcxGridBandedColumn;_spec_div_popup_kind_training: TcxGridBandedColumn;_spec_div_popup_institute:
TcxGridBandedColumn;_spec_div_popup_source:
TcxGridBandedColumn;_spec_div_popup_d_start:
TcxGridBandedColumn;_spec_div_popup_d_end:
TcxGridBandedColumn;_spec_div_popup_id_spec_div:
TcxGridBandedColumn;_spec_div_popup_id_spec:
TcxGridBandedColumn;_spec_div_popup_id_d:
TcxGridBandedColumn;_spec_div_popup_idk_training:
TcxGridBandedColumn;_spec_div_popup_id_d_institute:
TcxGridBandedColumn;_spec_div_popup_id_source:
TcxGridBandedColumn;_spec_div_popup_idk_level_formation: TcxGridBandedColumn;:
TcxGridLevel;_tv_spec_div: TAction;_com_spec_id_erp_user: TcxGridBandedColumn;:
TcxLabel;_New_Com_Spec_Hours_SR: TcxSpinEdit;FormDestroy(Sender:
TObject);Fill_tv_intitutesExecute(Sender:
TObject);Fill_tv_com_specExecute(Sender: TObject);Action_Insert_Com_SpecExecute(Sender:
TObject);tv_com_specEditing(Sender: TcxCustomGridTableView;:
TcxCustomGridTableItem; var AAllow:
Boolean);tv_com_specSelectionChanged(Sender:
TcxCustomGridTableView);FormShow(Sender: TObject);tv_com_specKeyDown(Sender: TObject;
var Key: Word;: TShiftState);tv_com_specMouseDown(Sender: TObject; Button:
TMouseButton;: TShiftState; X, Y: Integer);Fill_tv_spec_divExecute(Sender:
TObject);PopupEdit_Filter_OrgPropertiesInitPopup(Sender:
TObject);cxPopupEdit_New_Com_SpecPropertiesInitPopup(Sender: TObject);
private
{ Private declarations }
{ Доступность редактирования специальностей мет.
комплекса, специальностей и организаторов обучения }_Spec: boolean;
{ Доступность редактирования учебных групп,
сроков проведения и плана ПК }_Groups: boolean;
{ Объект для работы со списками }_TableView:
TSqlData_cxGridTableView;
{ Путь реестра (для загрузки/сохранения
параметров) }
Curr_Reg_Path: String;
{ Контейнеры
оберток
}_Institute_Filter: TContainerWrappers;_New_Com_Spec: TContainerWrappers;
{ Обработчики событий изменения в контейнерах
оберток }
procedure
DoChanged_cW_Intitute_Filter(AWrapper:
TCustomEditWrapper);DoChanged_cW_New_Com_Spec(AWrapper:
TCustomEditWrapper);Before_Delete_Exchange(Sender: TSqlData_cxGridTableView;:
Integer; var ExchangeParameters: OleVariant);
{ Действие перед изменением данных в tv_com_spec
}
procedure
Before_Update_Exchange(Sender: TSqlData_cxGridTableView;: Variant; AItem:
TcxCustomGridTableItem; ARecordIndex: Integer;ExchangeParameters: OleVariant;
var Allow: Boolean);
{ Установка
доступности
добавления
}Allow_Insert(TV: TcxCustomGridTableView; Roles: array of boolean);
{ Установка доступности редактирования таблицы
(с документом) }
function Allow_Editing(TV:
TcxCustomGridTableView; Status_Column: TcxGridColumn;_ERP_Column:
TcxGridColumn; Roles: array of boolean): boolean; overload;
{ Установка доступности редактирования таблицы
(без документа) }
function Allow_Editing(TV:
TcxCustomGridTableView; Roles: array of boolean): boolean; overload;
{ Установка доступности удаления из таблицы (с
документом) }
procedure Allow_Delete(TV:
TcxCustomGridTableView; Status_Column: TcxGridColumn;_ERP_Column:
TcxGridColumn; Roles: array of boolean); overload;
{ Установка доступности удаления из таблицы (без
документа) }
procedure Allow_Delete(TV:
TcxCustomGridTableView; Roles: array of boolean); overload;
{ Сохранение/восстановление
параметров
списков
}Save_Restore_Params(RReg_Path: String = Reg_Path; PIs_Load: Boolean = True);
{ Public declarations }
{ Инициализация
формы
}Init(AReg_Path: String = Reg_Path);
{ Обновить
роли
}Refresh_Roles;
{ Проверка доступности ко всей форме без
создания ее самой }
class function IsRoleAccessible:
Boolean;;_Plan: TForm_Plan;
{$R *.dfm}SysServices,
Get_PK_PPS_Data, standart_new, get_single_data, LP_u_CX_tools;
{ Сохранение/восстановление
параметров
списков
}TForm_Plan.Save_Restore_Params(RReg_Path: String = Reg_Path; PIs_Load: Boolean
= True);.StorageName:=RReg_Path+'\Общие
параметры';
if PIs_Load
{ Восстановление параметров }begin // 1
{ Восстановим общие параметры }.RestoreFrom;
{ Восстановим значения фильтра по институтам }
if PopupEdit_Filter_Org.Tag <>
0begin // 2_Institute_Filter.Wrappers[PopupEdit_Filter_Org].Value :=
IntToStr(PopupEdit_Filter_Org.Tag);_Institute_Filter.Wrappers[PopupEdit_Filter_Org].ValueDisplay
:= PopupEdit_Filter_Org.Text;// 2begin //
3_Institute_Filter.Wrappers[PopupEdit_Filter_Org].Value :=
'';_Institute_Filter.Wrappers[PopupEdit_Filter_Org].ValueDisplay := '';
end; // 3// 1
{ Сохранение параметров }begin // 4
{ Сохраним значения фильтра по институтам }
if
VarToStr(cW_Institute_Filter.Wrappers[PopupEdit_Filter_Org].Value) <>
''begin // 5_Filter_Org.Tag :=
StrToInt(VarToStr(cW_Institute_Filter.Wrappers[PopupEdit_Filter_Org].Value));_Filter_Org.Text
:= VarToStr(cW_Institute_Filter.Wrappers[PopupEdit_Filter_Org].ValueDisplay);//
5begin // 6_Filter_Org.Tag := 0;_Filter_Org.Text := '';; // 6
{ Сохраним
общие
параметры
}.StoreTo(True);
end; // 4
{ Сохранение или загрузки параметров списков (в
зависимости от параметра PIs_Load) }
Restore_cxGridTableView(tv_com_spec,
PIs_Load,
RReg_Path+Grid_Path+Get_SqlData_cxGrid(tv_com_spec).Table_Name);_cxGridTableView(tv_spec_div_popup,
PIs_Load,
RReg_Path+Grid_Path+Get_SqlData_cxGrid(tv_spec_div_popup).Table_Name);_cxGridTableView(tv_institutes,
PIs_Load, RReg_Path+Grid_Path+Get_SqlData_cxGrid(tv_institutes).Table_Name);
end;
{ Проверка доступности ко всей форме без
создания ее самой! }
class function
TForm_Plan.IsRoleAccessible: Boolean;:=
vnSessionAgent.IsRoleSomehowAccessible('', '',
Action_Q_Edit_Spec)vnSessionAgent.IsRoleSomehowAccessible('', '',
Action_Q_Edit_Groups)vnSessionAgent.IsDBA;;TForm_Plan.PopupEdit_Filter_OrgPropertiesInitPopup(Sender:
TObject);_tv_intitutesExecute(self);;
{ Проверка
прав
}TForm_Plan.Refresh_Roles;DBA: boolean;
{ Проверка
наличия
ролей
}:= vnSessionAgent.IsDBA;_Spec := vnSessionAgent.IsRoleSomehowAccessible('',
'', Action_Q_Edit_Spec) or DBA;_Groups :=
vnSessionAgent.IsRoleSomehowAccessible('', '', Action_Q_Edit_Groups) or DBA;;
{ Установка
доступности
добавления
}TForm_Plan.Allow_Insert(TV: TcxCustomGridTableView; Roles: array of
boolean);i: integer;: boolean;_TableView := Get_SqlData_cxGrid(TV);(FSqlData_TableView
<> nil) and (Length(Roles) > 0)begin // 1not
FSqlData_TableView.IsFirstReadbegin // 2:= False;i := 0 to Length(Roles) -
1Allow := Allow or Roles[i];_TableView.ActionInsert.Enabled := Allow;//
2FSqlData_TableView.ActionInsert.Enabled := False;
end; // 1;
{ Установка доступности редактирования таблицы
(с документом) }
function
TForm_Plan.Allow_Editing(TV: TcxCustomGridTableView; Status_Column:
TcxGridColumn;_ERP_Column: TcxGridColumn; Roles: array of boolean): boolean;status,
id_erp: string;: integer;: boolean;_TableView :=
Get_SqlData_cxGrid(TV);(FSqlData_TableView <> nil) and (Length(Roles)
> 0)begin // 1(TV.DataController.FocusedRecordIndex <> -1)begin // 2:=
VarToStr(TV.DataController.Values[TV.DataController.FocusedRecordIndex
,Status_Column.Index]);_erp :=
VarToStr(TV.DataController.Values[TV.DataController.FocusedRecordIndex
,ID_ERP_Column.Index]);:= False;i :=
0 to Length(Roles) - 1Allow := Allow or Roles[i];:= (status = '2') and (id_erp
= vnSessionAgent.ID_ERP_User) and Allow;// 2Result := False;; // 1
end;
{ Установка доступности редактирования таблицы
(без документа) }
function
TForm_Plan.Allow_Editing(TV: TcxCustomGridTableView; Roles: array of boolean):
boolean;i: integer;: boolean;_TableView :=
Get_SqlData_cxGrid(TV);(FSqlData_TableView <> nil) and (Length(Roles)
> 0)begin // 1:= False;i := 0 to Length(Roles) - 1Allow := Allow or
Roles[i];:= (TV.DataController.FocusedRecordIndex <> -1) and Allow;//
1Result := False;;
{ Установка доступности удаления из таблицы (с
документом) }
procedure
TForm_Plan.Allow_Delete(TV: TcxCustomGridTableView; Status_Column:
TcxGridColumn;_ERP_Column: TcxGridColumn; Roles: array of boolean);i: integer;:
boolean;_TableView := Get_SqlData_cxGrid(TV);(FSqlData_TableView <> nil)
and (Length(Roles) > 0)begin // 1:= False;i := 0 to Length(Roles) - 1Allow
:= Allow or Roles[i];_TableView.ActionDelete.Enabled := Is_Value(Status_Column,
'2', false)Is_Value(ID_ERP_Column, vnSessionAgent.ID_ERP_User, false)(TV.Controller.SelectedRecordCount
> 0) and Allow;
end; // 1;
{ Установка доступности удаления из таблицы (без
документа) }
procedure
TForm_Plan.Allow_Delete(TV: TcxCustomGridTableView; Roles: array of boolean);i:
integer;: boolean;_TableView := Get_SqlData_cxGrid(TV);(FSqlData_TableView
<> nil) and (Length(Roles) > 0)begin // 1:= False;i := 0 to
Length(Roles) - 1Allow := Allow or Roles[i];_TableView.ActionDelete.Enabled :=
(TV.Controller.SelectedRecordCount > 0) and Allow;; //
1;TForm_Plan.tv_com_specEditing(Sender: TcxCustomGridTableView;:
TcxCustomGridTableItem; var AAllow: Boolean);_Editing(Sender,
tv_com_spec_status_order, tv_com_spec_id_erp_user,
[REdit_Spec]);;TForm_Plan.tv_com_specKeyDown(Sender: TObject; var Key: Word;:
TShiftState);Key = VK_INSERTAllow_Insert(tv_com_spec,
[REdit_Spec]);;TForm_Plan.tv_com_specMouseDown(Sender: TObject; Button:
TMouseButton;: TShiftState; X, Y: Integer);Button =
mbRightAllow_Insert(tv_com_spec,
[REdit_Spec]);;TForm_Plan.tv_com_specSelectionChanged(:
TcxCustomGridTableView);_Delete(Sender, tv_com_spec_status_order,
tv_com_spec_id_erp_user, [REdit_Spec]);;
{ Настройка
списков
}TForm_Plan.Init(AReg_Path: String = Reg_Path);_Reg_Path := AReg_Path;
{ Описание
для
различных
оберток
}
//
*****************************************************************************_Institute_Filter
:=
TContainerWrappers.Create;_Institute_Filter.AddPopupEdit(PopupEdit_Filter_Org,
false, false, cxGrid_Institutes,_institutes ,tv_institutes_ID,
[tv_institutes_Abbr, tv_institutes_Name], '');_Institute_Filter.OnChangedValueWrapper
:= DoChanged_cW_Intitute_Filter;;
//
*****************************************************************************
//
*****************************************************************************_New_Com_Spec
:= TContainerWrappers.Create;_New_Com_Spec.AddPopupEdit(cxPopupEdit_New_Com_Spec,
true, false, cxGrid_Spec_Div_Popup,_spec_div_popup,
tv_spec_div_popup_id_spec_div, [tv_spec_div_popup_name_spec,
tv_spec_div_popup_name_div, tv_spec_div_popup_kind_training],
'');_New_Com_Spec.AddButtonOrderEdit(cxButtonEdit_New_Com_Spec_Paragraph,
True,, '', ['901'],[OBE_CHOOSE, OBE_NEW, OBE_INNAVIGATE, OBE_PREVIEW],
[nil,nil,nil,nil]);_New_Com_Spec.AddCustomEdit(cxSpinEdit_New_Com_Spec_Hours,
true, false, '');_New_Com_Spec.AddCustomEdit(cxSpinEdit_New_Com_Spec_Hours_SR,
true, false, '');_New_Com_Spec.AddPopupEdit(cxPopupEdit_New_Com_Spec_Div, true,
false, cxGrid_Spec_Div_Popup, tv_spec_div_popup, tv_spec_div_popup_id_d,
[tv_spec_div_popup_name_div],
'');_New_Com_Spec.AddPopupEdit(cxPopupEdit_New_Com_Spec_Kind_Training, true,
false, cxGrid_Spec_Div_Popup, tv_spec_div_popup,
tv_spec_div_popup_idk_training, [tv_spec_div_popup_kind_training],
'');_New_Com_Spec.OnChangeWrapper := DoChanged_cW_New_Com_Spec;
//
*****************************************************************************
//
---------------------------------------------
// добавление
институтов
//
---------------------------------------------Get_SqlData_cxGrid(tv_institutes)
= nilwith TSqlData_cxGridTableView.Create(tv_institutes)begin:= false;_Name :=
'Институты';_Select
:= Get_List_Institutes;:= True;:=
CreateVarAr([IDK_Level_Spec]);_Columns.Add(tv_institutes_Abbr);_Columns.Add(tv_institutes_Name);_Columns.Add(tv_institutes_ID);_Columns.Add(tv_institutes_ID);_Column
:= tv_institutes_Abbr;.Add(tv_institutes_Abbr);.Add(tv_institutes_Name);
end;
// ---------------------------------------------
// ---------------------------------------------
// добавление обучаемых специальностей
(специальности подразделений)
//
---------------------------------------------Get_SqlData_cxGrid(tv_spec_div_popup)
= nilwith TSqlData_cxGridTableView.Create(tv_spec_div_popup)begin:= false;:=
false;_Name := 'Обучаемые
специальности';_Select
:= Spec_div;:= True;:= CreateVarAr([IDK_Level_Spec,'']);_Column :=
tv_spec_div_popup_institute;:=
tv_spec_div_popup_institute;Select_Columnsbegin(tv_spec_div_popup_name_spec,1);(tv_spec_div_popup_name_div,2);(tv_spec_div_popup_kind_training,3);(tv_spec_div_popup_institute,6);(tv_spec_div_popup_source,12);(tv_spec_div_popup_d_start,4);(tv_spec_div_popup_d_end,5);(tv_spec_div_popup_id_spec_div,0);(tv_spec_div_popup_id_spec,1);(tv_spec_div_popup_id_d,2);(tv_spec_div_popup_idk_training,3);(tv_spec_div_popup_id_d_institute,6);(tv_spec_div_popup_id_source,12);(tv_spec_div_popup_idk_level_formation,8);;_Columns.Add(tv_spec_div_popup_id_spec_div,0);
PopupActions.Add(ActionUpdate);;
// ---------------------------------------------
// ---------------------------------------------
// добавление специальностей комплекса
// ---------------------------------------------Get_SqlData_cxGrid(tv_com_spec)
= nilwith TSqlData_cxGridTableView.Create(tv_com_spec)begin:= true;:=
false;_Name := 'Специальности
комплекса';_Select
:= Com_Spec;_Delete := Delete_Com_Spec;_Update_Exchange := Update_Com_Spec;:=
True;:= CreateVarAr(['']);_Column := tv_com_spec_name_div;:=
tv_com_spec_name_div;_Delete_Exchange :=
Before_Delete_Exchange;_Update_Exchange :=
Before_Update_Exchange;Select_Columnsbegin(tv_com_spec_name_spec);(tv_com_spec_name_div);(tv_com_spec_kind_training);(tv_com_spec_status_text);(tv_com_spec_hours,5);(tv_com_spec_id_spec_div);(tv_com_spec_id_spec);(tv_com_spec_id_d_spec_div);(tv_com_spec_idk_training);(tv_com_spec_status_order);(tv_com_spec_id_p_dp);(tv_com_spec_id_order);(tv_com_spec_idk_order);(tv_com_spec_id_met_complex);(tv_com_spec_id_e_l_umk);(tv_com_spec_id_erp_user);;IndividualEditInfoList.Addbegin_Update
:=
d_P_EDUCATIONAL_LOAD_UMK;.Add(tv_com_spec_id_met_complex,1);.Add(tv_com_spec_hours,5);;PopupColumnsList.Add(tv_com_spec_name_spec)begin:=
tv_com_spec_id_spec_div;:= tv_spec_div_popup_id_spec_div;:=
tv_spec_div_popup_name_spec;;PopupColumnsList.Add(tv_com_spec_name_div)begin:=
tv_com_spec_id_spec_div;:= tv_spec_div_popup_id_spec_div;:=
tv_spec_div_popup_name_div;;PopupColumnsList.Add(tv_com_spec_kind_training)begin:=
tv_com_spec_id_spec_div;:= tv_spec_div_popup_id_spec_div;:=
tv_spec_div_popup_kind_training;;.Column_Status_Text :=
tv_com_spec_status_text;.Column_ID_order :=
tv_com_spec_id_order;.Column_ID_paragraph := tv_com_spec_id_p_dp;.Column_IDk_order
:=
tv_com_spec_idk_order;.Visible:=True;.OnExecute:=Action_Insert_Com_Spec.OnExecute;.Add(ActionInsert);.Add(ActionDelete);.Add(nil);.Add(OptionsOrder.ActionPreview);.Add(OptionsOrder.ActionNavigate);.Add(nil);.Add(ActionUpdate);;
// ---------------------------------------------
{ Cкрываем
ненужные
страницы
}_Editing.TabVisible := False;_Add.TabVisible := False;
{ Прочитаем
параметры
из
реестра
}_Restore_Params(Curr_Reg_Path,
True);;TForm_Plan.Action_Insert_Com_SpecExecute(Sender: TObject);
//const Name = 'Содержание методического
комплекса';
var: TSForm;// 1:= CreateSForm(self,
'fNew_Com_Spec'
, cxTabSheet_New_Com_Spec.Caption
, Add_Path +
cxTabSheet_New_Com_Spec.Caption
, Panel_New_Com_Spec,
tdb_Apply);_New_Com_Spec.OnChangeWrapper(nil);.Position :=
poScreenCenter;mf.ShowModal = mrOkbegin // 2_TableView :=
Get_SqlData_cxGrid(tv_com_spec);FSqlData_TableView <> nilbegin //
3MSystemServices.ExchangeData(Add_Com_Spec,([_New_Com_Spec.Wrappers[cxPopupEdit_New_Com_Spec_Div].Value
,cW_New_Com_Spec.Wrappers[cxPopupEdit_New_Com_Spec].Value
,cW_New_Com_Spec.Wrappers[cxButtonEdit_New_Com_Spec_Paragraph].Value
,cW_New_Com_Spec.Wrappers[cxPopupEdit_New_Com_Spec_Kind_Training].Value
,cW_New_Com_Spec.Wrappers[cxSpinEdit_New_Com_Spec_Hours].Value
,IDK_Discipline
,cW_New_Com_Spec.Wrappers[cxSpinEdit_New_Com_Spec_Hours_SR].Value
])
,'Добавление программы методического
комплекса.')
then begin //
4(cW_New_Com_Spec.Wrappers[cxButtonEdit_New_Com_Spec_Paragraph]).IsEmpty :=
false;_TableView.Read_Data;(tv_com_spec, [tv_com_spec_id_spec_div,
tv_com_spec_id_p_dp],([cW_New_Com_Spec.Wrappers[cxPopupEdit_New_Com_Spec].Value,_New_Com_Spec.Wrappers[cxButtonEdit_New_Com_Spec_Paragraph].Value]),
true);; // 4; // 3; // 2// 1assigned(mf)FreeAndNil(mf);; //
1;TForm_Plan.Fill_tv_com_specExecute(Sender: TObject);_TableView :=
Get_SqlData_cxGrid(tv_com_spec);(FSqlData_TableView <> nil)begin //
1PopupEdit_Filter_Org.Text <> ''Get_SqlData_cxGrid(tv_com_spec).Params[0]
:=(cW_Institute_Filter.Wrappers[PopupEdit_Filter_Org].Value)Get_SqlData_cxGrid(tv_com_spec).Params[0]
:=
'';FSqlData_TableView.IsFirstReadFSqlData_TableView.Read_Data_FirstFSqlData_TableView.Read_Data;;
// 1;TForm_Plan.Fill_tv_intitutesExecute(Sender: TObject);_TableView :=
Get_SqlData_cxGrid(tv_institutes);(FSqlData_TableView <> nil) and
FSqlData_TableView.IsFirstReadFSqlData_TableView.Read_Data_First;;TForm_Plan.Fill_tv_spec_divExecute(Sender:
TObject);Param1: string;_TableView :=
Get_SqlData_cxGrid(tv_spec_div_popup);(FSqlData_TableView <> nil)begin //
1:= VarToStr(cW_Institute_Filter.Wrappers[PopupEdit_Filter_Org].Value);VarToStr(FSqlData_TableView.Params[1])
<> Param1begin // 2_TableView.Params[1] := Param1;_TableView.Read_Data;//
2FSqlData_TableView.IsFirstReadFSqlData_TableView.Read_Data_First;; //
1;TForm_Plan.FormDestroy(Sender: TObject);
begin
{ Сохраним параметры в реестр }
Save_Restore_Params(Curr_Reg_Path,
False);;TForm_Plan.FormShow(Sender: TObject);
{ Перечитываем
списки
}_tv_com_specExecute(self);;TForm_Plan.DoChanged_cW_New_Com_Spec(AWrapper:
TCustomEditWrapper);AWrapper =
cW_New_Com_Spec.Wrappers[cxPopupEdit_New_Com_Spec]begin // 1not
cW_New_Com_Spec.Wrappers[cxPopupEdit_New_Com_Spec].IsClearbegin //
2_New_Com_Spec.Wrappers[cxPopupEdit_New_Com_Spec_Kind_Training].Value
:=(tv_spec_div_popup.DataController.Values[tv_spec_div_popup.DataController.FocusedRecordIndex
,tv_spec_div_popup_idk_training.Index]);_New_Com_Spec.Wrappers[cxPopupEdit_New_Com_Spec_Kind_Training].ValueDisplay
:=(tv_spec_div_popup.DataController.Values[tv_spec_div_popup.DataController.FocusedRecordIndex
,tv_spec_div_popup_kind_training.Index]);_New_Com_Spec.Wrappers[cxPopupEdit_New_Com_Spec_Div].Value
:=(tv_spec_div_popup.DataController.Values[tv_spec_div_popup.DataController.FocusedRecordIndex
,tv_spec_div_popup_id_d.Index]);_New_Com_Spec.Wrappers[cxPopupEdit_New_Com_Spec_Div].ValueDisplay
:=(tv_spec_div_popup.DataController.Values[tv_spec_div_popup.DataController.FocusedRecordIndex
,tv_spec_div_popup_name_div.Index]);//
2begin // 3_New_Com_Spec.Wrappers[cxPopupEdit_New_Com_Spec_Div].Value := '';_New_Com_Spec.Wrappers[cxPopupEdit_New_Com_Spec_Div].ValueDisplay
:= '';_New_Com_Spec.Wrappers[cxPopupEdit_New_Com_Spec_Kind_Training].Value :=
'';_New_Com_Spec.Wrappers[cxPopupEdit_New_Com_Spec_Kind_Training].ValueDisplay
:= '';; // 3; // 1_OkButton(Panel_New_Com_Spec,
cW_New_Com_Spec.IsNotEmptyMandatory);;TForm_Plan.DoChanged_cW_Intitute_Filter(AWrapper:
TCustomEditWrapper);_tv_com_specExecute(self);;TForm_Plan.Before_Delete_Exchange(Sender:
TSqlData_cxGridTableView; ARecordIndex: Integer; var ExchangeParameters:
OleVariant);Sender.GridTableView = tv_com_specwith
Sender.GridTableView.DataController do:=
CreateVarAr([Values[FocusedRecordIndex, tv_com_spec_id_met_complex.Index]
,Values[FocusedRecordIndex,
tv_com_spec_id_spec_div.Index]
,Values[FocusedRecordIndex,
tv_com_spec_id_p_dp.Index]
]);;TForm_Plan.Before_Update_Exchange(Sender:
TSqlData_cxGridTableView;: Variant; AItem: TcxCustomGridTableItem;
ARecordIndex: Integer;ExchangeParameters: OleVariant; var Allow:
Boolean);(Sender.GridTableView = tv_com_spec)(Sender.GridTableView.Controller.FocusedColumn
<> tv_com_spec_hours)with Sender.GridTableView.DataController
do:=([Values[FocusedRecordIndex, tv_com_spec_id_met_complex.Index]
,Values[FocusedRecordIndex,
tv_com_spec_id_spec_div.Index]
,Values[FocusedRecordIndex,
tv_com_spec_id_p_dp.Index]
,tv_spec_div_popup.DataController.Values[tv_spec_div_popup.DataController.FocusedRecordIndex
,tv_spec_div_popup_id_spec_div.Index]
,tv_spec_div_popup.DataController.Values[tv_spec_div_popup.DataController.FocusedRecordIndex
,tv_spec_div_popup_idk_training.Index]
,tv_spec_div_popup.DataController.Values[tv_spec_div_popup.DataController.FocusedRecordIndex
,tv_spec_div_popup_id_d.Index]
]);;TForm_Plan.cxPopupEdit_New_Com_SpecPropertiesInitPopup(:
TObject);_tv_spec_divExecute(self);;Event, Messages, SysUtils, Variants,
Classes, Graphics, Controls, Forms,, ExtCtrls, cxPC, cxControls, cxSplitter,
cxStyles, cxCustomData,, cxFilter, cxData, cxDataStorage, cxEdit, cxGridLevel,,
cxGridTableView, cxGridBandedTableView,, cxGrid, cxEditRepositoryItems,
cxClasses, cxTL,, cxPropertiesStore, cxTextEdit, cxMaskEdit, cxDropDownEdit,,
wrappers, ActnList, cxLookAndFeels, cxLookAndFeelPainters,,, GridEditClass,
cxButtonEdit, SE, cxGroupBox, Find_Org,_u_MA_Interface,, Menus, StdCtrls,
cxButtons, cxCurrencyEdit, DateUtils,, OleServer, Excel2000, cxProgressBar,
cxCheckBox, cxRadioGroup;
const
{ Роль на редактирование учебных групп, сроков
проведения и плана ПК }
Action_Q_Edit_Groups = '1402';
{ Роль на просмотр мероприятий }_Q_View_Event =
'1403';
{ Полный доступ к мероприятиям }_Q_Edit_Event =
'1404';
{ Вид уровня специальности "Повышение
квалификации" }
IDK_Level_Spec = '70';_Discipline =
'59454';
{ Путь для сохранения в реестре }
Reg_Path = '\Software\AS Pilot
group\Parameters\Модуль повышения
квалификации\Мероприятия';
{ Путь для сохранения списков }_Path =
'\Параметры списков\';
{ Путь для добавления }_Path = 'Модуль повышения
квалификации\Мероприятия\Добавление\';
// Выбор участника_Listener = 'Участник не
выбран';
// Печать
сертификата_Cert:
TGUID = '{5F2398A1-75FE-4E65-B294-4F1A47315662}';_Event = class(TForm)_Main:
TPanel;: TcxSplitter;_Main: TcxPageControl;_R_C_Groups: TcxTabSheet;:
TcxEditStyleController;: TcxStyleRepository;_Group: TcxStyle;_s_ContentEVEN:
TcxStyle;_Filter_Box: TcxStyle;_Footer: TcxStyle;_Inactive:
TcxStyle;_Indicator: TcxStyle;_Preview: TcxStyle;_Selection:
TcxStyle;_ContentOdd: TcxStyle;_Content_TEXT: TcxStyle;_Content_POPUP:
TcxStyle;_Content_DATE: TcxStyle;_Content_QUALIFIER: TcxStyle;_Footer_Column:
TcxStyle;_Content_ID: TcxStyle;_Content_Memo: TcxStyle;_Content_Project:
TcxStyle;_Content_Cancel: TcxStyle;_Content_ProjectSend:
TcxStyle;_Content_Owner: TcxStyle;_Content_NotOwner:
TcxStyle;_Content_Hot_Track: TcxStyle;_Inc_Search: TcxStyle;_Group_By_Box:
TcxStyle;_Header: TcxStyle;_Style_1: TcxTreeListStyleSheet;_Style_1:
TcxGridBandedTableViewStyleSheet;: TcxEditRepository;_Date_None_Blank:
TcxEditRepositoryDateItem;_Date_With_Blank: TcxEditRepositoryDateItem;_Spin_ID:
TcxEditRepositorySpinItem;_Text_RO: TcxEditRepositoryTextItem;_Memo_RO:
TcxEditRepositoryMemoItem;_Date_RO: TcxEditRepositoryDateItem;:
TcxPropertiesStore;_Text: TcxEditRepositoryTextItem;_R_C_Plan:
TcxGrid;_r_c_plan: TcxGridBandedTableView;_R_C_Plan_Level1:
TcxGridLevel;_r_c_plan_name_spec: TcxGridBandedColumn;_r_c_plan_institute:
TcxGridBandedColumn;_r_c_plan_division:
TcxGridBandedColumn;_r_c_plan_kind_training:
TcxGridBandedColumn;_r_c_plan_d_start: TcxGridBandedColumn;_r_c_plan_d_end:
TcxGridBandedColumn;_r_c_plan_status_text: TcxGridBandedColumn;_r_c_plan_id_r_c_plan:
TcxGridBandedColumn;_r_c_plan_id_spec_div:
TcxGridBandedColumn;_r_c_plan_id_spec:
TcxGridBandedColumn;_r_c_plan_id_institute: TcxGridBandedColumn;_r_c_plan_id_d:
TcxGridBandedColumn;_r_c_plan_idk_training: TcxGridBandedColumn;_r_c_plan_id_paragraph:
TcxGridBandedColumn;_r_c_plan_id_order:
TcxGridBandedColumn;_r_c_plan_idk_order:
TcxGridBandedColumn;_r_c_plan_status_order: TcxGridBandedColumn;_R_C_Groups:
TcxGrid;_r_c_groups: TcxGridBandedTableView;_R_C_Groups_Level1: TcxGridLevel;:
TActionList;_Insert_tv_r_c_plan: TAction;_Add: TcxTabSheet;_Editing:
TcxTabSheet;: TcxPageControl;: TcxTabSheet;_New_R_C_Plan: TPanel;: TcxLabel;:
TcxLabel;_New_R_C_Plan_Spec_Div: TcxPopupEdit;_New_R_C_Plan_Paragraph:
TcxButtonEdit;: TcxLabel;_New_R_C_Plan_D_Start:
TcxDateEdit;_New_R_C_Plan_D_End: TcxDateEdit;: TcxLabel;: TcxPageControl;:
TcxTabSheet;_Spec_Div_PopUp: TcxGrid;_spec_div_popup:
TcxGridBandedTableView;_spec_div_popup_name_spec:
TcxGridBandedColumn;_spec_div_popup_name_div: TcxGridBandedColumn;_spec_div_popup_kind_training:
TcxGridBandedColumn;_spec_div_popup_institute:
TcxGridBandedColumn;_spec_div_popup_source:
TcxGridBandedColumn;_spec_div_popup_d_start:
TcxGridBandedColumn;_spec_div_popup_d_end: TcxGridBandedColumn;_spec_div_popup_id_spec_div:
TcxGridBandedColumn;_spec_div_popup_id_spec:
TcxGridBandedColumn;_spec_div_popup_id_d:
TcxGridBandedColumn;_spec_div_popup_idk_training:
TcxGridBandedColumn;_spec_div_popup_id_d_institute:
TcxGridBandedColumn;_spec_div_popup_id_source: TcxGridBandedColumn;_spec_div_popup_idk_level_formation:
TcxGridBandedColumn;: TcxGridLevel;_tv_spec_div_popup:
TAction;_r_c_groups_name: TcxGridBandedColumn;_r_c_groups_d_start:
TcxGridBandedColumn;_r_c_groups_d_end: TcxGridBandedColumn;_r_c_groups_status_text:
TcxGridBandedColumn;_r_c_groups_id_rc_group:
TcxGridBandedColumn;_r_c_groups_id_ed_group:
TcxGridBandedColumn;_r_c_groups_id_met_complex:
TcxGridBandedColumn;_r_c_groups_id_paragraph:
TcxGridBandedColumn;_r_c_groups_id_order: TcxGridBandedColumn;_r_c_groups_idk_order:
TcxGridBandedColumn;_r_c_groups_status_order: TcxGridBandedColumn;:
TcxTabSheet;_r_c_groups_id_r_c_plan: TcxGridBandedColumn;_Insert_tv_r_c_group:
TAction;: TcxTabSheet;_Ed_Group: TcxGrid;_ed_group:
TcxGridBandedTableView;_ed_group_name: TcxGridBandedColumn;_ed_group_kind_group:
TcxGridBandedColumn;_ed_group_d_start: TcxGridBandedColumn;_ed_group_d_end:
TcxGridBandedColumn;_ed_group_id_ed_group:
TcxGridBandedColumn;_ed_group_id_spec_div:
TcxGridBandedColumn;_ed_group_idk_group: TcxGridBandedColumn;_ed_group_level_group:
TcxGridBandedColumn;: TcxGridLevel;_New_R_C_Group: TPanel;: TcxLabel;:
TcxLabel;_New_R_C_Group_Ed_Group: TcxPopupEdit;:
TcxLabel;_New_R_C_Group_D_Start: TcxDateEdit;_New_R_C_Group_D_End:
TcxDateEdit;: TcxLabel;_New_R_C_Group_Met_Complex: TcxPopupEdit;:
TcxTabSheet;_Com_Spec: TcxGrid;_com_spec:
TcxGridBandedTableView;_com_spec_name_spec:
TcxGridBandedColumn;_com_spec_name_div:
TcxGridBandedColumn;_com_spec_kind_training:
TcxGridBandedColumn;_com_spec_status_text: TcxGridBandedColumn;_com_spec_hours:
TcxGridBandedColumn;_com_spec_status_order:
TcxGridBandedColumn;_com_spec_id_spec_div:
TcxGridBandedColumn;_com_spec_id_spec:
TcxGridBandedColumn;_com_spec_id_d_spec_div:
TcxGridBandedColumn;_com_spec_idk_training: TcxGridBandedColumn;_com_spec_id_p_dp:
TcxGridBandedColumn;_com_spec_id_order:
TcxGridBandedColumn;_com_spec_idk_order:
TcxGridBandedColumn;_com_spec_id_met_complex:
TcxGridBandedColumn;_com_spec_id_e_l_umk: TcxGridBandedColumn;:
TcxGridLevel;_tv_com_spec: TAction;_com_spec_institute:
TcxGridBandedColumn;_com_spec_id_institute: TcxGridBandedColumn;_tv_ed_group:
TAction;_tv_r_c_plan: TAction;_Listeners: TcxTabSheet;_Listeners:
TcxGrid;_listeners: TcxGridBandedTableView;: TcxGridLevel;_listeners_fio:
TcxGridBandedColumn;_listeners_ed_group:
TcxGridBandedColumn;_listeners_d_start: TcxGridBandedColumn;_listeners_d_end:
TcxGridBandedColumn;_listeners_kind_basis_action:
TcxGridBandedColumn;_listeners_status_text_order_start:
TcxGridBandedColumn;_listeners_id_e: TcxGridBandedColumn;_listeners_id_ed_group:
TcxGridBandedColumn;_listeners_id_paragraph_start:
TcxGridBandedColumn;_listeners_id_order_start:
TcxGridBandedColumn;_listeners_idk_order_start:
TcxGridBandedColumn;_listeners_status_order_start:
TcxGridBandedColumn;_listeners_id_student:
TcxGridBandedColumn;_listeners_idkba_transfer: TcxGridBandedColumn;:
TcxTabSheet;_New_Listener: TPanel;: TcxLabel;: TcxLabel;_New_Listener_FIO:
TcxPopupEdit;_New_Listener_Order_Start: TcxButtonEdit;:
TcxLabel;_New_Listener_D_Start: TcxDateEdit;_New_Listener_D_End:
TcxDateEdit;_New_Listener_Ed_Group: TcxPopupEdit;: TcxLabel;: TcxLabel;:
TcxLabel;_New_Listener_Kind_Basis_Action: TcxPopupEdit;:
TcxTabSheet;_KBA_Start: TcxGrid;_kba_start: TcxGridBandedTableView;:
TcxGridLevel;_kba_start_name: TcxGridBandedColumn;_kba_start_id:
TcxGridBandedColumn;_tv_r_c_groups: TAction;_tv_listeners:
TAction;_Insert_tv_listeners: TAction;_tv_kba_start:
TAction;_New_Listener_Contract_Params: TcxGroupBox;:
TcxLabel;_New_Listener_Kind_Order: TcxPopupEdit;: TcxLabel;_New_Listener_Order:
TcxPopupEdit;: TcxLabel;_New_Listener_Contract_D_Start: TcxDateEdit;:
TcxLabel;_New_Listener_Contract_D_End: TcxDateEdit;:
TcxLabel;_New_Listener_Contract_Organization: TcxPopupEdit;: TcxLabel;:
TcxLabel;_New_Listener_Contract_Source_Finansing: TcxPopupEdit;:
TcxTabSheet;_Kind_Order: TcxGrid;_kind_order:
TcxGridBandedTableView;_kind_order_name: TcxGridBandedColumn;_kind_order_id:
TcxGridBandedColumn;: TcxGridLevel;: TcxTabSheet;_Contracts:
TcxGrid;_contracts: TcxGridBandedTableView;: TcxGridLevel;_contracts_contract:
TcxGridBandedColumn;_contracts_d_start: TcxGridBandedColumn;_contracts_d_end:
TcxGridBandedColumn;_contracts_kind_order:
TcxGridBandedColumn;_contracts_id_contract:
TcxGridBandedColumn;_contracts_id_paragraph: TcxGridBandedColumn;_contracts_id_order:
TcxGridBandedColumn;_contracts_idk_order:
TcxGridBandedColumn;_contracts_status_order: TcxGridBandedColumn;:
TcxTabSheet;_Source_Financing: TcxGrid;_Source_Financing:
TcxGridBandedTableView;_Source_Financing_Abbreviation: TcxGridBandedColumn;_Source_Financing_Name:
TcxGridBandedColumn;_Source_Financing_Abbr_Div:
TcxGridBandedColumn;_Source_Financing_Division:
TcxGridBandedColumn;_Source_Financing_Kind_Source:
TcxGridBandedColumn;_Source_Financing_Activity: TcxGridBandedColumn;_Source_Financing_Date_Close:
TcxGridBandedColumn;_Source_Financing_ID:
TcxGridBandedColumn;_Source_Financing_ID_D:
TcxGridBandedColumn;_Source_Financing_ID_Kind_Source:
TcxGridBandedColumn;_Source_Financing_ID_Activity: TcxGridBandedColumn;:
TcxGridLevel;_tv_kind_order: TAction;_tv_contracts:
TAction;_tv_source_finansing: TAction;_listeners_org:
TcxGridBandedColumn;_listeners_money:
TcxGridBandedColumn;_listeners_status_text_contract:
TcxGridBandedColumn;_listeners_status_text_order_end:
TcxGridBandedColumn;_listeners_id_contract: TcxGridBandedColumn;_tv_listeners:
TAction;_Student: TcxPageControl;: TcxSplitter;_Orders: TcxTabSheet;_Orders:
TcxGrid;_orders: TcxGridBandedTableView;: TcxGridLevel;_orders_id_order:
TcxGridBandedColumn;_orders_kind_paragraph: TcxGridBandedColumn;_orders_status_text:
TcxGridBandedColumn;_orders_id_paragraph:
TcxGridBandedColumn;_orders_d_creation:
TcxGridBandedColumn;_orders_d_modification:
TcxGridBandedColumn;_orders_idk_order:
TcxGridBandedColumn;_orders_status_order: TcxGridBandedColumn;_tv_orders:
TAction;_listeners_id_paragraph_contract:
TcxGridBandedColumn;_r_c_plan_id_erp_user:
TcxGridBandedColumn;_r_c_groups_id_erp_user:
TcxGridBandedColumn;_listeners_id_erp_user:
TcxGridBandedColumn;_orders_ed_group: TcxGridBandedColumn;_orders_spec:
TcxGridBandedColumn;_orders_d_start: TcxGridBandedColumn;_orders_kind_training:
TcxGridBandedColumn;_orders_institute:
TcxGridBandedColumn;_orders_status_order_contract:
TcxGridBandedColumn;_orders_kind_paragraph_contract:
TcxGridBandedColumn;_Anketa: TcxTabSheet;_listeners_id_contractor:
TcxGridBandedColumn;_Anketa: TPanel;_Anketa: TAction;_r_c_groups_hours:
TcxGridBandedColumn;_listeners_hours: TcxGridBandedColumn;_Contracts:
TcxTabSheet;_FIO: TPanel;_FIO: TcxLabel;_r_c_plan_id_source: TcxGridBandedColumn;_r_c_plan_source:
TcxGridBandedColumn;_Contract_Params: TcxGroupBox;: TcxLabel;_PC_D_Start:
TcxDateEdit;: TcxLabel;_PC_D_End: TcxDateEdit;: TcxLabel;_PC_Org:
TcxPopupEdit;: TcxLabel;: TcxLabel;_PC_SF: TcxPopupEdit;:
TcxLabel;_PC_Contract: TcxButtonEdit;: TcxLabel;_PC_Kind_Order: TcxPopupEdit;:
TcxLabel;_PC_Create_Direction: TcxButtonEdit;_PC_Direction: TcxButtonEdit;:
TcxLabel;_PC_Kind_Direction: TcxPopupEdit;_Contract_Params: TAction;:
TcxTabSheet;_New_Direction: TPanel;: TcxLabel;_New_Direction: TcxPopupEdit;_Contract:
TAction;: TcxTabSheet;_Kind_Direction: TcxGrid;_kind_direction:
TcxGridBandedTableView;_kind_direction_name:
TcxGridBandedColumn;_kind_direction_id: TcxGridBandedColumn;:
TcxGridLevel;_PC_Apply: TcxButton;_PC_Refuse: TcxButton;_PC_Autorepresentative:
TcxButton;_Apply: TAction;_Refuse: TAction;_Autorepresentative:
TAction;_tv_kind_direction: TAction;_Insert_New_Direction:
TAction;_Add_Contract: TAction;_Delete_Contract: TAction;_End_Education:
TAction;: TcxTabSheet;_Kba_End: TcxGrid;_kba_end:
TcxGridBandedTableView;_kba_end_name: TcxGridBandedColumn;_kba_end_id:
TcxGridBandedColumn;: TcxGridLevel;_tv_kba_end: TAction;:
TcxTabSheet;_End_Education: TPanel;: TcxLabel;: TcxLabel;_KBA_End:
TcxPopupEdit;_End_Education: TcxButtonEdit;: TcxLabel;_End_Education:
TcxDateEdit;_listeners_d_end_plan: TcxGridBandedColumn;_PC_Money:
TcxCurrencyEdit;_New_Listener_Contract_Money:
TcxCurrencyEdit;_listeners_hours_plan: TcxGridBandedColumn;_r_c_plan_money:
TcxGridBandedColumn;_listeners_certificate: TcxGridBandedColumn;_PC_Representative:
TcxGroupBox;: TcxLabel;_PC_Basis: TcxTextEdit;: TcxLabel;: TcxLabel;:
TcxLabel;_PC_FIO: TcxTextEdit;_PC_FIO_R: TcxTextEdit;_PC_Post: TcxPopupEdit;:
TcxTabSheet;_Posts: TcxGrid;_posts: TcxGridBandedTableView;_posts_name: TcxGridBandedColumn;_posts_id:
TcxGridBandedColumn;: TcxGridLevel;_tv_posts:
TAction;_New_Listener_Representative: TcxGroupBox;:
TcxLabel;_New_Listener_Basis: TcxTextEdit;: TcxLabel;: TcxLabel;:
TcxLabel;_New_Listener_FIO: TcxTextEdit;_New_Listener_FIO_R: TcxTextEdit;_New_Listener_Post:
TcxPopupEdit;_listeners_last_date: TcxGridBandedColumn;_Plan:
TcxGroupBox;_Plan_Filters_Year: TcxSpinEdit;: TcxLabel;: TcxLabel;: TcxLabel;:
TcxLabel;_Plan_Filters_Note: TcxTextEdit;_Plan_Filters_Summary:
TcxTextEdit;_Plan_Filters_Apply: TcxButton;_Plan_Filters_Refuse:
TcxButton;_Plan_Filters_Plan: TcxPopupEdit;: TcxTabSheet;_Plan: TcxGrid;_plan:
TcxGridBandedTableView;: TcxGridLevel;_plan_note:
TcxGridBandedColumn;_plan_summary: TcxGridBandedColumn;_plan_status_text:
TcxGridBandedColumn;_plan_hisdate: TcxGridBandedColumn;_plan_d_creation:
TcxGridBandedColumn;_plan_d_modification:
TcxGridBandedColumn;_plan_id_paragraph: TcxGridBandedColumn;_plan_id_order:
TcxGridBandedColumn;_plan_idk_order: TcxGridBandedColumn;_plan_status_order: TcxGridBandedColumn;_plan_id_erp_user:
TcxGridBandedColumn;_tv_plan: TAction;_Apply: TAction;_Refuse:
TAction;_Curator: TPanel;: TcxSplitter;_Curator: TcxGrid;_Curator:
TcxGridBandedTableView;_Curator_Start: TcxGridBandedColumn;_Curator_End:
TcxGridBandedColumn;_Curator_ID_EG: TcxGridBandedColumn;_Curator_ID_E:
TcxGridBandedColumn;_Curator_Level1: TcxGridLevel;_Curator_FIO:
TcxGridBandedColumn;_Insert_Curator: TAction;_New_Curator:
TAction;_New_Curator: TcxTabSheet;_New_Curator: TPanel;: TcxLabel;_New_Curator_FIO:
TcxPopupEdit;: TcxLabel;_New_Curator: TcxDateEdit;_listeners_Main_Contract:
TcxGridBandedColumn;_listeners_ID_Contract_Main:
TcxGridBandedColumn;_listeners_Org_Contract_Main:
TcxGridBandedColumn;_Main_Contract: TAction;_Set_Main_Contract: TcxTabSheet;_Set_Main_Contract:
TPanel;: TcxLabel;_Set_Main_Contract: TcxPopupEdit;:
TcxLabel;_Set_Main_Contract_Find: TcxDateEdit;_Go_Set_Main_Contract:
TAction;_Main_Contracts: TcxGrid;_Main_Contracts:
TcxGridBandedTableView;_Main_Contracts_Contract: TcxGridBandedColumn;_Main_Contracts_Level14:
TcxGridLevel;_Main_Contracts_Org_Name:
TcxGridBandedColumn;_Main_Contracts_ID_Contract:
TcxGridBandedColumn;_Main_Contracts_Number: TcxGridBandedColumn;_Import:
TAction;_Import: TcxTabSheet;_Import: TPanel;: TcxLabel;_Import_Plan:
TcxPopupEdit;: TcxLabel;_Import_Start: TcxDateEdit;_File: TOpenDialog;:
TcxLabel;: TcxLabel;: TcxLabel;_Import_Plan: TcxButtonEdit;_Import_Spec:
TcxPopupEdit;_Import_Spec: TcxButtonEdit;_Import_Spec_Div:
TcxPopupEdit;_Import_Spec_Div: TcxButtonEdit;_Import_UMK:
TcxPopupEdit;_Import_UMK: TcxButtonEdit;_Go_Import: TAction;_Spec:
TcxGrid;_Spec: TcxGridBandedTableView;_Spec_Name: TcxGridBandedColumn;_Spec_Q:
TcxGridBandedColumn;_Spec_ID: TcxGridBandedColumn;_Spec_IDK_Level_Spec:
TcxGridBandedColumn;_Spec_id_discipline:
TcxGridBandedColumn;_Spec_idk_discipline: TcxGridBandedColumn;_Spec_Level1:
TcxGridLevel;_New_Spec: TcxTabSheet;_New_Spec: TPanel;: TcxLabel;_Spec_Name:
TcxTextEdit;_Spec_Quality: TcxTextEdit;: TcxLabel;_Import_End:
TcxDateEdit;_New_Spec_Div: TcxTabSheet;_New_Spec_Div: TPanel;: TcxLabel;:
TcxLabel;: TcxLabel;: TcxLabel;_Spec_Div_D_Start:
TcxDateEdit;_Spec_Div_Institute: TcxPopupEdit;: TcxLabel;_Spec_Div_Div:
TcxPopupEdit;_Spec_Div_Spec: TcxPopupEdit;_Spec_Div_KT: TcxPopupEdit;:
TcxLabel;_Spec_Div_SF: TcxPopupEdit;_Org_Division: TcxGrid;_Org_Division:
TcxGridBandedTableView;_Org_Division_Abbr:
TcxGridBandedColumn;_Org_Division_Name: TcxGridBandedColumn;_Org_Division_ID:
TcxGridBandedColumn;_Org_Division_Level1: TcxGridLevel;_Kind_Training: TcxGrid;_Kind_Training:
TcxGridBandedTableView;_Kind_Training_Name:
TcxGridBandedColumn;_Kind_Training_IDK_TRAINING: TcxGridBandedColumn;:
TcxGridLevel;: TcxLabel;_Import_EG: TcxPopupEdit;_Import_EG:
TcxButtonEdit;_New_UMK: TcxTabSheet;_New_UMK: TPanel;: TcxLabel;_New_UMK_Hours:
TcxSpinEdit;_After_Show_New_Anketa: TAction;_New_SE: TAction;:
TcxLabel;_Import_Order: TcxButtonEdit;_New_Contract_Main:
TcxTabSheet;_New_Contract_Main: TPanel;: TcxLabel;_New_Contract_Main:
TcxPopupEdit;: TcxLabel;_New_Contract_Main: TcxButtonEdit;:
TcxLabel;_New_Contract_Main: TcxTextEdit;: TcxLabel;_New_Contract_Main_Start:
TcxDateEdit;_New_Contract_Main_End: TcxDateEdit;_New_Contract_Main:
TAction;_Insert_Contract_Main: TAction;_Money: TcxEditRepositoryCurrencyItem;:
TcxLabel;_Import_Money: TcxCurrencyEdit;: TcxLabel;_Import_NDS:
TcxCurrencyEdit;: TcxLabel;_Import_Start_Otrjv: TcxDateEdit;_Import_End_Otrjv:
TcxDateEdit;: TcxLabel;_Import_Nach: TcxButtonEdit;_Import: TcxProgressBar;:
TcxLabel;_Import_Reference: TcxDateEdit;_Stages: TcxTabSheet;_Nach:
TcxGrid;_Nach: TcxGridBandedTableView;_Nach_D_Start:
TcxGridBandedColumn;_Nach_D_End: TcxGridBandedColumn;_Nach_ID_Stage:
TcxGridBandedColumn;_Nach_ID_Account_Contract:
TcxGridBandedColumn;_Nach_Document: TcxGridBandedColumn;_Nach_Level1: TcxGridLevel;_Nach_Status:
TcxGridBandedColumn;_Nach_Sum: TcxGridBandedColumn;_Nach_ID_Basis_Salary:
TcxGridBandedColumn;_Nach_ID_SF: TcxGridBandedColumn;_Nach_IDK_Order:
TcxGridBandedColumn;_Nach_ID_Paragraph: TcxGridBandedColumn;_Nach_ID_Order:
TcxGridBandedColumn;_Nach_ID_ERP: TcxGridBandedColumn;_Nach_User:
TcxGridBandedColumn;_Create_Nach: TAction;_New_Nach:
TcxTabSheet;_Nach_Kind_Order: TcxGridBandedColumn;_listeners_NDS:
TcxGridBandedColumn;_New_Nach: TPanel;: TcxLabel;_New_Nach: TcxButtonEdit;: TcxLabel;_New_Nach:
TcxDateEdit;_Go_New_Nach: TAction;_Go_Nach_All: TAction;_Create_Nach_All:
TAction;_Create_Nach_All: TcxTabSheet;_Create_Nach_All: TPanel;:
TcxLabel;_Create_Nach_All: TcxButtonEdit;: TcxLabel;_Create_Nach_All:
TcxDateEdit;_PC_NDS: TcxCheckBox;: TcxLabel;_PC_D_Start_Otrjv: TcxDateEdit;:
TcxLabel;_PC_D_End_Otrjv: TcxDateEdit;_listeners_ID_ERP_End:
TcxGridBandedColumn;_listeners_ID_Status_End:
TcxGridBandedColumn;_listeners_ID_Paragraph_End:
TcxGridBandedColumn;_Delete_Order_End: TAction;: TcxLabel;_Import_Curator:
TcxPopupEdit;_Stat: TcxTabSheet;: TcxGroupBox;: TcxLabel;_Stat_Begin:
TcxDateEdit;: TcxLabel;_Stat_End: TcxDateEdit;: TcxButton;_Read_Stat:
TAction;_Stat: TcxGrid;_Stat: TcxGridBandedTableView;_Stat_FIO:
TcxGridBandedColumn;_Stat_EG: TcxGridBandedColumn;_Stat_D_Start:
TcxGridBandedColumn;_Stat_D_End: TcxGridBandedColumn;_Stat_Order_Start:
TcxGridBandedColumn;_Stat_Order_End: TcxGridBandedColumn;_Stat_Contract:
TcxGridBandedColumn;_Stat_Org: TcxGridBandedColumn;_Stat_Money: TcxGridBandedColumn;_Stat_Cert:
TcxGridBandedColumn;_Stat_Hours_Fact: TcxGridBandedColumn;_Stat_Hours_Plan:
TcxGridBandedColumn;_Stat_Last_Date: TcxGridBandedColumn;_Stat_ID_Student:
TcxGridBandedColumn;_Stat_ID_E: TcxGridBandedColumn;_Stat_ID_EG:
TcxGridBandedColumn;_Stat_ID_C: TcxGridBandedColumn;_Stat_Contract_Main:
TcxGridBandedColumn;_Stat_Org_Main: TcxGridBandedColumn;_Stat_Money_NDS:
TcxGridBandedColumn;_Stat_Level15: TcxGridLevel;_Stat_Spec_Name:
TcxGridBandedColumn;: TcxLabel;_New_UMK_Hours_SR: TcxSpinEdit;_Make_Certificate:
TAction;_listeners_Reg_Number: TcxGridBandedColumn;_New_Cert:
TcxTabSheet;_New_Cert: TPanel;: TcxLabel;_New_Cert: TcxButtonEdit;:
TcxLabel;_New_Cert_Reg: TcxSpinEdit;_Spin_Integer: TcxEditRepositorySpinItem;:
TcxLabel;_New_Cert_Number: TcxSpinEdit;: TcxLabel;_New_Cert_Kind_Doc:
TcxPopupEdit;_Go_New_Cert: TAction;_Kind_Doc_Cert: TcxGrid;_Kind_Doc_Cert:
TcxGridBandedTableView;_Kind_Doc_Cert_Name:
TcxGridBandedColumn;_Kind_Doc_Cert_ID:
TcxGridBandedColumn;_Kind_Doc_Cert_Level15: TcxGridLevel;_listeners_Kind_Cert:
TcxGridBandedColumn;_listeners_ID_Kind_Cert: TcxGridBandedColumn;:
TcxLabel;_New_Cert_Hours: TcxSpinEdit;_Import_Mode: TcxRadioGroup;_Stat_Inst:
TcxGridBandedColumn;_View_Certificate: TAction;_listeners_ID_Certificate:
TcxGridBandedColumn;_listeners_ID_Doc_Cert:
TcxGridBandedColumn;_listeners_Cert_Date:
TcxGridBandedColumn;_listeners_ID_Reg: TcxGridBandedColumn;_Delete_Certificate:
TAction;_MC: TcxTabSheet;: TcxGroupBox;: TcxLabel;_Filter_Start: TcxDateEdit;:
TcxLabel;_Filter_End: TcxDateEdit;: TcxLabel;_Filter_Org: TcxPopupEdit;_MC:
TcxGrid;_MC: TcxGridBandedTableView;_MC_Org:
TcxGridBandedColumn;_MC_ID_Contract: TcxGridBandedColumn;_MC_Level15:
TcxGridLevel;_MC_ID_CA: TcxGridBandedColumn;_MC_Start:
TcxGridBandedColumn;_MC_End: TcxGridBandedColumn;_MC_Number:
TcxGridBandedColumn;_MC_Old_Number: TcxGridBandedColumn;_MC_Kind:
TcxGridBandedColumn;_MC_IDK_Order: TcxGridBandedColumn;_MC_ID_MT:
TcxGridBandedColumn;_MC_ID_MO: TcxGridBandedColumn;_MC_ID_Paragraph:
TcxGridBandedColumn;_MC_ID_Order: TcxGridBandedColumn;_MC_ID_ERP:
TcxGridBandedColumn;_MC_ID_Status: TcxGridBandedColumn;_MC_User:
TcxGridBandedColumn;_MC_Hisdate: TcxGridBandedColumn;_MC_Count:
TcxGridBandedColumn;_MC_Order: TcxGridBandedColumn;_New_MC: TAction;_Insert_MC:
TAction;_com_spec_sam: TcxGridBandedColumn;_Delete_Nach: TAction;_New_Money:
TcxTabSheet;_New_Money: TPanel;_New_Money: TcxCurrencyEdit;:
TcxLabel;_New_Money: TAction;_Go_New_Money:
TAction;Action_Insert_tv_r_c_planExecute(Sender:
TObject);Fill_tv_spec_div_popupExecute(Sender:
TObject);tv_r_c_plan_name_specPropertiesInitPopup(Sender:
TObject);cxPopupEdit_New_R_C_Plan_Spec_DivPropertiesInitPopup
(Sender:
TObject);Action_Insert_tv_r_c_groupExecute(Sender:
TObject);Fill_tv_com_specExecute(Sender: TObject);Fill_tv_ed_groupExecute(Sender:
TObject);cxPopupEdit_New_R_C_Group_Met_ComplexPropertiesInitPopup
(Sender:
TObject);Fill_tv_r_c_planExecute(Sender:
TObject);cxPopupEdit_New_R_C_Group_Ed_GroupPropertiesInitPopup
(Sender:
TObject);tv_r_c_groups_namePropertiesInitPopup(Sender: TObject);Fill_tv_r_c_groupsExecute(Sender:
TObject);Fill_tv_listenersExecute(Sender:
TObject);PageControl_MainPageChanging(Sender: TObject;: TcxTabSheet; var
AllowChange: Boolean);Action_Insert_tv_listenersExecute(Sender:
TObject);cxPopupEdit_New_Listener_Ed_GroupPropertiesEditValueChanged
(Sender:
TObject);cxPopupEdit_New_Listener_Ed_GroupPropertiesInitPopup
(Sender:
TObject);Fill_tv_kba_startExecute(Sender:
TObject);cxPopupEdit_New_Listener_Kind_Basis_ActionPropertiesInitPopup
(Sender: TObject);Fill_tv_kind_orderExecute(Sender:
TObject);cxPopupEdit_New_Listener_Kind_OrderPropertiesInitPopup
(Sender:
TObject);Fill_tv_contractsExecute(Sender:
TObject);cxPopupEdit_New_Listener_OrderPropertiesInitPopup
(Sender:
TObject);Fill_tv_source_finansingExecute(Sender:
TObject);_New_Listener_Contract_Source_FinansingPropertiesInitPopup
(Sender:
TObject);cxDateEdit_New_Listener_D_StartPropertiesEditValueChanged
(Sender:
TObject);cxDateEdit_New_Listener_D_EndPropertiesEditValueChanged
(Sender: TObject);cxDateEdit_New_Listener_Contract_D_StartPropertiesEditValueChanged
(Sender:
TObject);cxDateEdit_New_Listener_Contract_D_EndPropertiesEditValueChanged
(Sender:
TObject);tv_listeners_ed_groupPropertiesInitPopup(Sender:
TObject);tv_listeners_kind_basis_actionPropertiesInitPopup
(Sender:
TObject);Delete_tv_listenersExecute(Sender:
TObject);Fill_tv_ordersExecute(Sender: TObject);tv_listenersEditing(Sender:
TcxCustomGridTableView;: TcxCustomGridTableItem; var AAllow:
Boolean);tv_r_c_groupsEditing(Sender: TcxCustomGridTableView;:
TcxCustomGridTableItem; var AAllow:
Boolean);tv_listenersSelectionChanged(Sender:
TcxCustomGridTableView);tv_r_c_planSelectionChanged(Sender:
TcxCustomGridTableView);tv_r_c_groupsSelectionChanged(Sender:
TcxCustomGridTableView);Fill_AnketaExecute(Sender:
TObject);cxPageControl_StudentPageChanging(Sender: TObject;: TcxTabSheet; var
AllowChange: Boolean);Fill_Contract_ParamsExecute(Sender:
TObject);Clear_ContractExecute(Sender: TObject);PC_ApplyExecute(Sender:
TObject);PC_RefuseExecute(Sender: TObject);PC_AutorepresentativeExecute(Sender:
TObject);Fill_tv_kind_directionExecute(Sender:
TObject);cxPopupEdit_PC_Kind_DirectionPropertiesInitPopup(Sender:
TObject);Action_Insert_New_DirectionExecute(Sender:
TObject);cxButtonEdit_PC_Create_DirectionClick(Sender:
TObject);tv_listeners_d_startPropertiesEditValueChanged(Sender:
TObject);Action_Delete_ContractExecute(Sender:
TObject);Action_Add_ContractExecute(Sender:
TObject);cxPopupEdit_New_DirectionPropertiesInitPopup(Sender:
TObject);cxPopupEdit_New_Listener_OrderPropertiesEditValueChanged
(Sender:
TObject);Fill_tv_kba_endExecute(Sender:
TObject);cxPopupEdit_KBA_EndPropertiesInitPopup(Sender:
TObject);Action_End_EducationExecute(Sender:
TObject);tv_r_c_planKeyDown(Sender: TObject; var Key: Word;: TShiftState);tv_r_c_planMouseDown(Sender:
TObject; Button: TMouseButton;: TShiftState; X, Y:
Integer);tv_r_c_groupsKeyDown(Sender: TObject; var Key: Word;:
TShiftState);tv_r_c_groupsMouseDown(Sender: TObject; Button: TMouseButton;:
TShiftState; X, Y: Integer);tv_listenersKeyDown(Sender: TObject; var Key:
Word;: TShiftState);tv_listenersMouseDown(Sender: TObject; Button:
TMouseButton;: TShiftState; X, Y: Integer);FormDestroy(Sender:
TObject);FormShow(Sender: TObject);Fill_tv_postsExecute(Sender:
TObject);cxPopupEdit_PC_PostPropertiesInitPopup(Sender:
TObject);tv_r_c_planEditing(Sender: TcxCustomGridTableView;:
TcxCustomGridTableItem; var AAllow: Boolean);Fill_tv_planExecute(Sender:
TObject);cxPopupEdit_Plan_Filters_PlanPropertiesInitPopup(Sender:
TObject);Plan_ApplyExecute(Sender: TObject);Plan_RefuseExecute(Sender:
TObject);Action_New_CuratorExecute(Sender:
TObject);Action_Insert_CuratorExecute(Sender:
TObject);Action_Main_ContractExecute(Sender:
TObject);DateEdit_Set_Main_Contract_FindPropertiesEditValueChanged
(Sender: TObject);Action_Go_Set_Main_ContractExecute(Sender:
TObject);Action_ImportExecute(Sender:
TObject);PopupEdit_Import_SpecPropertiesEditValueChanged(Sender:
TObject);ButtonEdit_Import_SpecClick(Sender:
TObject);ButtonEdit_Import_Spec_DivClick(Sender: TObject);ButtonEdit_Import_UMKClick(Sender:
TObject);ButtonEdit_Import_PlanClick(Sender:
TObject);ButtonEdit_Import_EGClick(Sender:
TObject);Action_After_Show_New_AnketaExecute(Sender:
TObject);Action_New_SEExecute(Sender: TObject);Action_New_Contract_MainExecute(Sender:
TObject);Action_Insert_Contract_MainExecute(Sender:
TObject);Action_Create_NachExecute(Sender:
TObject);Action_Go_New_NachExecute(Sender:
TObject);Action_Go_Nach_AllExecute(Sender:
TObject);Action_Create_Nach_AllExecute(Sender: TObject);Action_Delete_Order_EndExecute(Sender:
TObject);Action_Read_StatExecute(Sender:
TObject);Action_Make_CertificateExecute(Sender:
TObject);Action_Go_New_CertExecute(Sender:
TObject);ButtonEdit_New_CertPropertiesEditValueChanged(Sender:
TObject);Action_View_CertificateExecute(Sender:
TObject);Action_Delete_CertificateExecute(Sender:
TObject);Filter_MC_Changed(Sender: TObject);Action_New_MCExecute(Sender:
TObject);Action_Delete_NachExecute(Sender:
TObject);Action_New_MoneyExecute(Sender: TObject);Action_Go_New_MoneyExecute(Sender:
TObject);ButtonEdit_Import_OrderPropertiesEditValueChanged(: TObject);
{ Private declarations }:
Excel2000.TExcelApplication;
ew: _Workbook;: _Worksheet;
{ Доступность редактирования учебных групп,
сроков проведения и плана ПК }_Groups: Boolean;
{ Доступность просмотра мероприятий }_Event:
Boolean;
{ Доступность всех действий с мероприятиями
}_Event: Boolean;
{ Объект для работы со списками }_TableView:
TSqlData_cxGridTableView;
{ Путь реестра (для загрузки/сохранения
параметров) }_Reg_Path: String;
// Название программы и код подразделения при
импорте
Import_Name_Spec, id_d_import,
Import_Hours, Import_ID_EG, Import_EG_Name
,Import_FIO_Curator,
Import_Hours_SR, id_d_kaf, idk_training: String;
{ Форма поиска человека }_Form_SE: TForm_SE;
{ Форма
поиска
организации
}_Form_Find_Org: TForm_Find_Org;
{ Форма
анкета
}_Form_Anketa, Form_Anketa_For_New: TFUnivQuestionare;
// Текущие
значения
из
файла
импорта_sex,
curr_surname, curr_name, curr_patronymic, curr_birthday
, curr_email, curr_phone: string;
{ Контейнеры
оберток
}_New_R_C_Plan: TContainerWrappers;_New_R_C_Group:
TContainerWrappers;_New_Listener: TContainerWrappers;_Contract_Params:
TContainerWrappers;_New_Direction: TContainerWrappers;_End_Education:
TContainerWrappers;_Plan_Filters: TContainerWrappers;_New_Curator:
TContainerWrappers;_Set_Main_Contract, cw_Filter_Contracts_Main:
TContainerWrappers;_Import, cW_New_Spec, cW_New_Spec_Div, cw_New_UMK
, cw_New_Contract_Main,
Cont_New_Nach, Cont_New_Nach_All
, Cont_Stat, Cont_Make_Cert, New_MC,
cw_New_Money: TContainerWrappers;
{ Обработчики событий изменения в контейнерах
оберток }
procedure
DoChanged_cW_New_R_C_Plan(AWrapper:
TCustomEditWrapper);DoChanged_cW_New_R_C_Group(AWrapper:
TCustomEditWrapper);DoChanged_cW_New_Listener(AWrapper:
TCustomEditWrapper);DoChanged_cW_Contract_Params(AWrapper:
TCustomEditWrapper);DoChanged_cW_New_Direction(AWrapper:
TCustomEditWrapper);DoChanged_cW_End_Education(AWrapper:
TCustomEditWrapper);DoChanged_cW_Plan_Filters(AWrapper: TCustomEditWrapper);
{ Смена записи в tv_r_c_plan }
procedure ChoiceGridRecord(Sender:
TSqlData_cxGridTableView;: TcxGridDataRow);
{ Смена
записи
в
tv_listeners }OnChoiceGridRecord_tv_listeners(Sender:
TSqlData_cxGridTableView;: TcxGridDataRow);
{ Действие
перед
изменением
данных
в
tv_listeners }Before_Update_Exchange_tv_listeners
(Sender: TSqlData_cxGridTableView;
UpdateValue: Variant;: TcxCustomGridTableItem; ARecordIndex:
Integer;ExchangeParameters: OleVariant; var Allow: Boolean);
{ Установка
доступности
добавления
}Allow_Insert(TV: TcxCustomGridTableView; Roles: array of Boolean);
{ Установка доступности редактирования таблицы
(с документом) }
function Allow_Editing(TV:
TcxCustomGridTableView;_Column: TcxGridColumn; ID_ERP_Column: TcxGridColumn;:
array of Boolean): Boolean; overload;
{ Установка доступности редактирования таблицы
(без документа) }
function Allow_Editing(TV:
TcxCustomGridTableView;: array of Boolean): Boolean; overload;
procedure Allow_Delete(TV:
TcxCustomGridTableView;_Column: TcxGridColumn; ID_ERP_Column: TcxGridColumn;:
array of Boolean); overload;
{ Установка доступности удаления из таблицы (без
документа) }
procedure Allow_Delete(TV:
TcxCustomGridTableView;: array of Boolean); overload;
{ Обработчик события после чтения в tv_listeners
}
procedure
After_Read_tv_listeners(Sender: TSqlData_cxGridTableView);
{ Включить/выключить
параметры
договора
}ContractParamsEnabled(GB: TcxGroupBox; Enabled: Boolean);
{ Включить/выключить элементы для добавления
студента/договора }
procedure
StudentElementsEnabled(Enabled: Boolean);
{ Сохранение/восстановление
параметров
списков
}Save_Restore_Params(RReg_Path: String = Reg_Path;_Load: Boolean = True);DoChanged_cW_Spec_Div(AWrapper:
TCustomEditWrapper);
// Добавить-таки человека!OkNewEmp;
// Выбрать старого!}OkOldEmp;
// После удаления
procedure After_Delete(Sender:
TSqlData_cxGridTableView);
// Параметры
удаленияDelete_Main_Contract(Sender:
TSqlData_cxGridTableView; ARecordIndex: Integer;ExchangeParameters:
OleVariant);
{ Public declarations }
// Настройка
списковInit(AReg_Path:
String = Reg_Path; AForm_SE: TForm_SE = nil;_Find_Org: TForm_Find_Org =
nil;_Anketa: TFUnivQuestionare = nil;_Anketa_For_New: TFUnivQuestionare = nil);
// Обновить
ролиRefresh_Roles;
// Проверка доступности ко всей форме без
создания ее самой!!!
class function IsRoleAccessible:
Boolean;;_Event: TForm_Event;
{$R *.dfm}SysServices, Get_PK_PPS_Data,
standart_new, get_single_data, LP_u_CX_tools;
{ Сохранение/восстановление
параметров
списков
}TForm_Event.Save_Restore_Params(RReg_Path: String = Reg_Path;_Load: Boolean =
True);.StorageName := RReg_Path + '\Общие
параметры';PIs_Load
then.RestoreFrom;VarToStr(cW_Plan_Filters.wrappers[cxPopupEdit_Plan_Filters_Plan].Value)
<> ''cxPopupEdit_Plan_Filters_Plan.Tag :=
cW_Plan_Filters.wrappers[cxPopupEdit_Plan_Filters_Plan].Value;
cxPropertiesStore1.StoreTo(True);
{ Сохранение или загрузки параметров списков (в
зависимости от параметра PIs_Load) }
Restore_cxGridTableView(tv_r_c_plan,
PIs_Load,_Path + Grid_Path +
Get_SqlData_cxGrid(tv_r_c_plan).Table_Name);_cxGridTableView(tv_r_c_groups,
PIs_Load,_Path + Grid_Path + Get_SqlData_cxGrid(tv_r_c_groups).Table_Name);_cxGridTableView(tv_listeners,
PIs_Load,_Path + Grid_Path +
Get_SqlData_cxGrid(tv_listeners).Table_Name);_cxGridTableView(tv_orders,
PIs_Load,_Path + Grid_Path +
Get_SqlData_cxGrid(tv_orders).Table_Name);_cxGridTableView(tv_spec_div_popup,
PIs_Load,_Path + Grid_Path +
Get_SqlData_cxGrid(tv_spec_div_popup).Table_Name);_cxGridTableView(tv_ed_group,
PIs_Load,_Path + Grid_Path +
Get_SqlData_cxGrid(tv_ed_group).Table_Name);_cxGridTableView(tv_com_spec,
PIs_Load,_Path + Grid_Path + Get_SqlData_cxGrid(tv_com_spec).Table_Name);_cxGridTableView(tv_kba_start,
PIs_Load,_Path + Grid_Path +
Get_SqlData_cxGrid(tv_kba_start).Table_Name);_cxGridTableView(tv_kind_order,
PIs_Load,_Path + Grid_Path +
Get_SqlData_cxGrid(tv_kind_order).Table_Name);_cxGridTableView(tv_contracts,
PIs_Load,_Path + Grid_Path +
Get_SqlData_cxGrid(tv_contracts).Table_Name);_cxGridTableView(tv_Source_Financing,
PIs_Load,_Path + Grid_Path + Get_SqlData_cxGrid(tv_Source_Financing)
.Table_Name);_cxGridTableView(tv_kind_direction,
PIs_Load,_Path + Grid_Path +
Get_SqlData_cxGrid(tv_kind_direction).Table_Name);_cxGridTableView(tv_kba_end,
PIs_Load,_Path + Grid_Path +
Get_SqlData_cxGrid(tv_kba_end).Table_Name);_cxGridTableView(tv_posts,
PIs_Load,_Path + Grid_Path + Get_SqlData_cxGrid(tv_posts).Table_Name);_cxGridTableView(tv_plan,
PIs_Load,_Path + Grid_Path +
Get_SqlData_cxGrid(tv_plan).Table_Name);_cxGridTableView(TTree_Curator,
PIs_Load,_Path + Grid_Path +
Get_SqlData_cxGrid(TTree_Curator).Table_Name);_cxGridTableView(TTree_Main_Contracts,
PIs_Load,_Path + Grid_Path +
Get_SqlData_cxGrid(TTree_Main_Contracts).Table_Name);_cxGridTableView(TTree_Nach,
PIs_Load,_Path + Grid_Path +
Get_SqlData_cxGrid(TTree_Nach).Table_Name);_cxGridTableView(TTree_Stat,
PIs_Load,_Path + Grid_Path + Get_SqlData_cxGrid(TTree_Stat).Table_Name);_cxGridTableView(TTree_Kind_Doc_Cert,
PIs_Load,_Path + Grid_Path +
Get_SqlData_cxGrid(TTree_Kind_Doc_Cert).Table_Name);_cxGridTableView(TTree_MC,
PIs_Load,_Path + Grid_Path + Get_SqlData_cxGrid(TTree_MC).Table_Name);
end;
{ Проверка доступности ко всей форме без
создания ее самой! }
class function
TForm_Event.IsRoleAccessible: Boolean;:=
vnSessionAgent.IsRoleSomehowAccessible('', '',_Q_Edit_Groups) or
vnSessionAgent.IsRoleSomehowAccessible('', '',_Q_Edit_Event) or
vnSessionAgent.IsRoleSomehowAccessible('', '',_Q_View_Event) or
vnSessionAgent.IsDBA;;
{ Проверка
прав
}TForm_Event.Refresh_Roles;: Boolean;
{ Проверка
наличия
ролей
}:= vnSessionAgent.IsDBA;_Groups := DBA or
vnSessionAgent.IsRoleSomehowAccessible('', '', Action_Q_Edit_Groups);_Event := DBA
or vnSessionAgent.IsRoleSomehowAccessible('', '',
Action_Q_Edit_Event);_Import.Enabled := DBA or
vnSessionAgent.IsRoleSomehowAccessible('', '', Action_Q_Edit_Event);
{ Проверка
ролей
для
анкеты
}_Form_Anketa.RefreshRoles(False);_New_SE.Enabled := DBAvnSessionAgent.IsRoleSomehowAccessible('',
'',
Action_Q_Edit_Event);_SqlData_cxGrid(Current_Form_SE.cxGrid_FIO).ActionInsert.Enabled
:= Action_New_SE.Enabled;
{ Проверка
доступности
параметров
договора
}_cW_Contract_Params(cW_Contract_Params.wrappers
[cxButtonEdit_PC_Contract]);_r_c_planSelectionChanged(tv_r_c_plan);
// Доступность
добавления
рамочного
договора_New_MC.Enabled
:= vnSessionAgent.IsDBAvnSessionAgent.IsRoleSomehowAccessible('', '',
Action_Q_Edit_Event);;
{ Установка
доступности
добавления
}TForm_Event.Allow_Insert(TV: TcxCustomGridTableView;: array of Boolean);:
Integer;: Boolean;_TableView := Get_SqlData_cxGrid(TV);(FSqlData_TableView
<> nil) and (Length(Roles) > 0) then// 1not
FSqlData_TableView.IsFirstRead then// 2:= False;i := 0 to Length(Roles) - 1
do:= Allow or Roles[i];_TableView.ActionInsert.Enabled := Allow;//
2_TableView.ActionInsert.Enabled := False;
end; // 1;
{ Установка доступности редактирования таблицы
(с документом) }
function
TForm_Event.Allow_Editing(TV: TcxCustomGridTableView;_Column: TcxGridColumn;
ID_ERP_Column: TcxGridColumn;: array of Boolean): Boolean;, id_erp: string;:
Integer;: Boolean;_TableView := Get_SqlData_cxGrid(TV);(FSqlData_TableView
<> nil) and (Length(Roles) > 0) then//
1(TV.DataController.FocusedRecordIndex <> -1) then// 2:=
VarToStr(TV.DataController.Values
[TV.DataController.FocusedRecordIndex,
Status_Column.Index]);_erp := VarToStr(TV.DataController.Values
[TV.DataController.FocusedRecordIndex,
ID_ERP_Column.Index]);:= False;i := 0 to Length(Roles) - 1 do:= Allow or
Roles[i];:= (status = '2') and (id_erp = vnSessionAgent.ID_ERP_User)Allow;//
2:= False;
end; // 1;
{ Установка доступности редактирования таблицы
(без документа) }
function
TForm_Event.Allow_Editing(TV: TcxCustomGridTableView;: array of Boolean):
Boolean;: Integer;: Boolean;_TableView :=
Get_SqlData_cxGrid(TV);(FSqlData_TableView <> nil) and (Length(Roles)
> 0) then// 1:= False;i := 0 to Length(Roles) - 1 do:= Allow or Roles[i];:=
(TV.DataController.FocusedRecordIndex <> -1) and Allow;// 1:= False;;
{ Установка доступности удаления из таблицы (с
документом) }
procedure
TForm_Event.Allow_Delete(TV: TcxCustomGridTableView;_Column: TcxGridColumn;
ID_ERP_Column: TcxGridColumn;: array of Boolean);: Integer;: Boolean;_TableView
:= Get_SqlData_cxGrid(TV);(FSqlData_TableView <> nil) and (Length(Roles)
> 0) then// 1:= False;i := 0 to Length(Roles) - 1 do:= Allow or
Roles[i];_TableView.ActionDelete.Enabled := Is_Value(Status_Column, '2',) and
Is_Value(ID_ERP_Column, vnSessionAgent.ID_ERP_User, False) and
(TV.Controller.SelectedRecordCount
> 0) and Allow;
end; // 1;
{ Установка доступности удаления из таблицы (без
документа) }
procedure
TForm_Event.Allow_Delete(TV: TcxCustomGridTableView;: array of Boolean);:
Integer;: Boolean;_TableView := Get_SqlData_cxGrid(TV);(FSqlData_TableView
<> nil) and (Length(Roles) > 0) then// 1:= False;i := 0 to
Length(Roles) - 1 do:= Allow or Roles[i];_TableView.ActionDelete.Enabled :=
(TV.Controller.SelectedRecordCount
> 0) and Allow;
end; // 1;
{ Включить/выключить параметры договора }
procedure
TForm_Event.Clear_ContractExecute(Sender:
TObject);_Contract_Params.ClearWrappers;;TForm_Event.ContractParamsEnabled(GB:
TcxGroupBox; Enabled: Boolean);: Integer;.Enabled := Enabled;i := 0 to
GB.ControlCount - 1 doGB.Controls[i] is TcxLabel then (GB.Controls[i] as
TcxLabel)
.Enabled := Enabled;GB.Controls[i]
is TcxDateEdit then (GB.Controls[i] as TcxDateEdit)
.Enabled := Enabled;GB.Controls[i]
is TcxPopupEdit then (GB.Controls[i] as TcxPopupEdit)
.Enabled := Enabled;GB.Controls[i]
is TcxSpinEdit then (GB.Controls[i] as TcxSpinEdit)
.Enabled := Enabled;GB.Controls[i]
is TcxButtonEdit then (GB.Controls[i] as TcxButtonEdit)
.Enabled := Enabled;GB.Controls[i]
is TcxCurrencyEdit then
(GB.Controls[i] as TcxCurrencyEdit)
.Enabled := Enabled;GB.Controls[i]
is TcxTextEdit then (GB.Controls[i] as TcxTextEdit)
.Enabled :=
Enabled;;;TForm_Event.StudentElementsEnabled(Enabled: Boolean);.Enabled :=
Enabled;.Enabled := Enabled;.Enabled := Enabled;.Enabled := Enabled;.Enabled :=
Enabled;.Enabled := Enabled;_New_Listener_FIO.Enabled :=
Enabled;_New_Listener_Ed_Group.Enabled := Enabled;_New_Listener_D_Start.Enabled
:= Enabled;_New_Listener_D_End.Enabled :=
Enabled;_New_Listener_Kind_Basis_Action.Enabled :=
Enabled;_New_Listener_Order_Start.Enabled := Enabled;;TForm_Event.tv_listenersEditing(Sender:
TcxCustomGridTableView;: TcxCustomGridTableItem; var AAllow: Boolean);, id_erp:
string;
begin
{ Доступность редактирования столбцов: ФИО,
Учебная группа, Дата начала,
Основание зачисления
}(AItem = tv_listeners_fio) or (AItem = tv_listeners_ed_group) or
(AItem = tv_listeners_d_start) or
(AItem = tv_listeners_kind_basis_action)// 1:=
VarToStr(Sender.DataController.Values
[Sender.DataController.FocusedRecordIndex,
tv_listeners_status_order_start.Index]);_erp :=
VarToStr(Sender.DataController.Values
[Sender.DataController.FocusedRecordIndex,
tv_listeners_id_erp_user.Index]);:= (status = '2') and (id_erp =
vnSessionAgent.ID_ERP_User)REdit_Event;// 1
{ Доступность
сертификата}((AItem
= tv_listeners_certificate) or (AItem = tv_listeners_hours)(AItem =
tv_listeners_Reg_Number) or (AItem = tv_listeners_Kind_Cert)(AItem =
tv_listeners_Cert_Date))AAllow := not
VarIsNull(tv_listeners.DataController.Values
[Sender.DataController.FocusedRecordIndex,
tv_listeners_certificate.Index])
and REdit_Event
{ Доступность редактирования Даты окончания }
if (AItem =
tv_listeners_d_end)AAllow := not VarIsNull(tv_listeners.DataController.Values
[Sender.DataController.FocusedRecordIndex,
tv_listeners_status_text_order_end.Index])REdit_EventAAllow :=
False;;TForm_Event.tv_listenersKeyDown(Sender: TObject; var Key: Word;:
TShiftState);Key = VK_INSERT then_Insert(tv_listeners, [REdit_Event])if Key =
VK_DELETE then_Delete(tv_listeners, tv_listeners_status_order_start,_listeners_id_erp_user,
[REdit_Event]);;TForm_Event.tv_listenersMouseDown(Sender: TObject;:
TMouseButton; Shift: TShiftState; X, Y: Integer);Button = mbRight then//
1_Insert(tv_listeners, [REdit_Event]);_listenersSelectionChanged(tv_listeners);;
// 1
end;
{ Доступность действий на выделении}
procedure
TForm_Event.tv_listenersSelectionChanged
(Sender: TcxCustomGridTableView);L:
TIntegerList; i: integer;
begin
{ Установим доступность удаления студентов }
Allow_Delete(Sender,
tv_listeners_status_order_start,_listeners_id_erp_user,
[REdit_Event]);(Sender.Controller.SelectedRecordCount > 0) then// 1
{ Установим
доступность
добавления
договора
}_Add_Contract.Enabled := VarIsNull
(Sender.DataController.Values
[Sender.DataController.FocusedRecordIndex,_listeners_id_contract.Index])
and REdit_Event;
{ Установим
доступность
удаления
договоров
}_Delete_Contract.Enabled := (not Is_Value(tv_listeners_id_contract,
'', True)) and REdit_Event;
// Рамочный
договор_Main_Contract.Enabled
:= Action_Delete_Contract.Enabled;
{ Установим доступность действия окончания
обучения }
Action_End_Education.Enabled :=
Is_Value
(tv_listeners_status_text_order_end,
'', False) and REdit_Event;
{ Установим доступность удаления окончания
обучения }
Action_Delete_Order_End.Enabled := not
Is_Value
(tv_listeners_status_text_order_end,
'', True) and REdit_Event;
{ Установим
доступность
добавления
удостоверения}_Make_Certificate.Enabled
:= Is_Value(tv_listeners_certificate, '', True)(not
Is_Value(tv_listeners_status_text_order_end, '', False))REdit_Event;_View_Certificate.Enabled
:= not Is_Value(tv_listeners_certificate, '', True);
{ Установим
доступность
удаления
удостоверения}_Delete_Certificate.Enabled
:= not Is_Value(tv_listeners_certificate, '', True)
and REdit_Event;
{ Установим доступность выставления начислений}
Action_Create_Nach_All.Enabled :=
REdit_EventAction_Delete_Contract.Enabled;
{ Установим доступность изменения стоимости
договоров}
Action_New_Money.Enabled :=
Action_Create_Nach_All.Enabled;
{ Установим
доступность
удаления
начислений}_Delete_Nach.Enabled
:= REdit_EventAction_Delete_Contract.Enabled;
{ Установим доступность удаления приказа об
окончании}
if
Action_Delete_Order_End.Enabledwith Sender.DataController
do_SqlData_cxGrid(tv_listeners).GetSelectedRecordIndexList(L);i := 0 to L.Count
- 1 do_Delete_Order_End.Enabled :=
Action_Delete_Order_End.Enabled(VarToStr(Values[L.Items[i],
tv_listeners_ID_Status_End.Index]) =
'2')(vnSessionAgent.IsDBA(VarToStr(Values[L.Items[i],
tv_listeners_ID_ERP_End.Index]) = vnSessionAgent.ID_ERP_User));;//
2_Add_Contract.Enabled := False;_Delete_Contract.Enabled :=
False;_End_Education.Enabled := False;_Delete_Order_End.Enabled :=
False;_Make_Certificate.Enabled := False;_View_Certificate.Enabled :=
False;_Main_Contract.Enabled := False;_Delete_Certificate.Enabled := False;; //
2;TForm_Event.tv_listeners_d_startPropertiesEditValueChanged
(Sender:
TObject);_Contract_Params.wrappers[cxDateEdit_PC_D_Start].Value := VarToStr
(tv_listeners.DataController.Values
[tv_listeners.DataController.FocusedRecordIndex,_listeners_d_start.Index]);;TForm_Event.tv_listeners_ed_groupPropertiesInitPopup(Sender:
TObject);_tv_r_c_groupsExecute(self);;TForm_Event.tv_listeners_kind_basis_actionPropertiesInitPopup
(Sender:
TObject);_tv_kba_startExecute(self);;TForm_Event.tv_r_c_groupsEditing(Sender:
TcxCustomGridTableView;: TcxCustomGridTableItem; var AAllow: Boolean);:=
Allow_Editing(Sender, [REdit_Groups,
REdit_Event]);;TForm_Event.tv_r_c_groupsKeyDown(Sender: TObject; var Key:
Word;: TShiftState);Key = VK_INSERT then_Insert(tv_r_c_groups, [REdit_Groups,
REdit_Event]);;TForm_Event.tv_r_c_groupsMouseDown(Sender: TObject;:
TMouseButton; Shift: TShiftState; X, Y: Integer);Button = mbRight
then_Insert(tv_r_c_groups, [REdit_Groups,
REdit_Event]);;TForm_Event.tv_r_c_groupsSelectionChanged
(Sender:
TcxCustomGridTableView);Sender = TTree_MCwith TTree_MC.Controller
do_SqlData_cxGrid(TTree_MC).ActionDelete.Enabled :=
(SelectedRowCount >
0)Get_SqlData_cxGrid(TTree_MC).ActionInsert.EnabledIs_Value(Tree_MC_ID_Status,
'2', False)(vnSessionAgent.IsDBA or vnSessionAgent.IsRoleAccessible('', '',
'902'
,
[VarToStr(SelectedRows[0].Values[Tree_MC_ID_MT.Index])]
,
[VarToStr(SelectedRows[0].Values[Tree_MC_ID_MO.Index])]
,
[VarToStr(SelectedRows[0].Values[Tree_MC_ID_ERP.Index])]))Allow_Delete(Sender,
[REdit_Groups,
REdit_Event]);;TForm_Event.tv_r_c_groups_namePropertiesInitPopup(Sender:
TObject);_tv_ed_groupExecute(self);;TForm_Event.tv_r_c_planEditing(Sender:
TcxCustomGridTableView;: TcxCustomGridTableItem; var AAllow: Boolean);:=
Allow_Editing(Sender, tv_r_c_plan_status_order,_r_c_plan_id_erp_user,
[REdit_Groups, REdit_Event]);;TForm_Event.tv_r_c_planKeyDown(Sender: TObject;
var Key: Word;: TShiftState);Key = VK_INSERT then_Insert(tv_r_c_plan,
[REdit_Groups, REdit_Event]);;TForm_Event.tv_r_c_planMouseDown(Sender:
TObject;: TMouseButton; Shift: TShiftState; X, Y: Integer);Button = mbRight
then_Insert(tv_r_c_plan, [REdit_Groups,
REdit_Event]);;TForm_Event.tv_r_c_planSelectionChanged
(Sender:
TcxCustomGridTableView);_Delete(Sender, tv_r_c_plan_status_order,
tv_r_c_plan_id_erp_user,
[REdit_Groups,
REdit_Event]);;TForm_Event.tv_r_c_plan_name_specPropertiesInitPopup(Sender:
TObject);_tv_spec_div_popupExecute(self);;
{ Добавить-таки
человека!}TForm_Event.OkNewEmp;db:
variant;Form_Anketa_For_New.DATE_OF_BIRTH.text = ''dB := NULLdB :=
StrToDate(Form_Anketa_For_New.DATE_OF_BIRTH.text);_Form_SE.SetNewFIO(1,
VarArrayOf([StrToInt(Form_Anketa_For_New.ID_E)
, Form_Anketa_For_New.SURNAME.Text
, Form_Anketa_For_New.ENAME.Text
,
Form_Anketa_For_New.PATRONYMIC.Text
, dB
,
StrToInt(Form_Anketa_For_New.ID_CONTRACTOR)]));;
{ Выбрать
старого!}TForm_Event.OkOldEmp;db:
variant;{Cont_New_PA_Single,} Form_Anketa_For_New,
cxTableViewSimilar.DataController doVarToStr(Values[FocusedRecordIndex,
cxTableViewSimilarDATEOFBIRTH.index]) = ''dB := NULLdB :=
Values[FocusedRecordIndex,
cxTableViewSimilarDATEOFBIRTH.index];_Form_SE.SetNewFIO(1,
VarArrayOf([[FocusedRecordIndex,
Form_Anketa_For_New.cxTableViewSimilarID_E.index]
, Values[FocusedRecordIndex,
Form_Anketa_For_New.cxTableViewSimilarSurname.index]
, Values[FocusedRecordIndex,
Form_Anketa_For_New.cxTableViewSimilarName.index]
, Values[FocusedRecordIndex,
Form_Anketa_For_New.cxTableViewSimilarPatronymic.index]
, dB
, Values[FocusedRecordIndex,
Form_Anketa_For_New.cxTableViewSimilarIDContractor.index]]));;;
{ После
удаления}TForm_Event.After_Delete(Sender:
TSqlData_cxGridTableView);Sender.GridTableView = TTree_NachSender.Read_Data;;
{ Параметры
удаления}TForm_Event.Delete_Main_Contract(Sender:
TSqlData_cxGridTableView; ARecordIndex: Integer;ExchangeParameters:
OleVariant);Sender.GridTableView = TTree_MC thenTTree_MC.DataController do:=
CreateVarAr([VarToStr(Values[ARecordIndex, Tree_MC_ID_Contract.Index])]);
end;
{ Импорт участников из внешнего файла }
procedure TForm_Event.Action_ImportExecute(Sender:
TObject);, j, k, LCID, res: Integer;_id_e, curr_id_contractor, last_dog,
curr_day: String;: OleVariant;_form: TSForm;_find: boolean;
// Если
открыли
файлImport_File.Execute
then:= TExcelApplication.Create(self);.ConnectKind := ckNewInstance;.Connect;:=
ea.Workbooks.Open(Import_File.FileName, EmptyParam, EmptyParam,, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam,, EmptyParam, EmptyParam,
EmptyParam, LCID);:= ew.Worksheets.Item[1] as _Worksheet;:= 1;VarToStr(wsh.Cells.Item[i,
1]) = '' do:= i + 1;;_d_import := '';_d_kaf := '';_training := '';_EG_Name :=
VarToStr(wsh.Cells.Item[i + 4, 2]);_FIO_Curator := VarToStr(wsh.Cells.Item[i +
4, 4]);:= MSystemServices.SelectData(Get_ID_Spec_By_Name,([VarToStr(wsh.Cells.Item[i
+ 1, 2])
, VarToStr(wsh.Cells.Item[i, 2])
, VarToStr(wsh.Cells.Item[i + 2, 2])
, VarToStr(wsh.Cells.Item[i + 2, 3])
, VarToStr(wsh.Cells.Item[i + 5, 2])
, Import_EG_Name
, Import_FIO_Curator
, VarToStr(wsh.Cells.Item[i + 5, 4])
, VarToStr(wsh.Cells.Item[i, 4])])
, j, 'Не смогли найти программу');
// Если нет еще контейнера - создадим!
if cW_Import = nil then_Import :=
TContainerWrappers.Create;_Import.AddCustomEdit(DateEdit_Import_Start, True,
False, '');_Import.AddCustomEdit(DateEdit_Import_End, True, False,
'');_Import.AddCustomEdit(DateEdit_Import_Start_Otrjv, False, False,
'');_Import.AddCustomEdit(DateEdit_Import_End_Otrjv, False, False,
'');_Import.AddCustomEdit(CurrencyEdit_Import_Money, False, False,
'');_Import.AddCustomEdit(CurrencyEdit_Import_NDS, False, False,
'');_Import.AddCustomEdit(DateEdit_Import_Reference, True, False,
'');_Import.AddPopupEdit(PopupEdit_Import_Spec, True, False, nil, nil,_Spec_ID,
[tv_Spec_Name], '');_Import.AddPopupEdit(PopupEdit_Import_Spec_Div, True,
False, nil, nil
, tv_spec_div_popup_id_spec_div
, [tv_spec_div_popup_institute,
tv_spec_div_popup_name_div, tv_spec_div_popup_name_spec,
tv_spec_div_popup_kind_training],
'');_Import.AddPopupEdit(PopupEdit_Import_UMK, True, False
, cxGrid_Com_Spec, tv_com_spec, tv_com_spec_id_met_complex
, [tv_com_spec_hours,
tv_com_spec_sam, tv_com_spec_name_spec, tv_com_spec_name_div,
tv_com_spec_kind_training], '');_Import.AddPopupEdit(PopupEdit_Import_Plan,
True, False
, cxGrid_R_C_Plan, tv_r_c_plan,
tv_r_c_plan_id_r_c_plan
, [tv_r_c_plan_institute,
tv_r_c_plan_name_spec, tv_r_c_plan_kind_training],
'');_Import.AddPopupEdit(PopupEdit_Import_EG, True, False
, cxGrid_Ed_Group, tv_ed_group,
tv_ed_group_id_ed_group, [tv_ed_group_name],
'');_Import_Curator.Properties.PopupControl :=
Current_Form_SE;_Import.AddPopupEdit(PopupEdit_Import_Curator, False,
False,_Form_SE.cxGrid1, Current_Form_SE.cxGrid_FIO,_Form_SE.cxGrid_FIO_ID_E,
[Current_Form_SE.cxGrid_FIO_Full],
'');_Import.AddButtonOrderEdit(ButtonEdit_Import_Order, True, False, ''
, ['200']
, [OBE_CHOOSE, OBE_NEW,
OBE_INNAVIGATE, OBE_PREVIEW]
, [nil, nil, nil,
nil]);_Import.AddButtonOrderEdit(ButtonEdit_Import_Nach, True, False, ''
, ['436']
, [OBE_CHOOSE, OBE_NEW,
OBE_INNAVIGATE, OBE_PREVIEW]
, [nil, nil, nil, nil]);
//cW_Import.ActionEnter :=
Action_Go_Import;;_Import.ClearWrappers;_Import.Wrappers[DateEdit_Import_Reference].Value
:= DateToStr(Date);
// Нашли
программу?VarIsArray(data)
then_Import.wrappers[DateEdit_Import_Start].Value :=
VarToStr(data[0][0]);_Import.wrappers[DateEdit_Import_End].Value :=
VarToStr(data[0][1]);_Import.Wrappers[DateEdit_Import_Start_Otrjv].Value :=
VarToStr(wsh.Cells.Item[i + 3,
2]);_Import.Wrappers[DateEdit_Import_End_Otrjv].Value :=
VarToStr(wsh.Cells.Item[i + 3, 3]);_Import.Wrappers[CurrencyEdit_Import_Money].Value
:= VarToStr(wsh.Cells.Item[i + 6,
2]);_Import.Wrappers[CurrencyEdit_Import_NDS].Value :=
VarToStr(wsh.Cells.Item[i + 7, 2]);VarToStr(data[0][3]) <>
''_Import.wrappers[PopupEdit_Import_Spec].Value :=
VarToStr(data[0][3]);_Import.wrappers[PopupEdit_Import_Spec].ValueDisplay :=
VarToStr(data[0][2]);
end;
// Специальность подразделения
(Организатор)VarToStr(data[0][5]) <> ''
then_Import.wrappers[PopupEdit_Import_Spec_Div].Value
:= VarToStr(data[0][5]);
// А если он пустой еще?
Get_SqlData_cxGrid(tv_spec_div_popup).Read_Data_First;:=
FindGridRecordIndex(tv_spec_div_popup, [tv_spec_div_popup_id_spec_div]
,
CreateVarAr([VarToStr(data[0][5])]));i >=
0cW_Import.wrappers[PopupEdit_Import_Spec_Div].ValueDisplay
:=(tv_spec_div_popup.DataController.Values[i,
tv_spec_div_popup_institute.Index])
+ ', ' +
VarToStr(tv_spec_div_popup.DataController.Values[i,
tv_spec_div_popup_name_div.Index])
+ ', ' +
VarToStr(tv_spec_div_popup.DataController.Values[i,
tv_spec_div_popup_name_spec.Index])
+ ', ' + VarToStr(tv_spec_div_popup.DataController.Values[i,
tv_spec_div_popup_kind_training.Index]);;
// ПланVarToStr(data[0][6])
<> ''_Import.wrappers[PopupEdit_Import_Plan].Value :=
VarToStr(data[0][6]);_Import.wrappers[PopupEdit_Import_Plan].ValueDisplay
:=_Import.wrappers[PopupEdit_Import_Spec_Div].ValueDisplay;
end
// Нет плана - заполним поля для добавления!
else
begin_Import.Wrappers[PopupEdit_Import_Plan].Clear;_New_R_C_Plan.Wrappers[cxPopupEdit_New_R_C_Plan_Spec_Div].Value
:=_Import.Wrappers[PopupEdit_Import_Spec_Div].Value;_New_R_C_Plan.Wrappers[cxPopupEdit_New_R_C_Plan_Spec_Div].ValueDisplay
:=_Import.Wrappers[PopupEdit_Import_Spec_Div].ValueDisplay;_New_R_C_Plan.Wrappers[cxDateEdit_New_R_C_Plan_D_Start].ValueDisplay
:=_Import.Wrappers[DateEdit_Import_Start].ValueDisplay;_New_R_C_Plan.Wrappers[cxDateEdit_New_R_C_Plan_D_End].ValueDisplay
:=_Import.Wrappers[DateEdit_Import_End].ValueDisplay;VarToStr(data[0][10])
<>
''begin_New_R_C_Plan.Wrappers[cxButtonEdit_New_R_C_Plan_Paragraph].Value :=
VarToStr(data[0][10]);_New_R_C_Plan.Wrappers[cxButtonEdit_New_R_C_Plan_Paragraph].ValueDisplay
:= VarToStr(data[0][11]);;;
// УМКVarToStr(data[0][8])
<> ''_Import.wrappers[PopupEdit_Import_UMK].Value :=
VarToStr(data[0][8]);:= FindGridRecordIndex(tv_com_spec,
[tv_com_spec_id_met_complex]
,
CreateVarAr([VarToStr(data[0][8])]));i >=
0cW_Import.wrappers[PopupEdit_Import_UMK].ValueDisplay
:=(tv_com_spec.DataController.Values[i, tv_com_spec_hours.Index])
+ ', ' +
VarToStr(VarToStr(tv_com_spec.DataController.Values[i, tv_com_spec_sam.Index])
+ ', ' +
VarToStr(tv_com_spec.DataController.Values[i, tv_com_spec_name_spec.Index])
+ ', ' +
tv_com_spec.DataController.Values[i, tv_com_spec_name_div.Index])
+ ', ' +
VarToStr(tv_com_spec.DataController.Values[i,
tv_com_spec_kind_training.Index]);;
// Учебная
группаVarToStr(data[0][12])
<> ''_Import.wrappers[PopupEdit_Import_EG].Value :=
VarToStr(data[0][12]);_Import.wrappers[PopupEdit_Import_EG].ValueDisplay :=
Import_EG_Name;cW_Import.Wrappers[PopupEdit_Import_EG].Clear;
// КураторVarToStr(data[0][14])
<> ''_Import.wrappers[PopupEdit_Import_Curator].Value :=
VarToStr(data[0][14]);_Import.wrappers[PopupEdit_Import_Curator].ValueDisplay
:=
Import_FIO_Curator;cW_Import.Wrappers[PopupEdit_Import_Curator].Clear;_Name_Spec
:= VarToStr(data[0][2]);_d_import := VarToStr(data[0][7]);_Hours :=
VarToStr(data[0][9]);_Hours_SR := VarToStr(data[0][15]);_ID_EG :=
VarToStr(data[0][13]);_d_kaf := VarToStr(data[0][16]);
//id_d_import :=
VarToStr(data[0][17]);_Import.ClearWrappers;_Import.wrappers[DateEdit_Import_Start].Value
:= VarToStr
(wsh.Cells.Item[i + 2,
2]);_Import.wrappers[DateEdit_Import_End].Value := VarToStr
(wsh.Cells.Item[i + 2,
3]);_Name_Spec := VarToStr(wsh.Cells.Item[i + 1, 2]);;_form :=
CreateSForm(self, 'fImport', TabSheet_Import.Caption,_Path + TabSheet_Import.Caption,
Panel_Import, tdb_Apply);_form.Position :=
poScreenCenter;_form.PanelButtons.auto_cxOkButton.Action :=
cW_Import.ActionEnter;_form.ShowModal;
{ Импортируем
наконец-то...}.Enabled
:= False;new_form.ModalResult = mrok then
begin
// Поиск договоров:= 10;:= 0;
last_dog :=
'';(VarToStr(wsh.Cells.Item[i, 2]) <> '') do
begin
// А зачем проверять его еще раз?
if ((last_dog = '') or (last_dog
<> VarToStr(wsh.Cells.Item[i, 7])))(VarToStr(wsh.Cells.Item[i, 7])
<> '')_dog := VarToStr(wsh.Cells.Item[i, 7]);:=
MSystemServices.SelectData(Find_Contract_By_Number
,
CreateVarAr([VarToStr(wsh.Cells.Item[i, 7])
,
VarToStr(cW_Import.Wrappers[DateEdit_Import_Start].Value)])
, j);
// Нет такого договора - создадим!
if not VarIsArray(data)
then_New_Contract_Main.ClearWrappers;_New_Contract_Main.Wrappers[TextEdit_New_Contract_Main].Value
:= VarToStr(wsh.Cells.Item[i,
7]);_New_Contract_Main.Wrappers[DateEdit_New_Contract_Main_Start].Value
:= '01.01.' +
VarToStr(YearOf(StrToDate(VarToStr(cW_Import.Wrappers[DateEdit_Import_Start].Value))));_New_Contract_Main.Wrappers[DateEdit_New_Contract_Main_End].Value
:= '31.12.' +
VarToStr(YearOf(StrToDate(VarToStr(cW_Import.Wrappers[DateEdit_Import_End].Value))));
// Добавить
договор_New_Contract_Main.Execute;;;:=
i + 1;;_Import.Properties.Min := 1;_Import.Properties.Max := i -
10;_Import.Visible := True;_Import.Position := 0;:=
10;VarToStr(wsh.Cells.Item[i, 2]) <> '' do_Import.Position := i -
9;_Import.Refresh;Trim(VarToStr(wsh.Cells.Item[i, 6])) = '31.12.1899'curr_day
:= '01.01.1900'curr_day := Trim(VarToStr(wsh.Cells.Item[i, 6]));
{j :=
ord(Copy(VarToStr(wsh.Cells.Item[i, 3]), 10, 1));.ShowVNDialog(vnd_Information
,
IntToStr(ord(Copy(VarToStr(wsh.Cells.Item[i, 2]), 8, 1)))
, IntToStr(j));}_FIO.Caption :=
//IntToStr(ord(Copy(VarToStr(wsh.Cells.Item[i, 3]), 10, 1)))
//+(VarToStr(wsh.Cells.Item[i, 2]))
+ ' ' +
Trim(VarToStr(wsh.Cells.Item[i, 3]))
+ ' ' +
Trim(VarToStr(wsh.Cells.Item[i, 4]))
+ ', ' +
Trim(VarToStr(wsh.Cells.Item[i, 5]))
+ ', ' +
curr_day;_FIO.Refresh;.ProcessMessages;_id_e := '';_id_contractor := '';_find
:= RadioGroup_Import_Mode.ItemIndex <> 2;not need_find_find := not
(FindGridRecord(tv_listeners, [tv_listeners_fio]
,
CreateVarAr([VarToStr(Trim(VarToStr(wsh.Cells.Item[i, 2])))
+ ' ' +
Trim(VarToStr(wsh.Cells.Item[i, 3]))
+ ' ' +
Trim(VarToStr(wsh.Cells.Item[i, 4]))])) <> nil);
end;
// А надо ли искать человека?need_find then
// Сначала поищем человека скрытно
with
Get_SqlData_cxGrid(Form_Anketa_For_New.cxTableViewSimilar),.DataController
do[1] := Trim(VarToStr(wsh.Cells.Item[i, 2]));[2] :=
Trim(VarToStr(wsh.Cells.Item[i, 3]));[3] := Trim(VarToStr(wsh.Cells.Item[i,
4]));[4] := '';_Data;RecordCount > 0begink := 0 to RecordCount - 1 do
// 100% совпадение(VarToStr(Values[k,
Form_Anketa_For_New.cxTableViewSimilarSimDegree.Index]) = '100')
// вплоть
до
дня
рождения(StrToDate(VarToStr(Values[k,
Form_Anketa_For_New.cxTableViewSimilarDATEOFBIRTH.Index]))
= (StrToDate(curr_day)))begin_id_e
:= VarToStr(Values[k,
Form_Anketa_For_New.cxTableViewSimilarID_E.Index]);_id_contractor :=
VarToStr(Values[k, Form_Anketa_For_New.cxTableViewSimilarIDContractor.Index]);
end;;
// Все-таки не нашли однозначное соответствие,
моделируем ввод новой анкеты!
if (curr_id_e = '') and
(RadioGroup_Import_Mode.ItemIndex <> 1)_Anketa_For_New.ClearForm;_Anketa_For_New.ModalResult
:= 0;(trim(VarToStr(wsh.Cells.Item[i, 5])) = 'ж')(trim(VarToStr(wsh.Cells.Item[i,
5])) = 'Ж')curr_sex
:= '2'curr_sex := '1';_surname := Trim(VarToStr(wsh.Cells.Item[i, 2]));_name :=
Trim(VarToStr(wsh.Cells.Item[i, 3]));_patronymic :=
Trim(VarToStr(wsh.Cells.Item[i, 4]));_birthday := curr_day;_email :=
VarToStr(wsh.Cells.Item[i, 12]);_phone := VarToStr(wsh.Cells.Item[i, 13]);
// Заполним поля - там откроется поиск, если
надо с выбором
Action_After_Show_New_Anketa.Execute;
// Откроем поиск подобных без самой анкеты!
//curr_id_e :=
Form_Anketa_For_New.ShowSimilaryDialog(1, False);Form_Anketa_For_New.id_e
<> ''with Form_Anketa_For_New.cxTableViewSimilar.DataController do_id_e
:= VarToStr(Values[FocusedRecordIndex, Form_Anketa_For_New.cxTableViewSimilarID_E.Index]);_id_contractor
:= VarToStr(Values[FocusedRecordIndex,
Form_Anketa_For_New.cxTableViewSimilarIDContractor.Index]);
end
// Если никого не выбрали, то откроем окно ввода
нового человека
begin_Anketa_For_New.Not_Clear_On_Show
:= True;Form_Anketa_For_New.ShowNewEmpForm of:_id_e :=
Form_Anketa_For_New.ID_E;_id_contractor := Form_Anketa_For_New.ID_CONTRACTOR;;:
with Form_Anketa_For_New.cxTableViewSimilar.DataController do_id_e :=
VarToStr(Values[FocusedRecordIndex
, Form_Anketa_For_New.cxTableViewSimilarID_E.Index]);_id_contractor
:= VarToStr(Values[FocusedRecordIndex
,
Form_Anketa_For_New.cxTableViewSimilarIDContractor.Index]);;;_Anketa_For_New.Not_Clear_On_Show
:= False;
end;;
// Есть человек - Добавим все необходимое для
слушателя!
if curr_id_e <> ''with
cW_Import do
begin
// Сначала проверим наличие этого слушателя в
группе
data :=
MSystemServices.SelectData(Get_ID_Student_By_ID_E_ID_EG
, CreateVarAr([curr_id_e
,
VarToStr(cW_Import.Wrappers[PopupEdit_Import_EG].Value)
, VarToStr(cW_Import.Wrappers[DateEdit_Import_Start].Value)])
, j, 'Не смогли найти слушателя в группе');
// Нет
слушателя
- добавим!not
VarIsArray(data)MSystemServices.ExchangeData(Create_Slushatel
, CreateVarAr([curr_id_e
,
VarToStr(cW_Import.Wrappers[PopupEdit_Import_Spec_Div].Value)
, VarToStr(wsh.Cells.Item[i, 7])
,
VarToStr(cW_Import.Wrappers[DateEdit_Import_Start].Value)
,
VarToStr(cW_Import.Wrappers[DateEdit_Import_End].Value)
,
VarToStr(cW_Import.Wrappers[ButtonEdit_Import_Order].Value)
, VarToStr(cW_Import.Wrappers[PopupEdit_Import_EG].Value)
, VarToStr(wsh.Cells.Item[i, 11])
, VarToStr(wsh.Cells.Item[i, 9])
, VarToStr(wsh.Cells.Item[i, 10])
, VarToStr(wsh.Cells.Item[i, 8])
,
VarToStr(cW_Import.Wrappers[DateEdit_Import_Start_Otrjv].Value)
, VarToStr(cW_Import.Wrappers[DateEdit_Import_End_Otrjv].Value)
,
VarToStr(cW_Import.Wrappers[CurrencyEdit_Import_Money].Value)
,
VarToStr(cW_Import.Wrappers[CurrencyEdit_Import_NDS].Value)
,
VarToStr(cW_Import.Wrappers[ButtonEdit_Import_Nach].Value)
, VarToStr(cW_Import.Wrappers[DateEdit_Import_Reference].Value)
,
VarToStr(cW_Import.Wrappers[PopupEdit_Import_Curator].Value)]))
then:= res + 1;
// Обновим им данные, пусть порадуются, что ли?
Get_SqlData_cxGrid(tv_listeners).Read_Data;_Listeners.Refresh;(cW_Import.Wrappers[ButtonEdit_Import_Order]).IsEmpty
:= False;(cW_Import.Wrappers[ButtonEdit_Import_Nach]).IsEmpty := False;;; // Надо
искать?
i := i + 1;; // Цикл по людям в
файле.ShowVNDialog(vnd_Information, 'Результат обработки файла'
, 'Добавлено слушателей: ' + IntToStr(res));
if res >
0Get_SqlData_cxGrid(tv_listeners).Read_Data;tv_listeners.Controller.FocusedRecord
<> nilOnChoiceGridRecord_tv_listeners(Get_SqlData_cxGrid(tv_listeners)
,
TcxGridDataRow(tv_listeners.Controller.FocusedRecord))OnChoiceGridRecord_tv_listeners(Get_SqlData_cxGrid(tv_listeners)
, nil);; // Закрыли окно импорта
if
assigned(new_form)FreeAndNil(new_form);_Import.Visible := False;.Enabled :=
True;;.Close(False, EmptyParam, EmptyParam,
LCID);.Disconnect;.Free;_tv_listenersExecute(self);_Import.Visible := False;;;
{ Добавить
новый
договор
}TForm_Event.Action_Insert_Contract_MainExecute(Sender:
TObject);_New_Contract_Main.ChangesAcceptWrappers;cw_New_Contract_Main
doMSystemServices.ExchangeData(Create_New_Contract_Main
,
CreateVarAr([VarToStr(Wrappers[ButtonEdit_New_Contract_Main].Value)
,
VarToStr(Wrappers[PopupEdit_New_Contract_Main].Value)
,
VarToStr(Wrappers[DateEdit_New_Contract_Main_Start].Value)
,
VarToStr(Wrappers[DateEdit_New_Contract_Main_End].Value)]))(cw_New_Contract_Main.Wrappers[ButtonEdit_New_Contract_Main]).IsEmpty
:=
False;_New_Contract_Main.Wrappers[ButtonEdit_New_Contract_Main].Clear;_SqlData_cxGrid(TTree_Main_Contracts).IsFirstRead
:= True;(Panel_New_Contract_Main).ModalResult := mrok;
end;;
{ Добавление куратора в БД }
procedure
TForm_Event.Action_Insert_CuratorExecute(Sender:
TObject);_New_Curator.ChangesAcceptWrappers;Get_SqlData_cxGrid(TTree_Curator).Insert_New
(CreateVarAr([VarToStr(cW_New_Curator.wrappers[DateEdit_New_Curator]
.Value),(cW_New_Curator.wrappers[PopupEdit_New_Curator_FIO].Value),(Get_SqlData_cxGrid(TTree_Curator).Parameters[1])]))
then(Panel_New_Curator).ModalResult :=
mrok;(GetParentForm(Panel_Import).Handle);;;TForm_Event.Action_Insert_New_DirectionExecute(Sender:
TObject);
const= 'Направление на оплату';
var: TSForm;: Boolean;_o, id_p,
def_Ann, def_Basis, def_Note, def_Ass, NewContextIndex, IDk_List,_List_Name,
ko_ID_Metaterm, kind_order, def_Ident, def_IdenDate,_Period_Nubbering,
id_NewSeries, NewSeries: WideString;: TStringList;// 1:= CreateSForm(self,
'fNew_Direction', Name, Add_Path + Name,_New_Direction,
tdb_Apply);_New_Direction.OnChangeWrapper(nil);mf.ShowModal = mrok then//
2_order := VarToStr
(cW_New_Direction.wrappers
[cxPopupEdit_New_Direction].Value);:=
TStringList.Create;.Add(kind_order);_o := vnListAgent.LA_CreateList(ks,
def_Ann, def_Basis, def_Note,_Ass, NewContextIndex, IDk_List, k_List_Name,
ko_ID_Metaterm, '',);id_o = EmptyWideStr then// 3.Free;;; // 3_p :=
vnListAgent.LA_CreateList(ks, def_Ann, def_Basis, def_Note,_Ass,
NewContextIndex, IDk_List, k_List_Name, ko_ID_Metaterm, id_o,);.Free;id_p =
EmptyWideStr then;
// отправить
на
подпись..LA_Send_Signature(id_o,
'', datetostr(now), True);.LA_SetIdentifier(id_o, def_Ident,
ID_Period_Nubbering,_NewSeries, NewSeries, def_IdenDate, True, False,
'Регистрация
направления.');
// добавить
направление:=
MSystemServices.ExchangeData(Add_Direction,([id_p,(tv_listeners.DataController.Values
[tv_listeners.DataController.FocusedRecordIndex,_listeners_id_contract.Index])
]));ok then_Contract_ParamsExecute(self);;
// 2// 1assigned(mf) then(mf);; //
1;TForm_Event.Action_Insert_tv_listenersExecute(Sender: TObject);= 'Участники';:
TSForm;_o, id_p, def_Ann, def_Basis, def_Note, def_Ass, NewContextIndex,
IDk_List,_List_Name, ko_ID_Metaterm, kind_order, def_Ident,
def_IdenDate,_Period_Nubbering, id_NewSeries, NewSeries: WideString;:
TStringList;: Boolean;:= False;// 1:= CreateSForm(self, 'fNew_Listeners', Name,
Add_Path + Name,_New_Listener, tdb_Apply);_New_Listener.wrappers[cxPopupEdit_New_Listener_Contract_Source_Finansing]
.Value :=
VarToStr(tv_r_c_plan.DataController.Values
[tv_r_c_plan.DataController.FocusedRecordIndex,_r_c_plan_id_source.Index]);_New_Listener.wrappers[cxPopupEdit_New_Listener_Contract_Source_Finansing]
.ValueDisplay := VarToStr(tv_r_c_plan.DataController.Values
[tv_r_c_plan.DataController.FocusedRecordIndex,_r_c_plan_source.Index]);_New_Listener.wrappers[cxCurrencyEdit_New_Listener_Contract_Money]
.Value :=
VarToStr(tv_r_c_plan.DataController.GetValue
(tv_r_c_plan.DataController.FocusedRecordIndex,_r_c_plan_money.Index));_New_Listener.wrappers[cxCurrencyEdit_New_Listener_Contract_Money]
.ValueDisplay :=
tv_r_c_plan.DataController.GetDisplayText
(tv_r_c_plan.DataController.FocusedRecordIndex,
tv_r_c_plan_money.Index);_New_Listener.OnChangeWrapper(nil);mf.ShowModal = mrok
then// 2_TableView := Get_SqlData_cxGrid(tv_listeners);((FSqlData_TableView
<> nil) and (VarToStr(cW_New_Listener.wrappers
[cxPopupEdit_New_Listener_Kind_Order].Value)
<> '') and
(cxPopupEdit_New_Listener_Order.Enabled)
and
(VarToStr(cW_New_Listener.wrappers[cxPopupEdit_New_Listener_Order]
.Value) = '')) then// 3_order :=
VarToStr(cW_New_Listener.wrappers
[cxPopupEdit_New_Listener_Kind_Order].Value);:=
TStringList.Create;.Add(kind_order);_o := vnListAgent.LA_CreateList(ks,
def_Ann, def_Basis, def_Note,_Ass, NewContextIndex, IDk_List, k_List_Name,
ko_ID_Metaterm, '',);id_o = EmptyWideStr then// 4.Free;;; // 4_p :=
vnListAgent.LA_CreateList(ks, def_Ann, def_Basis, def_Note,_Ass,
NewContextIndex, IDk_List, k_List_Name, ko_ID_Metaterm,_o, False);.Free;id_p =
EmptyWideStr then;
// отправить
на
подпись..LA_Send_Signature(id_o,
'', datetostr(now), True);.LA_SetIdentifier(id_o, def_Ident,
ID_Period_Nubbering,_NewSeries, NewSeries, def_IdenDate, True, False,
'Регистрация
договора');_New_Listener_Contract_Money.Properties.EditFormat
:=
'0.00';_New_Listener_Contract_Money.Properties.:=
False;:=
MSystemServices.ExchangeData(Add_Contract,([cW_New_Listener.wrappers[cxPopupEdit_New_Listener_FIO]
.Value, cW_New_Listener.wrappers[_New_Listener_Contract_Organization].Value,_New_Listener.wrappers[cxDateEdit_New_Listener_D_Start].Value,_New_Listener.wrappers[cxDateEdit_New_Listener_D_End].Value,_p,
cW_New_Listener.wrappers[_New_Listener_Contract_Source_Finansing].Value,(tv_r_c_plan.DataController.Values
[tv_r_c_plan.DataController.FocusedRecordIndex,_r_c_plan_id_spec_div.Index]),_New_Listener.wrappers[cxPopupEdit_New_Listener_Ed_Group].Value,_New_Listener.wrappers[cxPopupEdit_New_Listener_Kind_Basis_Action]
.Value, cW_New_Listener.wrappers
[cxButtonEdit_New_Listener_Order_Start].Value,(cxCurrencyEdit_New_Listener_Contract_Money.EditValue),
'',
cW_New_Listener.wrappers[cxTextEdit_New_Listener_Basis].Value,_New_Listener.wrappers[cxTextEdit_New_Listener_FIO].Value,_New_Listener.wrappers[cxTextEdit_New_Listener_FIO_R].Value,_New_Listener.wrappers[cxPopupEdit_New_Listener_Post].Value]));_New_Listener_Contract_Money.Properties.EditFormat
:=
',0.00';_New_Listener_Contract_Money.Properties.:=
True;ok then:= FSqlData_TableView.Insert_New
(CreateVarAr
([cW_New_Listener.wrappers
[cxPopupEdit_New_Listener_FIO].Value,_New_Listener.wrappers[cxPopupEdit_New_Listener_Ed_Group]
.Value, cW_New_Listener.wrappers
[cxPopupEdit_New_Listener_Kind_Basis_Action].Value,_New_Listener.wrappers[cxButtonEdit_New_Listener_Order_Start]
.Value, cW_New_Listener.wrappers
[cxDateEdit_New_Listener_D_Start].Value,
id_p]));// 3// 5:= FSqlData_TableView.Insert_New
(CreateVarAr([cW_New_Listener.wrappers[cxPopupEdit_New_Listener_FIO]
.Value, cW_New_Listener.wrappers
[cxPopupEdit_New_Listener_Ed_Group].Value,_New_Listener.wrappers
[cxPopupEdit_New_Listener_Kind_Basis_Action]
.Value,_New_Listener.wrappers
[cxButtonEdit_New_Listener_Order_Start].Value,_New_Listener.wrappers[cxDateEdit_New_Listener_D_Start].Value,_New_Listener.wrappers[cxPopupEdit_New_Listener_Order].Value]));;
// 5ok then// 6_TableView.Read_Data;(cW_New_Listener.wrappers
[cxButtonEdit_New_Listener_Order_Start]).IsEmpty
:= False;cxPageControl_Student.ActivePage = cxTabSheet_Contracts
then_Contract_ParamsExecute(self);; // 6; // 2// 1assigned(mf) then(mf);; //
1;TForm_Event.Action_Insert_tv_r_c_groupExecute(Sender: TObject);
const= 'Группы повышения квалификации';
var: TSForm;// 1:= CreateSForm(self,
'fNew_R_C_Groups', Name, Add_Path + Name,_New_R_C_Group,
tdb_Apply);_New_R_C_Group.OnChangeWrapper(nil);mf.ShowModal = mrok then//
2_TableView := Get_SqlData_cxGrid(tv_r_c_groups);FSqlData_TableView <>
nil then// 3FSqlData_TableView.Insert_New(CreateVarAr
([cW_New_R_C_Group.wrappers[cxDateEdit_New_R_C_Group_D_End].Value,_New_R_C_Group.wrappers[cxDateEdit_New_R_C_Group_D_Start].Value,_New_R_C_Group.wrappers[cxPopupEdit_New_R_C_Group_Ed_Group]
.Value, cW_New_R_C_Group.wrappers
[cxPopupEdit_New_R_C_Group_Met_Complex].Value,_TableView.Params[0]
{tv_r_c_plan.DataController.Values
[tv_r_c_plan.DataController.FocusedRecordIndex,_r_c_plan_id_r_c_plan.Index]}]))
then_TableView.Read_Data;; // 3; // 2// 1assigned(mf) then(mf);; //
1;TForm_Event.Action_Insert_tv_r_c_planExecute(Sender: TObject);
const= 'План повышения квалификации';
var: TSForm;: Integer;// 1:=
CreateSForm(self, 'fNew_R_C_Plan', Name, Add_Path + Name,_New_R_C_Plan,
tdb_Apply);
{ Устанавливаем
значение
по
умолчанию
}VarToStr(cW_New_R_C_Plan.wrappers[cxDateEdit_New_R_C_Plan_D_Start]
.Value) = ''
then_New_R_C_Plan.wrappers[cxDateEdit_New_R_C_Plan_D_Start].Value
:=(Date);_Plan_Filters_PlanPropertiesInitPopup(cxPopupEdit_Plan_Filters_Plan);((VarToStr(cW_Plan_Filters.wrappers[cxPopupEdit_Plan_Filters_Plan]
.Value) <> '') and
(tv_plan.DataController.FocusedRecordIndex
<> -1)) then// 5:=
tv_plan.DataController.FocusedRecordIndex;(cW_New_R_C_Plan.wrappers
[cxButtonEdit_New_R_C_Plan_Paragraph]).SetListProperties
(VarToStr(tv_plan.DataController.Values[FRI,
tv_plan_id_paragraph.Index]),(tv_plan.DataController.Values[FRI,
tv_plan_idk_order.Index]), '', '',(tv_plan.DataController.Values[FRI,
tv_plan_id_order.Index]), '', '',(tv_plan.DataController.Values[FRI,
tv_plan_hisdate.Index]),(tv_plan.DataController.Values[FRI,
tv_plan_status_order.Index]),(tv_plan.DataController.Values[FRI,
tv_plan_status_text.Index]),(tv_plan.DataController.Values[FRI,
tv_plan_d_creation.Index]),(tv_plan.DataController.Values[FRI,
tv_plan_id_erp_user.Index]), '');//
5_New_R_C_Plan.wrappers[cxButtonEdit_New_R_C_Plan_Paragraph].Clear;_New_R_C_Plan.OnChangeWrapper(nil);mf.ShowModal
= mrok then// 2_TableView := Get_SqlData_cxGrid(tv_r_c_plan);FSqlData_TableView
<> nil then// 3FSqlData_TableView.Insert_New(CreateVarAr
([cW_New_R_C_Plan.wrappers[cxDateEdit_New_R_C_Plan_D_End].Value,_New_R_C_Plan.wrappers[cxDateEdit_New_R_C_Plan_D_Start].Value,_New_R_C_Plan.wrappers[cxPopupEdit_New_R_C_Plan_Spec_Div].Value,_New_R_C_Plan.wrappers[cxButtonEdit_New_R_C_Plan_Paragraph].Value]
)) then//
4_TableView.Read_Data;(cW_New_R_C_Plan.wrappers
[cxButtonEdit_New_R_C_Plan_Paragraph]).IsEmpty
:= False;; // 4; // 3; // 2// 1assigned(mf) then
FreeAndNil(mf);; // 1;
{ Выбор рамочного договора }
procedure
TForm_Event.Action_Main_ContractExecute(Sender: TObject);_form: TSForm;//
1_form := CreateSForm(self,
'fSet_Main_Contract',_Set_Main_Contract.Caption,_Path +
TabSheet_Set_Main_Contract.Caption, Panel_Set_Main_Contract,
tdb_Apply);
{ Устанавливаем значение по умолчанию }
if
VarToStr(cW_Set_Main_Contract.wrappers[DateEdit_Set_Main_Contract_Find]
.Value) = ''
then_Set_Main_Contract.wrappers[DateEdit_Set_Main_Contract_Find].Value
:=(Date);_form.Position :=
poScreenCenter;_form.PanelButtons.auto_cxOkButton.Action
:=_Set_Main_Contract.ActionEnter;_form.ShowModal;// 1assigned(new_form)
then(new_form);; // 1;
{ Выдача
удостоверений}TForm_Event.Action_Make_CertificateExecute(Sender:
TObject);new_form: TSForm; i: integer; data: olevariant;// 1_form :=
CreateSForm(self, TabSheet_New_Cert.Name + '1'
, TabSheet_New_Cert.Caption
, Add_Path +
TabSheet_New_Cert.Caption, Panel_New_Cert, tdb_Apply);
{ Устанавливаем
значение
по
умолчанию
}_form.Position := poScreenCenter;_form.PanelButtons.auto_cxOkButton.Action :=
Cont_Make_Cert.ActionEnter;tv_listeners.DataController
do_Make_Cert.Wrappers[SpinEdit_New_Cert_Hours].Value :=(Values[FocusedRecordIndex,
tv_listeners_hours_plan.Index]);VarToStr(Cont_Make_Cert.Wrappers[ButtonEdit_New_Cert].Value)
= ''begin:= MSystemServices.SelectData(Find_Magazine_Reg_Dip
,CreateVarAr(['']), i, 'Не смогли найти журнал
выдачи.');
, VarToStr(data[0][1])
, VarToStr(data[0][2])
, VarToStr(data[0][3])
, VarToStr(data[0][4])
, VarToStr(data[0][5])
, VarToStr(data[0][6])
, VarToStr(data[0][7])
, VarToStr(data[0][8])
, VarToStr(data[0][9])
, VarToStr(data[0][10])
, VarToStr(data[0][11])
,
VarToStr(data[0][12]));_Make_Cert.Wrappers[ButtonEdit_New_Cert].Value :=
data[0][0];
//Cont_Make_Cert.Wrappers[ButtonEdit_New_Cert].ValueDisplay
:= data[0][1];
end;
// Обновим начальные цифры в журнале
else
ButtonEdit_New_CertPropertiesEditValueChanged(ButtonEdit_New_Cert);_form.ShowModal;//
1assigned(new_form)FreeAndNil(new_form);; // 1
end;
{ Ввод нового рамочного договора }
procedure
TForm_Event.Action_New_Contract_MainExecute(Sender: TObject);_form: TSForm;//
1_form := CreateSForm(self, 'fNew_Contract_Main',
TabSheet_New_Contract_Main.Caption,_Path + TabSheet_New_Contract_Main.Caption,
Panel_New_Contract_Main, tdb_Apply);_form.Position :=
poScreenCenter;_form.PanelButtons.auto_cxOkButton.Action :=
cw_New_Contract_Main.ActionEnter;_form.ShowModal;// 1assigned(new_form)
then(new_form);; // 1;
{ Выберите
рамочный
договор
}TForm_Event.Action_New_CuratorExecute(Sender: TObject);_form: TSForm;// 1_form
:= CreateSForm(self, 'fNew_Curator', TabSheet_New_Curator.Caption,_Path +
TabSheet_New_Curator.Caption, Panel_New_Curator, tdb_Apply);
{ Устанавливаем
значение
по
умолчанию
}VarToStr(cW_New_Curator.wrappers[DateEdit_New_Curator].Value) = ''
then_New_Curator.wrappers[DateEdit_New_Curator].Value :=
datetostr(Date);_form.Position :=
poScreenCenter;_form.PanelButtons.auto_cxOkButton.Action :=
cW_New_Curator.ActionEnter;_form.ShowModal;// 1assigned(new_form)
then(new_form);; // 1;
{ Ввод
нового
рамочного
договора}TForm_Event.Action_New_MCExecute(Sender:
TObject);_form: TSForm;// 1_form := CreateSForm(self, 'fNew_MC',
TabSheet_New_Contract_Main.Caption,_Path + TabSheet_New_Contract_Main.Caption,
Panel_New_Contract_Main, tdb_Apply);_form.Position :=
poScreenCenter;_form.PanelButtons.auto_cxOkButton.Action :=
cw_New_Contract_Main.ActionEnter;_form.ShowModal;new_form.ModalResult =
mrokGet_SqlData_cxGrid(ttree_mc).Read_Data;// 1assigned(new_form)
then(new_form);; // 1;
{ Задайте
новую
стоимость
договора}TForm_Event.Action_New_MoneyExecute(Sender:
TObject);new_form: TSForm;// 1_form := CreateSForm(self, 'fNew_Money',
TabSheet_New_Money.Caption,_Path + TabSheet_New_Money.Caption, Panel_New_Money,
tdb_Apply);_form.Position := poScreenCenter;_form.PanelButtons.auto_cxOkButton.Action
:= cw_New_Money.ActionEnter;_form.ShowModal;new_form.ModalResult =
mrokGet_SqlData_cxGrid(tv_listeners).Read_Data;// 1assigned(new_form)
then(new_form);; // 1;
{ Добавить
новую
анкету
человека!}TForm_Event.Action_New_SEExecute(Sender:
TObject);Form_Anketa_For_New.ShowNewEmpForm of: OkNewEmp;: OkOldEmp;;;
{ Получить
статистику
}TForm_Event.Action_Read_StatExecute(Sender:
TObject);Get_SqlData_cxGrid(TTree_Stat), Cont_Stat do[1] :=
VarToStr(Cont_Stat.Wrappers[DateEdit_Stat_Begin].Value);[2] :=
VarToStr(Cont_Stat.Wrappers[DateEdit_Stat_End].Value);_Data;;;
{ Просмотр
удостоверения
}TForm_Event.Action_View_CertificateExecute(Sender: TObject);L: TIntegerList;:
integer;: String;Get_SqlData_cxGrid(tv_listeners)
do(L);.StartSequenceActions(False, True);:= '';GridTableView.DataController doi
:= 0 to L.Count - 1 dos = ''s := VarToStr(Values[L.Items[i],
tv_listeners_ID_Certificate.Index])s := s + ',' + VarToStr(Values[L.Items[i],
tv_listeners_ID_Certificate.Index]);
// Размер
сдвига
по-Галиному:
{if cxSpinEdit1.Value<0
then:=vartostr(45.35+abs(cxSpinEdit1.Value))sdvig:=vartostr(45.35-cxSpinEdit1.Value);}.EndSequenceActions;.PreviePaper(MSystemServices
, View_Cert
, CreateVarAr([s])
,
VarArrayOf([AWP_PageSetup_TopMargin ,VarToStr(45.35 - 0)])
, True);;;TForm_Event.Fill_AnketaExecute(Sender:
TObject);: TcxGridDataController;_TableView :=
Get_SqlData_cxGrid(tv_listeners);FSqlData_TableView <> nil then// 1:=
FSqlData_TableView.GridTableView.DataController;(FSqlData_TableView.LastChoiceIndex
>= 0) and
(FSqlData_TableView.LastChoiceIndex
< DC.RecordCount) then// 2_Form_Anketa.ID_CONTRACTOR := VarToStr
(DC.Values[FSqlData_TableView.LastChoiceIndex,_listeners_id_contractor.Index]);_Form_Anketa.ID_E
:= VarToStr
(DC.Values[FSqlData_TableView.LastChoiceIndex,_listeners_id_e.Index]);//
2// 3_Form_Anketa.ID_CONTRACTOR := '';_Form_Anketa.ID_E := '';; //
3_Form_Anketa.RefreshRoles(False);_Form_Anketa.IsEnabled :=
True;_Form_Anketa.Editing :=_Form_Anketa.IsEnabled and vnSessionAgent.('', '',
'7001');not Current_Form_Anketa.Visible
then_Form_Anketa.Show;_Anketa.Realign;_Form_Anketa.Realign;; //
1;TForm_Event.Fill_Contract_ParamsExecute(Sender: TObject);: OleVariant;:
TcxDataController;_C: string;: Integer;_TableView :=
Get_SqlData_cxGrid(tv_listeners);:= tv_listeners.DataController;FSqlData_TableView
<> nil then// 1PC_Refuse.EnabledPC_Refuse.Execute;_C :=
VarToStr(DC.Values[FSqlData_TableView.LastChoiceIndex,_listeners_id_contract.Index]);ID_C
<> '' then// 2:= MSystemServices.SelectData(Contr_Params, VarArrayOf([ID_C]),
rID);VarIsArray(data) then//
3_Contract_Params.wrappers[cxDateEdit_PC_D_Start].Value := VarToStr
(data[0][0]);_Contract_Params.wrappers[cxDateEdit_PC_D_End].Value
:= VarToStr
(data[0][1]);_Contract_Params.wrappers[cxPopupEdit_PC_Org].Value
:= VarToStr
(data[0][2]);_Contract_Params.wrappers[cxPopupEdit_PC_Org].ValueDisplay
:= VarToStr
(data[0][20]);_Contract_Params.wrappers[CheckBox_PC_NDS].Value
:= VarToStr
(data[0][21]);VarToStr(data[0][24])
= ''cW_Contract_Params.wrappers[cxCurrencyEdit_PC_Money].ClearcW_Contract_Params.wrappers[cxCurrencyEdit_PC_Money].Value
:=VarToStr
(data[0][24]);
{cW_Contract_Params.wrappers[cxCurrencyEdit_PC_Money].Value
:= VarToStr
(DC.GetValue(DC.FocusedRecordIndex,
tv_listeners_money.Index));_Contract_Params.wrappers[cxCurrencyEdit_PC_Money].ValueDisplay
:=.GetDisplayText(DC.FocusedRecordIndex,
tv_listeners_money.Index);}VarToStr(data[0][22]) =
''cW_Contract_Params.wrappers[cxDateEdit_PC_D_Start_Otrjv].ClearcW_Contract_Params.wrappers[cxDateEdit_PC_D_Start_Otrjv].Value
:=(StrToDate(VarToStr(data[0][22])));VarToStr(data[0][22]) =
''cW_Contract_Params.wrappers[cxDateEdit_PC_D_End_Otrjv].ClearcW_Contract_Params.wrappers[cxDateEdit_PC_D_End_Otrjv].Value
:=(StrToDate(VarToStr(data[0][23])));_Contract_Params.wrappers[cxPopupEdit_PC_SF].Value
:= VarToStr
(data[0][3]);_Contract_Params.wrappers[cxPopupEdit_PC_SF].ValueDisplay
:= VarToStr
(data[0][4]);(cW_Contract_Params.wrappers
[cxButtonEdit_PC_Contract]).SetListProperties
(VarToStr(DC.Values[FSqlData_TableView.LastChoiceIndex,_listeners_id_paragraph_contract.Index]),
VarToStr(data[0][6]),(data[0][8]), '', VarToStr(data[0][5]), '', '',
'',(data[0][7]),(DC.Values[FSqlData_TableView.LastChoiceIndex,_listeners_status_text_contract.Index]),
'', '', '');_Contract_Params.wrappers[cxPopupEdit_PC_Kind_Order].Value :=
VarToStr
(data[0][6]);_Contract_Params.wrappers[cxPopupEdit_PC_Kind_Order].ValueDisplay
:=(data[0][8]);(cW_Contract_Params.wrappers
[cxButtonEdit_PC_Direction]).SetListProperties
(VarToStr(data[0][9]),
VarToStr(data[0][13]), VarToStr(data[0][14]),
'', VarToStr(data[0][10]), '', '',
'', VarToStr(data[0][11]),(data[0][12]), '', '',
'');_Contract_Params.wrappers[cxPopupEdit_PC_Kind_Direction].Value
:=(data[0][13]);_Contract_Params.wrappers[cxPopupEdit_PC_Kind_Direction]
.ValueDisplay := VarToStr(data[0][14]);_Contract_Params.wrappers[cxTextEdit_PC_Basis].Value
:= VarToStr
(data[0][15]);_Contract_Params.wrappers[cxTextEdit_PC_FIO].Value
:= VarToStr
(data[0][16]);_Contract_Params.wrappers[cxTextEdit_PC_FIO_R].Value
:= VarToStr
(data[0][17]);_Contract_Params.wrappers[cxPopupEdit_PC_Post].Value
:= VarToStr
(data[0][18]);_Contract_Params.wrappers[cxPopupEdit_PC_Post].ValueDisplay
:=(data[0][19]);// 3_Contract_Params.ClearWrappers;//
2_Contract_Params.ClearWrappers;
end; // 1;
{ Установить параметры текущего выбора и
прочитать методические комплексы}
procedure
TForm_Event.Fill_tv_com_specExecute(Sender: TObject);_TableView :=
Get_SqlData_cxGrid(tv_com_spec);(FSqlData_TableView <> nil) then//
1Sender = PopupEdit_Import_UMK thenFSqlData_TableView.Parameters[1] <>
VarToStr(cW_Import.Wrappers[PopupEdit_Import_Spec_Div].Value)begin_TableView.Parameters[1]
:=
VarToStr(cW_Import.Wrappers[PopupEdit_Import_Spec_Div].Value);_TableView.Read_Data;FSqlData_TableView.Read_Data_First;
end
// Работа с текущим повышением плана (в
редактировании грида)
beginFSqlData_TableView.Parameters[1]
<> VarToStr
(tv_r_c_plan.DataController.Values[tv_r_c_plan.DataController.FocusedRecordIndex
,tv_r_c_plan_id_spec_div.Index])_TableView.Parameters[1]
:= VarToStr
(tv_r_c_plan.DataController.Values[tv_r_c_plan.DataController.FocusedRecordIndex
,
tv_r_c_plan_id_spec_div.Index]);_TableView.Read_Data;FSqlData_TableView.Read_Data_First;;;
// 1;TForm_Event.Fill_tv_contractsExecute(Sender: TObject);_TableView :=
Get_SqlData_cxGrid(tv_contracts);(FSqlData_TableView <> nil) then//
1_TableView.Params[0] := cW_New_Listener.wrappers
[cxPopupEdit_New_Listener_Kind_Order].Value;_TableView.Params[1]
:= cW_New_Listener.wrappers
[cxPopupEdit_New_Listener_FIO].Value;FSqlData_TableView.IsFirstRead
then_TableView.Read_Data_First_TableView.Read_Data;; //
1;TForm_Event.Fill_tv_ed_groupExecute(Sender: TObject);_TableView :=
Get_SqlData_cxGrid(tv_ed_group);(FSqlData_TableView <> nil) then//
1_TableView.Params[0] := VarToStr
(tv_r_c_plan.DataController.Values
[tv_r_c_plan.DataController.FocusedRecordIndex,_r_c_plan_id_spec_div.Index]);FSqlData_TableView.IsFirstRead
then_TableView.Read_Data_First_TableView.Read_Data;; //
1;TForm_Event.Fill_tv_kba_endExecute(Sender: TObject);_TableView :=
Get_SqlData_cxGrid(tv_kba_end);(FSqlData_TableView <> nil) then//
1VarToStr(FSqlData_TableView.Params[0]) <> cW_End_Education.wrappers
[cxButtonEdit_End_Education].Value
then// 2_TableView.Params[0] := cW_End_Education.wrappers
[cxButtonEdit_End_Education].Value;_TableView.Read_Data;;
// 2; // 1;TForm_Event.Fill_tv_kba_startExecute(Sender: TObject);_TableView :=
Get_SqlData_cxGrid(tv_kba_start);(FSqlData_TableView <> nil)
thenFSqlData_TableView.IsFirstRead
then_TableView.Read_Data_First;;TForm_Event.Fill_tv_kind_directionExecute(Sender:
TObject);_TableView :=
Get_SqlData_cxGrid(tv_kind_direction);(FSqlData_TableView <> nil)
thenFSqlData_TableView.IsFirstRead
then_TableView.Read_Data_First;;TForm_Event.Fill_tv_kind_orderExecute(Sender:
TObject);_TableView := Get_SqlData_cxGrid(tv_kind_order);(FSqlData_TableView
<> nil) thenFSqlData_TableView.IsFirstRead
then_TableView.Read_Data_First;;TForm_Event.Fill_tv_listenersExecute(Sender:
TObject);_TableView2: TSqlData_cxGridTableView;: string;_TableView :=
Get_SqlData_cxGrid(tv_listeners);_TableView2 :=
Get_SqlData_cxGrid(tv_r_c_plan);(FSqlData_TableView <> nil) and
(FSqlData_TableView2 <> nil) then// 1:=
VarToStr(FSqlData_TableView2.GridTableView.DataController.Values
[FSqlData_TableView2.LastChoiceIndex,
tv_r_c_plan_id_r_c_plan.Index]);VarToStr(FSqlData_TableView.Params[0]) <>
Param0 then// 2_TableView.Params[0] :=
Param0;_TableView.Read_Data;FSqlData_TableView.Read_Data_First; // 2; //
1;TForm_Event.Fill_tv_ordersExecute(Sender: TObject);: string;_TableView :=
Get_SqlData_cxGrid(tv_orders);(FSqlData_TableView <> nil) then// 1:=
VarToStr(tv_listeners.DataController.Values
[tv_listeners.DataController.FocusedRecordIndex,_listeners_id_e.Index]);VarToStr(FSqlData_TableView.Params[0])
<> Param0 then// 2_TableView.Params[0] := Param0;_TableView.Read_Data;;
// 2; // 1;TForm_Event.Fill_tv_planExecute(Sender: TObject);: string;_TableView
:= Get_SqlData_cxGrid(tv_plan);(FSqlData_TableView <> nil) then// 1:=
VarToStr(cW_Plan_Filters.wrappers[cxSpinEdit_Plan_Filters_Year]
.Value);(VarToStr(FSqlData_TableView.Params[0])
<> Param0) then// 2_TableView.Params[0] := Param0;_TableView.Read_Data;//
2FSqlData_TableView.Read_Data_First;(cW_Plan_Filters.wrappers[cxPopupEdit_Plan_Filters_Plan].Value)
<> ''FindGridRecord(tv_plan, [tv_plan_id_paragraph]
, CreateVarAr([VarToStr(cW_Plan_Filters.wrappers[cxPopupEdit_Plan_Filters_Plan].Value)]));;
// 1;TForm_Event.Fill_tv_postsExecute(Sender: TObject);_TableView :=
Get_SqlData_cxGrid(tv_posts);(FSqlData_TableView <> nil)
thenFSqlData_TableView.IsFirstRead then_TableView.Read_Data_First;;TForm_Event.Fill_tv_r_c_groupsExecute(Sender:
TObject);_TableView2: TSqlData_cxGridTableView;: string;_TableView :=
Get_SqlData_cxGrid(tv_r_c_groups);_TableView2 :=
Get_SqlData_cxGrid(tv_r_c_plan);(FSqlData_TableView <> nil) and (FSqlData_TableView2
<> nil) then// 1:=
VarToStr(FSqlData_TableView2.GridTableView.DataController.Values
[FSqlData_TableView2.LastChoiceIndex,
tv_r_c_plan_id_r_c_plan.Index]);VarToStr(FSqlData_TableView.Params[0]) <>
Param0 then// 2_TableView.Params[0] := Param0;_TableView.Read_Data;FSqlData_TableView.Read_Data_First;
// 2; // 1;TForm_Event.Fill_tv_r_c_planExecute(Sender: TObject);:
string;_TableView := Get_SqlData_cxGrid(tv_r_c_plan);(FSqlData_TableView
<> nil) then// 1:= VarToStr(cW_Plan_Filters.wrappers[cxPopupEdit_Plan_Filters_Plan]
.Value);(VarToStr(FSqlData_TableView.Params[0])
<> Param0)FSqlData_TableView.IsFirstRead then// 2_TableView.Params[0] :=
Param0;_TableView.Read_Data;; // 2; //
1;TForm_Event.Fill_tv_source_finansingExecute(Sender: TObject);_TableView := Get_SqlData_cxGrid(tv_Source_Financing);(FSqlData_TableView
<> nil) and FSqlData_TableView.IsFirstRead
then_TableView.Read_Data_First;;TForm_Event.Fill_tv_spec_div_popupExecute(Sender:
TObject);_TableView := Get_SqlData_cxGrid(tv_spec_div_popup);(FSqlData_TableView
<> nil) then// 1FSqlData_TableView.IsFirstRead
then_TableView.Read_Data_First;; // 1;TForm_Event.FormDestroy(Sender: TObject);
begin
{ Сохраним параметры в реестр }
Save_Restore_Params(Curr_Reg_Path,
False);;TForm_Event.FormShow(Sender: TObject);
{ Читаем
списки
}_tv_r_c_planExecute(self);;
{ Инициализация
формы
}TForm_Event.Init(AReg_Path: String = Reg_Path;_SE: TForm_SE = nil;
AForm_Find_Org: TForm_Find_Org = nil;_Anketa: TFUnivQuestionare =
nil;_Anketa_For_New: TFUnivQuestionare = nil);_Reg_Path :=
AReg_Path;_Import_Reference.Date := Date;_New_Nach.Date :=
Date;_Create_Nach_All.Date := Date;_Stat_Begin.Date := StrToDate('01.01.' +
IntToStr(YearOf(Date)));_Stat_End.Date := StrToDate('31.12.' +
IntToStr(YearOf(Date)));_Filter_Start.Date := DateEdit_Stat_Begin.Date;_Filter_End.Date
:= DateEdit_Stat_End.Date;AForm_SE <> nil then_Form_SE := AForm_SE;not
assigned(Current_Form_SE) then_Form_SE :=
TForm_SE.Create(self);Get_SqlData_cxGrid(Current_Form_SE.cxGrid_FIO)
do.OnExecute := Action_New_SE.OnExecute;.Enabled :=
False;.Add(ActionInsert);.Add(nil);.Add(ActionUpdate);;AForm_Find_Org <>
nil then_Form_Find_Org := AForm_Find_Org;not assigned(Current_Form_Find_Org)
then_Form_Find_Org :=
TForm_Find_Org.Create(self);_Form_Find_Org.Init;;AForm_Anketa <> nilCurrent_Form_Anketa
:= AForm_Anketa;not assigned(Current_Form_Anketa)
then_Form_Anketa.Init(Current_Form_Anketa, [qpers, qphoto, qcont, qdocs,,
QWithTabSheet, Qworkplaces, QWeb_User], ForWorkWith, nil,_Form_SE);
//Current_Form_Anketa.FFormDocuments.TypeDoc
:= 3;_Form_Anketa.FFormDocuments.ReadAdditionalInfo;_Form_Anketa.IsEnabled :=
True;_Form_Anketa.ManualDock(Panel_Anketa, nil,
alClient);_Form_Anketa.RefreshRoles(False);;AForm_Anketa_For_New <>
nilForm_Anketa_For_New := AForm_Anketa_For_New;not assigned(Form_Anketa_For_New)_Anketa_For_New.Init(Form_Anketa_For_New
, [Qpers, Qdocs, QCont, QAdr]
, ForNew, nil,
Current_Form_SE);_Anketa_For_New.FFormDocuments.TypeDoc := 1;
//Form_Anketa_For_New.hm :=
HandymanFunctions;_Anketa_For_New.SimilaryCheckModeOn := True;_Anketa_For_New.PostOnEnter
:= True;_Anketa_For_New.DisplayLookUps := False;;
//
*****************************************************************************_New_R_C_Plan
:=
TContainerWrappers.Create;_New_R_C_Plan.AddPopupEdit(cxPopupEdit_New_R_C_Plan_Spec_Div,
True, False,_Spec_Div_PopUp, tv_spec_div_popup, tv_spec_div_popup_id_spec_div,
[tv_spec_div_popup_name_spec,
tv_spec_div_popup_name_div,_spec_div_popup_kind_training],
'');_New_R_C_Plan.AddButtonOrderEdit(cxButtonEdit_New_R_C_Plan_Paragraph,
True,, '', ['902'], [OBE_CHOOSE, OBE_NEW, OBE_INNAVIGATE, OBE_PREVIEW],
[nil, nil, nil,
nil]);_New_R_C_Plan.AddCustomEdit(cxDateEdit_New_R_C_Plan_D_Start, True, False,
'');_New_R_C_Plan.AddCustomEdit(cxDateEdit_New_R_C_Plan_D_End,
False, False,
'');_New_R_C_Plan.OnChangeWrapper :=
DoChanged_cW_New_R_C_Plan;
//
*****************************************************************************
//
*****************************************************************************_New_R_C_Group
:= TContainerWrappers.Create;_New_R_C_Group.AddPopupEdit(cxPopupEdit_New_R_C_Group_Ed_Group,
True,, cxGrid_Ed_Group, tv_ed_group, tv_ed_group_id_ed_group,
[tv_ed_group_name],
'');_New_R_C_Group.AddPopupEdit(cxPopupEdit_New_R_C_Group_Met_Complex, True,,
cxGrid_Com_Spec, tv_com_spec, tv_com_spec_id_met_complex,
[tv_com_spec_name_spec,
tv_com_spec_status_text],
'');_New_R_C_Group.AddCustomEdit(cxDateEdit_New_R_C_Group_D_Start, True, False,
'');_New_R_C_Group.AddCustomEdit(cxDateEdit_New_R_C_Group_D_End,
True, False,
'');_New_R_C_Group.OnChangeWrapper
:= DoChanged_cW_New_R_C_Group;
//
*****************************************************************************
//
*****************************************************************************_New_Listener
:= TContainerWrappers.Create;_New_Listener.AddPopupEdit(cxPopupEdit_New_Listener_FIO,
True, False,_Form_SE.cxGrid1,
Current_Form_SE.cxGrid_FIO,_Form_SE.cxGrid_FIO_ID_E,
[Current_Form_SE.cxGrid_FIO_Full],
'');_New_Listener.AddPopupEdit(cxPopupEdit_New_Listener_Ed_Group, True,
False,_R_C_Groups, tv_r_c_groups, tv_r_c_groups_id_ed_group,
[tv_r_c_groups_name],
'');_New_Listener.AddCustomEdit(cxDateEdit_New_Listener_D_Start, True, False,
'');_New_Listener.AddCustomEdit(cxDateEdit_New_Listener_D_End,
True, False, '');_New_Listener.AddPopupEdit(cxPopupEdit_New_Listener_Kind_Basis_Action,,
False, cxGrid_KBA_Start, tv_kba_start, tv_kba_start_id,
[tv_kba_start_name],
'');_New_Listener.AddButtonOrderEdit(cxButtonEdit_New_Listener_Order_Start,,
False, '', ['200'], [OBE_CHOOSE, OBE_NEW, OBE_INNAVIGATE,_PREVIEW], [nil, nil,
nil, nil]);_New_Listener.AddPopupEdit(cxPopupEdit_New_Listener_Kind_Order,
False,, cxGrid_Kind_Order, tv_kind_order, tv_kind_order_id,
[tv_kind_order_name],
'');_New_Listener.AddPopupEdit(cxPopupEdit_New_Listener_Order, False,
False,_Contracts, tv_contracts, tv_contracts_id_paragraph,
[tv_contracts_contract],
'');_New_Listener.AddCustomEdit(cxDateEdit_New_Listener_Contract_D_Start,,
False, '');_New_Listener.AddCustomEdit(cxDateEdit_New_Listener_Contract_D_End,
False,, '');_New_Listener.AddPopupEdit(cxPopupEdit_New_Listener_Contract_Organization,,
False, Current_Form_Find_Org.cxGrid_Org,_Form_Find_Org.TTree_Org,
Current_Form_Find_Org.Tree_Org_ID_CA,
[Current_Form_Find_Org.Tree_Org_Name],
'');_New_Listener.AddPopupEdit(_New_Listener_Contract_Source_Finansing, False,
False,_Source_Financing, tv_Source_Financing, tv_Source_Financing_ID,
[tv_Source_Financing_Name],
'');_New_Listener.AddCustomEdit(cxCurrencyEdit_New_Listener_Contract_Money,,
False, '');_New_Listener.AddCustomEdit(cxTextEdit_New_Listener_Basis, False,
False,
'');_New_Listener.AddCustomEdit(cxTextEdit_New_Listener_FIO,
False, False, '');_New_Listener.AddCustomEdit(cxTextEdit_New_Listener_FIO_R,
False, False,
'');_New_Listener.AddPopupEdit(cxPopupEdit_New_Listener_Post,
False, False,_Posts, tv_posts, tv_posts_id, [tv_posts_name],
'');_New_Listener.OnChangeWrapper := DoChanged_cW_New_Listener;
//
*****************************************************************************
//
*****************************************************************************_Contract_Params
:=
TContainerWrappers.Create;_Contract_Params.AddCustomEdit(cxDateEdit_PC_D_Start,
False, True, '');_Contract_Params.AddCustomEdit(cxDateEdit_PC_D_End, False,
True, '');_Contract_Params.AddCustomEdit(cxDateEdit_PC_D_Start_Otrjv, False,
True, '');_Contract_Params.AddCustomEdit(cxDateEdit_PC_D_End_Otrjv, False,
True, '');_Contract_Params.AddPopupEdit(cxPopupEdit_PC_Org, False,
True,_Form_Find_Org.cxGrid_Org,
Current_Form_Find_Org.TTree_Org,_Form_Find_Org.Tree_Org_ID_CA,
[Current_Form_Find_Org.Tree_Org_Name],
'');_Contract_Params.AddPopupEdit(cxPopupEdit_PC_SF, False,
True,_Source_Financing, tv_Source_Financing, tv_Source_Financing_ID,
[tv_Source_Financing_Name],
'');_Contract_Params.AddCustomEdit(cxCurrencyEdit_PC_Money, False, True,
'');_Contract_Params.AddButtonOrderEdit(cxButtonEdit_PC_Contract, False, False,
'', ['68924'], [OBE_INNAVIGATE,
OBE_PREVIEW], [nil,
nil]);_Contract_Params.AddPopupEdit(cxPopupEdit_PC_Kind_Order, False,
True,_Kind_Order, tv_kind_order, tv_kind_order_id, [tv_kind_order_name],
'');_Contract_Params.AddButtonOrderEdit(cxButtonEdit_PC_Direction,
False,, '', ['431', '433', '434', '62'], [OBE_INNAVIGATE, OBE_PREVIEW],
[nil,
nil]);_Contract_Params.AddPopupEdit(cxPopupEdit_PC_Kind_Direction, False,
True,_Kind_Direction, tv_kind_direction, tv_kind_direction_id,
[tv_kind_direction_name],
'');_Contract_Params.AddCustomEdit(cxTextEdit_PC_Basis, False, True,
'');_Contract_Params.AddCustomEdit(cxTextEdit_PC_FIO, False, True,
'');_Contract_Params.AddCustomEdit(cxTextEdit_PC_FIO_R, False, True,
'');_Contract_Params.AddPopupEdit(cxPopupEdit_PC_Post, False, True,_Posts,
tv_posts, tv_posts_id, [tv_posts_name],
'');_Contract_Params.AddCustomEdit(CheckBox_PC_NDS, False, True,
'');_Contract_Params.ActionApply := PC_Apply;_Contract_Params.ActionRefuse :=
PC_Refuse;_Contract_Params.OnChangeWrapper := DoChanged_cW_Contract_Params;
//
*****************************************************************************_New_Direction
:= TContainerWrappers.Create;_New_Direction.AddPopupEdit(cxPopupEdit_New_Direction,
True, False,_Kind_Direction, tv_kind_direction, tv_kind_direction_id,
[tv_kind_direction_name],
'');_New_Direction.OnChangeWrapper := DoChanged_cW_New_Direction;_New_UMK :=
TContainerWrappers.Create;_New_UMK.AddCustomEdit(SpinEdit_New_UMK_Hours, True,
False, '');_New_UMK.AddCustomEdit(SpinEdit_New_UMK_Hours_SR, False, False, '');
//
*****************************************************************************
//
*****************************************************************************_End_Education
:=
TContainerWrappers.Create;_End_Education.AddButtonOrderEdit(cxButtonEdit_End_Education,
True, False,
'', ['201', '207'], [OBE_CHOOSE,
OBE_NEW, OBE_INNAVIGATE, OBE_PREVIEW],
[nil, nil, nil, nil]);_End_Education.AddPopupEdit(cxPopupEdit_KBA_End,
True, False,_Kba_End, tv_kba_end, tv_kba_end_id, [tv_kba_end_name],
'');_End_Education.AddCustomEdit(cxDateEdit_End_Education,
True, False, '');_End_Education.OnChangeWrapper := DoChanged_cW_End_Education;
// *****************************************************************************
//
---------------------------------------------
// добавление
плана
повышения
квалификации
//
---------------------------------------------Get_SqlData_cxGrid(tv_r_c_plan) =
nil thenTSqlData_cxGridTableView.Create(tv_r_c_plan) do:= True;:= False;_Name
:= tv_r_c_plan.Bands.Items[0].Caption;_Select := R_C_Plan;_Update :=
d_P_REFRESHER_COURSE_PLAN;:= CreateVarAr(['']);:= True;_Column :=
tv_r_c_plan_institute;:= tv_r_c_plan_institute;Select_Columns
do(tv_r_c_plan_name_spec, 2);(tv_r_c_plan_institute, 2);(tv_r_c_plan_division,
2);(tv_r_c_plan_kind_training, 2);(tv_r_c_plan_d_start, 1);(tv_r_c_plan_d_end,
0);(tv_r_c_plan_source, 2);(tv_r_c_plan_money);(tv_r_c_plan_status_text,
3);(tv_r_c_plan_id_r_c_plan, 4);(tv_r_c_plan_id_spec_div,
2);(tv_r_c_plan_id_spec, 2);(tv_r_c_plan_id_institute, 2);(tv_r_c_plan_id_d,
2);(tv_r_c_plan_idk_training, 2);(tv_r_c_plan_id_paragraph,
3);(tv_r_c_plan_id_order, 3);(tv_r_c_plan_idk_order, 3);(tv_r_c_plan_status_order,
3);(tv_r_c_plan_id_source,
2);(tv_r_c_plan_id_erp_user);;_Columns.Add(tv_r_c_plan_id_r_c_plan,
4);Insert_Columns do(tv_r_c_plan_d_end, 0);(tv_r_c_plan_d_start,
1);(tv_r_c_plan_id_spec_div, 2);(tv_r_c_plan_id_paragraph,
3);;PopupColumnsList.Add(tv_r_c_plan_name_spec) do:= tv_r_c_plan_id_spec_div;:=
tv_spec_div_popup_id_spec_div;:=
tv_spec_div_popup_name_spec;;PopupColumnsList.Add(tv_r_c_plan_institute) do:=
tv_r_c_plan_id_spec_div;:= tv_spec_div_popup_id_spec_div;:=
tv_spec_div_popup_institute;;PopupColumnsList.Add(tv_r_c_plan_division) do:=
tv_r_c_plan_id_spec_div;:= tv_spec_div_popup_id_spec_div;:=
tv_spec_div_popup_name_div;;PopupColumnsList.Add(tv_r_c_plan_kind_training)
do:= tv_r_c_plan_id_spec_div;:= tv_spec_div_popup_id_spec_div;:= tv_spec_div_popup_kind_training;;PopupColumnsList.Add(tv_r_c_plan_source)
do:= tv_r_c_plan_id_source;:= tv_Source_Financing_ID;:=
tv_Source_Financing_Name;;.Column_Status_Text :=
tv_r_c_plan_status_text;.Column_ID_order :=
tv_r_c_plan_id_order;.Column_ID_paragraph :=
tv_r_c_plan_id_paragraph;.Column_IDk_order := tv_r_c_plan_idk_order;.Visible :=
True;.OnExecute :=
Action_Insert_tv_r_c_plan.OnExecute;.Add(ActionInsert);.Add(ActionDelete);.Add(nil);.Add(OptionsOrder.ActionPreview);.Add(OptionsOrder.ActionNavigate);.Add(nil);.Add(ActionUpdate);:=
lmLastChoice;
OnChoiceGridRecord := ChoiceGridRecord;;
// ---------------------------------------------
// ---------------------------------------------
// добавление обучаемых специальностей
(специальности подразделений)
// ---------------------------------------------Get_SqlData_cxGrid(tv_spec_div_popup)
= nil thenTSqlData_cxGridTableView.Create(tv_spec_div_popup) do:= False;_Name
:= 'Обучаемые
специальности';_Select
:= Spec_div;_Update := d_P_SPECIALITIES_DIVISION;:= CreateVarAr([IDK_Level_Spec,
'']);_Column := tv_spec_div_popup_institute;:= tv_spec_div_popup_institute;:=
True;Select_Columns do(tv_spec_div_popup_name_spec,
1);(tv_spec_div_popup_name_div, 2);(tv_spec_div_popup_kind_training,
3);(tv_spec_div_popup_institute, 6);(tv_spec_div_popup_source,
12);(tv_spec_div_popup_d_start, 4);(tv_spec_div_popup_d_end,
5);(tv_spec_div_popup_id_spec_div, 0);(tv_spec_div_popup_id_spec,
1);(tv_spec_div_popup_id_d, 2);(tv_spec_div_popup_idk_training,
3);(tv_spec_div_popup_id_d_institute, 6);(tv_spec_div_popup_id_source,
12);(tv_spec_div_popup_idk_level_formation,
8);;Insert_Columnsbegin(tv_spec_div_popup_id_spec, 1);(tv_spec_div_popup_id_d,
2);(tv_spec_div_popup_idk_training, 3);(tv_spec_div_popup_d_start,
4);(tv_spec_div_popup_id_d_institute,
6);(tv_spec_div_popup_idk_level_formation, 8);(tv_spec_div_popup_id_source,
12);;_Columns.Add(tv_spec_div_popup_id_spec_div, 0);
PopupActions.Add(ActionUpdate);;
// ---------------------------------------------
// ---------------------------------------------
// добавление групп повышения квалификации
//
---------------------------------------------Get_SqlData_cxGrid(tv_r_c_groups)
= nil thenTSqlData_cxGridTableView.Create(tv_r_c_groups) do:= True;:= False;
Table_Name := 'Группы повышения квалификации';
GUID_Select := R_C_Groups;_Update :=
d_P_REFRESHER_COURSE_GROUP;:= True;:= CreateVarAr(['']);_Column :=
tv_r_c_groups_name;:= tv_r_c_groups_name;Select_Columns do(tv_r_c_groups_name,
2);(tv_r_c_groups_d_start, 1);(tv_r_c_groups_d_end, 0);(tv_r_c_groups_status_text,
3);(tv_r_c_groups_hours); ;(tv_r_c_groups_id_rc_group,
4);(tv_r_c_groups_id_ed_group, 2);(tv_r_c_groups_id_met_complex,
3);(tv_r_c_groups_id_paragraph, 3);(tv_r_c_groups_id_order,
3);(tv_r_c_groups_idk_order, 3);(tv_r_c_groups_status_order, 3);(tv_r_c_groups_id_r_c_plan,
5);(tv_r_c_groups_id_erp_user);;_Columns.Add(tv_r_c_groups_id_rc_group,
4);Insert_Columns do(tv_r_c_groups_d_end, 0);(tv_r_c_groups_d_start,
1);(tv_r_c_groups_id_ed_group, 2);(tv_r_c_groups_id_met_complex,
3);(tv_r_c_groups_id_r_c_plan, 5);;PopupColumnsList.Add(tv_r_c_groups_name)
do:= tv_r_c_groups_id_ed_group;:= tv_ed_group_id_ed_group;:=
tv_ed_group_name;;.Column_Status_Text :=
tv_r_c_groups_status_text;.Column_ID_order :=
tv_r_c_groups_id_order;.Column_ID_paragraph := tv_r_c_groups_id_paragraph;.Column_IDk_order
:= tv_r_c_groups_idk_order;.Visible := True;.OnExecute :=
Action_Insert_tv_r_c_group.OnExecute;:= lmLastChoice;:=
ChoiceGridRecord;.Add(ActionInsert);.Add(ActionDelete);.Add(nil);.Add(OptionsOrder.ActionPreview);.Add(OptionsOrder.ActionNavigate);.Add(nil);.Add(ActionUpdate);;
//
---------------------------------------------
//
---------------------------------------------
// Учебные
группыTSqlData_cxGridTableView.Create(tv_ed_group)
do:= False;_Name := 'Учебные
группы';:=
CreateVarAr(['']);_Select := Ed_Groups;:= False;:= True;_Column :=
tv_ed_group_name;:= tv_ed_group_name;Select_Columns do(tv_ed_group_name,
1);(tv_ed_group_kind_group, 8);(tv_ed_group_d_start, 4);(tv_ed_group_d_end,
5);(tv_ed_group_id_ed_group, 0);(tv_ed_group_id_spec_div,
2);(tv_ed_group_idk_group, 8);(tv_ed_group_level_group,
3);;_Columns.Add(tv_ed_group_id_ed_group, 0);.Add(ActionUpdate);;
// Куратор
текущей
группыTSqlData_cxGridTableView.Create(TTree_Curator)
do_Name := TTree_Curator.Bands.Items[0].Caption;_Select :=
Get_List_Curators_By_ID_EG;_Update := d_P_CURATOR_GROUP;:= 1;.Add(1);:=
True;_Column := Tree_Curator_FIO;Select_Columns do(Tree_Curator_Start,
1);(Tree_Curator_End, 0);(Tree_Curator_FIO, 2);(Tree_Curator_ID_E,
2);(Tree_Curator_ID_EG, 3);;Insert_Columns do(Tree_Curator_Start,
1);(Tree_Curator_ID_E, 2);(Tree_Curator_ID_EG,
3);;PopupColumnsList.Add(Tree_Curator_FIO) do:= Tree_Curator_ID_E;:=
Current_Form_SE.cxGrid_FIO_ID_E;:=
Current_Form_SE.cxGrid_FIO_Full;;_Columns.Add(Tree_Curator_ID_E, 2);_Columns.Add(Tree_Curator_ID_EG,
3);_Columns.Add(Tree_Curator_Start, 1);.OnExecute :=
Action_New_Curator.OnExecute;(Tree_Curator_FIO.Properties).PopupControl
:=_Form_SE;_New_Curator_FIO.Properties.PopupControl :=
Current_Form_SE;_New_Curator := TContainerWrappers.Create;_New_Curator.AddCustomEdit(DateEdit_New_Curator,
True, False, '');_New_Curator.AddPopupEdit(PopupEdit_New_Curator_FIO, True,
False,_Form_SE.cxGrid1, Current_Form_SE.cxGrid_FIO,_Form_SE.cxGrid_FIO_ID_E,
[Current_Form_SE.cxGrid_FIO_Full], '');_New_Curator.ActionEnter :=
Action_Insert_Curator;;
//
-----------------------------------------------------------
//
------------------------------------------------------------
//
---------------------------------------------
// добавление
специальностей
комплекса
//
---------------------------------------------Get_SqlData_cxGrid(tv_com_spec) =
nil thenTSqlData_cxGridTableView.Create(tv_com_spec) do:= False;:= False;_Name
:= 'Методический
комплекс';_Select
:= Met_Complex;:= True;:= 1;.Add(1);_Column := tv_com_spec_institute;:=
tv_com_spec_institute;Select_Columns
do(tv_com_spec_name_spec);(tv_com_spec_institute);(tv_com_spec_name_div);(tv_com_spec_kind_training);(tv_com_spec_status_text);(tv_com_spec_hours);(tv_com_spec_id_spec_div);(tv_com_spec_id_spec);(tv_com_spec_id_institute);(tv_com_spec_id_d_spec_div);(tv_com_spec_idk_training);(tv_com_spec_status_order);(tv_com_spec_id_p_dp);(tv_com_spec_id_order);(tv_com_spec_idk_order);(tv_com_spec_id_met_complex);
//Add(tv_com_spec_id_e_l_umk);(tv_com_spec_sam);;.Add(ActionUpdate);;
// Рамочные
договораTSqlData_cxGridTableView.Create(TTree_Main_Contracts)
do:= False;_Name := TTree_Main_Contracts.Bands.Items[0].Caption;_Select :=
Get_List_Main_Contracts;:= True;:= 1;.Add(1);Select_Columns
do(Tree_Main_Contracts_Contract);(Tree_Main_Contracts_Org_Name);(Tree_Main_Contracts_Number);(Tree_Main_Contracts_ID_Contract);;_Columns.Add(Tree_Main_Contracts_ID_Contract);.Add(ActionUpdate);_Column
:= Tree_Main_Contracts_Contract;:= Tree_Main_Contracts_Contract;;
// Виды
сертификатовTSqlData_cxGridTableView.Create(TTree_Kind_Doc_Cert)
do:= False;_Name := TTree_Kind_Doc_Cert.Bands.Items[0].Caption;_Select :=
Get_Kind_Documents;:= True;Select_Columns
do(Tree_Kind_Doc_Cert_Name);(Tree_Kind_Doc_Cert_ID);;_Columns.Add(Tree_Kind_Doc_Cert_ID);.Add(ActionUpdate);_Column
:= Tree_Kind_Doc_Cert_Name;:= Tree_Kind_Doc_Cert_Name;;
//
---------------------------------------------
//
---------------------------------------------
// добавление
участников
//
---------------------------------------------Get_SqlData_cxGrid(tv_listeners) =
nil thenTSqlData_cxGridTableView.Create(tv_listeners) do:= True;:= False;_Name
:= 'Участники';_Select
:= Listeners;_Update := d_P_STUDENTS;:= True;_Read :=
After_Read_tv_listeners;:= CreateVarAr(['']);_Column := tv_listeners_fio;:=
tv_listeners_fio;:= True;Select_Columns do(tv_listeners_fio,
1);(tv_listeners_ed_group, 7);(tv_listeners_d_start,
4);(tv_listeners_d_end);(tv_listeners_d_end_plan);(tv_listeners_kind_basis_action,
8);(tv_listeners_status_text_order_start, 3);(tv_listeners_status_text_order_end);(tv_listeners_status_text_contract);(tv_listeners_org);(tv_listeners_money);(tv_listeners_certificate,
4);(tv_listeners_hours,
20);(tv_listeners_hours_plan);(tv_listeners_last_date);(tv_listeners_id_student,
0);(tv_listeners_id_e, 1);(tv_listeners_id_ed_group,
7);(tv_listeners_idkba_transfer, 8);(tv_listeners_id_paragraph_start,
3);(tv_listeners_id_order_start, 3);(tv_listeners_idk_order_start,
3);(tv_listeners_id_contract);(tv_listeners_status_order_start, 3);(tv_listeners_id_paragraph_contract,
10);(tv_listeners_id_erp_user);(tv_listeners_id_contractor);(tv_listeners_Main_Contract);(tv_listeners_ID_Contract_Main);(tv_listeners_Org_Contract_Main);(tv_listeners_NDS);(tv_listeners_ID_Paragraph_End);(tv_listeners_ID_ERP_End);(tv_listeners_ID_Status_End);(tv_listeners_ID_Certificate,
0);(tv_listeners_ID_Doc_Cert, 0);(tv_listeners_Kind_Cert,
1);(tv_listeners_ID_Kind_Cert, 1);(tv_listeners_Cert_Date,
2);(tv_listeners_Reg_Number, 0);(tv_listeners_ID_Reg, 5);_New_Nach_All := TContainerWrappers.Create;_New_Nach_All.AddButtonOrderEdit(ButtonEdit_Create_Nach_All,
True, False, ''
, ['436, 444']
, [OBE_CHOOSE, OBE_NEW,
OBE_INNAVIGATE, OBE_PREVIEW]
, [nil, nil, nil,
nil]);_New_Nach_All.AddCustomEdit(DateEdit_Create_Nach_All, True, False,
'');_New_Nach_All.ActionEnter :=
Action_Go_Nach_All;;_Columns.Add(tv_listeners_id_student,
0);IndividualEditInfoList.Add do_Update_Exchange :=
Update_FIO;.Add(tv_listeners_fio, 1);;IndividualEditInfoList.Add
do_Update_Exchange := Update_Ed_Group;.Add(tv_listeners_ed_group,
7);.Add(tv_listeners_d_start, 4);;IndividualEditInfoList.Add do_Update_Exchange
:= Update_End_Date;.Add(tv_listeners_d_end);;IndividualEditInfoList.Add
do_Update := d_P_CERTIFICATE;.Add(tv_listeners_hours, 20);.Add(tv_listeners_ID_Certificate,
0);;IndividualEditInfoList.Add do_Update :=
d_P_MAGAZINE_REGISTR_DIPLOMAS;.Add(tv_listeners_Reg_Number,
0);.Add(tv_listeners_ID_Reg, 5);;IndividualEditInfoList.Add do_Update :=
d_P_DOCUMENTS;.Add(tv_listeners_Kind_Cert, 1);.Add(tv_listeners_Cert_Date,
2);.Add(tv_listeners_certificate, 4);.Add(tv_listeners_ID_Doc_Cert,
0);;_Update_Exchange := Before_Update_Exchange_tv_listeners;Insert_Columns
do(tv_listeners_id_e, 1);(tv_listeners_id_ed_group,
7);(tv_listeners_idkba_transfer, 8);(tv_listeners_id_paragraph_start,
3);(tv_listeners_d_start, 4);(tv_listeners_id_paragraph_contract,
10);;(tv_listeners_fio.Properties).PopupControl
:=_Form_SE;_New_Listener_FIO.Properties.PopupControl :=
Current_Form_SE;_New_Listener_Contract_Organization.Properties.PopupControl
:=_Form_Find_Org;
//
TcxPopupEditProperties(tv_listeners_org.Properties).PopupControl :=
Current_Form_Find_Org;_PC_Org.Properties.PopupControl :=
Current_Form_Find_Org;PopupColumnsList.Add(tv_listeners_fio) do:=
tv_listeners_id_e;:= Current_Form_SE.cxGrid_FIO_ID_E;:=
Current_Form_SE.cxGrid_FIO_Full;;PopupColumnsList.Add(tv_listeners_ed_group)
do:= tv_listeners_id_ed_group;:= tv_r_c_groups_id_ed_group;:=
tv_r_c_groups_name;;PopupColumnsList.Add(tv_listeners_d_start) do:=
tv_listeners_id_ed_group;:= tv_r_c_groups_id_ed_group;:=
tv_r_c_groups_d_start;;PopupColumnsList.Add(tv_listeners_kind_basis_action)
do:= tv_listeners_idkba_transfer;:= tv_kba_start_id;:=
tv_kba_start_name;;PopupColumnsList.Add(tv_listeners_Kind_Cert) do:=
tv_listeners_ID_Kind_Cert;:= Tree_Kind_Doc_Cert_ID;:=
Tree_Kind_Doc_Cert_Name;;.Column_Status_Text :=
tv_listeners_status_text_order_start;.Column_ID_order :=
tv_listeners_id_order_start;.Column_ID_paragraph :=
tv_listeners_id_paragraph_start;.Column_IDk_order := tv_listeners_idk_order_start;.Visible
:= True;.OnExecute := Action_Insert_tv_listeners.OnExecute;.OnExecute :=
Delete_tv_listeners.OnExecute;.Add(ActionInsert);.Add(Action_Import);.Add(ActionDelete);.Add(nil);.Add(Action_Add_Contract);.Add(Action_Main_Contract);.Add(Action_New_Money);.Add(Action_Create_Nach_All);.Add(Action_Delete_Nach);.Add(Action_Delete_Contract);.Add(nil);.Add(Action_End_Education);.Add(Action_Delete_Order_End);.Add(nil);.Add(Action_Make_Certificate);.Add(Action_View_Certificate);.Add(Action_Delete_Certificate);.Add(nil);.Add(OptionsOrder.ActionPreview);.Add(OptionsOrder.ActionNavigate);.Add(nil);.Add(ActionUpdate);:=
lmLastChoice;:= OnChoiceGridRecord_tv_listeners;_Set_Main_Contract :=
TContainerWrappers.Create;_Set_Main_Contract.AddCustomEdit(DateEdit_Set_Main_Contract_Find,
True,, '');_Set_Main_Contract.AddPopupEdit(PopupEdit_Set_Main_Contract, True,,
cxGrid_Main_Contracts, TTree_Main_Contracts,_Main_Contracts_ID_Contract,
[Tree_Main_Contracts_Contract], '');_Set_Main_Contract.ActionEnter :=
Action_Go_Set_Main_Contract;_Make_Cert :=
TContainerWrappers.Create;_Make_Cert.AddButtonOrderEdit(ButtonEdit_New_Cert,
True, False, ''
, ['225']
, [OBE_CHOOSE, OBE_NEW,
OBE_INNAVIGATE, OBE_PREVIEW]
, [nil, nil, nil,
nil]);_Make_Cert.AddPopupEdit(PopupEdit_New_Cert_Kind_Doc, True, False
, nil, nil, Tree_Kind_Doc_Cert_ID,
[Tree_Kind_Doc_Cert_Name]);_Make_Cert.AddCustomEdit(SpinEdit_New_Cert_Reg,
True, False);_Make_Cert.AddCustomEdit(SpinEdit_New_Cert_Number, True,
False);_Make_Cert.AddCustomEdit(SpinEdit_New_Cert_Hours, True,
False);_Make_Cert.ActionEnter := Action_Go_New_Cert;_New_Money :=
TContainerWrappers.Create;_New_Money.AddCustomEdit(CurrencyEdit_New_Money,
True, False);_New_Money.ActionEnter := Action_Go_New_Money;;
//
---------------------------------------------
// ---------------------------------------------
// Основание
зачисленияTSqlData_cxGridTableView.Create(tv_kba_start)
do:= False;_Name := 'Основания
зачисления';_Select
:= Kind_Basis_Action;:= False;:= True;Select_Columns
do(tv_kba_start_name);(tv_kba_start_id);;_Columns.Add(tv_kba_start_id);.Add(ActionUpdate);_Column
:= tv_kba_start_name;:= tv_kba_start_name;;
//
-----------------------------------------------------------
//
---------------------------------------------
// Основание
окончанияTSqlData_cxGridTableView.Create(tv_kba_end)
do:= False;_Name := 'Основания
окончания';_Select
:= End_Education_KBA;:= CreateVarAr(['']);:= False;:= True;_Column :=
tv_kba_end_name;:= tv_kba_end_name;Select_Columns
do(tv_kba_end_name);(tv_kba_end_id);;_Columns.Add(tv_kba_end_id);.Add(ActionUpdate);;
//
-----------------------------------------------------------
//
-----------------------------------------------------------
//
---------------------------------------------
// ДолжностиTSqlData_cxGridTableView.Create(tv_posts)
do:= False;_Name := 'Должности';_Select
:= Posts;:= False;:= True;_Column := tv_posts_name;:=
tv_posts_name;Select_Columns
do(tv_posts_name);(tv_posts_id);;_Columns.Add(tv_posts_id);.Add(ActionUpdate);;
//
-----------------------------------------------------------
//
---------------------------------------------
// Вид
договораTSqlData_cxGridTableView.Create(tv_kind_order)
do:= False;_Name := 'Виды договоров';_Select
:= kind_order;:= False;:= True;_Column := tv_kind_order_name;:=
tv_kind_order_name;Select_Columns
do(tv_kind_order_name);(tv_kind_order_id);;_Columns.Add(tv_kind_order_id);.Add(ActionUpdate);;
//
-----------------------------------------------------------
//
---------------------------------------------
// Вид
направленияTSqlData_cxGridTableView.Create(tv_kind_direction)
do:= False;_Name := 'Виды направлений';_Select
:= Kind_Direction;:= False;:= True;_Column := tv_kind_direction_name;:=
tv_kind_direction_name;Select_Columns do(tv_kind_direction_name);(tv_kind_direction_id);;_Columns.Add(tv_kind_direction_id);.Add(ActionUpdate);;
//
-----------------------------------------------------------
//
---------------------------------------------
// Ссылка
на
договорTSqlData_cxGridTableView.Create(tv_contracts)
do:= False;_Name := 'Ссылки на
договоры';_Select
:= Contracts;:= False;:= True;:= CreateVarAr(['', '']);_Column :=
tv_contracts_contract;:= tv_contracts_contract;Select_Columns
do(tv_contracts_contract);(tv_contracts_kind_order);(tv_contracts_d_start);(tv_contracts_d_end);(tv_contracts_id_contract);(tv_contracts_id_paragraph);(tv_contracts_id_order);(tv_contracts_idk_order);(tv_contracts_status_order);;_Columns.Add(tv_contracts_id_contract);.Add(ActionUpdate);;
// -----------------------------------------------------------
//
-----------------------------------------
// Источник
финансированияGet_SqlData_cxGrid(tv_Source_Financing)
= nil thenTSqlData_cxGridTableView.Create(tv_Source_Financing) do
begin_Name := 'Источники финансирования';
GUID_Select := S_F;:= True;:= 1;:=
False;_Columns.Add(tv_Source_Financing_Abbreviation);_Columns.Add(tv_Source_Financing_Name);_Columns.Add(tv_Source_Financing_Abbr_Div);_Columns.Add(tv_Source_Financing_Division);_Columns.Add(tv_Source_Financing_Kind_Source);_Columns.Add(tv_Source_Financing_Activity);_Columns.Add(tv_Source_Financing_Date_Close);_Columns.Add(tv_Source_Financing_ID);_Columns.Add(tv_Source_Financing_ID_D);_Columns.Add(tv_Source_Financing_ID_Kind_Source);_Columns.Add(tv_Source_Financing_ID_Activity);_Columns.Add(tv_Source_Financing_ID);.Add(ActionUpdate);_Column
:= tv_Source_Financing_Abbreviation;:= tv_Source_Financing_Name;;
//
------------------------------------------------------------
//
---------------------------------------------
// добавление
приказов
человека
//
---------------------------------------------Get_SqlData_cxGrid(tv_orders) =
nil thenTSqlData_cxGridTableView.Create(tv_orders) do:= False;:= False;_Name :=
'Приказы
человека';_Select
:= Orders;:= True;:= CreateVarAr(['']);_Column := tv_orders_kind_paragraph;:=
tv_orders_kind_paragraph;Select_Columns
do(tv_orders_kind_paragraph);(tv_orders_status_text);(tv_orders_ed_group);(tv_orders_spec);(tv_orders_d_start);(tv_orders_kind_training);(tv_orders_institute);(tv_orders_status_order_contract);(tv_orders_kind_paragraph_contract);(tv_orders_d_creation);(tv_orders_d_modification);(tv_orders_id_order);(tv_orders_id_paragraph);(tv_orders_idk_order);(tv_orders_status_order);;_Columns.Add(tv_orders_id_order);.Column_Status_Text
:= tv_orders_status_text;.Column_ID_order :=
tv_orders_id_order;.Column_ID_paragraph :=
tv_orders_id_paragraph;.Column_IDk_order := tv_orders_idk_order;.Visible :=
True;.OnExecute :=
Action_Insert_tv_r_c_group.OnExecute;.Add(OptionsOrder.ActionPreview);.Add(OptionsOrder.ActionNavigate);.Add(nil);.Add(ActionUpdate);;
//
------------------------------------------------------------
//
---------------------------------------------
// начисления
//
---------------------------------------------Get_SqlData_cxGrid(TTree_Nach) =
nil thenTSqlData_cxGridTableView.Create(TTree_Nach) do_Name :=
TTree_Nach.Bands.Items[0].Caption;_Select := Get_Nach_By_ID_Dog;_Update :=
d_P_ACCOUNTS_CONTRACT;:= True;:= 1;.Add(1);_Column :=
Tree_Nach_Document;Select_Columns do(Tree_Nach_D_Start);(Tree_Nach_D_End);(Tree_Nach_Kind_Order);(Tree_Nach_Document);(Tree_Nach_Sum);(Tree_Nach_User);(Tree_Nach_Status);(Tree_Nach_ID_Stage);(Tree_Nach_ID_Account_Contract);(Tree_Nach_ID_Basis_Salary);(Tree_Nach_ID_SF);(Tree_Nach_IDK_Order);(Tree_Nach_ID_Paragraph);(Tree_Nach_ID_Order);(Tree_Nach_ID_ERP);;_Columns.Add(Tree_Nach_ID_Basis_Salary,
3);_Columns.Add(Tree_Nach_ID_Paragraph, 0);
//Key_Columns.Add(Tree_Nach_D_Start);_Delete
:= After_Delete;.Column_Status_Text := Tree_Nach_Document;.Column_ID_order :=
Tree_Nach_ID_Order;.Column_ID_paragraph :=
Tree_Nach_ID_Paragraph;.Column_IDk_order :=
Tree_Nach_IDK_Order;.Column_ID_erp_user := Tree_Nach_ID_ERP;.OnExecute :=
Action_Create_Nach.OnExecute;.Add(ActionInsert);.Add(ActionDelete);.Add(nil);.Add(OptionsOrder.ActionPreview);.Add(OptionsOrder.ActionNavigate);.Add(nil);.Add(ActionUpdate);_New_Nach
:= TContainerWrappers.Create;_New_Nach.AddButtonOrderEdit(ButtonEdit_New_Nach,
True, False, ''
, ['436, 444']
, [OBE_CHOOSE, OBE_NEW,
OBE_INNAVIGATE, OBE_PREVIEW]
, [nil, nil, nil, nil]);_New_Nach.AddCustomEdit(DateEdit_New_Nach,
True, False, '');_New_Nach.ActionEnter := Action_Go_New_Nach;;
//
---------------------------------------------
//
---------------------------------------------
// добавление
планов
ПК
//
---------------------------------------------Get_SqlData_cxGrid(tv_plan) = nil
thenTSqlData_cxGridTableView.Create(tv_plan) do:= False;:= False;_Name := 'Планы
ПК';_Select
:= Plan_Paragraphs;:= True;:= CreateVarAr(['-1']);_Column := tv_plan_note;:=
tv_plan_note;Select_Columns
do(tv_plan_note);(tv_plan_summary);(tv_plan_status_text);(tv_plan_hisdate);(tv_plan_d_creation);(tv_plan_d_modification);(tv_plan_id_paragraph);(tv_plan_id_order);(tv_plan_idk_order);(tv_plan_status_order);(tv_plan_id_erp_user);;_Columns.Add(tv_plan_id_paragraph);.Column_Status_Text
:= tv_plan_status_text;.Column_ID_order :=
tv_plan_id_order;.Column_ID_paragraph := tv_plan_id_paragraph;.Column_IDk_order
:= tv_plan_idk_order;.Column_Status_Order := tv_plan_status_order;.Column_ID_erp_user
:= tv_plan_id_erp_user;.Column_hisdate := tv_plan_hisdate;.Column_summary :=
tv_plan_summary;.Column_note := tv_plan_note;.Column_d_creation :=
tv_plan_d_creation;.Add(OptionsOrder.ActionPreview);.Add(OptionsOrder.ActionNavigate);.Add(nil);.Add(ActionUpdate);;
// Программы
обучения
в
испортеTSqlData_cxGridTableView.Create(tv_Spec)
do:= False;_Name := tv_Spec.Bands.Items[0].Caption;_Select :=
Get_List_Spec_By_Params;:= True;:= 2;[1] := IDK_Level_Spec;Select_Columns
do(tv_Spec_Name, 2);(tv_Spec_Q, 1);(tv_Spec_ID, 0);(tv_Spec_IDK_Level_Spec,
6);(tv_Spec_id_discipline);(tv_Spec_idk_discipline);;_Columns.Add(tv_Spec_ID,
0);_Column := tv_Spec_Name;.Add(tv_Spec_Name);_New_Spec :=
TContainerWrappers.Create;_New_Spec.AddCustomEdit(cxTextEditNew_Spec_Name, True,
False, '');_New_Spec.AddCustomEdit(cxTextEditNew_Spec_Quality, False, False,
'');;
// Вид
обученияTSqlData_cxGridTableView.Create(tv_Kind_Training)
do:= False;_Name := 'Виды обучения';_Select
:= Kind_Training;:= True;:= False;Select_Columns do(tv_Kind_Training_IDK_TRAINING);(tv_Kind_Training_Name);;_Columns.Add(tv_Kind_Training_IDK_TRAINING);_Column
:= tv_Kind_Training_Name;:= tv_Kind_Training_Name;
end;
// ---------------------------------------------
// добавление подразделение-организаторов
обучения
// ---------------------------------------------
if
Get_SqlData_cxGrid(tv_Org_Division) = nil
thenTSqlData_cxGridTableView.Create(tv_Org_Division) do
begin_Name := 'Организаторы обучения';
Editing := False;_Select :=
Get_List_Divisions;:= True;:= CreateVarAr([IDK_Level_Spec]);_Columns.Add(tv_Org_Division_Abbr);_Columns.Add(tv_Org_Division_Name);_Columns.Add(tv_Org_Division_ID);_Columns.Add(tv_Org_Division_ID);_Column
:=
tv_Org_Division_Abbr;.Add(tv_Org_Division_Abbr);.Add(tv_Org_Division_Name);_New_Spec_Div
:=
TContainerWrappers.Create;_New_Spec_Div.AddCustomEdit(DateEditNew_Spec_Div_D_Start,
True, False, '');_New_Spec_Div.AddPopupEdit(PopupEditNew_Spec_Div_Spec, True,
False,_Spec, tv_Spec, tv_Spec_ID, [tv_Spec_Name],
'');_New_Spec_Div.AddPopupEdit(PopupEditNew_Spec_Div_KT, True,
False,_Kind_Training, tv_Kind_Training, tv_Kind_Training_IDK_TRAINING,
[tv_Kind_Training_Name],
'');_New_Spec_Div.AddPopupEdit(PopupEditNew_Spec_Div_SF, True,
False,_Source_Financing, tv_Source_Financing, tv_Source_Financing_ID,
[tv_Source_Financing_Name],
'');_New_Spec_Div.AddPopupEdit(PopupEditNew_Spec_Div_Institute, True,
False,_Org_Division, tv_Org_Division, tv_Org_Division_ID,
[tv_Org_Division_Abbr,
tv_Org_Division_Name],
'');_New_Spec_Div.AddPopupEdit(PopupEditNew_Spec_Div_Div, True,
False,_Org_Division, tv_Org_Division, tv_Org_Division_ID,
[tv_Org_Division_Abbr,
tv_Org_Division_Name],
'');_New_Spec_Div.MakeSynchronize_Similar([PopupEditNew_Spec_Div_Institute,_Spec_Div_Institute],
False);_New_Spec_Div.OnChangeWrapper := DoChanged_cW_Spec_Div;
end;
// ---------------------------------------------
// добавление подразделение-организаторов
обучения
// ---------------------------------------------
if Get_SqlData_cxGrid(TTree_Stat) =
nil thenTSqlData_cxGridTableView.Create(TTree_Stat) do_Name :=
TTree_Stat.Bands.Items[0].Caption;:= False;_Select :=
Get_Stat_Data_By_Period;:= True;:=
2;_Columns.Add(Tree_Stat_Inst);_Columns.Add(Tree_Stat_Spec_Name);_Columns.Add(Tree_Stat_FIO);_Columns.Add(Tree_Stat_EG);_Columns.Add(Tree_Stat_D_Start);_Columns.Add(Tree_Stat_D_End);_Columns.Add(Tree_Stat_Order_Start);_Columns.Add(Tree_Stat_Order_End);_Columns.Add(Tree_Stat_Contract);_Columns.Add(Tree_Stat_Org);_Columns.Add(Tree_Stat_Money);_Columns.Add(Tree_Stat_Money_NDS);_Columns.Add(Tree_Stat_Cert);_Columns.Add(Tree_Stat_Hours_Fact);_Columns.Add(Tree_Stat_Hours_Plan);_Columns.Add(Tree_Stat_Last_Date);_Columns.Add(Tree_Stat_Contract_Main);_Columns.Add(Tree_Stat_Org_Main);_Columns.Add(Tree_Stat_ID_E);_Columns.Add(Tree_Stat_ID_C);_Columns.Add(Tree_Stat_ID_Student);_Columns.Add(Tree_Stat_ID_EG);_Columns.Add(Tree_Stat_ID_E);_Columns.Add(Tree_Stat_ID_Student);_Column
:= Tree_Stat_FIO;.OnExecute := Action_Read_Stat.OnExecute;_Stat :=
TContainerWrappers.Create;_Stat.AddCustomEdit(DateEdit_Stat_Begin, False,
False);_Stat.AddCustomEdit(DateEdit_Stat_End, False,
False);;Get_SqlData_cxGrid(TTree_MC) = nil
thenTSqlData_cxGridTableView.Create(TTree_MC) do:= False;_Name :=
TTree_MC.Bands.Items[0].Caption;_Name := 'рамочный
договор';_Select
:= Get_List_MC;_Update := d_P_CONTRACTS;_Delete :=
GUID_Delete_Main_Contract;_Delete_Exchange := Delete_Main_Contract;:= True;:=
3;_Column := Tree_MC_Org;Select_Columns do(Tree_MC_Org,
2);(Tree_MC_Kind);(Tree_MC_Hisdate);(Tree_MC_Start, 3);(Tree_MC_End,
4);(Tree_MC_Count);(Tree_MC_Order);(Tree_MC_Number);(Tree_MC_Old_Number);(Tree_MC_User);(Tree_MC_ID_Contract,
0);(Tree_MC_ID_CA,
2);(Tree_MC_ID_MT);(Tree_MC_ID_MO);(Tree_MC_ID_Paragraph);(Tree_MC_ID_Order);(Tree_MC_IDK_Order);(Tree_MC_ID_ERP);(Tree_MC_ID_Status);;_Columns.Add(Tree_MC_ID_Contract,
0);.Column_Status_Text := Tree_MC_Order;.Column_identifier :=
Tree_MC_Number;.Column_ID_order := Tree_MC_ID_Order;.Column_ID_paragraph :=
Tree_MC_ID_Paragraph;.Column_IDk_order := Tree_MC_IDK_Order;.Column_ID_erp_user
:= Tree_MC_ID_ERP;.Column_User_Name := Tree_MC_User;.Visible := True;.OnExecute
:=
Action_New_MC.OnExecute;.Add(Action_New_MC);.Add(ActionDelete);.Add(nil);.Add(OptionsOrder.ActionPreview);.Add(OptionsOrder.ActionNavigate);.Add(nil);.Add(ActionUpdate);
{cxPopupEdit_New_Listener_Contract_Organization.Properties.PopupControl
:=_Form_Find_Org;}(Tree_MC_Org.Properties).PopupControl :=
Current_Form_Find_Org;PopupColumnsList.Add(Tree_MC_Org) do:= Tree_MC_ID_CA;:=
Current_Form_Find_Org.Tree_Org_ID_CA;:=
Current_Form_Find_Org.Tree_Org_Name;;_Filter_Org.Properties.PopupControl :=
Current_Form_Find_Org;_Filter_Contracts_Main :=
TContainerWrappers.Create;_Filter_Contracts_Main.AddCustomEdit(DateEdit_Filter_Start,
False, False);_Filter_Contracts_Main.AddCustomEdit(DateEdit_Filter_End, False,
False);_Filter_Contracts_Main.AddPopupEdit(PopupEdit_Filter_Org
, False, False,
Current_Form_Find_Org.cxGrid_Org
, Current_Form_Find_Org.TTree_Org,
Current_Form_Find_Org.Tree_Org_ID_CA
,
[Current_Form_Find_Org.Tree_Org_Name], '');PageControl_Main.ActivePageIndex = 3Filter_MC_Changed(DateEdit_Filter_Start);;
//
---------------------------------------------_New_Contract_Main_Start.Date :=
Date;_New_Contract_Main_End.Date := Date;cw_New_Contract_Main =
nil_New_Contract_Main.Properties.PopupControl := Current_Form_Find_Org;_New_Contract_Main
:=
TContainerWrappers.Create;_New_Contract_Main.AddPopupEdit(PopupEdit_New_Contract_Main
, True, False
, Current_Form_Find_Org.cxGrid_Org
, Current_Form_Find_Org.TTree_Org
,
Current_Form_Find_Org.Tree_Org_ID_CA
,
[Current_Form_Find_Org.Tree_Org_Name],
'');_New_Contract_Main.AddButtonOrderEdit(ButtonEdit_New_Contract_Main
, True, False, '', ['24790']
, [OBE_CHOOSE, OBE_NEW,
OBE_INNAVIGATE, OBE_PREVIEW]
, [nil, nil, nil,
nil]);_New_Contract_Main.AddCustomEdit(TextEdit_New_Contract_Main, False,
False, '');_New_Contract_Main.AddCustomEdit(DateEdit_New_Contract_Main_Start,
True, False,
'');_New_Contract_Main.AddCustomEdit(DateEdit_New_Contract_Main_End, False,
False, '');_New_Contract_Main.ActionEnter := Action_Insert_Contract_Main;;
{ Скрываем
ненужные
страницы
}_Editing.TabVisible := False;_Add.TabVisible := False;
{ Прочитаем
параметры
из
реестра
}_Restore_Params(Curr_Reg_Path, True);
//
*****************************************************************************
//
*****************************************************************************_Plan_Filters
:=
TContainerWrappers.Create;_Plan_Filters.AddCustomEdit(cxSpinEdit_Plan_Filters_Year,
False, False, '');_Plan_Filters.AddPopupEdit(cxPopupEdit_Plan_Filters_Plan, False,
False,_Plan, tv_plan, tv_plan_id_paragraph, [tv_plan_note],
'');_Plan_Filters.AddCustomEdit(cxTextEdit_Plan_Filters_Summary, False, True,
'');_Plan_Filters.AddCustomEdit(cxTextEdit_Plan_Filters_Note,
False, True, '');_Plan_Filters.ActionApply := Plan_Apply;_Plan_Filters.ActionRefuse
:= Plan_Refuse;_Plan_Filters.OnChangeWrapper := DoChanged_cW_Plan_Filters;
{ Устанавливаем
значение
фильтра
}_Plan_Filters.wrappers[cxSpinEdit_Plan_Filters_Year].Value := IntToStr
(YearOf(Date));cxPopupEdit_Plan_Filters_Plan.Tag
<> 0begin_Plan_Filters.wrappers[cxPopupEdit_Plan_Filters_Plan].Value
:=(cxPopupEdit_Plan_Filters_Plan.Tag);_Plan_Filters.wrappers[cxPopupEdit_Plan_Filters_Plan].ValueDisplay
:=(cxPopupEdit_Plan_Filters_Plan.Text);
end;;
{ Добавление организатора (специальности
подразделения)}
procedure
TForm_Event.ButtonEdit_Import_Spec_DivClick(Sender: TObject);: TSForm;:
Integer;// 1:= CreateSForm(self, 'fNew_Spec_Div',
TabSheet_New_Spec_Div.Caption,_Path + TabSheet_New_Spec_Div.Caption,
Panel_New_Spec_Div, tdb_Apply);_New_Spec_Div.ClearWrappers;_New_Spec_Div.wrappers[
DateEditNew_Spec_Div_D_Start].Value
:=_Import.wrappers[DateEdit_Import_Start].Value;_New_Spec_Div.wrappers[PopupEditNew_Spec_Div_Spec].Value
:=_Import.wrappers[PopupEdit_Import_Spec].Value;_New_Spec_Div.wrappers[PopupEditNew_Spec_Div_Spec].ValueDisplay
:=_Import.wrappers[PopupEdit_Import_Spec].ValueDisplay;
// Институтid_d_import
<> ''_SqlData_cxGrid(tv_Org_Division).Read_Data_First;:=
FindGridRecordIndex(tv_Org_Division, [tv_Org_Division_ID]
, CreateVarAr([id_d_import]));i
>= 0_New_Spec_Div.wrappers[PopupEditNew_Spec_Div_Institute].Value
:=(tv_Org_Division.DataController.Values[i,
tv_Org_Division_ID.Index]);_New_Spec_Div.wrappers[PopupEditNew_Spec_Div_Institute].ValueDisplay
:=(tv_Org_Division.DataController.Values[i,
tv_Org_Division_Abbr.Index]);_New_Spec_Div.wrappers[PopupEditNew_Spec_Div_Div].Value
:=_New_Spec_Div.wrappers[PopupEditNew_Spec_Div_Institute].Value;_New_Spec_Div.wrappers[PopupEditNew_Spec_Div_Div].ValueDisplay
:=_New_Spec_Div.wrappers[PopupEditNew_Spec_Div_Institute].ValueDisplay;;Get_SqlData_cxGrid(tv_Source_Financing).Parameters[1]
<> id_d_import_SqlData_cxGrid(tv_Source_Financing).Parameters[1] :=
id_d_import;_SqlData_cxGrid(tv_Source_Financing).Read_Data;tv_Source_Financing.DataController.RecordCount
= 1_New_Spec_Div.wrappers[PopupEditNew_Spec_Div_SF].Value
:=(tv_Source_Financing.DataController.Values[0,
tv_Source_Financing_ID.Index]);_New_Spec_Div.wrappers[PopupEditNew_Spec_Div_SF].ValueDisplay
:=(tv_Source_Financing.DataController.Values[0,
tv_Source_Financing_Name.Index]);;;;
// Кафедраid_d_kaf
<> ''_SqlData_cxGrid(tv_Org_Division).Read_Data_First;:=
FindGridRecordIndex(tv_Org_Division, [tv_Org_Division_ID]
, CreateVarAr([id_d_kaf]));i >=
0_New_Spec_Div.wrappers[PopupEditNew_Spec_Div_Div].Value
:=(tv_Org_Division.DataController.Values[i,
tv_Org_Division_ID.Index]);_New_Spec_Div.wrappers[PopupEditNew_Spec_Div_Div].ValueDisplay
:=(tv_Org_Division.DataController.Values[i,
tv_Org_Division_Name.Index]);;;.Position := poScreenCenter;mf.ShowModal = mrok
then//
2Get_SqlData_cxGrid(tv_spec_div_popup).Insert_New(([VarToStr(cW_New_Spec_Div.Wrappers[PopupEditNew_Spec_Div_Spec].Value)
,
VarToStr(cW_New_Spec_Div.Wrappers[PopupEditNew_Spec_Div_Div].Value)
,
VarToStr(cW_New_Spec_Div.Wrappers[PopupEditNew_Spec_Div_KT].Value)
,
VarToStr(cW_New_Spec_Div.Wrappers[DateEditNew_Spec_Div_D_Start].Value)
,
VarToStr(cW_New_Spec_Div.Wrappers[PopupEditNew_Spec_Div_Institute].Value)
, '70508' // уровень
образования
,
VarToStr(cW_New_Spec_Div.Wrappers[PopupEditNew_Spec_Div_SF].Value)]))// 3:=
tv_spec_div_popup.DataController.Values
[tv_spec_div_popup.DataController.FocusedRecordIndex,
tv_spec_div_popup_id_spec_div.Index];_SqlData_cxGrid(tv_spec_div_popup).Read_Data;:=
FindGridRecordIndex(tv_spec_div_popup, [tv_spec_div_popup_id_spec_div]
, CreateVarAr([IntToStr(i)]));i
>= 0_Import.wrappers[PopupEdit_Import_Spec_Div].Value := VarToStr
(tv_spec_div_popup.DataController.Values[i,
tv_spec_div_popup_id_spec_div.Index]);_Import.wrappers[PopupEdit_Import_Spec_Div].ValueDisplay
:= VarToStr
(tv_spec_div_popup.DataController.Values[i,
tv_spec_div_popup_institute.Index])
+ ', ' +
VarToStr((tv_spec_div_popup.DataController.Values[i,
tv_spec_div_popup_name_div.Index]))
+ ', ' + VarToStr((tv_spec_div_popup.DataController.Values[i,
tv_spec_div_popup_name_spec.Index]))
+ ', ' +
VarToStr((tv_spec_div_popup.DataController.Values[i,
tv_spec_div_popup_kind_training.Index]));;; // 3; // 2// 1assigned(mf)
then(mf);(GetParentForm(ButtonEdit_Import_Spec).Handle);Get_SqlData_cxGrid(tv_Source_Financing).Parameters[1]
<> ''_SqlData_cxGrid(tv_Source_Financing).Parameters[1] :=
'';_SqlData_cxGrid(tv_Source_Financing).IsFirstRead := True;;; // 1;
{ Добавление
УМК}TForm_Event.ButtonEdit_Import_UMKClick(Sender:
TObject);: TSForm;: Integer;// 1:= CreateSForm(self, 'fNew_UMK',
TabSheet_New_UMK.Caption,_Path + TabSheet_New_UMK.Caption, Panel_New_UMK,
tdb_Apply);.Position :=
poScreenCenter;_New_UMK.Wrappers[SpinEdit_New_UMK_Hours].Value :=
Import_Hours;_New_UMK.Wrappers[SpinEdit_New_UMK_Hours_SR].Value :=
Import_Hours_SR;mf.ShowModal = mrok then//
2MSystemServices.ExchangeData(Create_UMK_By_ID_SD
,CreateVarAr([VarToStr(cW_Import.Wrappers[PopupEdit_Import_Spec_Div].Value)
,
VarToStr(cw_New_UMK.Wrappers[SpinEdit_New_UMK_Hours].Value)
,
VarToStr(cw_New_UMK.Wrappers[SpinEdit_New_UMK_Hours_SR].Value)])
, 'Не смогли добавить методический комплекс.')
then// 3_TableView.Read_Data;:=
FindGridRecordIndex(tv_com_spec,
[tv_com_spec_id_spec_div],([VarToStr(cW_Import.Wrappers[PopupEdit_Import_Spec_Div].Value)]));i
>= 0 then_Import.wrappers[PopupEdit_Import_UMK].Value := VarToStr
(tv_com_spec.DataController.Values[i,
tv_com_spec_id_met_complex.Index]);_Import.wrappers[PopupEdit_Import_UMK].ValueDisplay
:= VarToStr
(tv_com_spec.DataController.Values[i,
tv_com_spec_hours.Index])
+ ', ' +
VarToStr(VarToStr(tv_com_spec.DataController.Values[i, tv_com_spec_sam.Index])
+ ', ' +
VarToStr(tv_com_spec.DataController.Values[i, tv_com_spec_name_spec.Index])
+ ', ' +
tv_com_spec.DataController.Values[i, tv_com_spec_name_div.Index])
+ ', ' +
VarToStr(tv_com_spec.DataController.Values[i,
tv_com_spec_kind_training.Index]);; // 3; // 2// 1assigned(mf)
then(mf);(GetParentForm(ButtonEdit_Import_Spec).Handle);
end; // 1;
{ Выбрали журнал - узнаем рег.номер}
procedure TForm_Event.ButtonEdit_New_CertPropertiesEditValueChanged(:
TObject);i: integer; data: olevariant;((Sender = ButtonEdit_New_Cert) or
(Sender = PopupEdit_New_Cert_Kind_Doc))(Cont_Make_Cert <>
nil)(VarToStr(Cont_Make_Cert.Wrappers[ButtonEdit_New_Cert].Value) <>
'')begin:= MSystemServices.SelectData(Get_Reg_Number_By_ID_Paragraph
,
CreateVarAr([VarToStr(Cont_Make_Cert.Wrappers[ButtonEdit_New_Cert].Value)
,
VarToStr(Cont_Make_Cert.Wrappers[PopupEdit_New_Cert_Kind_Doc].Value)])
, i, 'Не смогли узнать регистрационный номер в
журнале.');
if
VarIsArray(data)VarToStr(data[0][0]) =
''Cont_Make_Cert.Wrappers[SpinEdit_New_Cert_Reg].Value :=
1Cont_Make_Cert.Wrappers[SpinEdit_New_Cert_Reg].Value := VarToStr(data[0][0] +
1);VarToStr(data[0][1]) = ''Cont_Make_Cert.Wrappers[SpinEdit_New_Cert_Number].Value
:= 1Cont_Make_Cert.Wrappers[SpinEdit_New_Cert_Number].Value :=
VarToStr(data[0][1] +
1);;;;TForm_Event.cxButtonEdit_PC_Create_DirectionClick(Sender:
TObject);_Insert_New_DirectionExecute(self);;TForm_Event._New_Listener_Contract_D_EndPropertiesEditValueChanged
(Sender:
TObject);_New_Listener.wrappers[cxDateEdit_New_Listener_D_End].Value
:=_New_Listener.wrappers[cxDateEdit_New_Listener_Contract_D_End].Value;;TForm_Event._New_Listener_Contract_D_StartPropertiesEditValueChanged
(Sender:
TObject);_New_Listener.wrappers[cxDateEdit_New_Listener_D_Start].Value
:=_New_Listener.wrappers[cxDateEdit_New_Listener_Contract_D_Start].Value;;TForm_Event.cxDateEdit_New_Listener_D_EndPropertiesEditValueChanged
(Sender: TObject);_New_Listener.wrappers[cxDateEdit_New_Listener_Contract_D_End].Value
:=_New_Listener.wrappers[cxDateEdit_New_Listener_D_End].Value;;TForm_Event.cxDateEdit_New_Listener_D_StartPropertiesEditValueChanged
(Sender:
TObject);_New_Listener.wrappers[cxDateEdit_New_Listener_Contract_D_Start].Value
:=_New_Listener.wrappers[cxDateEdit_New_Listener_D_Start].Value;;TForm_Event.cxPageControl_StudentPageChanging(Sender:
TObject;: TcxTabSheet; var AllowChange: Boolean);NewPage = cxTabSheet_Orders
then_tv_ordersExecute(self);NewPage = cxTabSheet_Anketa
then_AnketaExecute(self);NewPage = cxTabSheet_Contracts
then_Contract_ParamsExecute(self);NewPage =
cxTabSheet_StagesGet_SqlData_cxGrid(TTree_Nach).Read_Data_First;;TForm_Event.cxPopupEdit_KBA_EndPropertiesInitPopup(Sender:
TObject);_tv_kba_endExecute(self);;TForm_Event.cxPopupEdit_New_DirectionPropertiesInitPopup
(Sender:
TObject);_tv_kind_directionExecute(self);;TForm_Event._New_Listener_Contract_Source_FinansingPropertiesInitPopup
(Sender:
TObject);_tv_source_finansingExecute(self);;TForm_Event._New_Listener_Ed_GroupPropertiesEditValueChanged(Sender:
TObject);VarToStr(cW_New_Listener.wrappers[cxPopupEdit_New_Listener_Ed_Group]
.Value) <> '' then//
1_New_Listener.wrappers[cxDateEdit_New_Listener_D_Start].Value := VarToStr
(tv_r_c_groups.DataController.Values
[tv_r_c_groups.DataController.FocusedRecordIndex,_r_c_groups_d_start.Index]);_New_Listener.wrappers[cxDateEdit_New_Listener_D_End].Value
:= VarToStr
(tv_r_c_groups.DataController.Values
[tv_r_c_groups.DataController.FocusedRecordIndex,_r_c_groups_d_end.Index]);_New_Listener.wrappers[cxDateEdit_New_Listener_Contract_D_Start].Value
:=_New_Listener.wrappers[cxDateEdit_New_Listener_D_Start].Value;_New_Listener.wrappers[cxDateEdit_New_Listener_Contract_D_End].Value
:=_New_Listener.wrappers[cxDateEdit_New_Listener_D_End].Value;// 1//
2_New_Listener.wrappers[cxDateEdit_New_Listener_D_Start].Value :=
'';_New_Listener.wrappers[cxDateEdit_New_Listener_D_End].Value := '';; //
2;TForm_Event.cxPopupEdit_New_Listener_Ed_GroupPropertiesInitPopup
(Sender: TObject);_tv_r_c_groupsExecute(self);;TForm_Event._New_Listener_Kind_Basis_ActionPropertiesInitPopup
(Sender:
TObject);_tv_kba_startExecute(self);;TForm_Event.cxPopupEdit_New_Listener_Kind_OrderPropertiesInitPopup
(Sender:
TObject);_tv_kind_orderExecute(self);;TForm_Event.cxPopupEdit_New_Listener_OrderPropertiesEditValueChanged
(Sender: TObject);not
cW_New_Listener.wrappers[cxPopupEdit_New_Listener_Order].IsClear then//
1_New_Listener.wrappers[cxDateEdit_New_Listener_Contract_D_Start].Value
:=(tv_contracts.DataController.Values
[tv_contracts.DataController.FocusedRecordIndex,_contracts_d_start.Index]);_New_Listener.wrappers[cxDateEdit_New_Listener_Contract_D_End].Value
:=(tv_contracts.DataController.Values
[tv_contracts.DataController.FocusedRecordIndex,_contracts_d_end.Index]);;
// 1;TForm_Event.cxPopupEdit_New_Listener_OrderPropertiesInitPopup
(Sender:
TObject);_tv_contractsExecute(self);;TForm_Event.cxPopupEdit_New_R_C_Group_Ed_GroupPropertiesInitPopup
(Sender:
TObject);_tv_ed_groupExecute(self);;TForm_Event.cxPopupEdit_New_R_C_Group_Met_ComplexPropertiesInitPopup
(Sender:
TObject);_tv_com_specExecute(Sender);;TForm_Event.cxPopupEdit_New_R_C_Plan_Spec_DivPropertiesInitPopup
(Sender:
TObject);_tv_spec_div_popupExecute(self);;TForm_Event.cxPopupEdit_PC_Kind_DirectionPropertiesInitPopup
(Sender:
TObject);_tv_kind_directionExecute(self);;TForm_Event.cxPopupEdit_PC_PostPropertiesInitPopup(Sender:
TObject);_tv_postsExecute(self);;TForm_Event.cxPopupEdit_Plan_Filters_PlanPropertiesInitPopup
(Sender: TObject);_tv_planExecute(self);;TForm_Event.DoChanged_cW_New_R_C_Plan(AWrapper:
TCustomEditWrapper);_OkButton(Panel_New_R_C_Plan,
cW_New_R_C_Plan.IsNotEmptyMandatory);;TForm_Event.DoChanged_cW_New_R_C_Group(AWrapper:
TCustomEditWrapper);_OkButton(Panel_New_R_C_Group,_New_R_C_Group.IsNotEmptyMandatory);
end;
{ Заполнение полей ввода при импорте из файла}
procedure
TForm_Event.Action_After_Show_New_AnketaExecute(Sender:
TObject);Form_Anketa_For_New docurr_sex = '1'SEX.ItemIndex := 0SEX.ItemIndex :=
1;.Text := curr_surname;.Text := curr_name;.Text := curr_patronymic;_.Text :=
curr_phone;_.Text := curr_email;_OF_BIRTH.Date :=
StrToDate(curr_birthday);_D_START.Date :=
StrToDate(curr_birthday);(DATE_OF_BIRTH);ID_E <>
''Form_Anketa_For_New.ModalResult := mryes;
end;;
{ Выставление новых начислений}
procedure
TForm_Event.Action_Create_NachExecute(Sender: TObject);new_form: TSForm;//
1_form := CreateSForm(self, TabSheet_New_Nach.Name + '1'
, TabSheet_New_Nach.Caption
, Add_Path +
TabSheet_New_Nach.Caption, Panel_New_Nach, tdb_Apply);
{ Устанавливаем
значение
по
умолчанию
}_form.Position := poScreenCenter;_form.PanelButtons.auto_cxOkButton.Action :=
Cont_New_Nach.ActionEnter;_form.ShowModal;// 1assigned(new_form)FreeAndNil(new_form);;
// 1
end;
{ Выставление новых начислений по выделенным
договорам}
procedure
TForm_Event.Action_Create_Nach_AllExecute(Sender: TObject);new_form: TSForm;//
1_form := CreateSForm(self, TabSheet_New_Nach.Name + '1'
, TabSheet_Create_Nach_All.Caption
, Add_Path +
TabSheet_Create_Nach_All.Caption, Panel_Create_Nach_All, tdb_Apply);
{ Устанавливаем
значение
по
умолчанию
}_form.Position := poScreenCenter;_form.PanelButtons.auto_cxOkButton.Action :=
Cont_New_Nach_All.ActionEnter;_form.ShowModal;// 1assigned(new_form)FreeAndNil(new_form);;
// 1
end;
{ Выставление новых начислений по выделенным
участникам }
procedure
TForm_Event.Action_Go_Nach_AllExecute(Sender: TObject);L: TIntegerList; i:
integer;Get_SqlData_cxGrid(tv_listeners), Cont_New_Nach_All do(L);.StartSequenceActions(False,
True);i := 0 to L.Count - 1 do.ExchangeData(Create_New_Nach
,
CreateVarAr([VarToStr(GridTableView.DataController.[L.Items[i],
tv_listeners_id_contract.Index])
,
VarToStr(Wrappers[DateEdit_Create_Nach_All].Value)
, VarToStr(Wrappers[ButtonEdit_Create_Nach_All].Value)]));.EndSequenceActions;_Data;.ShowVNDialog(vnd_Information,
'Результат
работы',
'Начисления
сформированы.');;;TForm_Event.Action_Add_ContractExecute(Sender:
TObject);= 'Участники';:
TSForm;_o, id_p, def_Ann, def_Basis, def_Note, def_Ass, NewContextIndex,
IDk_List,_List_Name, ko_ID_Metaterm, kind_order, def_Ident,
def_IdenDate,_Period_Nubbering, id_NewSeries, NewSeries: WideString;:
TStringList;: Boolean;: TcxDataController;: Integer;:= False;// 1:=
CreateSForm(self, 'fNew_Listeners', 'Договор',
Add_Path + Name,_New_Listener,
tdb_Apply);(False);_New_Listener.wrappers[cxPopupEdit_New_Listener_Contract_Source_Finansing]
.Value :=
VarToStr(tv_r_c_plan.DataController.Values
[tv_r_c_plan.DataController.FocusedRecordIndex,_r_c_plan_id_source.Index]);_New_Listener.wrappers[cxPopupEdit_New_Listener_Contract_Source_Finansing]
.ValueDisplay :=
VarToStr(tv_r_c_plan.DataController.Values
[tv_r_c_plan.DataController.FocusedRecordIndex,_r_c_plan_source.Index]);:=
tv_listeners.DataController;:=
tv_listeners.DataController.FocusedRecordIndex;_New_Listener.wrappers[cxPopupEdit_New_Listener_FIO].Value
:= VarToStr
(DC.Values[FRI,
tv_listeners_id_e.Index]);_New_Listener.wrappers[cxPopupEdit_New_Listener_FIO].ValueDisplay
:=(DC.Values[FRI,
tv_listeners_fio.Index]);_New_Listener.wrappers[cxPopupEdit_New_Listener_Ed_Group].Value
:=(DC.Values[FRI,
tv_listeners_id_ed_group.Index]);_New_Listener.wrappers[cxPopupEdit_New_Listener_Ed_Group].ValueDisplay
:=(DC.Values[FRI, tv_listeners_ed_group.Index]);_New_Listener.wrappers[cxDateEdit_New_Listener_D_Start].Value
:= VarToStr
(DC.Values[FRI,
tv_listeners_d_start.Index]);_New_Listener.wrappers[cxDateEdit_New_Listener_D_End].Value
:= VarToStr
(DC.Values[FRI,
tv_listeners_d_end_plan.Index]);_New_Listener.wrappers[cxPopupEdit_New_Listener_Kind_Basis_Action]
.Value :=
VarToStr(DC.Values[FRI,_listeners_idkba_transfer.Index]);_New_Listener.wrappers[cxPopupEdit_New_Listener_Kind_Basis_Action]
.ValueDisplay :=
VarToStr(DC.Values[FRI,_listeners_kind_basis_action.Index]);_New_Listener.wrappers[cxButtonEdit_New_Listener_Order_Start].Value
:=(DC.Values[FRI,
tv_listeners_id_paragraph_start.Index]);_New_Listener.wrappers[cxButtonEdit_New_Listener_Order_Start]
.ValueDisplay := VarToStr(DC.Values[FRI,_listeners_status_text_order_start.Index]);_New_Listener.wrappers[cxCurrencyEdit_New_Listener_Contract_Money]
.Value :=
VarToStr(tv_r_c_plan.DataController.GetValue
(tv_r_c_plan.DataController.FocusedRecordIndex,_r_c_plan_money.Index));_New_Listener.wrappers[cxCurrencyEdit_New_Listener_Contract_Money]
.ValueDisplay :=
tv_r_c_plan.DataController.GetDisplayText
(tv_r_c_plan.DataController.FocusedRecordIndex,
tv_r_c_plan_money.Index);_New_Listener.OnChangeWrapper(nil);mf.ShowModal = mrok
then// 2(VarToStr(cW_New_Listener.wrappers[cxPopupEdit_New_Listener_Kind_Order]
.Value) <> '') and
(cxPopupEdit_New_Listener_Order.Enabled) and
(VarToStr(cW_New_Listener.wrappers[cxPopupEdit_New_Listener_Order]
.Value) = '') then// 3_order :=
VarToStr(cW_New_Listener.wrappers
[cxPopupEdit_New_Listener_Kind_Order].Value);:=
TStringList.Create;.Add(kind_order);_o := vnListAgent.LA_CreateList(ks,
def_Ann, def_Basis, def_Note,_Ass, NewContextIndex, IDk_List, k_List_Name,
ko_ID_Metaterm, '',);id_o = EmptyWideStr then// 4.Free;;; // 4_p :=
vnListAgent.LA_CreateList(ks, def_Ann, def_Basis, def_Note,_Ass,
NewContextIndex, IDk_List, k_List_Name, ko_ID_Metaterm,_o, False);.Free;id_p =
EmptyWideStr then;
// отправить
на
подпись..LA_Send_Signature(id_o,
'', datetostr(now), True);.LA_SetIdentifier(id_o, def_Ident,
ID_Period_Nubbering,_NewSeries, NewSeries, def_IdenDate, True, False,
'Регистрация
договора');:=
MSystemServices.ExchangeData(Add_Contract,([cW_New_Listener.wrappers[cxPopupEdit_New_Listener_FIO]
.Value, cW_New_Listener.wrappers[_New_Listener_Contract_Organization].Value,_New_Listener.wrappers[cxDateEdit_New_Listener_D_Start].Value,_New_Listener.wrappers[cxDateEdit_New_Listener_D_End].Value,_p,
cW_New_Listener.wrappers[_New_Listener_Contract_Source_Finansing].Value,(tv_r_c_plan.DataController.Values
[tv_r_c_plan.DataController.FocusedRecordIndex,_r_c_plan_id_spec_div.Index]),_New_Listener.wrappers[cxPopupEdit_New_Listener_Ed_Group].Value,_New_Listener.wrappers[cxPopupEdit_New_Listener_Kind_Basis_Action]
.Value, cW_New_Listener.wrappers
[cxButtonEdit_New_Listener_Order_Start].Value,(cxCurrencyEdit_New_Listener_Contract_Money.EditValue),(DC.Values[FRI,
tv_listeners_id_student.Index]),_New_Listener.wrappers[cxTextEdit_New_Listener_Basis].Value,_New_Listener.wrappers[cxTextEdit_New_Listener_FIO].Value,_New_Listener.wrappers[cxTextEdit_New_Listener_FIO_R].Value,_New_Listener.wrappers[cxPopupEdit_New_Listener_Post].Value]));;
// 3ok then//
6_SqlData_cxGrid(tv_listeners).Read_Data;cxPageControl_Student.ActivePage =
cxTabSheet_Contracts then_Contract_ParamsExecute(self);; // 6; // 2//
1assigned(mf) then// 7(mf);(True);
end; // 7; // 1;
procedure
TForm_Event.Action_Delete_CertificateExecute(Sender: TObject);L: tintegerlist;
i: integer;HandymanFunctions.ShowVNDialog(vnd_Confirmation, 'Подтверждение
удаления'
, 'Удалить
выделенные
удостоверения
('
+
IntToStr(tv_listeners.Controller.SelectedRowCount) + ')?')with
Get_SqlData_cxGrid(tv_listeners), GridTableView.DataController
do(L);.StartSequenceActions(False, True);i := 0 to L.Count - 1
doMSystemServices.ExchangeData(Delete_Certificate
,
CreateVarAr([VarToStr(Values[L.Items[i], tv_listeners_ID_Certificate.Index])])
, 'Не
смогли
удалить
сертификат
'
+ VarToStr(Values[L.Items[i],
tv_listeners_certificate.Index]))[L.Items[i], tv_listeners_certificate.Index]
:= null;[L.Items[i], tv_listeners_Cert_Date.Index] := null;[L.Items[i],
tv_listeners_Reg_Number.Index] := null;[L.Items[i],
tv_listeners_Kind_Cert.Index] := null;[L.Items[i],
tv_listeners_ID_Kind_Cert.Index] := null;[L.Items[i],
tv_listeners_ID_Certificate.Index] := null;[L.Items[i],
tv_listeners_ID_Doc_Cert.Index] := null;[L.Items[i], tv_listeners_ID_Reg.Index]
:= null;[L.Items[i], tv_listeners_hours.Index] :=
null;;.EndSequenceActions;;;TForm_Event.Action_Delete_ContractExecute(Sender:
TObject);_C: string;: TcxDataController;: Boolean;: TIntegerList;:
Integer;_SqlData_cxGrid(tv_listeners).GetSelectedRecordIndexList(List);(List.Count
> 0) and HandymanFunctions.ShowVNDialog(vnd_Confirmation,
'Удаление договоров',
'Вы действительно хотите удалить договора у
выбранных студентов (' +
IntToStr(List.Count) + ')?') then//
1.StartSequenceActions(False, True);:= tv_listeners.DataController;i := 0 to
(List.Count - 1) do// 2_C := VarToStr(DC.Values[List.Items[i],_listeners_id_contract.Index]);:=
MSystemServices.ExchangeData(Delete_Contract, VarArrayOf([ID_C]));ok then//
3.Values[List.Items[i], tv_listeners_id_contract.Index] :=
null;.Values[List.Items[i],_listeners_id_paragraph_contract.Index] :=
null;.Values[List.Items[i], tv_listeners_org.Index] :=
null;.Values[List.Items[i], tv_listeners_money.Index] :=
null;.Values[List.Items[i], tv_listeners_NDS.Index] :=
null;.Values[List.Items[i],_listeners_status_text_contract.Index] := null;; //
3; // 2.EndSequenceActions;ok then_Contract_Params.ClearWrappers;; // 1;
{ Удалить
выставленные
начисления}TForm_Event.Action_Delete_NachExecute(Sender:
TObject);i: integer; L:
TIntegerlist;HandymanFunctions.ShowVNDialog(vnd_Confirmation, 'Удаление
начислений'
, 'Удалить выставленные начисления у выделенных
договоров?')
then with
Get_SqlData_cxGrid(tv_listeners), GridTableView.DataController
do(L);.StartSequenceActions(False, True);i := 0 to L.Count - 1
doMSystemServices.ExchangeData(Delete_Nach_By_ID_Dog
,
CreateVarAr([VarToStr(Values[L.Items[i], tv_listeners_id_contract.Index])])
, 'Не смогли удалить начисления')begin
Values[L.Items[i],
tv_listeners_money.Index] := null;[L.Items[i], tv_listeners_NDS.Index] :=
null;;.EndSequenceActions;cxPageControl_Student.ActivePage =
cxTabSheet_StagesGet_SqlData_cxGrid(TTree_Nach).Read_DataGet_SqlData_cxGrid(TTree_Nach).IsFirstRead
:= True;;;
{ Удалить
окончание}TForm_Event.Action_Delete_Order_EndExecute(Sender:
TObject);: TIntegerList;: Integer;Get_SqlData_cxGrid(tv_listeners)
do(L);HandymanFunctions.ShowVNDialog(vnd_Confirmation, 'Удаление
приказа
об
окончании'
, 'Удалить приказы об окончании у выделенных
слушателей ' + '(' + IntToStr(L.Count) + ')' +'?')
then with
tv_listeners.DataController do.StartSequenceActions(False, True);i := 0 to
L.Count - 1 doMSystemServices.DeleteData(d_P_ORDERS_STUDENTS
, CreateVarAr(['0', '1'])
,
CreateVarAr([VarToStr(Values[L.Items[i], tv_listeners_id_student.Index])
, VarToStr(Values[L.Items[i],
tv_listeners_ID_Paragraph_End.Index])])
, 'Не смогли удалить приказ об окончании.')
then begin[L.Items[i],
tv_listeners_ID_Paragraph_End.Index] := null;[L.Items[i],
tv_listeners_ID_Status_End.Index] := null;[L.Items[i],
tv_listeners_ID_ERP_End.Index] := null;[L.Items[i],
tv_listeners_status_text_order_end.Index] :=
null;_SqlData_cxGrid(tv_listeners).IsFirstRead :=
True;;.EndSequenceActions;cxPageControl_Student.ActivePage =
cxTabSheet_OrdersFill_tv_ordersExecute(self);;;;TForm_Event.Action_End_EducationExecute(Sender:
TObject);= 'Окончание обучения';:
TSForm;: Integer;: TIntegerList;: Integer;// 1:=
-1;_SqlData_cxGrid(tv_listeners).GetSelectedRecordIndexList(List);:=
CreateSForm(self, 'fEnd_Education', Name, Add_Path + Name,_End_Education,
tdb_Apply);_End_Education.wrappers[cxDateEdit_End_Education].Value := VarToStr
(tv_listeners.DataController.Values
[tv_listeners.DataController.FocusedRecordIndex,_listeners_d_end_plan.Index]);_End_Education.OnChangeWrapper(nil);mf.ShowModal
= mrok then// 2(List.Count > 0) and HandymanFunctions.ShowVNDialog(vnd_Confirmation,
'Окончание обучения',
'Вы действительно хотите закончить обучение
выбранных студентов (' +
IntToStr(List.Count) + ')?') then//
3.StartSequenceActions(False, True);i := 0 to (List.Count - 1) do// 4:=
MSystemServices.InsertData(d_P_ORDERS_STUDENTS,([0, 1, 2,
3]),([tv_listeners.DataController.Values[List.Items[i],_listeners_id_student.Index],_End_Education.wrappers[cxButtonEdit_End_Education].Value,_End_Education.wrappers[cxPopupEdit_KBA_End].Value,_End_Education.wrappers[cxDateEdit_End_Education].Value]),
'Окончание обучения.');id >= 0 then
begin //
5_listeners.DataController.Values[List.Items[i],_listeners_d_end.Index] :=
VarToStr
(cW_End_Education.wrappers[cxPopupEdit_KBA_End].Value);_listeners.DataController.Values[List.Items[i],_listeners_status_text_order_end.Index]
:= VarToStr
(cW_End_Education.wrappers[cxButtonEdit_End_Education]
.ValueDisplay);; // 5; //
4.EndSequenceActions;id >= 0 then(cW_End_Education.wrappers
[cxButtonEdit_End_Education]).IsEmpty
:= False;; // 3; // 2// 1assigned(mf) then(mf);; // 1;
{ Выдать
сертификат}TForm_Event.Action_Go_New_CertExecute(Sender:
TObject);i, j: integer;Get_SqlData_cxGrid(tv_listeners),
GridTableView.Controller, Cont_Make_Cert do:= 0;i := 0 to SelectedRowCount - 1
doMSystemServices.ExchangeData(Make_New_Cert_By_Params
,
CreateVarAr([VarToStr(SelectedRows[i].Values[tv_listeners_id_student.Index])
,VarToStr(Wrappers[ButtonEdit_New_Cert].Value)
,VarToStr(Wrappers[SpinEdit_New_Cert_Reg].Value)
,VarToStr(Wrappers[PopupEdit_New_Cert_Kind_Doc].Value)
,VarToStr(Wrappers[SpinEdit_New_Cert_Number].Value)
,VarToStr(Wrappers[SpinEdit_New_Cert_Hours].Value)])
, 'Не смогли выдать удостоверение.')
then:= j + 1;
{Values[L.Items[i],
tv_listeners_Kind_Cert.Index]
:=(Wrappers[PopupEdit_New_Cert_Kind_Doc].ValueDisplay);[L.Items[i],
tv_listeners_ID_Kind_Cert.Index]
:=(Wrappers[PopupEdit_New_Cert_Kind_Doc].Value);[L.Items[i],
tv_listeners_Reg_Number.Index]
:=(Wrappers[SpinEdit_New_Cert_Reg].Value);[L.Items[i],
tv_listeners_certificate.Index] :=(Wrappers[SpinEdit_New_Cert_Number].Value);[L.Items[i],
tv_listeners_hours.Index]
:=(Wrappers[SpinEdit_New_Cert_Hours].Value);}[SpinEdit_New_Cert_Reg].Value :=
Wrappers[SpinEdit_New_Cert_Reg].Value + 1;[SpinEdit_New_Cert_Number].Value :=
Wrappers[SpinEdit_New_Cert_Number].Value + 1;
end;
// А что толку-то? Все равно id сертификатов
неизвестны - придется перечитывать!
Read_Data;.ShowVNDialog(vnd_Information,
'Результат
работы'
, 'Выдано удостоверений: ' + IntToStr(j));;;
{ Установить новую стоимость выделенных
договоров}
procedure TForm_Event.Action_Go_New_MoneyExecute(Sender:
TObject);i, j: integer; L:
TIntegerlist;_New_Money.ChangesAcceptWrappers;Get_SqlData_cxGrid(tv_listeners),
GridTableView.DataController do(L);.StartSequenceActions(False,
True);_New_Money.Properties.EditFormat :=
'0.00';_New_Money.Properties.UseThousandSeparator := False;:= 0;i := 0 to
L.Count - 1 doMSystemServices.ExchangeData(Update_PC
, VarArrayOf(['4'
,
VarToStr(tv_listeners.DataController.Values
[L.Items[i],
tv_listeners_id_contract.Index])
,''
,''
,''
,''
,''
,//VarToStr(cw_New_Money.Wrappers[CurrencyEdit_New_Money].Value)
//(CurrencyEdit_New_Money.EditValue)
,''
,''
,''
,''
,''
,''
,''
,''])
, 'Не смогли изменить стоимость договора.')
then j := j +
1;_New_Money.Properties.EditFormat := ',0.00';_New_Money.Properties.UseThousandSeparator
:= True;.EndSequenceActions;j >
0HandymanFunctions.ShowVNDialog(vnd_Information, 'Результат
операции'
, 'Стоимость изменена в ' + IntToStr(j) +
'договорах.')
else
HandymanFunctions.ShowVNDialog(vnd_Error, 'Результат
операции'
, 'Не смогли изменить стоимость договоров');
end;;
{ Сформировать
начисления}TForm_Event.Action_Go_New_NachExecute(Sender:
TObject);_New_Nach.ChangesAcceptWrappers;Cont_New_Nach,
Get_SqlData_cxGrid(tv_listeners), GridTableView.DataController doMSystemServices.ExchangeData(Create_New_Nach
,
CreateVarAr([VarToStr(Values[LastChoiceIndex, tv_listeners_id_contract.Index])
,
VarToStr(Wrappers[DateEdit_New_Nach].Value)
,
VarToStr(Wrappers[ButtonEdit_New_Nach].Value)]))_SqlData_cxGrid(TTree_Nach).Read_Data;(Panel_New_Nach).ModalResult
:= mrok;
end;;
{ Уcтановить рамочный договор }
procedure
TForm_Event.Action_Go_Set_Main_ContractExecute(Sender: TObject);:
TIntegerList;: Integer;Get_SqlData_cxGrid(tv_listeners),
GridTableView.DataController do(L);.StartSequenceActions(False, True);i := 0 to
L.Count - 1 doMSystemServices.UpdateData(d_P_CONTRACTS,
CreateVarAr(['8']),([VarToStr(cW_Set_Main_Contract.wrappers
[PopupEdit_Set_Main_Contract].Value)]),
CreateVarAr(['0']),([VarToStr(Values[L.Items[i], tv_listeners_id_contract.Index])]))
then[L.Items[i], tv_listeners_ID_Contract_Main.Index] := VarToStr
(cW_Set_Main_Contract.wrappers[PopupEdit_Set_Main_Contract].Value);[L.Items[i],
tv_listeners_Main_Contract.Index] := VarToStr
(cW_Set_Main_Contract.wrappers[PopupEdit_Set_Main_Contract]
.ValueDisplay);[L.Items[i],
tv_listeners_Org_Contract_Main.Index] := VarToStr
(TTree_Main_Contracts.DataController.Values
[TTree_Main_Contracts.DataController.FocusedRecordIndex,_Main_Contracts_Org_Name.Index]);;.EndSequenceActions;;;
{ Дата
поиска
рамочных
договоров
}TForm_Event.Filter_MC_Changed(: TObject);(Get_SqlData_cxGrid(TTree_MC)
<> nil)
//and
(PageControl_Main.ActivePageIndex = 3)cw_Filter_Contracts_Main,
Get_SqlData_cxGrid(TTree_MC) do(Parameters[1] <>
VarToStr(Wrappers[DateEdit_Filter_Start].Value))(Parameters[2] <>
VarToStr(Wrappers[DateEdit_Filter_End].Value))(Parameters[3] <>
VarToStr(Wrappers[PopupEdit_Filter_Org].Value))[1] :=
VarToStr(Wrappers[DateEdit_Filter_Start].Value);[2] :=
VarToStr(Wrappers[DateEdit_Filter_End].Value);[3] :=
VarToStr(Wrappers[PopupEdit_Filter_Org].Value);_Data;Read_Data_First;;TForm_Event.DateEdit_Set_Main_Contract_FindPropertiesEditValueChanged
(Sender:
TObject);cW_Set_Main_Contract <> nil
thenGet_SqlData_cxGrid(TTree_Main_Contracts).Parameters[1] <> VarToStr
(cW_Set_Main_Contract.wrappers[DateEdit_Set_Main_Contract_Find].Value)_SqlData_cxGrid(TTree_Main_Contracts).Parameters[1]
:= VarToStr
(cW_Set_Main_Contract.wrappers[DateEdit_Set_Main_Contract_Find].Value);_SqlData_cxGrid(TTree_Main_Contracts).IsFirstRead
:= True;;;TForm_Event.Delete_tv_listenersExecute(Sender: TObject);: Boolean;:
Boolean;: TIntegerList;:
Integer;_SqlData_cxGrid(tv_listeners).GetSelectedRecordIndexList(List);(List.Count
> 0) and HandymanFunctions.ShowVNDialog(vnd_Confirmation,
'Удаление студентов',
'Вы действительно хотите удалить выбранных
студентов вместе с договором ('
+ IntToStr(List.Count) + ')?')
then// 1.StartSequenceActions(False, True);i := 0 to (List.Count - 1) do// 2:=
VarToStr(tv_listeners.DataController.Values[List.Items[i],_listeners_id_contract.Index])
<> '';:=
MSystemServices.ExchangeData(Delete_Student,([VarToStr(tv_listeners.DataController.Values[List.Items[i],_listeners_id_contract.Index]),(tv_listeners.DataController.Values[List.Items[i],_listeners_id_student.Index])]),
'Удаление
студента.');
{if ok and c
then.ExchangeData(Delete_Contract,
([VarToStr(tv_listeners.DataController.Values[List.Items[i],_listeners_id_contract.Index])]),
'Удаление
договора.');};
// 2.EndSequenceActions;ok then_SqlData_cxGrid(tv_listeners).Read_Data;; //
1;TForm_Event.DoChanged_cW_Contract_Params
(AWrapper: TCustomEditWrapper);,
REnabled: Boolean;AWrapper = cW_Contract_Params.wrappers[cxPopupEdit_PC_Org]
then// 1:= (cxPopupEdit_PC_Org.Text <> '') and
REdit_Event;(cxGroupBox_PC_Representative, REnabled);; // 1AWrapper =
cW_Contract_Params.wrappers[cxButtonEdit_PC_Contract] then// 2:=
(cxButtonEdit_PC_Contract.Text <> '') and REdit_Event;:= PEnabled and
(cxPopupEdit_PC_Org.Text <> '');(cxGroupBox_Contract_Params,
PEnabled);(cxGroupBox_PC_Representative, REnabled);; //
2_PC_Autorepresentative.Enabled := cxGroupBox_Contract_Params.Enabled;AWrapper
= cW_Contract_Params.wrappers[cxButtonEdit_PC_Contract]
then_PC_Kind_Order.Enabled := not AWrapper.IsClear;AWrapper =
cW_Contract_Params.wrappers[cxButtonEdit_PC_Direction]
then_PC_Kind_Direction.Enabled := not
AWrapper.IsClear;;TForm_Event.DoChanged_cW_New_Direction(AWrapper:
TCustomEditWrapper);_OkButton(Panel_New_Direction,_New_Direction.IsNotEmptyMandatory);;TForm_Event.DoChanged_cW_End_Education(AWrapper:
TCustomEditWrapper);_KBA_End.Enabled := not cW_End_Education.wrappers
[cxButtonEdit_End_Education].IsClear;_OkButton(Panel_End_Education,_End_Education.IsNotEmptyMandatory);;TForm_Event.DoChanged_cW_Plan_Filters(AWrapper:
TCustomEditWrapper);
{ Если
изменили
план
}AWrapper = cW_Plan_Filters.wrappers[cxPopupEdit_Plan_Filters_Plan] then
begin // 1
{ Заполняем примечание и аннотацию плана }
if
VarToStr(cW_Plan_Filters.wrappers[cxPopupEdit_Plan_Filters_Plan].Value)
<> '' then//
2_Plan_Filters.wrappers[cxTextEdit_Plan_Filters_Note].Value := VarToStr
(tv_plan.DataController.Values
[tv_plan.DataController.FocusedRecordIndex,
tv_plan_note.Index]);_Plan_Filters.wrappers[cxTextEdit_Plan_Filters_Summary].Value
:=(tv_plan.DataController.Values
[tv_plan.DataController.FocusedRecordIndex,
tv_plan_summary.Index]);// 2//
3_Plan_Filters.wrappers[cxTextEdit_Plan_Filters_Note].Value :=
'';_Plan_Filters.wrappers[cxTextEdit_Plan_Filters_Summary].Value := '';
end; // 3
{ Перечитаем позиции плана (если требуется) }
Fill_tv_r_c_planExecute(self);; //
1;TForm_Event.DoChanged_cW_New_Listener(AWrapper: TCustomEditWrapper);, PE, R:
Boolean;
begin
{ Ссылка на договор доступна, если введен вид
договора }
c := VarToStr(cW_New_Listener.wrappers[cxPopupEdit_New_Listener_Kind_Order]
.Value) <> '';.Enabled :=
c;_New_Listener_Order.Enabled := c;
{ Параметры договора доступны, введен вид
договора и ссылка на договор пуста }
PE := c and
(VarToStr(cW_New_Listener.wrappers[cxPopupEdit_New_Listener_Order]
.Value) =
'');(cxGroupBox_New_Listener_Contract_Params,
PE);_New_Listener.MakeObligatory([cxDateEdit_New_Listener_Contract_D_Start,_New_Listener_Contract_D_End,_New_Listener_Contract_Source_Finansing,_New_Listener_Contract_Money],
PE);
{ Представитель организации доступен, если
доступны параметры договора и выбрана организация }
R := PE and
(VarToStr(cW_New_Listener.wrappers[_New_Listener_Contract_Organization].Value)
<> '');(cxGroupBox_New_Listener_Representative, R);_OkButton(Panel_New_Listener,
cW_New_Listener.IsNotEmptyMandatory);
end;
{ Выбор записи в списке}
procedure
TForm_Event.ChoiceGridRecord(Sender: TSqlData_cxGridTableView;:
TcxGridDataRow);(Sender.GridTableView = tv_r_c_plan)
then(Sender.LastChoiceIndex >= 0) and
(Sender.LastChoiceIndex
<.GridTableView.DataController.RecordCount) then// 1
{ Сменим дату начала и дату окончания в сроках
проведения }
cW_New_R_C_Group.wrappers[cxDateEdit_New_R_C_Group_D_Start].Value
:=(tv_r_c_plan.DataController.Values
[tv_r_c_plan.DataController.FocusedRecordIndex,_r_c_plan_d_start.Index]);_New_R_C_Group.wrappers[cxDateEdit_New_R_C_Group_D_End].Value
:=(tv_r_c_plan.DataController.Values
[tv_r_c_plan.DataController.FocusedRecordIndex,_r_c_plan_d_end.Index]);
{ Обновим списки в зависимости от активной
страницы }
if PageControl_Main.ActivePage =
cxTabSheet_R_C_Groups
then_tv_r_c_groupsExecute(self);PageControl_Main.ActivePage =
cxTabSheet_Listeners then_tv_listenersExecute(self);; // 1
// Выбор текущей учебной группы для обновления
списка кураторов
if (Sender.GridTableView =
tv_r_c_groups) thenGet_SqlData_cxGrid(TTree_Curator) do(Sender.LastChoiceIndex
>= 0) and
(Sender.LastChoiceIndex
<.GridTableView.DataController.RecordCount) then_New_Curator.Enabled :=
REdit_Event;Parameters[1] <> VarToStr
(Sender.GridTableView.DataController.Values[Sender.LastChoiceIndex,_r_c_groups_id_ed_group.Index])
then[1] := VarToStr
(Sender.GridTableView.DataController.Values
[Sender.LastChoiceIndex,
tv_r_c_groups_id_ed_group.Index]);_Data;_Data_First;[1] := '';;_New_Curator.Enabled
:= False;;;TForm_Event.OnChoiceGridRecord_tv_listeners
(Sender: TSqlData_cxGridTableView;
AGridRecord: TcxGridDataRow);(Sender <> nil) then(Sender.LastChoiceIndex
>= 0) and
(Sender.LastChoiceIndex
<.GridTableView.DataController.RecordCount)with
Sender.GridTableView.DataController do// 1cxPageControl_Student.ActivePage =
cxTabSheet_Orders then_tv_ordersExecute(self);cxPageControl_Student.ActivePage
= cxTabSheet_Anketa then_AnketaExecute(self);cxPageControl_Student.ActivePage =
cxTabSheet_Contracts
then_Contract_ParamsExecute(self);Get_SqlData_cxGrid(TTree_Nach).Parameters[1]
<>(Values[Sender.LastChoiceIndex,
tv_listeners_id_contract.Index])begin_SqlData_cxGrid(TTree_Nach).Parameters[1]
:=(Values[Sender.LastChoiceIndex, tv_listeners_id_contract.Index]);_SqlData_cxGrid(TTree_Nach).IsFirstRead
:= True;cxPageControl_Student.ActivePage =
cxTabSheet_StagesGet_SqlData_cxGrid(TTree_Nach).Read_Data_First;;_FIO.Caption
:= VarToStr
(Sender.GridTableView.DataController.Values[Sender.LastChoiceIndex,_listeners_fio.Index]);//
1_FIO.Caption := Choice_Listener;cxPageControl_Student.ActivePageIndex of
:begin_SqlData_cxGrid(tv_orders).Params[0]
:= '';_SqlData_cxGrid(tv_orders).ClearData;;
:Current_Form_Anketa.ID_E := '';
:Clear_Contract.Execute;
:begin_SqlData_cxGrid(TTree_Nach).Parameters[1]
:=
'';_SqlData_cxGrid(TTree_Nach).ClearData;;;;;TForm_Event.PageControl_MainPageChanging(Sender:
TObject;: TcxTabSheet; var AllowChange: Boolean);NewPage =
cxTabSheet_R_C_Groups then_tv_r_c_groupsExecute(self);NewPage = cxTabSheet_Listeners
then_tv_listenersExecute(self);NewPage = cxTabSheet_MC
then_MC_Changed(self);;TForm_Event.PC_ApplyExecute(Sender: TObject);: Integer;:
TcxCustomEdit;, s: string;: Boolean;:= False;.StartSequenceActions(False,
True);i := 0 to cW_Contract_Params.Count - 1 do// 1:=
'-1';VarToStr((cW_Contract_Params.Items[i] as TCustomEditWrapper).EditValue)
<>
VarToStr((cW_Contract_Params.Items[i] as TCustomEditWrapper).Value)// 2:=
(cW_Contract_Params.Items[i] as TCustomEditWrapper).Element;CE = cxDateEdit_PC_D_Start
then:= '0'if CE = cxDateEdit_PC_D_End then:= '1'if (CE = cxPopupEdit_PC_Org) or
(CE = cxTextEdit_PC_Basis) or
(CE = cxTextEdit_PC_FIO) or (CE =
cxTextEdit_PC_FIO_R) or
(CE = cxPopupEdit_PC_Post) then:=
'2'if CE = cxPopupEdit_PC_SF then:= '3'if CE = cxCurrencyEdit_PC_Money then:=
'4';_PC_Money.Properties.EditFormat :=
'0.00';_PC_Money.Properties.UseThousandSeparator := False;if CE =
cxPopupEdit_PC_Kind_Order then:= '5'if CE = cxPopupEdit_PC_Kind_Direction
then:= '6'if CE = CheckBox_PC_NDS then:= '7'if (CE =
cxDateEdit_PC_D_Start_Otrjv) or (CE = cxDateEdit_PC_D_End_Otrjv):=
'8';VarToStr(cW_Contract_Params.wrappers[cxDateEdit_PC_D_Start_Otrjv].EditValue)
= ''s := ''s :=
VarToStr(cW_Contract_Params.wrappers[cxDateEdit_PC_D_Start_Otrjv].EditValue)
+ ' по
' +
VarToStr(cW_Contract_Params.wrappers[cxDateEdit_PC_D_End_Otrjv].EditValue);;;
// 2P <> '-1' then// 3:=
MSystemServices.ExchangeData(Update_PC,([P,(tv_listeners.DataController.Values
[tv_listeners.DataController.FocusedRecordIndex,_listeners_id_contract.Index]),(cW_Contract_Params.wrappers[cxDateEdit_PC_D_Start]
.EditValue),(tv_listeners.DataController.Values
[tv_listeners.DataController.FocusedRecordIndex,_listeners_id_contractor.Index]),(cW_Contract_Params.wrappers[cxDateEdit_PC_D_End]
.EditValue),(cW_Contract_Params.wrappers[cxPopupEdit_PC_Org].EditValue),(cW_Contract_Params.wrappers[cxPopupEdit_PC_SF].EditValue),(cxCurrencyEdit_PC_Money.EditValue),(cW_Contract_Params.wrappers[cxPopupEdit_PC_Kind_Order]
.EditValue),
VarToStr(cW_Contract_Params.wrappers
[cxPopupEdit_PC_Kind_Direction].EditValue),(cW_Contract_Params.wrappers[cxTextEdit_PC_Basis]
.EditValue),(cW_Contract_Params.wrappers[cxTextEdit_PC_FIO].EditValue),(cW_Contract_Params.wrappers[cxTextEdit_PC_FIO_R].EditValue),(cW_Contract_Params.wrappers[cxPopupEdit_PC_Post].EditValue),_BoolToStr(CheckBox_PC_NDS.Checked,
1, '0'),])
);ok thenStrToInt(P) of // 4
:VarToStr(cW_Contract_Params.wrappers[cxPopupEdit_PC_Org]
.EditValue) = '' then//
5_Contract_Params.wrappers[cxTextEdit_PC_Basis].Clear;_Contract_Params.wrappers[cxTextEdit_PC_FIO].Clear;_Contract_Params.wrappers[cxTextEdit_PC_FIO_R].Clear;_Contract_Params.wrappers[cxPopupEdit_PC_Post].Clear;;
// 5_listeners.DataController.Values
[tv_listeners.DataController.FocusedRecordIndex,_listeners_org.Index]
:= VarToStr
(cW_Contract_Params.wrappers[cxPopupEdit_PC_Org]
.EditValueDisplay);;
:_listeners.DataController.Values
[tv_listeners.DataController.FocusedRecordIndex,_listeners_money.Index]
:= VarToStr
(cW_Contract_Params.wrappers[cxCurrencyEdit_PC_Money]
.EditValueDisplay);_PC_Money.Properties.EditFormat
:= ',0.00';_PC_Money.Properties.UseThousandSeparator := True;;
:_Contract_Params.wrappers[cxButtonEdit_PC_Contract]
.EditValueDisplay :=
TButtonOrderEditWrapper
(cW_Contract_Params.wrappers[cxButtonEdit_PC_Contract])
.L_status_text + ' (' + VarToStr
(cW_Contract_Params.wrappers[cxPopupEdit_PC_Kind_Order]
.EditValueDisplay) + ')';
:_Contract_Params.wrappers[cxButtonEdit_PC_Direction]
.EditValueDisplay :=
TButtonOrderEditWrapper
(cW_Contract_Params.wrappers[cxButtonEdit_PC_Direction])
.L_status_text + ' (' + VarToStr
(cW_Contract_Params.wrappers[cxPopupEdit_PC_Kind_Direction]
.EditValueDisplay) + ')';; // 4; //
3; // 1.EndSequenceActions;ok
then_Contract_Params.ChangesAcceptWrappers;;TForm_Event.PC_AutorepresentativeExecute(Sender:
TObject);HandymanFunctions.ShowVNDialog(vnd_Confirmation, 'Автопредставитель',
'Вы действительно хотите добавить
автопредставителя?') then
begin // 1.ExchangeData(Autorepr,
([VarToStr(cW_Contract_Params.wrappers
[cxButtonEdit_PC_Contract].Value)]));
// 1;TForm_Event.PC_RefuseExecute(Sender:
TObject);_Contract_Params.ChangesRefuseWrappers;;TForm_Event.Plan_ApplyExecute(Sender:
TObject);:
Boolean;VarToStr(cW_Plan_Filters.wrappers[cxPopupEdit_Plan_Filters_Plan].Value)
<> '' then// 1:=
MSystemServices.ExchangeData(Update_Plan,([VarToStr(cW_Plan_Filters.wrappers
[cxTextEdit_Plan_Filters_Note].EditValue),(cW_Plan_Filters.wrappers
[cxTextEdit_Plan_Filters_Summary].EditValue),(cW_Plan_Filters.wrappers[cxPopupEdit_Plan_Filters_Plan].Value)
]));ok then//
3_Plan_Filters.ChangesAcceptWrappers;_plan.DataController.Values[tv_plan.DataController.FocusedRecordIndex,_plan_note.Index]
:= VarToStr(cW_Plan_Filters.wrappers
[cxTextEdit_Plan_Filters_Note].EditValue);_plan.DataController.Values[tv_plan.DataController.FocusedRecordIndex,_plan_summary.Index]
:= VarToStr(cW_Plan_Filters.wrappers
[cxTextEdit_Plan_Filters_Summary].EditValue);_Plan_Filters.wrappers[cxPopupEdit_Plan_Filters_Plan].ValueDisplay
:=(cW_Plan_Filters.wrappers[cxTextEdit_Plan_Filters_Note]
.EditValue);; // 3// 1//
2_Plan_Filters_Note.Clear;_Plan_Filters_Summary.Clear;_Plan_Filters.ChangesAcceptWrappers;;
// 2;TForm_Event.Plan_RefuseExecute(Sender:
TObject);_Plan_Filters.ChangesRefuseWrappers;
end;
{ Доступность создания запсией в специальности
подразделения }
procedure
TForm_Event.DoChanged_cW_Spec_Div(AWrapper:
TCustomEditWrapper);_OkButton(Panel_New_Spec_Div,
cW_New_Spec_Div.IsNotEmptyMandatory)
end;
{ Доступность создания запсией в импорте}
procedure TForm_Event.PopupEdit_Import_SpecPropertiesEditValueChanged
(Sender: TObject);i: integer;Sender
= PopupEdit_Import_Spec then_Import_Spec.Enabled := VarToStr
(cW_Import.wrappers[PopupEdit_Import_Spec].Value)
= '';Sender = PopupEdit_Import_Spec_Div_Import_Spec_Div.Enabled := VarToStr
(cW_Import.wrappers[PopupEdit_Import_Spec_Div].Value)
= '';
// Если есть выбранная запись, обновим по ней
УМК!
if not
ButtonEdit_Import_Spec_Div.EnabledcxPopupEdit_New_R_C_Group_Met_ComplexPropertiesInitPopup(PopupEdit_Import_UMK)Get_SqlData_cxGrid(tv_r_c_groups).Params[0]
<> VarToStr
(cW_Import.wrappers[PopupEdit_Import_Spec_Div].Value)begin_SqlData_cxGrid(tv_r_c_groups).Params[0]
:= VarToStr
(cW_Import.wrappers[PopupEdit_Import_Spec_Div].Value);_SqlData_cxGrid(tv_r_c_groups).Read_Data;;;;(Sender
= PopupEdit_Import_UMK) or (Sender = PopupEdit_Import_Spec_Div)
then_Import_UMK.Enabled := (VarToStr
(cW_Import.wrappers[PopupEdit_Import_UMK].Value)
= '')
// Организатор
должен
быть
задан!((cW_Import.wrappers[PopupEdit_Import_Spec_Div].Value)
<> '');(Sender = PopupEdit_Import_Plan) or ( Sender =
PopupEdit_Import_Spec_Div)_Import_Plan.Enabled := (VarToStr
(cW_Import.wrappers[PopupEdit_Import_Plan].Value)
= '')
// Организатор
должен
быть
задан!((cW_Import.wrappers[PopupEdit_Import_Spec_Div].Value)
<> '');
// Если позиция плана выбрана, то поищем ее в
списке и выберем!
if
VarToStr(cW_Import.wrappers[PopupEdit_Import_Plan].Value) <> '':=
FindGridRecordIndex(tv_r_c_plan, [tv_r_c_plan_id_r_c_plan]
,
CreateVarAr([VarToStr(cW_Import.wrappers[PopupEdit_Import_Plan].Value)]));i
>= 0Get_SqlData_cxGrid(tv_r_c_plan).LastChoiceIndex := i;;;(Sender =
PopupEdit_Import_EG) or (Sender = PopupEdit_Import_Spec_Div)(Sender =
PopupEdit_Import_UMK) then_Import_EG.Enabled := (VarToStr
(cW_Import.wrappers[PopupEdit_Import_EG].Value)
= '')
// Организатор
должен
быть
задан!((cW_Import.wrappers[PopupEdit_Import_Spec_Div].Value)
<> '')
// УМК
должно
быть
задано!((cW_Import.wrappers[PopupEdit_Import_UMK].Value)
<> '');VarToStr(cW_Import.Wrappers[PopupEdit_Import_Plan].Value) <>
'' thenGet_SqlData_cxGrid(tv_r_c_groups).Params[0] <>
VarToStr(cW_Import.Wrappers[PopupEdit_Import_Plan].Value)_SqlData_cxGrid(tv_r_c_groups).Params[0]
:=
VarToStr(cW_Import.Wrappers[PopupEdit_Import_Plan].Value);_SqlData_cxGrid(tv_r_c_groups).IsFirstRead
:= True;;VarToStr(cW_Import.Wrappers[PopupEdit_Import_Spec_Div].Value) <>
'' thenGet_SqlData_cxGrid(tv_r_c_groups).Params[0] <>
VarToStr(cW_Import.Wrappers[PopupEdit_Import_Spec_Div].Value)_SqlData_cxGrid(tv_ed_group).Params[0]
:= VarToStr(cW_Import.Wrappers[PopupEdit_Import_Spec_Div].Value);_SqlData_cxGrid(tv_ed_group).IsFirstRead
:= True;;;TForm_Event.Before_Update_Exchange_tv_listeners
(Sender: TSqlData_cxGridTableView;
UpdateValue: Variant;: TcxCustomGridTableItem; ARecordIndex:
Integer;ExchangeParameters: OleVariant; var Allow: Boolean);: TcxGridColumn;:
TcxGridDataController;:= Sender.GridTableView.Controller.FocusedColumn;
{ Параметры для изменения Ф.И.О. }
if FC = tv_listeners_fio then// 1:=
Current_Form_SE.cxGrid_FIO.DataController;:= CreateVarAr([DC.Values[DC.FocusedRecordIndex,_Form_SE.cxGrid_FIO_ID_E.Index],.GridTableView.DataController.Values[ARecordIndex,_listeners_id_student.Index],.GridTableView.DataController.Values[ARecordIndex,_listeners_id_contract.Index]]);
end; // 1
{ Параметры для изменения учебной группы и даты
начала }
if (FC = tv_listeners_ed_group) or
(FC = tv_listeners_d_start) then// 2:= tv_r_c_groups.DataController;:=
CreateVarAr([DC.Values[DC.FocusedRecordIndex,_r_c_groups_d_start.Index],
DC.Values[DC.FocusedRecordIndex,_r_c_groups_id_ed_group.Index],.GridTableView.DataController.Values[ARecordIndex,_listeners_id_student.Index],.GridTableView.DataController.Values[ARecordIndex,_listeners_id_contract.Index]]);
end; // 2
{ Параметры для изменения даты окончания }
if (FC = tv_listeners_d_end) then//
3:= CreateVarAr
([Sender.GridTableView.DataController.Values[ARecordIndex,_listeners_id_student.Index],
VarToStr(UpdateValue)]);
end; // 3;
{ Добавление группы обучения}
procedure
TForm_Event.ButtonEdit_Import_EGClick(Sender: TObject);i: integer;Import_ID_EG
= '' then.InsertData(d_P_EDUCATIONAL_GROUP
, CreateVarAr(['1', '2', '3', '4'])
, CreateVarAr([Import_EG_Name
,
VarToStr(cW_Import.Wrappers[PopupEdit_Import_Spec_Div].Value)
, '3' // Уровень
группы
,
VarToStr(cW_Import.Wrappers[DateEdit_Import_Start].Value)]));_SqlData_cxGrid(tv_ed_group).Read_Data;:=
FindGridRecordIndex(tv_ed_group, [tv_ed_group_name]
, CreateVarAr([Import_EG_Name]));i
>= 0 then_ID_EG := VarToStr(tv_ed_group.DataController.Values[i,
tv_ed_group_id_ed_group.Index]);_New_R_C_Group.Wrappers[cxPopupEdit_New_R_C_Group_Ed_Group].Value
:=
Import_ID_EG;_New_R_C_Group.Wrappers[cxPopupEdit_New_R_C_Group_Ed_Group].ValueDisplay
:=
Import_EG_Name;;_New_R_C_Group.Wrappers[cxPopupEdit_New_R_C_Group_Ed_Group].Value
:= Import_ID_EG;_New_R_C_Group.Wrappers[cxPopupEdit_New_R_C_Group_Ed_Group].ValueDisplay
:=
Import_EG_Name;;_New_R_C_Group.Wrappers[cxPopupEdit_New_R_C_Group_Met_Complex].Value
:=_Import.Wrappers[PopupEdit_Import_UMK].Value;_New_R_C_Group.Wrappers[cxPopupEdit_New_R_C_Group_Met_Complex].ValueDisplay
:=_Import.Wrappers[PopupEdit_Import_UMK].ValueDisplay;_New_R_C_Group.Wrappers[cxDateEdit_New_R_C_Group_D_Start].Value
:=_Import.Wrappers[DateEdit_Import_Start].Value;_New_R_C_Group.Wrappers[cxDateEdit_New_R_C_Group_D_End].Value
:=_Import.Wrappers[DateEdit_Import_End].Value;
// Откроем
добавление
группы
обученияAction_Insert_tv_r_c_group.Execute:=
FindGridRecordIndex(tv_r_c_groups, [tv_r_c_groups_name]
, CreateVarAr([Import_EG_Name]));i
>= 0 then_Import.Wrappers[PopupEdit_Import_EG].Value :=(tv_r_c_groups.DataController.Values[i,
tv_r_c_groups_id_ed_group.Index]);_Import.Wrappers[PopupEdit_Import_EG].ValueDisplay
:=(tv_r_c_groups.DataController.Values[i,
tv_r_c_groups_name.Index]);;;(GetParentForm(ButtonEdit_Import_Spec).Handle);;TForm_Event.ButtonEdit_Import_OrderPropertiesEditValueChanged(:
TObject);(Sender =
ButtonEdit_Import_Order)TButtonOrderEditWrapper(cW_Import.Wrappers[ButtonEdit_Import_Order]).IsEmpty
:= Falseif (Sender =
ButtonEdit_Import_Nach)TButtonOrderEditWrapper(cW_Import.Wrappers[ButtonEdit_Import_Nach]).IsEmpty
:= False;
{ Добавление
плана
обучения}TForm_Event.ButtonEdit_Import_PlanClick(Sender:
TObject);_New_R_C_Plan.Wrappers[cxPopupEdit_New_R_C_Plan_Spec_Div].Value
:=_Import.Wrappers[PopupEdit_Import_Spec_Div].Value;_New_R_C_Plan.Wrappers[cxPopupEdit_New_R_C_Plan_Spec_Div].ValueDisplay
:=_Import.Wrappers[PopupEdit_Import_Spec_Div].ValueDisplay;_New_R_C_Plan.Wrappers[cxDateEdit_New_R_C_Plan_D_Start].Value
:=_Import.Wrappers[DateEdit_Import_Start].Value;Action_Insert_tv_r_c_plan.Executebegin_Import.Wrappers[PopupEdit_Import_Plan].Value
:=(tv_r_c_plan.DataController.Values[tv_r_c_plan.DataController.FocusedRecordIndex
,
tv_r_c_plan_id_r_c_plan.Index]);_Import.Wrappers[PopupEdit_Import_Plan].ValueDisplay
:=_Import.wrappers[PopupEdit_Import_Spec_Div].ValueDisplay;;(GetParentForm(ButtonEdit_Import_Spec).Handle);;
{ Добавление
программы
(специальности)}TForm_Event.ButtonEdit_Import_SpecClick(Sender:
TObject);: TSForm;: Integer;// 1:= CreateSForm(self, 'fNew_Spec',
TabSheet_New_Spec.Caption,_Path + TabSheet_New_Spec.Caption, Panel_New_Spec,
tdb_Apply);_New_Spec.wrappers[cxTextEditNew_Spec_Name].Value :=
Import_Name_Spec;.Position := poScreenCenter;mf.ShowModal = mrok then//
2_TableView := Get_SqlData_cxGrid(tv_Spec);FSqlData_TableView <> nil
then//
3MSystemServices.ExchangeData(Add_Spec,([cW_New_Spec.wrappers[cxTextEditNew_Spec_Name].Value,_New_Spec.wrappers[cxTextEditNew_Spec_Quality].Value,_Level_Spec,
IDK_Discipline]), 'Добавление
программы
обучения.')//
4_TableView.Read_Data;:= FindGridRecordIndex(tv_Spec, [tv_Spec_Name,
tv_Spec_Q],([cW_New_Spec.wrappers[cxTextEditNew_Spec_Name].Value,_New_Spec.wrappers[cxTextEditNew_Spec_Quality].Value]));i
>= 0 then_Import.wrappers[PopupEdit_Import_Spec].Value := VarToStr
(tv_Spec.DataController.Values[i,
tv_Spec_ID.Index]);_Import.wrappers[PopupEdit_Import_Spec].ValueDisplay :=
VarToStr
(tv_Spec.DataController.Values[i,
tv_Spec_Name.Index]);;; // 4; // 3; // 2// 1assigned(mf)
then(mf);(GetParentForm(ButtonEdit_Import_Spec).Handle);; // 1;TForm_Event.After_Read_tv_listeners(Sender:
TSqlData_cxGridTableView);Sender.GridTableView.DataController.RecordCount = 0
then// 1cxPageControl_Student.ActivePage = cxTabSheet_Orders
then_SqlData_cxGrid(tv_orders).ClearData;cxPageControl_Student.ActivePage =
cxTabSheet_Anketa then_AnketaExecute(self);cxPageControl_Student.ActivePage =
cxTabSheet_Contracts then_Contract_ParamsExecute(self);_FIO.Caption := '';
end; // 1;
Приложение В
Текст запросов
Настройка модуля
(Get_Params_Module )t.value_variablevalues_variables_env_rs
tt.id_variable_environment = %p1[i]%Sysdate Between t.d_start And nvl(t.d_end,
Sysdate)t.use_sign = 1t.id_project = 1
Вид уровня образования (K_L_F)
Select klf.Name
,klf.idk_level_formation
,klf.qualifierkind_level_formation_
klf
Группы повышения
квалификации
(R_C_Groups)eg.Name
,rcg.d_start
,rcg.d_end
,ps.Status_Text
,el.hours
,rcg.id_rc_group
,rcg.id_ed_group
,rcg.id_methodical_complex
,ps.id_paragraph
,ps.id_order
,ps.idk_order
,ps.Status_order
,rcg.id_refresher_course_plan
,ps.id_erp_userrefresher_course_group_
rcg
,educational_group_ eg
,complex_specialities_ cs
,paragraphs_status_ ps
,methodical_complex_ mc
,educational_load_umk_
eleg.id_ed_group = rcg.id_ed_grouprcg.id_refresher_course_plan =
%p1[i]%cs.id_methodical_complex = rcg.id_methodical_complexcs.id_p_dp =
ps.id_paragraphrcg.id_methodical_complex =
mc.id_methodical_complexel.id_methodical_complex = mc.id_methodical_complex
Добавление спец.мет.компл. (Add_Com_Spec)
Declare_m_c Number;
Into methodical_complex_
(id_d, id_discipline)
(%p1[i]%
,(Select d.id_disciplinedisciplines_
d
,specialities_division_ sdd.Name Is
Nulld.id_speciality = sd.id_specialitysd.id_d_specialitie =
%p2[i]%))id_methodical_complex Into id_m_c;
Into complex_specialities_
(id_methodical_complex,
id_d_specialitie, idk_discipline, id_p_dp)
(id_m_c, %p2[i]%, %p6[i]%, %p3[i]%);
Into Educational_Load_Umk_
(Id_Methodical_Complex,
Idk_Training, Idk_Lesson, Semester, Hours)
(id_m_c, %p4[i]%, 1, 1, %p5[s]%);
- Самостоятельная
работа%p7[i]%
Is Not Null%p7[i]% > 0Into Educational_Load_Umk_
(Id_Methodical_Complex,
Idk_Training, Idk_Lesson, Semester, Hours)
(id_m_c, %p4[i]%, 20, 1, %p7[i]%);
End If;;
Добавление специальности (Add_Spec)
Declare_spec Number;Into Speciality_
(Name, Qualifier,
Idk_Level_Speciality)
(%p1[s]%, %p2[s]%,
%p3[s]%)Id_Speciality Into id_spec;Into Disciplines_
(Name, Abbreviation, Idk_Discipline,
Id_Speciality)
('', '', %p4[s]%, id_spec);;
Должности в
комиссии
(Get_Posts_For_Members)p.Name
,p.id_postpost_ pp.id_post In
(55005, 55003)
Изменение спец.мет.компл. (Update_Com_Spec)
Begincomplex_specialities_id_d_specialitie
= %p4[i]%Id_Methodical_Complex = %p1[i]%id_d_specialitie = %p2[i]%id_p_dp =
%p3[i]%;
educational_load_umk_idk_training =
%p5[i]%Id_Methodical_Complex = %p1[i]%;
methodical_complex_id_d =
%p6[i]%Id_Methodical_Complex = %p1[i]%;
End;
Источники финансирования (S_F)
Select sf.abbreviation
,sf.Name
,ts_.Get_DivisionName(sf.id_d,
Sysdate, 1, 1, 2, 2)
,ts_.Get_DivisionName(sf.id_d,
Sysdate, 1, 1)
,ks.Name
,ka.Name
,sf.d_end
,sf.id_source
,sf.id_d
,sf.idk_source
,sf.idk_activitysource_financing_ sf
,attributes_divisions_ d
,kind_source_ ks
,kind_activity_ ka
,kind_activity_ kai
,kind_charges_ kc
,declination_ dc
,
- Проверим - нужны ли закрытые источники?
(Select CaseExists (Select 'x'p_roles_current_user_
ruru.qualifier = '130') Then
'1'
'0'qualifierdual) rusf.id_d =
d.id_d(sf.d_end Is Null Or ru.qualifier = '1')(d.d_start = (Select
Max(ad.d_start)attributes_divisions_ adad.id_d = d.id_dad.d_start <=
Sysdate))sf.idk_source = ks.idk_sourcesf.idk_activity =
ka.idk_activitysf.idk_activity_income = kai.idk_activity(+)sf.idk_charges =
kc.idk_charges(+)sf.id_declination = dc.id_declination(+)ka.qualifier in ('2',
'3')(%p1[i]% is null or sf.id_d = %p1[i]%)ks.qualifier = '2'
Комиссии
(Get_List_Commissions_By_ID_D_And_ID_Spec)ps.Status_Text
,ps.name_Kind_paragraph
,eh.full_fio
,c.d_start
,c.d_end
,ps.id_paragraph
,ps.id_order
,ps.idk_order
,ps.Status_order
,ps.id_erp_user
,ps.id_metaterm
,ps.id_metaobject
,c.id_speciality
,c.id_d
,c.id_commission
,c.idk_commissioncommission_ c
,paragraphs_status_ ps
,who_is_who_ wiw
,employees_history_
ehc.id_speciality = %p2[i]%c.id_paragraph = ps.id_paragraphps.id_erp_user =
wiw.id_erp_userwiw.id_e = eh.id_ec.d_start Between eh.d_start And nvl(eh.d_end,
c.d_start)c.id_d = %p1[i]%
Кураторы группы
(Get_List_Curators_By_ID_EG)c.d_start
,c.d_end
,e.surname || ' ' || e.Name || ' '
|| e.patronymic || ', ' ||_char(e.date_of_birth) || ' г.р.'
,c.id_e
,c.id_ed_groupcurator_group_ c
,employees_ ec.id_ed_group =
%p1[i]%c.id_e = e.id_e
Методический комплекс
(Met_Complex)s.Name
,ts_.Get_DivisionName(sd.id_d_institute,
Sysdate, 1, 1)
,ts_.Get_DivisionName(sd.id_d,
Sysdate, 1, 1)
,kt.Name
,ps.Status_Text
,el.hours
,sd.id_d_specialitie
,sd.id_speciality
,sd.id_d_institute
,sd.id_d
,sd.idk_training
,cs.id_p_dp
,ps.id_order
,ps.idk_order
,cs.id_methodical_complex
-,el.id_educational_load_umk
,el.shcomplex_specialities_ cs
,specialities_division_ sd
,speciality_ s
,paragraphs_status_ ps
,kind_training_ kt
,(Select el.id_methodical_complex
-,el.id_educational_load_umk
,Sum(el.hours) hours
,Sum(Decode(el.idk_lesson, 1, 0,
el.hours)) sheducational_load_umk_ elBy el.id_methodical_complex
-,el.id_educational_load_umk
) elcs.id_d_specialitie =
sd.id_d_specialitiesd.id_speciality = s.id_specialitykt.idk_training =
sd.idk_training(%p1[i]% Is Null Or %p1[i]% = sd.id_d_specialitie)cs.id_p_dp =
ps.id_paragraphel.id_methodical_complex = cs.id_methodical_complexsd.id_d_institute
In
(
- всё, если необычный пользовательdL.id_d
From division_ dLbs_.isUnusual >
0
Union All
- по ролям, если обычный пользователь
Select dL.id_ddivision_
dLbs_.isUnusual = 0dL.id_metaterm In
(Select
r.id_metatermTable(access_data_.Get_Roles('1403', 1)) r)
Union All
- по ролям, если обычный пользователь
Select dL.id_ddivision_
dLbs_.isUnusual = 0Exists (Select
r.id_metatermTable(access_data_.Get_Roles('1403', 1)) rr.id_metaterm Is Null))
Организаторы обучения (Spec_div)s.Name
,ts_.Get_DivisionName(sd.id_d,
Sysdate, 1, 1)
,kt.Name
,ts_.Get_DivisionName(sd.id_d_institute,
Sysdate, 1, 1, 2, 2)
,sf.Name
,sd.d_start
,sd.d_end
,sd.id_d_specialitie
,sd.id_speciality
,sd.id_d
,sd.idk_training
,sd.id_d_institute
,sd.id_source
,sd.idk_level_formationspecialities_division_
sd
,speciality_ s
,kind_training_ kt
,source_financing_
sfs.idk_level_speciality = %p1[i]%sd.id_speciality =
s.id_specialitykt.idk_training = sd.idk_trainingsf.id_source(+) =
sd.id_source(%p2[i]% Is Null Or %p2[i]% = sd.id_d_institute)sd.id_d_institute
in
(
- всё,
если
необычный
пользовательdL.id_d
from division_ dL where bs_.isUnusual > 0
union all
- по ролям, если обычный пользователь
select dL.id_d from division_
dLbs_.isUnusual = 0 and dL.id_metaterm in (select r.id_metaterm from
table(access_data_.Get_Roles('1402, 1403, 1404', 0)) r )
union all
- по ролям, если обычный пользователь
select dL.id_d from division_
dLbs_.isUnusual = 0 exists (select r.id_metaterm from
table(access_data_.Get_Roles('1402, 1403, 1404', 0)) r where r.id_metaterm is
null)
)
План пк
(отчет)
(Get_Data_For_Plan)nvl(to_char(ps.hisdate, 'dd'), '___') День
--1
,nvl(wordsv_.Month_Decline(extract(Month
From ps.hisdate), 2, 1)
,'__________') Месяц
--2
,to_char(nvl(ps.hisdate, Sysdate),
'yyyy') Год
--3
,s.Name Программа
--4
,el.hours Часы
--5
,kt.Name Форма
--6
,wordsv_.Month_Decline(extract(Month
From rcp.d_start), 1, 1) || (extract(Month From rcp.d_end), extract(Month From
rcp.d_start), ''
, ' - ' ||
wordsv_.Month_Decline(extract(Month From rcp.d_end), 1, 1)) Срок
--7
,wordsv_.Month_Decline(extract(Month
From rcp.d_end), 1, 1) Окончание
--8
,ts_.Get_DivisionName(sd.id_d,
Sysdate, 1, 1) Подразделение
--9
,rcp.id_paragraph --10
,ts_.Get_DivisionName(sd.id_d_institute,
Sysdate, 1, 1) Организатор
--11
,extract(Year From (Select
Max(pod.d_start)(Select rcp2.d_startrefresher_course_plan_
rcp2rcp2.id_paragraph = %p1[i]%) pod)) Год
--12
,replace(replace(ps.summary, 'План
', ''), 'ПЛАН ', '') --
13
refresher_course_plan_ rcp
,specialities_division_ sd
,speciality_ s
,kind_training_ kt
,paragraphs_status_ ps
,complex_specialities_ cs
,educational_load_umk_
elrcp.id_paragraph = %p1[i]%sd.id_d_specialitie =
rcp.id_d_specialitiesd.id_speciality = s.id_specialitykt.idk_training =
sd.idk_trainingps.id_paragraph = rcp.id_paragraphrcp.id_d_specialitie =
cs.id_d_specialitieel.id_methodical_complex = cs.id_methodical_complex
Позиции плана ПК (R_C_Plan)
Select s.Name
,ts_.Get_DivisionName(sd.id_d_institute,
Sysdate, 1, 1)
,ts_.Get_DivisionName(sd.id_d,
Sysdate, 1, 1)
,kt.Name
,rcp.d_start
,rcp.d_end
,sf.Name
,(Select
npt.moneynorms_payment_training_ nptnpt.id_d_specialitie =
rcp.id_d_specialitienpt.type_value = 1npt.d_start Between sd.d_start And
rcp.d_start)
,ps.Status_Text
,rcp.id_refresher_course_plan
,rcp.id_d_specialitie
,sd.id_speciality
,sd.id_d_institute
,sd.id_d
,sd.idk_training
,rcp.id_paragraph
,ps.id_order
,ps.idk_order
,ps.Status_order
,sd.id_source
,ps.id_erp_user
refresher_course_plan_ rcp
,specialities_division_ sd
,speciality_ s
,kind_training_ kt
,paragraphs_status_ ps
,source_financing_
sfrcp.id_d_specialitie = sd.id_d_specialitiesd.id_speciality =
s.id_specialitykt.idk_training = sd.idk_trainingsd.id_d_institute in
(
- всё,
если
необычный
пользовательdL.id_d
from division_ dL where bs_.isUnusual > 0
union all
- по ролям, если обычный пользователь
select dL.id_d from division_
dLbs_.isUnusual = 0 and dL.id_metaterm in (select r.id_metaterm from
table(access_data_.Get_Roles('1403', 1)) r )
union all
- по ролям, если обычный пользователь
select dL.id_d from division_
dLbs_.isUnusual = 0 exists (select r.id_metaterm from
table(access_data_.Get_Roles('1403', 1)) r where r.id_metaterm is null)
) ps.id_paragraph =
rcp.id_paragraphsd.id_source = sf.id_source(+)(rcp.id_paragraph = %p1[i]% Or
((%p1[s]% Is Null) And.id_erp_user =
(Select w.id_erp_user From
who_is_who_ w Where w.login = User)))
Программы
(Get_List_Spec_By_Params)res_ad as
(/*+no_merge*/.id_d(Select
d.id_d(Select d.id_ddivision_ d
,Table(access_data_.Get_Roles('1401,1402,1403,1404',
0)) prpr.id_metaterm = d.id_metaterm
--
Без ограниченийd.id_d
From division_ d
,(Select 'x'dual(bs_.isUnusual >
0)(Exists (Select 'x'Table(access_data_.Get_Roles('1401,1402,1403,1404'
,0))) AndExists
(Select 'x'division_ d
,(Select
id_metatermTable(access_data_.Get_Roles('1401,1402,1403,1404'
,0))) prpr.id_metaterm =
d.id_metaterm)))) d) d
)
s.Name
,s.qualifier
,s.id_speciality
,s.idk_level_speciality
,di.id_discipline
,di.idk_discipline
speciality_ s
,specialities_division_ sd
,res_ad
,disciplines_ di
s.idk_level_speciality = %p1[i]%
--70s.id_speciality = sd.id_speciality(+)sd.id_d_institute =
res_ad.id_d(+)(sd.id_d_institute Is Null Or res_ad.id_d Is Not Null)(%p2[s]% Is
Null Or %p2[s]% = sd.id_d_institute)di.id_speciality(+) = s.id_speciality
By s.Name
,s.qualifier
,s.id_speciality
,s.idk_level_speciality
,di.id_discipline
,di.idk_discipline
Специальности
мет.комл. (Com_Spec)
Select s.Name
,ts_.Get_DivisionName(sd.id_d,
Sysdate, 1, 1)
,kt.Name
,ps.Status_Text
,el.hours
,sd.id_d_specialitie
,sd.id_speciality
,sd.id_d
,sd.idk_training
,ps.Status_order
,cs.id_p_dp
,ps.id_order
,ps.idk_order
,cs.id_methodical_complex
,el.id_educational_load_umk
,ps.id_erp_usercomplex_specialities_
cs
,specialities_division_ sd
,speciality_ s
,paragraphs_status_ ps
,kind_training_ kt
,educational_load_umk_
elcs.id_d_specialitie = sd.id_d_specialitiesd.id_speciality =
s.id_specialitykt.idk_training = sd.idk_training(%p1[i]% Is Null Or %p1[i]% =
sd.id_d_institute)cs.id_p_dp = ps.id_paragraphel.id_methodical_complex =
cs.id_methodical_complex
Список институтов
(Get_List_Institutes)res_ad as
(/*+no_merge*/.id_d(Select
d.id_d(Select d.id_ddivision_ d
,Table(access_data_.Get_Roles('1401,1402,1403,1404',
1)) prpr.id_metaterm = d.id_metaterm
--
Без ограниченийd.id_d
From division_ d
,(Select 'x'dual(bs_.isUnusual >
0)(Exists (Select 'x'Table(access_data_.Get_Roles('1401,1402,1403,1404'
,1))) AndExists
(Select 'x'division_ d
,(Select
id_metatermTable(access_data_.Get_Roles('1401,1402,1403,1404'
,1))) prpr.id_metaterm =
d.id_metaterm)))) d) d
)
ts_.Get_DivisionName(res.id_d,
Sysdate, 1, 1, 2, 2)
,ts_.Get_DivisionName(res.id_d,
Sysdate, 1, 1)
,res.id_dres_ad res%p1[i]% = %p1[i]%
Список организаторов(подр)
(Get_List_Divisions)res_ad as
(/*+no_merge*/.id_d(Select
d.id_d(Select d.id_ddivision_ d
/*,Table(access_data_.Get_Roles('1401,1402,1403,1404',
0)) prpr.id_metaterm = d.id_metaterm
--
Без ограниченийd.id_d
From division_ d
,(Select 'x'dual(bs_.isUnusual >
0)(Exists (Select 'x'Table(access_data_.Get_Roles('1401,1402,1403,1404'
,1))) AndExists
(Select 'x'division_ d
,(Select
id_metatermTable(access_data_.Get_Roles('1401,1402,1403,1404'
,1))) prpr.id_metaterm =
d.id_metaterm)))*/) d) d
)
ts_.Get_DivisionName(res.id_d,
Sysdate, 1, 1, 2, 2)
,ts_.Get_DivisionName(res.id_d,
Sysdate, 1, 1)
,res.id_dres_ad res%p1[i]% = %p1[i]%
Удаление спец.мет.компл.
(Delete_Com_Spec)From complex_specialities_Id_Methodical_Complex =
%p1[i]%id_d_specialitie = %p2[i]%id_p_dp = %p3[i]%;From educational_load_umk_
Where Id_Methodical_Complex = %p1[i%;From methodical_complex_ Where
Id_Methodical_Complex = %p1[i]%;
End;
Удаление
специальности (Delete_Spec)
BeginFrom Disciplines_
dd.id_speciality = %p1[i]%d.Name Is Null;From Speciality_ s Where
s.id_speciality = %p1[i]%;;
Учебные группы
(Ed_Groups)eg.Name
,kg.Name
,eg.d_start
,eg.d_end
,eg.id_ed_group
,eg.id_d_specialitie
,eg.idk_group
,eg.level_groupeducational_group_ eg
,kind_group_ kgeg.id_d_specialitie =
%p1[i]%kg.idk_group(+) = eg.idk_group
Члены комиссии
(Get_Members_Commission_By_ID)ps.Status_Text -- 1
,ps.name_Kind_paragraph -- 2
,p.name -- 3
,eh.full_fio -- 4
,ehw.full_fio -- 5
,cm.d_start -- 6
,cm.d_end -- 7
,ps.id_paragraph -- 8
,ps.id_order -- 9
,ps.idk_order -- 10
,ps.Status_order -- 11
,ps.id_erp_user -- 12
,ps.id_metaterm -- 13
,ps.id_metaobject -- 14
,cm.id_post -- 15
,cm.id_commission -- 16
,cm.id_e -- 17
,cm.id_commission_member --
18commission_members_ cm
,paragraphs_status_ ps
,who_is_who_ wiw
,employees_history_ ehw
,employees_history_ eh
,post_ pcm.id_commission = %p1[i]%cm.id_paragraph_start
= ps.id_paragraphps.id_erp_user = wiw.id_erp_userwiw.id_e = ehw.id_ecm.d_start
Between ehw.d_start And nvl(ehw.d_end, cm.d_start)cm.id_post = p.id_postcm.id_e
= eh.id_ecm.d_start Between eh.d_start And nvl(eh.d_end, cm.d_start)
Должности
(Posts)p.Name
,p.id_postpost_ pBy p.id_post
,p.Name
Изменение
группы(даты) (Update_Ed_Group)
BeginStudents_ ss.d_start = %p1[d]%,
s.id_ed_group = %p2[i]%s.id_student = %p3[i]%;
contracts_ cc.d_start =
%p1[d]%c.id_contract = %p4[i]%c.d_start != %p1[d]%;
stages_ ss.d_start =
%p1[d]%s.id_contract = %p3[i]%s.d_start != %p1[d]%;
contract_sources_ cscs.d_start =
%p1[d]%cs.id_contract = %p2[i]%cs.d_start != %p1[d]%;;
Изменение даты оконч.
(Update_End_Date)orders_students_ osos.d_start = %p2[d]%os.id_paragraph =
(Select
ps.id_paragraphorders_students_ os2, paragraphs_status_ psos2.id_student =
%p1[i]%os2.id_paragraph = ps.id_paragraphps.idk_order In (201, 207));
End;
Изменение
плана (Update_Plan)
Update orders_ oo.note = %p1[s]%,
o.summary = %p2[s]%o.id_order =
(Select p.id_order From paragraphs_
p Where p.id_paragraph = %p3[i]%)
Изменение ФИО
(Update_FIO)_nach Number;Min(1)is_nachdualExists (Select 'x'accounts_contract_
ac
,stages_ st
,salary_account_ sa
,paragraphs_status_ psac.id_stage =
st.id_stageac.id_basis_sal = sa.id_salary_accountst.id_contract =
%p3[i]%ac.id_paragraph = ps.id_paragraphps.Status_order <> 2);is_nach Is
Not Null
Then_application_error(-20101
,'В
договоре обнаружены подписанные проводки!');
End If;
Students_ s Set s.id_e = %p1[i]%
Where s.id_student = %p2[i]%;
Contracts_ cc.id_with_whom = (Select
e.id_contractoremployees_ ee.id_e = %p1[i]%)c.id_contract = %p3[i]%;
account_ aa.id_e =
%p1[i]%a.id_account In (Select a.id_accountaccounts_contract_ ac
,stages_ st
,salary_account_ sa
,paragraphs_status_ ps
,account_ aac.id_stage =
st.id_stageac.id_basis_sal = sa.id_salary_accountst.id_contract =
%p3[i]%ac.id_paragraph = ps.id_paragraphsa.id_account =
a.id_accountps.Status_order <> 2);;
Основания
зачисления (Kind_Basis_Action)
Select k.Name
,k.idk_basis_actionkind_basis_action_
kk.idk_basis_action = 1700
Основания
окончания (End_Education_KBA)
Select k.Name
,k.idk_basis_actionkind_basis_action_
kk.idk_b_a_main = Decode(%p1[i]%, 201, 2000, 6000)
Параграфы
планов ПК (Plan_Paragraphs)
Select ps.note
,ps.summary
,ps.Status_Text
,ps.hisdate
,ps.d_creation
,ps.d_modification
,ps.id_paragraph
,ps.id_order
,ps.idk_order
,ps.Status_order
,ps.id_erp_userparagraphs_status_
psps.idk_order = 902ps.d_creation >= to_date(concat('01.01.', %p1[s]%),
'dd.mm.yyyy')ps.d_creation <= to_date(concat('31.12.', %p1[s]%),
'dd.mm.yyyy')
Приказы человека
(Orders).name_kind_paragraph
,ps.Status_Text
,eg.Name
,Casesp.idk_level_speciality In (6,
24, 34) Then.Name || '. '|| sp.Name Name
,os.d_start
,kt.Name
,ts_.Get_DivisionName(sd.id_d_institute,
Sysdate, 1, 1)
,ps2.Status_Text
,ps2.name_Kind_paragraph
,ps.d_creation
,ps.d_modification
,ps.id_order
,ps.id_paragraph
,ps.idk_order
,ps.status_order
students_ s
,orders_students_ os
,paragraphs_status_ ps
,paragraphs_status_ ps2
,student_groups_ eg
,speciality_ sp
,speciality_ spm
,specialities_division_ sd
,kind_training_ kt
,contracts_ cs.id_e =
%p1[i]%os.id_student = s.id_studentps.id_paragraph =
os.id_paragrapheg.id_ed_group = s.id_ed_groupeg.id_d_specialitie =
sd.id_d_specialitiesp.id_speciality = sd.id_specialitysp.idk_level_speciality =
70kt.idk_training = sd.idk_trainingc.id_paragraph(+) =
s.id_order_contractc.id_paragraph =
ps2.id_paragraph(+)sp.parent_kind_speciality = spm.id_speciality(+)
.name_kind_paragraph
,ps.Status_Text
,eg.Name
,Casesp.idk_level_speciality In (6,
24, 34) Then.Name || '. '|| sp.Name Name
,s.d_start
,kt.Name
,ts_.Get_DivisionName(sd.id_d_institute,
Sysdate, 1, 1)
,ps2.Status_Text
,ps2.name_Kind_paragraph
,ps.d_creation
,ps.d_modification
,ps.id_order
,ps.id_paragraph
,ps.idk_order
,ps.status_order
students_ s
,paragraphs_status_ ps
,paragraphs_status_ ps2
,student_groups_ eg
,speciality_ sp
,speciality_ spm
,specialities_division_ sd
,kind_training_ kt
,contracts_ cs.id_e = %p1[i]%ps.id_paragraph
= s.id_order_starteg.id_ed_group = s.id_ed_groupeg.id_d_specialitie =
sd.id_d_specialitiesp.id_speciality = sd.id_specialitysp.idk_level_speciality =
70kt.idk_training = sd.idk_trainingc.id_paragraph(+) =
s.id_order_contractc.id_paragraph =
ps2.id_paragraph(+)sp.parent_kind_speciality = spm.id_speciality(+)
ALLps.name_kind_paragraph
,ps.Status_Text
,null
,null
,o.d_end
,null
,null
,null
,null
,ps.d_creation
,ps.d_modification
,ps.id_order
,ps.id_paragraph
,ps.idk_order
,ps.status_orderold_surnames_ o
,paragraphs_status_ pso.id_e =
%p1[i]%o.id_paragraph = ps.id_paragraph
Ссылка на договор
(Contracts)ps.Status_Text
,ko.Name
,c.d_start
,c.d_end
,c.id_contract
,c.id_paragraph
,ps.id_order
,ps.idk_order
,ps.Status_order
contracts_ c
,employees_ e
,paragraphs_status_ ps
Сформировать начисление
(Create_New_Nach)Number;nvl(pay_education_.Go_Account_Contract(st.id_contract
,st.d_start
,st.d_end
,%p2[d]%
,%p3[i]%
,st.id_stage
,0
,0)
,0)istages_ stst.id_contract =
%p1[i]%;;
Удаление студента
(Delete_Student)_p Number;_o Number;
Begin
-
Удаляем договор, если он есть
If %p1[i]% Is Not
Nullc.id_paragraphid_pContracts_ cc.id_contract = %p1[i]%;p.id_order Into id_o
From Paragraphs_ p Where p.id_paragraph = id_p;
From specialities_contract_ sc Where
sc.id_contract = %p1[i]%;From contract_sources_ cs Where cs.id_contract =
%p1[i]%;
--
Попытаемся удалить все сформированные начисления (если они не подписаны)
For cur In (Select sa.id_account
,sa.id_salary_accountsalary_account_
sa
,accounts_contract_ ac
,stages_ stsa.id_basis_sal_charge =
ac.id_basis_salac.id_stage = st.id_stagest.id_contract = %p1[i]%) Loop
- Удаляем проводкиFrom
spent_ ss.id_salary_account = cur.id_salary_account;
- Удаляем позицию расчётаFrom
salary_account_ sasa.id_salary_account = cur.id_salary_account;
--
В расчёте может быть ещё 1 запись в позициях расчёта по НДСу
Delete From account_ aa.id_account =
cur.id_accountNot Exists (Select 'x'salary_account_ sasa.id_account =
cur.id_account);
End
Loop;
-
Теперь удаляем все направления и основания начисления!
For cur In (Select ac.id_basis_sal
,ac.id_account_contractaccounts_contract_
ac
,stages_ stst.id_contract =
%p1[i]%st.id_stage = ac.id_stage) Loop
- счёт по этапу договоруFrom
accounts_contract_ acac.id_account_contract = cur.id_account_contract;
- основание по этому счётуFrom
basis_salary_ bsbs.id_basis_sal = cur.id_basis_sal;Loop;
- Этапы в договореFrom
stages_ s Where s.id_contract = %p1[i]%;
- Представители в договореFrom
representatives_ r Where r.id_paragraph = id_p;
- Наконец,
сам договорFrom
contracts_ c Where c.id_contract = %p1[i]%;
--
Обнуляем ссылку на договор, иначе удалить документ договора нельзя
Update Students_ s Set
s.id_order_contract = null Where s.id_order_contract = id_p;From paragraphs_ p
Where p.id_paragraph = id_p;From orders_ o Where o.id_order = id_o;
End
If;
-Удаляем
студента и все его приказы
For cur In (Select os.id_paragraph
,p.id_orderOrders_Students_ os
,paragraphs_ pos.id_student =
%p2[i]%p.id_paragraph = os.id_paragraph)
From orders_students_
osos.id_paragraph = cur.id_paragraph;From paragraphs_ p Where p.id_paragraph =
cur.id_paragraph;From orders_ o Where o.id_order = cur.id_order;;Loop;From
students_ s Where s.id_student = %p2[i]%;
;
Участники
(Listeners)e.full_fio
,eg.Name
,s.d_start
,(Select os2.d_startorders_students_
os2
,paragraphs_ pos2.id_student =
s.id_studentos2.id_paragraph = p.id_paragraphp.idk_order In (201, 207))
,rcg.d_end
,kba.Name
,ps.Status_Text
,(Select
ps2.Status_Textorders_students_ os2
,paragraphs_status_
ps2os2.id_student = s.id_studentos2.id_paragraph =
ps2.id_paragraphps2.idk_order In (201, 207))
,psc.status_text
,(Select Max(ts_.Get_Org_Name(o.id_organization,
Sysdate))representatives_ r
,organizations_ or.id_represented =
c.id_with_whomr.id_representative = o.id_contractor)
,/*nvl(*/(Select
Sum(sa.money)stages_ st
,accounts_contract_ ac
,salary_account_ sa
,spent_ s
,paragraphs_ pst.id_contract =
c.id_contractst.id_stage = ac.id_stageac.id_basis_sal =
sa.id_basis_sal_chargesa.id_salary_account = s.id_salary_accountac.id_paragraph
= p.id_paragraphp.idk_order In (444, 436))
/*,(Select Sum(st.money)stages_
stst.id_contract = c.id_contract))*/
,d.series || Decode(d.series, '',
'', ' ') || d.identifier
,ct.heard_hours
,rcg.hours
,(Select
Max(ct2.when_given1)certificate_ ct2
,kind_level_formation_ klfct2.id_e1
= s.id_ect2.idk_level_formation = klf.idk_level_formationklf.qualifier = 96ct2.when_given1
<= s.d_start)
,s.id_student
,e.id_e
,eg.id_ed_group
,s.idkba_transfer
,s.id_order_start
,ps.id_order
,ps.idk_order
,c.id_contract
,ps.Status_order
,s.id_order_contract
,ps.id_erp_user
,e.id_contractor
- Рамочный договор
,decode(cm.id_contract
,''
,''
,nvl((Select
pc.Valueparameters_contract_ pcpc.idk_parameter_contract = 4pc.id_contract =
cm.id_contract)
,psm.Status_Text)) Номер_рд
,cm.id_contract
,decode(cm.id_contract
,''
,''
,(Select
ts_.Get_Org_Name(o.id_organization, c.d_start)organizations_ oo.id_contractor =
cm.id_with_whom))
,(Select Sum(sa.money)stages_ st
,accounts_contract_ ac
,salary_account_ sa
,spent_ s
,paragraphs_ pst.id_contract =
c.id_contractst.id_stage = ac.id_stageac.id_basis_sal = sa.id_basis_sal_chargesa.id_salary_account
= s.id_salary_accountac.id_paragraph = p.id_paragraphsa.id_charge = 40811 -- НДСp.idk_order
In (444, 436))
,(Select
ps2.id_paragraphorders_students_ os2
,paragraphs_status_
ps2os2.id_student = s.id_studentos2.id_paragraph = ps2.id_paragraphps2.idk_order
In (201, 207))
,(Select
ps2.id_erp_userorders_students_ os2
,paragraphs_status_
ps2os2.id_student = s.id_studentos2.id_paragraph =
ps2.id_paragraphps2.idk_order In (201, 207))
,(Select
ps2.Status_orderorders_students_ os2
,paragraphs_status_
ps2os2.id_student = s.id_studentos2.id_paragraph =
ps2.id_paragraphps2.idk_order In (201, 207))
,ct.id_certificate
,d.id_doc
,kd.name
,kd.idk_doc
,d.when_given
,m.registration_number
,m.id_mag_r_diplom
students_ s
,employees_history_ e
,educational_group_ eg
,kind_basis_action_ kba
,paragraphs_status_ ps
,paragraphs_status_ psc
,contracts_ c
,contracts_ cm
,paragraphs_status_ psm
,magazine_registr_diplomas_ m
,documents_ d
,kind_document_ kd
,certificate_ ct
- Сроки обучения
,(Select rcg2.id_ed_group
,Min(rcg2.d_start) d_start
,Max(rcg2.d_end) d_end
,sum(elumk.hours)
hoursrefresher_course_group_ rcg2
,educational_load_umk_
elumkrcg2.id_refresher_course_plan = %p1[i]%elumk.id_methodical_complex(+) =
rcg2.id_methodical_complexBy rcg2.id_ed_group
-,elumk.hours
) rcg
e.id_e = s.id_es.d_start Between
e.d_start And nvl(e.d_end, s.d_start)
s.id_ed_group =
rcg.id_ed_groups.d_start Between rcg.d_start And nvl(rcg.d_end,
s.d_start)eg.id_ed_group = s.id_ed_group
kba.idk_basis_action =
s.idkba_transferps.id_paragraph = s.id_order_start
psc.id_paragraph(+) =
s.id_order_contractc.id_paragraph(+) = psc.id_paragraphc.id_contract_main =
cm.id_contract(+)cm.id_paragraph = psm.id_paragraph(+)
m.id_student(+) = s.id_studentm.id_certificate
= ct.id_certificate(+)d.id_doc(+) = ct.id_docd.idk_doc = kd.idk_doc(+)
Виды сертификатов
(Get_Kind_Documents)kd.Name
,kd.idk_dockind_document_
kdkd.idk_doc In (474151, 474152, 474153)
Выдать сертификат об окончании
(Make_New_Cert_By_Params)_id_doc Number;_id_cert Number;
- Добавляем документInto
documents_
(idk_doc, when_given, identifier,
who_given, id_e)
(%p4[i]%
,(Select
Max(os.d_start)orders_students_ osos.id_student = %p1[i]%)
,%p5[i]%
,ts_.Get_Header(13
,(Select Max(os.d_start)orders_students_
osos.id_student = %p1[i]%))
,(Select st.id_e From students_ st
Where st.id_student = %p1[i]%))id_doc Into new_id_doc;
- Добавляем в него сертификатInto
certificate_
(d_start
,d_end
,id_speciality
,id_doc
,idk_level_formation
,heard_hours)
((Select st.d_start From students_
st Where st.id_student = %p1[i]%)
,(Select
Max(os.d_start)orders_students_ osos.id_student = %p1[i]%)
,(Select sg.id_specialitystudents_ s
,student_groups_ sgs.id_student =
%p1[i]%s.id_ed_group = sg.id_ed_group)
,new_id_doc
,(Select
sg.idk_level_formationstudents_ s
,student_groups_ sgs.id_student =
%p1[i]%s.id_ed_group = sg.id_ed_group)
,%p6[i]%)id_certificate Into
new_id_cert;
--
Теперь - регистрируем его в журнале выдачи дипломов
Insert Into
magazine_registr_diplomas_
(id_paragraph_magazine
,id_certificate
,registration_number
,id_student
,id_e)
(%p2[i]%
,new_id_cert
,%p3[i]%
,%p1[i]%
,(Select st.id_e From students_ st
Where st.id_student = %p1[i]%));;
Забрать сертификат
(Delete_Certificate)_d Number;cr.id_docid_dcertificate_ crcr.id_certificate =
%p1[i]%;From magazine_registr_diplomas_ m Where m.id_certificate = %p1[i]%;From
certificate_ cr Where cr.id_certificate = %p1[i]%;From documents_ d Where
d.id_doc = id_d;;
Поиск журнала
(Find_Magazine_Reg_Dip)ps.id_paragraph
,ps.idk_order
,ps.name_Kind_paragraph
,ps.id_metaterm
,ps.id_order
,ps.temp_identifier
,ps.identifier
,ps.hisdate
,ps.Status_order
,ps.Status_Text
,ps.d_creation
,ps.id_erp_user
,''magazine_registr_diplomas_ m
,paragraphs_status_ ps
,students_ st
,student_groups_
egm.id_paragraph_magazine = ps.id_paragraphm.id_student =
st.id_studentst.id_ed_group = eg.id_ed_groupeg.idk_level_speciality = 70rownum
= 1
Регистрационный номер в журнале
(Get_Reg_Number_By_ID_Paragraph)(Select Max(m.registration_number)magazine_registr_diplomas_
mm.id_paragraph_magazine = %p1[i]%)
,(Select
Max(to_number(doc.identifier))magazine_registr_diplomas_ m
,students_ st
,student_groups_ eg
,certificate_ cr
,documents_
docm.id_paragraph_magazine = %p1[i]%--2434125m.id_student = st.id_studentst.id_ed_group
= eg.id_ed_groupeg.idk_level_speciality = 70m.id_certificate =
cr.id_certificatedoc.idk_doc = %p2[i]%--474152cr.id_doc = doc.id_doc)
From
dual
Автопредставитель
(Autorepr)
-
Сперва удалим того представителя
delete from representatives_ r
r.id_contract = %p1[i]%r.id_represented = (Select c.id_who From contracts_ c
Where c.id_contract = %p1[i]%)r.d_start = (Select c.d_start From contracts_ c
Where c.id_contract = %p1[i]%);
- Потом - добавим новогоinto
representatives_ r
(id_contract,_represented,_representative,_start,_paragraph,_of_attorney,_post)
(select
c.id_contract,.id_who,.id_contractor,.d_start,.id_paragraph,
nvl((Select
'доверенности от ' ||
to_char(doc.when_given,
'dd.mm.yyyy') || 'г.
№ ' ||.identifierdocuments_ doc, kind_document_ kdkd.idk_doc =
doc.idk_docdoc.idk_doc = 26doc.id_e = emp.id_edoc.when_given =
(Select max(d.when_given)documents_
dd.idk_doc = doc.idk_docd.id_e = doc.id_ed.when_given <= sysdate)
and
rownum = 1),
'Устава
университета'),.id_post
from contracts_ c,_ p,_signed_ ws,_
st,_ emp,_staff_ us,_categories_ pc
c.id_contract =
%p1[i]%c.id_paragraph = p.id_paragraphp.idk_order >= 400p.id_order =
ws.id_orderws.id_staff = st.id_staffws.index_record = 1emp.id_e =
st.id_est.id_units = us.id_unitsus.idg_post = pc.idg_postrownum = 1);;
Виды договоров
(Kind_Order)ko.Name
,ko.idk_orderkind_order_
koko.idk_order = 68924
Виды направлений
(Kind_Direction)ko.Name, ko.idk_orderkind_order_ koko.idk_order In (431, 433,
434, 62)
Добавить направление
(Add_Direction)Into Accounts_Contract_
(Id_Paragraph, Id_Stage, Money,
d_Start, d_End)
(Select %p1[i]%
,s.id_stage
,s.money
,s.d_start
,s.d_endStages_ ss.id_contract =
%p2[i]%)
Добавление договора
(Add_Contract)_c Number;
- ДоговорInto
contracts_
(id_with_whom, id_who, d_start,
d_end, id_paragraph, id_source)
((Select e.id_contractor From
employees_ e Where e.id_e = %p1[i]%)
,(Select
o.id_contractorvalues_setup_ vs
,organizations_ ovs.id_manual =
100vs.Value = o.id_organizationvs.d_start =
(Select Max(vs2.d_start)values_setup_
vs2vs2.d_start <= Sysdatevs2.id_manual = vs.id_manual))
,%p3[d]%
,%p4[d]%
,%p5[i]%
,%p6[i]%)id_contract Into id_c;
- Этап с суммойInto
stages_
(id_contract, id_paragraph, d_start,
d_end, d_opening, subject, money, identifier)
(id_c
,%p5[i]%
,%p3[d]%
,%p4[d]%
,%p3[d]%
,'Повышение
квалификации'
,%p11[s]%
,1);
Into contract_sources_
(id_contract, id_type_value,
id_source, d_start, Value)
(id_c, 2, %p6[i]%, %p3[d]%, 100);
Into specialities_contract_
(id_contract, id_d_specialitie,
idk_status_trainee, d_start)
(id_c, %p7[i]%, 1, %p3[d]%);
--
Представитель студента - организация%p2[i]% is not null
ThenInto representatives_ r
(id_contract
,id_represented
,id_representative
,d_start
,id_paragraph
,r.power_of_attorney
,r.representative_organization
,r.representative_organization_r
,r.id_post)c.id_contract
,c.id_with_whom
,%p2[i]%
,%p3[d]%
,c.id_paragraph
,%p13[s]%
,%p14[s]%
,%p15[s]%
,%p16[i]%contracts_ cc.id_contract =
id_c;
End
If;
-
Представитель МИИТа по первой подписи в договоре
Insert Into representatives_ r
(id_contract
,id_represented
,id_representative
,d_start
,id_paragraph
,power_of_attorney
,id_post)
(Select c.id_contract
,c.id_who
,emp.id_contractor
,c.d_start
,c.id_paragraph
,nvl((Select 'доверенности от
' ||_char(doc.when_given, 'dd.mm.yyyy') || 'г. № '
||.identifierdocuments_ doc
,kind_document_ kdkd.idk_doc =
doc.idk_docdoc.idk_doc = 26doc.id_e = emp.id_edoc.when_given =
(Select Max(d.when_given)documents_
dd.idk_doc = doc.idk_docd.id_e = doc.id_ed.when_given <= Sysdate)
And
rownum = 1)
,'Устава
университета')
,pc.id_post
From contracts_ c
,paragraphs_ p
,who_signed_ ws
,staff_ st
,employees_ emp
,units_staff_ us
,posts_categories_ pc
c.id_contract = id_cc.id_paragraph =
p.id_paragraphp.idk_order >= 400p.id_order = ws.id_orderws.id_staff =
st.id_staffws.index_record = 1emp.id_e = st.id_est.id_units =
us.id_unitsus.idg_post = pc.idg_postrownum = 1);
%p12[s]% is not null students_ s Set
s.id_order_contract = %p5[i]% Where s.id_student = %p12[s]% ;if;;
Изменение параметра
(Update_PC)_st Number;
-Дата начала%p1[s]%
= '0' thencontracts_ c Set c.d_start = %p3[d]% Where c.id_contract = %p2[i]%;
stages_ s Set s.d_start = %p3[d]%
Where s.id_contract = %p2[i]%;
contract_sources_ cscs.d_start = %p3[d]%cs.id_contract
= %p2[i]%;
representatives_ rr.d_start =
%p3[d]%r.id_contract = %p2[i]%;if;
-Дата окончания%p1[s]%
= '1' thencontracts_ c Set c.d_end = %p5[d]% Where c.id_contract = %p2[i]%;
stages_ s Set s.d_end = %p5[d]%
Where s.id_contract = %p2[i]%;if;
-Организация%p1[s]% =
'2'%p6[s]% Is Not Null ThenInto representatives_ r(Select c.id_contract
id_contract
,%p4[i]% id_represented
,c.id_paragraph id_paragraph
,c.d_start d_start contracts_
cc.id_contract = %p2[i]%) c(r.id_contract = c.id_contract and r.id_represented
= c.id_represented)Matched Thenr.id_representative = %p6[i]%,.power_of_attorney
= %p11[s]%,.representative_organization =
%p12[s]%,.representative_organization_r = %p13[s]%,.id_post =
%p14[i]%r.id_contract = %p2[i]%r.id_represented = %p4[i]%Not Matched Then
(id_contract, id_represented,
d_start, id_paragraph, id_representative , power_of_attorney,
representative_organization, representative_organization_r, id_post)(%p2[i]%,
%p4[i]%, c.d_start, c.id_paragraph, %p6[i]%, %p11[s]%, %p12[s]%, %p13[s]%,
%p14[i]%);From representatives_ rr.id_contract = %p2[i]%r.id_represented =
%p4[i]%;
End
If;If;
-Источник
финансирования
if %p1[s]% = '3'
thenmin('1')is_stdualExists (Select 'x'stages_ st
,accounts_contract_ ac
,salary_account_ sast.id_contract = %p2[i]%st.id_stage
= ac.id_stageac.id_basis_sal = sa.id_basis_sal_charge);is_st Is Not Null
Then_application_error(-20101
,'В
договоре обнаружены сформированные начисления!');
End If;
contract_sources_ cscs.id_source =
%p7[i]%cs.id_contract = %p2[i]%;if;
-Сумма%p1[s]% =
'4' thenmin('1')is_stdualExists (Select 'x'stages_ st
,accounts_contract_ ac
,salary_account_ sast.id_contract =
%p2[i]%st.id_stage = ac.id_stageac.id_basis_sal = sa.id_basis_sal_charge);is_st
Is Not Null
Then_application_error(-20101
,'В
договоре обнаружены сформированные начисления!');
End If;stages_ s Set s.money =
%p8[s]% Where s.id_contract = %p2[i]%;accounts_contract_ acac.money =
%p8[s]%ac.id_stage In (Select st.id_stagestages_ stst.id_contract =
%p2[i]%);if;
-Вид договора%p1[s]%
= '5' thenparagraphs_ pp.idk_order = %p9[s]%p.id_paragraph =
(Select c.id_paragraph From
contracts_ c Where c.id_contract = %p2[i]%);if;
-Вид направления%p1[s]%
= '6' thenparagraphs_ pp.idk_order = %p10[s]%p.id_paragraph =
(Select ac.id_paragraphaccounts_contract_
ac, stages_ ss.id_contract = %p2[i]%s.id_stage = ac.id_stage);if;
-НДС в договоре%p1[s]%
= '7'
Then
-
Наличие начисленийMin(1)
Into is_ststages_ st
,accounts_contract_ ac
,salary_account_ sa
,spent_ sst.id_contract =
%p2[i]%st.id_stage = ac.id_stageac.id_basis_sal =
sa.id_basis_sal_chargesa.id_salary_account = s.id_salary_account;is_st Is Not
Null
Then_application_error(-20101
,'В
договоре обнаружены сформированные начисления!');
End If;
%p15[s]% = '1'Into
parameters_contract_ pc(Select c.id_contractcontracts_ cc.id_contract =
%p2[i]%) c(pc.id_contract = c.id_contract And pc.idk_parameter_contract =
6)Matched Thenpc.Value = '1'pc.id_contract = %p2[i]%pc.idk_parameter_contract =
6Not Matched Then
(id_contract,
idk_parameter_contract, Value)
(%p2[i]%, 6, '1');From
parameters_contract_ pcpc.id_contract = %p2[i]%pc.idk_parameter_contract = 6;
End
If;If;
-Срок
отрыва от производства в договоре
If %p1[s]% = '8'%p16[s]% Is Not
NullInto parameters_contract_ pc(Select c.id_contractcontracts_ cc.id_contract
= %p2[i]%) c(pc.id_contract = c.id_contract And pc.idk_parameter_contract =
5)Matched Thenpc.Value = %p16[s]%pc.id_contract =
%p2[i]%pc.idk_parameter_contract = 5Not Matched Then
(id_contract,
idk_parameter_contract, Value)
(%p2[i]%, 5, %p16[s]%);From
parameters_contract_ pcpc.id_contract = %p2[i]%pc.idk_parameter_contract =
5;If;If;
;
Параметры договора
(Contr_Params)c.d_start -- 0) Дата начала
,c.d_end
-- 1) Дата окончания
,r.id_representative
-- 2) ID Контрагента организации-представителя
,cs.id_source
-- 3) ID Источника финансирования
,sf.Name
-- 4) Источник финансирования
,psc.id_order
-- 5) ID Ордера договора
,psc.Status_order
-- 7) Статус договора
,koc.Name
-- 8) Вид договора
,ps.id_paragraph
-- 9) ID Параграфа направления
,ps.id_order
-- 10) ID Ордера направления
,ps.Status_order
-- 11) Статус направления
,ps.Status_text
-- 12) Направление
,ps.idk_order
-- 13) ID Вида направления
,ko.Name
-- 14) Вид направления
,r.power_of_attorney
-- 15) Основание
,r.representative_organization
-- 16) ФИО представителя (им. пад.)
,r.representative_organization_r --
17) ФИО представителя
(род.
пад.)
,r.id_post
-- 18) ID Должности
,r.Name
-- 19) Должность
,r.org_name -- 20) Организация
,CaseExists (Select 'x'parameters_contract_
pcpc.id_contract = c.id_contractpc.idk_parameter_contract = 6pc.value = '1')
Then
-- 21) Наличие НДС
,(Select substr(pc.value, 1,
instr(pc.value, ' по')
- 1)parameters_contract_ pcpc.id_contract =
c.id_contractpc.idk_parameter_contract = 5) -- 22) Начало отрыва
,(Select substr(pc.value,
instr(pc.value, ' по')
+ 4)parameters_contract_ pcpc.id_contract =
c.id_contractpc.idk_parameter_contract = 5) -- 23) Окончание отрыва
,s.money -- 24) Стоимость обучения
contracts_ c
,contract_sources_ cs
,source_financing_ sf
,paragraphs_status_ ps
,paragraphs_status_ psc
,kind_order_ koc
,kind_order_ ko
,(Select ac.*accounts_contract_ ac
,stages_ st
,paragraphs_ pst.id_contract =
%p1[i]%st.id_stage = ac.id_stageac.id_paragraph = p.id_paragraphp.idk_order In
(62, 431, 433, 434, 435, 445)) ac
,stages_ s
,(Select r.id_representative
,r.power_of_attorney
,r.representative_organization
,r.representative_organization_r
,r.id_post
,p.Name
,r.id_contract
,ts_.Get_Org_Name(o.id_organization,
r.d_start) org_namerepresentatives_ r
,contracts_ c
,organizations_ o
,post_ pc.id_contract =
%p1[i]%r.id_represented = c.id_with_whomr.id_representative =
o.id_contractorr.id_contract = c.id_contractp.id_post(+) = r.id_post) r
c.id_contract = %p1[i]%c.id_contract
= cs.id_contract(+)cs.id_source = sf.id_sourcec.id_paragraph =
psc.id_paragraphpsc.idk_order = koc.idk_orders.id_contract(+) =
c.id_contractac.id_stage(+) = s.id_stageac.id_paragraph =
ps.id_paragraph(+)ko.idk_order(+) = ps.idk_orderc.id_contract =
r.id_contract(+)
-And ps.idk_order in (62, 431, 433,
434, 435, 445)
Представители в договоре
(Get_List_Representatives_By_ID_Contract)r.d_start
,r.d_end
,ts_.Get_Org_Name(o.id_organization,
r.d_start)
,eh.full_fio
,p.Name
,r.power_of_attorney
,r.id_contract
,r.id_represented
,r.id_representative
,r.id_post
,r.id_paragraphrepresentatives_ r
,post_ p
,employees_history_ eh
,contracts_ c
,organizations_ or.id_post =
p.id_postr.id_contract = %p1[i]%r.id_contract = c.id_contractr.id_represented =
o.id_contractorr.id_representative = eh.id_contractorr.d_start Between
eh.d_start And nvl(eh.d_end, r.d_start)
Удаление договора
(Delete_Contract)_p Number;_o Number;c.id_paragraphid_pContracts_
cc.id_contract = %p1[i]%;
p.id_order Into id_o From
Paragraphs_ p Where p.id_paragraph = id_p;
From specialities_contract_ sc Where
sc.id_contract = %p1[i]%;From contract_sources_ cs Where cs.id_contract =
%p1[i]%;From accounts_contract_ acac.id_stage In
(Select st.id_stage From stages_ st
Where st.id_contract = %p1[i]%);From stages_ s Where s.id_contract =
%p1[i]%;From representatives_ r Where r.id_paragraph = id_p;From contracts_ c
Where c.id_contract = %p1[i]%;Students_ s Set s.id_order_contract = null Where
s.id_order_contract = id_p;From paragraphs_ p Where p.id_paragraph = id_p;From
orders_ o Where o.id_order = id_o;;
Прошедшее обучение
(Get_Stat_Data_By_Period)res.d_name
,res.spec_name
,res.fio
,res.sg_name
,res.d_start
,res.d_end
,res.o_start
,(Select
Max(os.d_end)orders_students_ os
,paragraphs_status_ psos.id_student
= res.id_studentos.id_paragraph = ps.id_paragraphps.idk_order In
(207)ps.Status_order <> 3) o_end
,res.o_contract
,res.org
,(Select Sum(sa.money)stages_ st
,accounts_contract_ ac
,paragraphs_ p
,salary_account_ sa
,spent_ sst.id_contract = res.id_contractst.id_stage
= ac.id_stageac.id_paragraph = p.id_paragraphp.idk_order In (436,
444)ac.id_basis_sal = sa.id_basis_sal_chargesa.id_salary_account =
s.id_salary_account) Sum
,(Select Sum(sa.money)stages_ st
,accounts_contract_ ac
,paragraphs_ p
,salary_account_ sa
,spent_ sst.id_contract =
res.id_contractst.id_stage = ac.id_stageac.id_paragraph =
p.id_paragraphp.idk_order In (436, 444)ac.id_basis_sal =
sa.id_basis_sal_chargesa.id_charge = 40811sa.id_salary_account =
s.id_salary_account) sum_nds
,res.cert_num
,res.heard_hours
,m.hours
,null -- Last_Date
,null -- Contract_Main
,null -- Org_Main
,res.id_e
,res.id_contractor
,res.id_student
,res.id_ed_group
(Select sc.Name spec_name
,e.surname || ' ' || e.Name || ' '
|| e.patronymic || ', ' ||.date_of_birth fio
,sg.Name sg_name
,ad.abbreviation d_name
,st.d_start
,doc.series ||(doc.series
,''
,''
,Decode(doc.identifier, '', '', '
')) ||.identifier cert_num
,cr.heard_hours
,st.id_e
,e.id_contractor
,st.id_student
,st.id_ed_group
,ps.Status_Text o_start
,(Select
Max(os.d_end)orders_students_ os
,paragraphs_status_ psos.id_student
= st.id_studentos.id_paragraph = ps.id_paragraphps.idk_order In
(207)ps.Status_order <> 3) d_end
,psc.Status_Text o_contract
,c.d_end contract_end
,c.id_contract
,sd.id_speciality
,Decode(c.id_contract
,''
,''
,(Select
ts_.Get_Org_Name(o.id_organization, r.d_start)representatives_ r
,organizations_ or.id_contract =
c.id_contractst.d_start Between r.d_start And(r.d_end,
st.d_start)r.id_representative = o.id_contractor)) org
From
(
-
всё, если необычный пользователь
Select.id_ddivision_ dL
Where
bs_.isUnusual > 0All
-
по ролям, если обычный пользователь
Select dL.id_ddivision_
dLbs_.isUnusual = 0dL.id_metaterm In
(Select
r.id_metatermTable(access_data_.Get_Roles('1403', 1)) r)
Union
All
-
по ролям, если обычный пользователь
Select dL.id_ddivision_
dLbs_.isUnusual = 0Exists
(Select
r.id_metatermTable(access_data_.Get_Roles('1403', 1)) rr.id_metaterm Is Null))
d
,students_ st
,paragraphs_status_ ps
,educational_group_ sg
,specialities_division_ sd
,speciality_ sc
,employees_ e
,contracts_ c
,paragraphs_status_ psc
,magazine_registr_diplomas_ m
,certificate_ cr
,documents_ doc
,attributes_divisions_ ad
st.d_start <= nvl(%p2[d]%,
st.d_start)st.id_ed_group = sg.id_ed_groupst.id_e = e.id_e
sg.id_d_specialitie =
sd.id_d_specialitiesd.id_speciality = sc.id_specialitysc.idk_level_speciality =
70 -- ПК
st.id_student =
m.id_student(+)m.id_certificate = cr.id_certificate(+)cr.id_doc = doc.id_doc(+)
sd.id_d_institute = d.id_dd.id_d =
ad.id_dst.d_start between ad.d_start and nvl(ad.d_end, st.d_start)
st.id_order_start =
ps.id_paragraphst.id_order_contract = c.id_paragraph(+)c.id_paragraph =
psc.id_paragraph(+)) res
--
плановые часы из методических комплексов
,(Select
d.id_speciality
,Sum(e.hours)
hoursmethodical_complex_ m
,disciplines_ d
,educational_load_umk_
em.id_discipline = d.id_disciplinem.id_methodical_complex =
e.id_methodical_complexBy d.id_speciality) m
(res.d_start <= %p2[d]% Or
%p2[d]% Is Null)(res.d_end >= %p1[d]% Or res.d_end Is Null Or %p1[d]% Is
Null)res.id_speciality = m.id_speciality(+)
Приложение
Г. Образцы документов
План
повышения квалификации
ФЕДЕРАЛЬНОЕ
АГЕНТСТВО ЖЕЛЕЗНОДОРОЖНОГО ТРАНСПОРТА
ГОСУДАРСТВЕННОЕ
ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО
ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
"МОСКОВСКИЙ
ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ПУТЕЙ
СООБЩЕНИЯ"
(МИИТ)
Институт
экономики и финансов
утверждаю
Первый проректор - проректор по учебной работе
________________ В.В. Виноградов
«___» __________ 2011 г.
П Л А Н
на 2011 год
№№
п/п
|
Наименование
программы
|
Объем
часов
|
Форма
обучения
|
Ориентировочные
сроки проведения
|
Кафедра
организатор
|
1
|
2
|
3
|
4
|
5
|
6
|
1.
|
Анализ
результатов производственно-хозяйственной деятельности в путевом комплексе
|
72
|
дистанционная
|
январь
- январь
|
Институт
экономики и финансов
|
2.
|
Управление
штатным составом структурных подразделений ЕК АСУТР
|
72
|
дистанционная
|
март
- апрель - апрель
|
Институт
экономики и финансов
|
Сертификат
о прохождении повышения квалификации
|
|
Весниной
|
Анастасия
Анатольевне
|
|
|
21
марта 2011
|
|
|
|
Институт
экономики и финансов МИИТа
|
|
|
|
|
|
|
|
программе:
|
«Управление
штатным составом структурных подразделений ЕК АСУТР»
|
|
|
72
часа
|
|
|
|
|
|
|
/В.П.Чуприков/
|
|
/В.Г.Круглова/
|
|
|
|
|
|
Москва
|
|
|
|
104001
|
|
|
|
|
|
|
|
|
|
|
|
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ЖЕЛЕЗНОДОРОЖНОГО
ТРАНСПОРТА
ГОСУДАРСТВЕННОЕ
ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО
ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
"МОСКОВСКИЙ
ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ПУТЕЙ
СООБЩЕНИЯ"
(МИИТ)
ПРИКАЗ
О зачислении на обучение по программе
дополнительного профессионального образования
В соответствии с ИЭФ, утверждённым .
ПРИКАЗЫВАЮ:
. , согласно прилагаемому списку в количестве 34
человек, слушателями группы 5570/1 на период обучения с 21.03.2011 по
20.04.2011 по программе "Управление штатным составом структурных
подразделений ЕК АСУТР".
. Назначить:
менеджер учебной группы Шишову Л.С.
. Менеджеру и старосте группы обеспечить ведение
журнала учебных занятий группы и выполнение слушателями Правил внутреннего
распорядка.
|
|
|
Организатор
обучения
|
|
|
Менеджер
учебной группы Л.С.Шишова
|
|
|
СПИСОК слушателей группы № 5570/1,
зачисленных на повышение квалификации в период с
21.03.2011 по 20.04.2011
по теме "Управление штатным составом структурных подразделений ЕК
АСУТР"
72
учебных часа
№
п/п
|
Фамилия
|
Имя
|
Отчество
|
Предприятие
|
Подразделение,
отдел
|
Должность
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
1.
|
Новикова
|
Светлана
|
Александровна
|
|
Дирекция
тяги - структурное подразделение Забайкальской ж.д., ТЧЭ Амурское
|
Заместитель
начальника депо по экономике и финансам
|
2.
|
Литовка
|
Ольга
|
Владимировна
|
|
ДТ
|
Экономист
1 кат.
|
3.
|
Симакова
|
Елена
|
Юрьевна
|
|
Дирекция
тяги структурное подразделение Восточно-Сибирской ж.д., ТЧЭ -1 Тайшет
|
Начальник
финансово-экономического отдела
|
4.
|
Саватеева
|
Ольга
|
Николаевна
|
|
Дирекция
тяги структурное подразделение Западно - Сибирской ж.д., ТЧЭ-10 Карасук
|
Ведущий
экономист
|
5.
|
Крашенникова
|
Лариса
|
Викторовна
|
|
ТЧЭ
-2 Муром
|
Зам.
начальника депо по экономике и финансам
|
6.
|
Маслова
|
Светлана
|
Владимировна
|
|
ТЧЭ
-2 Муром
|
Зам.
начальника отдела
|
7.
|
Устинова
|
Галина
|
Викторовна
|
|
ТЧЭ-16
Красноуфимск
|
1
|
8.
|
Руссакова
|
Светлана
|
Филиповна
|
|
ТЧЭ-6
Горький Сортировочный
|
Зам.
начальника депо по экономике и финансам
|
9.
|
Козий
|
Елена
|
Анатольевна
|
Восточно-Сибирская
железная дорога
|
|
|
10.
|
Силаев
|
Александр
|
Сергеевич
|
|
Дирекция
тяги структурное подразделение Восточно-Сибирской ж.д., ТЧЭ -5 Иркутск-Сортировочный
|
Начальник
отдела
|
11.
|
Новикова
|
Лариса
|
Валерьевна
|
|
Локомотивное
эксплуатационное депо Зима
|
Специалист
по управлению персоналом
|
12.
|
Леонтьева
|
Галина
|
Александровна
|
Восточно-Сибирская
железная дорога
|
|
|
13.
|
Посвалюк
|
Татьяна
|
Евгеньевна
|
|
Дирекция
тяги структурное подразделение Горьковской ж.д., ТЧЭ_14 Юдино
|
Зам.
начальника отдела
|
14.
|
Лабзина
|
Ольга
|
Петровна
|
|
Дирекция
тяги структурное подразделение Горьковской ж.д., ТЧЭ_14 Юдино
|
Зам.
начальника депо по экономике и финансам
|
15.
|
Зудова
|
Елена
|
Евгеньевна
|
|
Дирекция
тяги структурное подразделение Горьковской ж.д., ТЧЭ-15 Агрыз
|
Зам.
начальника депо по экономике и финансам
|
16.
|
Ганеева
|
Евгения
|
Васильевна
|
|
Дирекция
тяги структурное подразделение Горьковской ж.д., ТЧЭ-15 Агрыз
|
Ведущий
экономист
|
17.
|
Веснина
|
Анастасия
|
Анатольевна
|
|
Дирекция
тяги - структурное подразделение Забайкальской ж.д., ТЧЭ Хилок
|
Начальник
сектора экономики и организации труда
|
18.
|
Кушманова
|
Ирина
|
Александровна
|
|
Дирекция
тяги - структурное подразделение Забайкальской ж.д., ТЧЭ Борзя
|
Заместитель
начальника депо по экономике и финансам
|
19.
|
Татьяна
|
Ивановна
|
|
Дирекция
тяги - структурное подразделение Забайкальской ж.д., ТЧЭ Могоча
|
Заместитель
начальника депо по экономике и финансам
|
20.
|
Епифанцева
|
Ольга
|
Васильевна
|
|
Дирекция
тяги - структурное подразделение Забайкальской ж.д., ТЧЭ Чернышевск
|
Начальник
отдела экономики и организации труда
|
21.
|
Лада
|
Елена
|
Анатольевна
|
|
Дирекция
тяги - структурное подразделение Забайкальской ж.д., ТЧЭ Белогорск
|
Заместитель
начальника депо по экономике и финансам
|
22.
|
Редькина
|
Ирина
|
Николаевна
|
|
Дирекция
тяги структурное подразделение Красноярской ж.д., ТЧЭ-7 Абакан
|
Главный
экономист
|
23.
|
Шадрин
|
Алексей
|
Витальевич
|
|
Дирекция
тяги структурное подразделение Северной ж.д., ТЧЭ-22 Печора
|
Экономист
|
24.
|
Гайдук
|
Анна
|
Ивановна
|
|
Дирекция
тяги структурное подразделение Северо-Кавказская ж.д., ТЧЭ-8 Кавказская
|
Ведущий
экономист
|
25.
|
Цопанова
|
Александра
|
Сергеевна
|
|
Дирекция
тяги структурное подразделение Северо-Кавказская ж.д., ТЧЭ-14 Сальск
|
Заместитель
начальника депо по экономике и финансам
|
26.
|
Ляпунова
|
Анжела
|
Александровна
|
|
Октябрьская
ДУД, Московский центр организации работы железнодорожных станций (ДС Ховрино)
|
Ведущий
инженер по организации и нормированию труда
|
27.
|
Кормушкина
|
Лариса
|
Александровна
|
|
Горьковская
ДУД, орган управления
|
ведущий
инженер по организации и нормированию труда
|
28.
|
Салий
|
Наталья
|
Павловна
|
|
Дирекция
тяги структурное подразделение Горьковской ж.д., ДТ
|
Начальник
отдела
|
29.
|
Шубина
|
Светлана
|
Геннадьевна
|
|
Дирекция
тяги структурное подразделение Горьковской ж.д., ТЧЭ-9 Лянгасово
|
Зам.
начальника депо по экономике и финансам
|
30.
|
Леонова
|
Татьяна
|
Евгеньевна
|
|
Дирекция
тяги структурное подразделение Горьковской ж.д., ТЧЭ-9 Лянгасово
|
Зам.
начальника отдела
|
31.
|
Заварина
|
Алла
|
Николаевна
|
|
Дирекция
тяги-структурное подразделение Приволжской ж.д., ТЧЭ-9 Анисовка
|
Начальник
сектора экономики
|
32.
|
Буйских
|
Марина
|
Евгеньевна
|
|
Дирекция
тяги структурное подразделение Горьковской ж.д., ТЧЭ-6 Горький Сортировочный
|
Зам.
начальника отдела
|
33.
|
Рякина
|
Татьяна
|
Александровна
|
|
Дирекция
тяги структурное подразделение Горьковской ж.д., ТЧЭ-8 Киров
|
Зам.
начальника депо по экономике и финансам
|
34.
|
Сычугов
|
Михаил
|
Юрьевич
|
|
Дирекция
тяги структурное подразделение Восточно-Сибирской ж.д., ДТ
|
Инженер
по нормированию труда I категории
|
Основание
Договор № _________
на оказание услуг по повышению квалификации
г. Москва «___» _________2010 года
Государственное образовательное учреждение
высшего профессионального образования «Московский государственный университет
путей сообщения» (МИИТ), именуемое в дальнейшем «Исполнитель», в лице первого
проректора - проректора по учебной работе Виноградова Валентина Васильевича,
действующего на основании доверенности от 05.03.2010 № 001/116, с одной
стороны, и государственное образовательное учреждение высшего профессионального
образования «Иркутский государственный университет путей сообщения», именуемый
в дальнейшем «Заказчик», в лице ректора Хоменко Андрея Павловича, действующего
на основании устава университета, с другой стороны, заключили настоящий договор
(в дальнейшем - Договор) о нижеследующем:
. Предмет Договора
По настоящему договору Заказчик поручает, а
Исполнитель оказывает услуги по повышению квалификации одного слушателя (далее
- Слушатель) в рамках программы «Организация маркетинга и рекламы. Экономика
предприятия» в период с 24.05.2010 по 03.06.2010, в соответствии с утвержденным
учебным планом.
. Цена и порядок расчетов
.1. Стоимость услуг по настоящему договору
составляет 16 000 (Шестнадцать тысяч) рублей 00 копеек. Услуги Исполнителя не
облагаются НДС согласно подпункту 14 пункта 2 статьи 149 главы 21 Налогового
кодекса Российской Федерации.
.2. Оплата оказанных услуг производится не
позднее трех банковских дней со дня подписания сторонами настоящего договора.
. Права и обязанности сторон
.1. Исполнитель обязан:
.1.1. Провести курс обучения Слушателя в сроки,
установленные учебным планом.
.1.2. Оказать услуги в соответствии с
требованиями настоящего Договора.
.1.3. Выдать слушателю, выполнившему учебный
план, удостоверение о прохождении курса повышения квалификации установленного
образца.
.2. Заказчик обязан:
Принять и оплатить оказанные Исполнителем услуги
в установленный срок и в соответствии с условиями Договора.
.2.2. Уведомить Исполнителя в случае отказа от
предоставляемых услуг не менее чем за 5 (Пять) дней до начала обучения.
.3. Заказчик имеет право:
.3.1. В случае выбытия слушателя из группы до
начала обучения, Заказчик имеет право заменить его, при этом цена Договора
остается неизменной.
.4. Исполнитель вправе:
.4.1. Для выполнения принятых на себя
обязательств по настоящему договору привлекать третьих лиц без согласия
Заказчика.
. Ответственность сторон
.1. За неисполнение или ненадлежащее исполнение
обязательств по настоящему договору стороны несут ответственность в соответствии
с законодательством Российской Федерации.
. С рок действия Договора
Договор вступает в силу со дня подписания и
действует до 03.06.10., а по финансовым обязательствам до полного выполнения
сторонами взаимных обязательств.
Договор может быть расторгнут досрочно по
соглашению сторон.
. Прочие условия
.1. Слушатель обязан соблюдать требования
правил учебного распорядка и техники безопасности Исполнителя.
Настоящий Договор составлен в двух экземплярах,
имеющих одинаковую юридическую силу, по одному экземпляру для каждой из сторон.
Стороны Договора обязуются письменно извещать
друг друга об изменении адреса или банковских реквизитов.
. Адреса и банковские реквизиты сторон
Исполнитель: 127994, Россия, г. Москва, ул.
Образцова, д. 9, стр. 9, МИИТ. ИНН 7715027733, КПП 771501001 УФК по г. Москве
(л/сч.03731346460 МИИТ)
Банк получателя: Отделение 1 Московского ГТУ
Банка России г.Москва 705.
р/сч. 40503810600001009079
БИК: 044583001.
КБК 10930201010010000130, ОКАТО 45280569000,
разрешение 03 от 27.05.2009
Назначение платежа: П.1р. Оплата за обучение
(повышение квалификации преподавателей).
Тел./факс (495)684-28-56, Факультет повышения
квалификации. Лицензия: серия А № 283231, регистрационный № 9552 от 30.11.2007.
Заказчик: 664074, г. Иркутск, ул. Чернышевского,
15
ИНН 3812010086 КПП 381201001
УФК по Иркутской области (ИрГУПС (ИрИИТ) л/с
03341437620
р/сч. 40503810300001000001 в ГРКЦ ГУ Банка
России по Иркутской области г. Иркутск
БИК 042520001
От Исполнителя: От Заказчика:
Первый проректор - Ректор
проректор по учебной работе
________ В.В. Виноградов
___________А.П. Хоменко
Акт сдачи-приемки оказанных услуг
г. Москва « » ______ 2010 года
Исполнитель - государственное образовательное
учреждение высшего профессионального образования «Московский государственный университет
путей сообщения» (МИИТ), в лице первого проректора - проректора по учебной
работе Виноградова Валентина Васильевича, действующего на основании
доверенности от 05.03.2010 № 001/116, сдает, а Заказчик, государственное
образовательное учреждение высшего профессионального образования «Иркутский
государственный университет путей сообщения», в лице ректора Хоменко Андрея
Павловича, действующего на основании устава университета, принимает оказанные
услуги по повышению квалификации одного слушателя в рамках программы
«Организация маркетинга и рекламы. Экономика предприятия» в период с 24.05.2010
по 03.06.2010. Услуги оказаны в полном объеме и в срок, предусмотренный
договором № _______________ на оказание услуг по повышению квалификации от
"___" ______________2010 года.
От Исполнителя: От Заказчика:
Первый проректор - Ректор
проректор по учебной работе
__________ В.В. Виноградов
________ А.П. Хоменко
ФЕДЕРАЛЬНОЕ
АГЕНТСТВО ЖЕЛЕЗНОДОРОЖНОГО ТРАНСПОРТА
ГОСУДАРСТВЕННОЕ
ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
МОСКОВСКИЙ
ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ПУТЕЙ СООБЩЕНИЯ
(МИИТ)
П
Р И К А З
« » ___________________ 2010 г. №
_______________
Об окончании обучения по программе
повышения квалификации
. В связи с окончанием обучения по программе
«Технология создания электронных курсов в среде CourseLab» в период c
27.09.2010 по 25.10.2010 следующих преподавателей и сотрудников вузов и ссузов
железнодорожного транспорта считать выполнившими учебный план в объеме 72 часов
и окончившими курс обучения по указанной программе:
ГРУППА № 6027
№№
п/п
|
Фамилия,
имя, отчество
|
Должность,
учебное учреждение
|
1.
|
Луковкин
Константин Петрович
|
Уральского
государственного университета путей сообщения
|
2.
|
Матюшина
Наталия Михайловна
|
методист
Московского государственного университета путей сообщения
|
3.
|
Урбанская
Валентина Васильевна
|
преподаватель
Московского государственного университета путей сообщения
|
2. Декану факультета повышения квалификации
преподавателей Модинец В.И. обеспечить выдачу слушателям удостоверений о
повышении квалификации государственного образца.
Основание: рапорт Модинец В.И.
Первый
проректор - проректор по учебной работе
|
В.В.
Виноградов
|
Начальник
управления кадров В.Н. Стрижов
|
|