Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Пояснительная записка

.pdf
Скачиваний:
50
Добавлен:
22.05.2015
Размер:
3.25 Mб
Скачать

Список использованных источников

1.Радченко М.Г., Хрусталева Е.Ю. 1С:Предприятие 8.2. Практическое пособие разработчика. Примеры и типовые приемы. - M.: OOO «1С-Паблишинг», 2009. - 876 с.

2.Курс лекции по ООП. Учебное пособие. – Рыбинск: РГАТА, 2008. – 88 с.

3.Буч Г., Рамбо Д., Джекобсон А. – Язык UML. Руководство пользователя. – М.: ДМК, 2000. – 432 с.

4.Федеральный закон РФ от 27 июля 2006 года № 152-ФЗ «О персональных данных».

5.Радченко М.Г. 1С:Предприятие 8.2. Коротко о главном. Новые возможности версии 8.2. - M.: OOO «1С-Паблишинг», 2009. – 416 с.

6.Современные технологии объектно-реляционного отображения. - Материалы сайта http://lib.custis.ru.

7.Кустова Т.Н., Коновал О.В. Методические рекомендации по техникоэкономическому обоснованию дипломных работ студентов специальности 220400 программное обеспечение вычислительной техники и автоматизированных систем. Учебно-методическое пособие. – Рыбинск: РГАТА, 2003. – 39 с.

8.Сергеев С.Ф. Введение в инженерную психологию и эргономику иммерсивных сред. Учебное пособие. – СПб.: СПбГУ ИТМО, 2011. – 258 с.

9.СанПиН 2.2.2/2.4.1340-03 «Требования к организации и оборудованию рабочих мест с ПЭВМ для взрослых пользователей».

10.Габец А.П., Гончаров Д.И. 1С:Предприятие 8.0. Простые примеры разработки. - M.: OOO «1С-Паблишинг», 2005. - 424 с.

11.Методические указания к выполнению дипломного проекта (работы) по специальности 230105 Программное обеспечение вычислительной техники и автоматизированных систем. Учебно-методическое пособие. – Рыбинск: РГАТУ, 2006. – 27 с.

137

12.Сакова Н.В.. Раздел «Безопасность жизнедеятельности» в дипломном проекте». Учебно-методическое пособие. – Рыбинск: РГАТА, 2010. – 30 с.

13. Синтаксис-помощник. Встроенная справочная система технологической платформы 1С:Предприятие 8.2.

138

Приложение А (обязательное)

Исходные коды основных модулей

В данном приложении приведены примеры исходного кода основных модулей и модулей объектов конфигурации:

Модуль обычного приложения;

Модуль «Общие функции» (глобальный);

Модуль объекта документа «Заявка клиента»;

Модуль управляемой формы документа «Заявка клиента»;

Модуль формы справочника «Графики работы»;

Модуль формы обработки «Рабочий стол»;

Модуль документа «Договор об оказании платных медицинских услуг».

Модуль обычного приложения.

Процедура ПередЗавершениемРаботыСистемы(Отказ)

Ответ = Вопрос("Завершить работу с программой?", РежимДиалогаВопрос.ДаНет); Отказ = (Ответ = КодВозвратаДиалога.Нет);

КонецПроцедуры

Процедура ПередНачаломРаботыСистемы(Отказ)

УправлениеПользователями.ПроверитьВозможностьРаботыПользователя(Отказ);

КонецПроцедуры

Процедура ПриНачалеРаботыСистемы()

ПользовательОпределен = Ложь; ОписаниеОшибкиОпределенияПользователя = ""; Если

УправлениеПользователями.ОпределитьТекущегоПользователя(ОписаниеОшибкиОпределенияПоль зователя) Тогда

ПользовательОпределен = ЗначениеЗаполнено(ПараметрыСеанса.ТекущийПользователь);

КонецЕсли;

Если Не ПользовательОпределен Тогда Если ПустаяСтрока(ОписаниеОшибкиОпределенияПользователя) Тогда

ОписаниеОшибкиОпределенияПользователя = "Ошибка идентификации пользователя. Обратитесь к администратору";

КонецЕсли; Предупреждение(ОписаниеОшибкиОпределенияПользователя); ЗавершитьРаботуСистемы(Ложь); Возврат;

КонецЕсли;

ЗаголовокСистемы = Константы.ЗаголовокСистемы.Получить(); УстановитьЗаголовокСистемы(ЗаголовокСистемы); УстановитьРабочийСтол();

