Пояснительная записка
.pdfЭлемент.Списоквыбора.Очистить();
Элемент.СписокВыбора.ЗагрузитьЗначения(массивВыбора);
КонецПроцедуры
Процедура Далее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