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

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

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

Элемент.Списоквыбора.Очистить();

Элемент.СписокВыбора.ЗагрузитьЗначения(массивВыбора);

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

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

Если ЗначениеЗаполнено(Объект.Специалист) и ЗначениеЗаполнено(Объект.Датаприема)

и ЗначениеЗаполнено(Объект.время) тогда Элементы.ПощникЗаписи.ТекущаяСтраница =

Элементы.ПощникЗаписи.ПодчиненныеЭлементы.КонтактныеДанные;

Элементы.ТекстИтог.Заголовок = "Ваш прием: " + СокрЛП(Объект.Специалист) + ", " + Формат(Объект.Датаприема,"ДФ=dd.MM.yyyy; ДП=") + ", " + СокрЛП(Объект.Время);

КонецЕсли;

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

Процедура Назад2(Команда)

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

Элементы.ПощникЗаписи.ПодчиненныеЭлементы.ВыборВремени;

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

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

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

Элементы.ПощникЗаписи.ПодчиненныеЭлементы.ВыборСпециалиста;

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

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

КонецЕсли;

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

Процедура Назад1(Команда) //отменить выбор времени

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

Элементы.ПощникЗаписи.ПодчиненныеЭлементы.ВыборСпециалиста;

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

Процедура СпециалистПриИзменении(Элемент)

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

Объект.ПрофильСпециалиста = Об;

КонецЕсли;

147

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

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

Если ТаблицаСпециалист.Количество() > 0 Тогда объект.Специалист = Элементы.таблица1.ТекущиеДанные.специалист ;

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

КонецЕсли;

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

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

Перем ЦветШапкиВыходные;

Перем ЦветАвто;

Перем СписокВыходных;

Процедура ПриОткрытии()

ЦветШапкиВыходные = новый цвет(255, 204, 153);

ЦветАвто = новый цвет(245, 242, 221);

СписокВыходных = Новый СписокЗначений();

Если ЭтоНовый() Тогда Месяц = Месяц(ОбщегоНазначения.ПолучитьРабочуюДату());

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

Если месяц = 12 Тогда месяц = 1;

год = год +1;

Иначе месяц = месяц + 1;

КонецЕсли;

ПерезаполнитьГрафик();

Иначе РассчитатьДниНедели();

КонецЕсли;