КонецПроцедуры

Процедура УстановитьРабочийСтол()

139

ОснФорма = Обработки.ПанельФункций.ПолучитьФорму("Форма"); Оснформа.Открыть();

конецпроцедуры

Модуль «Общие функции» (глобальный)

Функция ПоследнийдоговорКлиента(Клиент) Экспорт

Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1

| ДоговорОсновной.Ссылка |ИЗ

| Документ.ДоговорОсновной КАК ДоговорОсновной |ГДЕ

| ДоговорОсновной.ПометкаУдаления = &ПометкаУдаления | И ДоговорОсновной.Проведен = &Проведен | И ДоговорОсновной.Клиент = &Клиент

|

|УПОРЯДОЧИТЬ ПО | ДоговорОсновной.Дата УБЫВ";

Запрос.УстановитьПараметр("ПометкаУдаления", Ложь); Запрос.УстановитьПараметр("Проведен", Истина); Запрос.УстановитьПараметр("Клиент", Клиент); Рез = Запрос.Выполнить().Выбрать();

Если Рез.Следующий() Тогда возврат Рез.ссылка;

Иначе

возврат Документы.ДоговорОсновной.ПустаяСсылка(); КонецЕсли;

КонецФункции

Функция ТекущийРегистратор() Экспорт

ТекПользователь = ПараметрыСеанса.ТекущийПользователь; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ

| Регистратор.Ссылка |ИЗ

| Справочник.Регистратор КАК Регистратор |ГДЕ | Регистратор.Пользователь = &Пользователь

| И Регистратор.ПометкаУдаления = ЛОЖЬ"; Запрос.УстановитьПараметр("Пользователь", ТекПользователь); Рез = Запрос.Выполнить().Выбрать(); Если Рез.Следующий() Тогда

возврат Рез.ссылка;

иначе

возврат справочники.Регистратор.ПустаяСсылка(); КонецЕсли;

КонецФункции

Функция Текущийспециалист() Экспорт

ТекПользователь = ПараметрыСеанса.ТекущийПользователь; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ

| Специалист.Ссылка |ИЗ

| Справочник.Специалист КАК Специалист

140

|ГДЕ | Специалист.Пользователь = &Пользователь

| И Специалист.ПометкаУдаления = ЛОЖЬ"; Запрос.УстановитьПараметр("Пользователь", ТекПользователь); Рез = Запрос.Выполнить().Выбрать(); Если Рез.Следующий() Тогда

возврат Рез.ссылка;

иначе

возврат справочники.Специалист.ПустаяСсылка(); КонецЕсли;

КонецФункции

Функция ПолучитьСвободныеДниСпециалиста(Специалист, Дата) Экспорт

Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ

|

ЧасыПриемаСпециалистаСрезПоследних.День КАК Дата

|ИЗ

| РегистрСведений.ЧасыПриемаСпециалиста.СрезПоследних(

|

&Дата,

|

Специалист = &Специалист

|

И Состояние = &Состояние) КАК

ЧасыПриемаСпециалистаСрезПоследних |ГДЕ

| ЧасыПриемаСпециалистаСрезПоследних.День >= &Дата"; Запрос.УстановитьПараметр("специалист", специалист); Запрос.УстановитьПараметр("Состояние", Перечисления.СостояниеЧаса.Свободен); Запрос.УстановитьПараметр("Дата", Дата); Рез = Запрос.Выполнить().Выгрузить(); Рез.Свернуть("Дата"); Рез.Сортировать("Дата"); Результат = новый списокЗначений; Для каждого Стр из Рез цикл

Результат.Добавить(Стр.Дата); Конеццикла; возврат результат;

КонецФункции

Функция ПолучитьСвободныеЧасыДняспециалиста(Специалист, День, Дата) Экспорт

Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ

| ЧасыПриемаСпециалистаСрезПоследних.ЧасыРаботы КАК Время, | ЧасыПриемаСпециалистаСрезПоследних.ЧасыРаботы.НачалоЧаса КАК

НачалоЧаса,

| ЧасыПриемаСпециалистаСрезПоследних.Состояние, | ЧасыПриемаСпециалистаСрезПоследних.День |ИЗ

|

РегистрСведений.ЧасыПриемаСпециалиста.СрезПоследних(&ДатаСреза, ) КАК ЧасыПриемаСпециалистаСрезПоследних

|ГДЕ | ЧасыПриемаСпециалистаСрезПоследних.Специалист = &Специалист

| И ЧасыПриемаСпециалистаСрезПоследних.День = &День | И ЧасыПриемаСпециалистаСрезПоследних.Состояние = &Состояние

| И ЧасыПриемаСпециалистаСрезПоследних.День >= &Дата"; Запрос.УстановитьПараметр("специалист", специалист); Запрос.УстановитьПараметр("Состояние", Перечисления.СостояниеЧаса.Свободен); Запрос.УстановитьПараметр("Дата", Дата); Запрос.УстановитьПараметр("День", День); Запрос.УстановитьПараметр("Датасреза", Дата);

141

Рез = Запрос.Выполнить().Выгрузить(); Рез.Сортировать("НачалоЧаса"); Результат = новый списокЗначений; Для каждого Стр из Рез цикл

Результат.Добавить(Стр.Время); Конеццикла; возврат результат;

КонецФункции

Модуль объекта документа «Заявка клиента»

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

Движения.ЧасыПриемаСпециалиста.Записывать = Истина;

Движения.ЧасыПриемаСпециалиста.Очистить();

Движение = Движения.ЧасыПриемаСпециалиста.Добавить();

Движение.Период = Дата;

Движение.Специалист = Специалист;

Движение.ЧасыРаботы = Время;

Движение.День = ДатаПриема;

Если СостояниеЗаявки = Перечисления.СостояниеЗаявки.Отклонена Тогда Движение.Состояние = Перечисления.СостояниеЧаса.Свободен;

Иначе Движение.Состояние = Перечисления.СостояниеЧаса.Забронирован;

КонецЕсли;

НачатьпроцессЗаписи();

КонецПроцедуры

Функция СформироватьЗаписьНаприем() Экспорт

ОбЗаписьНаПрием = Документы.ЗаписьНаПрием.СоздатьДокумент();

ОбЗаписьНаПрием.Заполнить(ЭтотОбъект.Ссылка);

ОбЗаписьНаПрием.Дата = ОбщегоНазначения.ПолучитьРабочуюДату();

ОбЗаписьНаПрием.ЗаявкаКлиента = ссылка;

Текпользователь = ПараметрыСеанса.ТекущийПользователь;

ОбЗаписьНаПрием.Регистратор =

справочники.Регистратор.НайтиПоРеквизиту("Пользователь",Текпользователь);

ОбЗаписьНаПрием.Записать();

Возврат ОбЗаписьНаприем.Ссылка;

КонецФункции

142

Процедура НачатьПроцессЗаписи()

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ

| ЗаписьНаПрием_Веб.Ссылка

|ИЗ

| БизнесПроцесс.ЗаписьНаПрием_Веб КАК ЗаписьНаПрием_Веб

|ГДЕ

| ЗаписьНаПрием_Веб.ПорождающийДокумент = &ПорождающийДокумент";

Запрос.УстановитьПараметр("ПорождающийДокумент", Ссылка);

Рез = Запрос.Выполнить().Выбрать();

Если не Рез.Следующий() Тогда БП = БизнесПроцессы.ЗаписьНаПрием_Веб.СоздатьБизнесПроцесс();

БП.Дата = Дата;

БП.ПорождающийДокумент = ссылка;

БП.записать();

БП.Старт();

КонецЕсли;

КонецПроцедуры

Модуль управляемой формы документа «Заявка клиента»

&НаСервереБезКонтекста Функция ПолучитьПрофильСпециалистаНаСервере(ТекДанные)

Возврат ТекДанные.Профильспециалиста;

КонецФункции

&НаСервере Процедура ОбработкаВыбораСпециалистаСервер(ДанныеВыбора)

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ

| ЧасыПриемаСпециалистаСрезПоследних.Специалист.Ссылка КАК Ссылка

|ИЗ

|РегистрСведений.ЧасыПриемаСпециалиста.СрезПоследних(&Дата, )

КАК ЧасыПриемаСпециалистаСрезПоследних";

Если ЗначениеЗаполнено(Объект.профильспециалиста) Тогда Запрос.УстановитьПараметр("ПрофильСпециалиста", Объект.профильспециалиста);

Запрос.Текст = Запрос.Текст + " |ГДЕ

143

|ЧасыПриемаСпециалистаСрезПоследних.Специалист.ПрофильСпециалиста = &ПрофильСпециалиста";

КонецЕсли;

Запрос.УстановитьПараметр("Дата", ОбщегоНазначения.ПолучитьРабочуюДату());