Если ЭтоНовый() Тогда ЧислоДней = День(КонецМесяца(ОбщегоНазначения.ПолучитьРабочуюДату()) -

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

КонецЕсли;

148

Для сч = 0 по ЧислоДней-1 цикл Если этоновый() Тогда

НовСтр = МассивВремени.Добавить();

иначе Элементыформы.ТабличноеПолеГрафика.Колонки[сч + 1].Текстподвала =

Формат(Массиввремени[сч].всегоминут/60, "ЧЦ=3; ЧДЦ=1");

конецЕсли;

КонецЦикла;

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

Процедура ТекущийМесяцПриИзменении(Элемент)

Если месяц > 12 тогда месяц = 12;

КонецЕсли;

Если месяц < 1 тогда месяц = 1;

конецЕсли;

ЧислоДней = День(КонецМесяца(Дата(Год, месяц, 1)));

перезаполнитьГрафик();

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

Процедура РассчитатьДниНедели()

Для сч = 1 по ЧислоДней Цикл //по всем колонкам дней месяца ТекДата = Дата(Год, Месяц, сч);

ДН = ДеньНедели(ТекДата);

Если ДН = 1 тогда ЭлементыФормы.ТабличноеПолеГрафика.Колонки[сч].ТекстШапки = сокрЛП(сч) + ", Пн";

ЭлементыФормы.ТабличноеПолеГрафика.Колонки[сч].ЦветФонаШапки = ЦветАвто;

ИначеЕсли ДН = 2 тогда ЭлементыФормы.ТабличноеПолеГрафика.Колонки[сч].ТекстШапки = сокрЛП(сч) + ", Вт";

ЭлементыФормы.ТабличноеПолеГрафика.Колонки[сч].ЦветФонаШапки = ЦветАвто;

ИначеЕсли ДН = 3 тогда ЭлементыФормы.ТабличноеПолеГрафика.Колонки[сч].ТекстШапки = сокрЛП(сч) + ", Ср";

ЭлементыФормы.ТабличноеПолеГрафика.Колонки[сч].ЦветФонаШапки = ЦветАвто;

ИначеЕсли ДН = 4 тогда ЭлементыФормы.ТабличноеПолеГрафика.Колонки[сч].ТекстШапки = сокрЛП(сч) + ", Чт";

ЭлементыФормы.ТабличноеПолеГрафика.Колонки[сч].ЦветФонаШапки = ЦветАвто;

ИначеЕсли ДН = 5 тогда ЭлементыФормы.ТабличноеПолеГрафика.Колонки[сч].ТекстШапки = сокрЛП(сч) + ", Пт";

ЭлементыФормы.ТабличноеПолеГрафика.Колонки[сч].ЦветФонаШапки = ЦветАвто;

ИначеЕсли ДН = 6 тогда ЭлементыФормы.ТабличноеПолеГрафика.Колонки[сч].ТекстШапки = сокрЛП(сч) + ", Сб";

149

ЭлементыФормы.ТабличноеПолеГрафика.Колонки[сч].ЦветФонаШапки =

ЦветШапкиВыходные;

списокВыходных.Добавить(,сч);

ИначеЕсли ДН = 7 тогда ЭлементыФормы.ТабличноеПолеГрафика.Колонки[сч].ТекстШапки = сокрЛП(сч) + ", Вс";

ЭлементыФормы.ТабличноеПолеГрафика.Колонки[сч].ЦветФонаШапки =

ЦветШапкиВыходные;

списокВыходных.Добавить(,сч);

КонецЕсли;

КонецЦикла;

Для сч = 1 по ЧислоДней Цикл ЭлементыФормы.ТабличноеПолеГрафика.Колонки[сч].Видимость = истина;

конеццикла;

Для сч = Числодней + 1 по 31 Цикл ЭлементыФормы.ТабличноеПолеГрафика.Колонки[сч].Видимость = ложь;

конеццикла;

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

Процедура КоманднаяПанель1ЗаполнитьЧасы(Кнопка)

ПерезаполнитьГрафик();

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

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

|ЧасыРаботы.Ссылка КАК час

|ИЗ

|Справочник.ЧасыРаботы КАК ЧасыРаботы

|ГДЕ

|ЧасыРаботы.ПометкаУдаления = ЛОЖЬ";

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

Для каждого стр из часыработы цикл Стр.ключ = час(стр.час.НачалоЧаса)*60 + Минута(стр.час.НачалоЧаса);

Конеццикла;

часыРаботы.Сортировать("ключ");

Для сч = 0 по Числодней-1 Цикл МассивВремени[сч].ВсегоМинут = 0;

ЭлементыФормы.ТабличноеПолеГрафика.Колонки[сч + 1].текстПодвала = 0;

КонецЦикла;

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

Процедура ТабличноеПолеГрафикаПриИзмененииФлажка(Элемент, Колонка)

колонка = Элемент.ТекущаяКолонка;

Если Колонка = неопределено тогда возврат;

150

КонецЕсли;

Имяколонки = Колонка.Имя;

Если ИмяКолонки = "Час" тогда возврат;

КонецЕсли;

ИндКолонки = Число(прав(ИмяКолонки, стрДлина(Имяколонки)-4));

Если Элемент.ТекущиеДанные[имяколонки] Тогда Массиввремени[ИндКолонки-1].всегоминут = Массиввремени[ИндКолонки-1].всегоминут

+ Элемент.ТекущиеДанные.Час.минут;

Иначе Массиввремени[ИндКолонки-1].всегоминут = Массиввремени[ИндКолонки-1].всегоминут

- Элемент.ТекущиеДанные.Час.минут;

конецЕсли;

Колонка.Текстподвала = Формат(Массиввремени[ИндКолонки-1].всегоминут/60, "ЧЦ=3;

ЧДЦ=1");

ВсегоЧасов = массиввремени.Итог("ВсегоМинут")/60;

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

Процедура ПерезаполнитьГрафик()

ЧасыРаботы.Очистить();

МассивВремени.Очистить();

РассчитатьДниНедели();

Для сч = 0 по ЧислоДней Цикл новстр = МассивВремени.Добавить();

новСтр.ВсегоМинут = 0;

Конеццикла;

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

Процедура ТекущийГодПриИзменении(Элемент)

перезаполнитьГрафик();

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

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

Функция ОтсечьЦифры(ИсходнаяСтрока)

ФинальнаяСтрока = ИсходнаяСтрока;

КодСимвола = КодСимвола(Прав(ИсходнаяСтрока, 1));

Если (КодСимвола >= 48 И КодСимвола <= 57) Тогда ФинальнаяСтрока = Лев(ИсходнаяСтрока, СтрДлина(ИсходнаяСтрока) - 1);

КонецЕсли;

151

Возврат ФинальнаяСтрока;

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

Процедура ОбработкаИсключения(ИнформацияОбОшибке)

ПричинаОшибки = ИнформацияОбОшибке().Причина;

Предупреждение(?(ПричинаОшибки = Неопределено ИЛИ ПричинаОшибки.Описание =

Неопределено, "При выполнении действия произошла ошибка.",

ПричинаОшибки.Описание));

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

Процедура ОткрытьДокумент(Элемент)

Попытка

Форма = Документы[ОтсечьЦифры(Элемент.Имя)].ПолучитьФормуСписка();

Форма.Открыть();

Исключение

ОбработкаИсключения(ИнформацияОбОшибке());

КонецПопытки;

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

Процедура ОткрытьЖурналДокументов(Элемент)

Попытка

Форма = ЖурналыДокументов[ОтсечьЦифры(Элемент.Имя)].ПолучитьФорму();

Форма.Открыть();

Исключение

ОбработкаИсключения(ИнформацияОбОшибке());

КонецПопытки;

152

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

Процедура ОткрытьОбработку(Элемент)

Попытка

Форма = Обработки[ОтсечьЦифры(Элемент.Имя)].ПолучитьФорму();

Форма.Открыть();

Исключение

ОбработкаИсключения(ИнформацияОбОшибке());

КонецПопытки;

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

Процедура ОткрытьСправочник(Элемент)

Попытка

Форма = Справочники[ОтсечьЦифры(Элемент.Имя)].ПолучитьФормуСписка();

Форма.Открыть();

Исключение

ОбработкаИсключения(ИнформацияОбОшибке());

КонецПопытки;

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

Процедура ОткрытьОтчет(Элемент)

Попытка

ИмяЭлемента = СтрЗаменить(Элемент.Имя, "Хозрасчетный", "");

Отчеты[ОтсечьЦифры(ИмяЭлемента)].ПолучитьФорму().Открыть();

Исключение

ОбработкаИсключения(ИнформацияОбОшибке());

153

КонецПопытки;

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

Процедура ОткрытьКонстанту(Элемент)

Попытка

ИмяЭлемента = СокрЛП(Элемент.Имя);

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

Ф = ПолучитьОбщуюФорму("ФормаКонстант");

Ф.Открыть();

Исключение

ОбработкаИсключения(ИнформацияОбОшибке());

КонецПопытки;

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

Процедура ОбновитьТекущиеприемы()

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

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

|ТалонПациента.Ссылка

|ИЗ

|Документ.ТалонПациента КАК ТалонПациента

|ГДЕ

|ТалонПациента.Проведен = ЛОЖЬ

|И ТалонПациента.Дата <= &Дата";

Если РольДоступна("Специалист") Тогда Запрос.Текст = Запрос.Текст + "

|И ТалонПациента.Специалист = &Специалист";

Запрос.УстановитьПараметр("Специалист",ОбщиеФункции.ТекущийСпециалист());

КонецЕсли;

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

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

Список = Новый СписокЗначений();

Список.ЗагрузитьЗначения(Рез.ВыгрузитьКолонку("Ссылка"));

Талоны.Отбор.Ссылка.ВидСравнения = ВидСравнения.ВСписке;

Талоны.Отбор.ссылка.использование = Истина;

154

Талоны.Отбор.ссылка.Значение = список;

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

Процедура ОбновитьПланируемыеПриемы()

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

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

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

|ИЗ

|Документ.ЗаписьНаПрием КАК ЗаписьНаПрием

|ГДЕ

|ЗаписьНаПрием.Проведен = ИСТИНА

|И ЗаписьНаПрием.ДатаПриема >= &Дата

| ЗаписьНаПрием.ПриемНеСостоялся = ЛОЖЬ";

Если РольДоступна("Специалист") Тогда Запрос.Текст = Запрос.Текст + "

|И ЗаписьНаПрием.Специалист = &Специалист";

Запрос.УстановитьПараметр("Специалист",ОбщиеФункции.ТекущийСпециалист());

КонецЕсли;

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

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

Список = Новый СписокЗначений();

Список.ЗагрузитьЗначения(Рез.ВыгрузитьКолонку("Ссылка"));

ПланируемыеПриемы.Отбор.Ссылка.ВидСравнения = ВидСравнения.ВСписке;

планируемыеПриемы.отбор.ссылка.использование = Истина;

планируемыеПриемы.Отбор.ссылка.Значение = список;

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

Процедура ОбновитьИнформацию()

Элементыформы.Предупреждение.Видимость = истина;

Элементыформы.Специалист.Видимость = истина;

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

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

|ВложенныйЗапрос.Все.Ссылка КАК Все, |ВложенныйЗапрос.Установлены

|ИЗ

|(ВЫБРАТЬ РАЗЛИЧНЫЕ

155

|Все.Ссылка КАК Все, |Установлены.Специалист КАК Установлены

|ИЗ

|(ВЫБРАТЬ РАЗЛИЧНЫЕ

|Специалист.Ссылка КАК Ссылка

|ИЗ

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

|ГДЕ

|Специалист.Актуальность = ИСТИНА

|И Специалист.ПометкаУдаления = ЛОЖЬ) КАК Все

|ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ

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

|ИЗ

|Документ.УстановкаГрафикаСпециалиста КАК УстановкаГрафикаСпециалиста

|ГДЕ

|УстановкаГрафикаСпециалиста.Проведен = ИСТИНА

|И УстановкаГрафикаСпециалиста.ГрафикРаботы.Год = &Год

|И УстановкаГрафикаСпециалиста.ГрафикРаботы.Месяц = &Месяц) КАК

Установлены

|ПО (Установлены.Специалист = Все.Ссылка)) КАК ВложенныйЗапрос

|ГДЕ

|ВложенныйЗапрос.Установлены ЕСТЬ NULL ";

Если Месяц(ОбщегоНазначения.ПолучитьРабочуюДату()) = 12 тогда Следмесяц = 1;

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

Иначе СледМесяц = Месяц(ОбщегоНазначения.ПолучитьРабочуюДату()) + 1;

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

КонецЕсли;

Запрос.УстановитьПараметр("Год", СледГод);

Запрос.УстановитьПараметр("Месяц", следМесяц);

Запрос.УстановитьПараметр("Пусто", Справочники.Специалист.ПустаяСсылка());

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

Если Рез.Количество() = 0 Тогда ТекстНадписи = "Графики работы установлены до " +

Формат(Конецмесяца(Дата(СледГод, Следмесяц, 1))+1,"ДЛФ=DD" );

Элементыформы.ТабличноеПолеСпециалисты.Видимость = ложь;

ЭлементыФормы.Предупреждение.ЦветТекста = новый цвет(83, 106, 194);

Иначе

156