Рез = Запрос.Выполнить().Выгрузить();

Рез.Свернуть("ссылка");

Для каждого стр из Рез Цикл ДанныеВыбора.Добавить(стр.ссылка);

Конеццикла;

КонецПроцедуры

Функция ПолучитьДниСпециалиста(Специалист)

возврат ОбщиеФункции.ПолучитьСвободныеДниСпециалиста(Специалист,

ОбщегоНазначения.ПолучитьРабочуюДату());

КонецФункции

Функция ПолучитьВремяДня(Специалист, День)

возврат Общиефункции.ПолучитьСвободныеЧасыДняспециалиста(Специалист,День,ОбщегоНазначения.Пол учитьРабочуюДату());

КонецФункции

Процедура ОбновитьДни(спец)

СписокДат = ПолучитьДниСпециалиста(спец);

ТаблицаДни.Очистить();

Для каждого эл из списокДат Цикл НовСтр = ТаблицаДни.Добавить();

НовСтр.День= Эл.Значение;

КонецЦикла;

Конецпроцедуры

Процедура Обновитьчасы(спец, День)

Списокчасов = ПолучитьВремяДня(спец, День);

ТаблицаВремя.Очистить();

Для каждого эл из списокчасов Цикл

144

НовСтр = Таблицавремя.Добавить();

НовСтр.Время= Эл.Значение;

КонецЦикла;

Конецпроцедуры

Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)

Объект.СостояниеЗаявки = Перечисления.СостояниеЗаявки.Новая;

КонецПроцедуры

&НаКлиенте Процедура ПослеЗаписи(ПараметрыЗаписи)

Окна = ПолучитьОкна();

Для сч = 0 По Окна.Количество() - 1 Цикл Если Окна[сч].Основное Тогда НашеОкно = Окна[сч];

КонецЕсли;

КонецЦикла;

ОткрытьФорму("Обработка.ПанельФункций.Форма.ФормаКлиента",,,, НашеОкно);

КонецПроцедуры

Процедура НовыйКлиентПриИзменении(Элемент)

если Объект.НовыйКлиент Тогда Элементы.ПрофильСпециалиста.Видимость = истина;

Элементы.Совет11.Видимость = истина;

КонецЕсли;

КонецПроцедуры

Процедура Таблица3ПриАктивизацииСтроки(Элемент)

Если Таблицавремя.Количество() Тогда Объект.Время = Элементы.Таблица3.ТекущиеДанные.время;

конецЕсли;

КонецПроцедуры

Процедура Таблица2ПриАктивизацииСтроки(Элемент)

Если ТаблицаДни.Количество() > 0 Тогда

145

Объект.ДатаПриема = Элементы.таблица2.ТекущиеДанные.день;

Обновитьчасы(Элементы.таблица1.ТекущиеДанные.Специалист,

Элементы.таблица2.ТекущиеДанные.день);

Конецесли;

КонецПроцедуры

Процедура Далее(Команда)

Элементы.ПощникЗаписи.ТекущаяСтраница =

Элементы.ПощникЗаписи.ПодчиненныеЭлементы.ВыборВремени; //обновим содержимое таблиц ТаблицаВремя.Очистить();

ТаблицаДни.Очистить();

ТаблицаСпециалист.Очистить();

Если ЗначениеЗаполнено(Объект.Специалист) Тогда НовСтр = ТаблицаСпециалист.Добавить();

НовСтр.Специалист = Объект.специалист;

сп = Объект.специалист;

Иначе списокВрачей = новый Массив;

ОбработкаВыбораСпециалистаСервер(списокВрачей);

Для каждого эл из списокврачей Цикл всегоДней = ПолучитьДниСпециалиста(эл);

Если всегоДней.Количество() = 0 Тогда продолжить;

конецЕсли;

НовСтр = ТаблицаСпециалист.Добавить();

НовСтр.Специалист = Эл;

КонецЦикла;

сп = ТаблицаСпециалист[0].специалист;

КонецЕсли;

Обновитьдни(сп);

Если ТаблицаДни.Количество() > 0 Тогда Обновитьчасы(сп, ТаблицаДни[0].День);

КонецЕсли;

КонецПроцедуры

Процедура СпециалистНачалоВыбораИзсписка(Элемент, СтандартнаяОбработка)

МассивВыбора = новый Массив;

ОбработкаВыбораСпециалистаСервер(МассивВыбора);

146