Создание печатной формы расписания
Функция печать () Экспорт

макет = Документы.РаботаКружка.ПолучитьМакет("Макет");
ОбластьШапка = макет.ПолучитьОбласть("ОбластьШапка");

ТабДок = Новый ТабличныйДокумент;
ТабДок.Вывести(ОбластьШапка);
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РаботаКружка.ВидКружка КАК ВидКружка,
| РаботаКружка.ВремяНачалаЗанятия КАК ВремяНачалаЗанятия,
| РаботаКружка.ВремяОкончанияЗанятия КАК ВремяОкончанияЗанятия,
| РаботаКружка.Преподаватель КАК Преподаватель,
| РаботаКружка.ДеньОдин КАК ДеньОдин,
| РаботаКружка.ДеньДва КАК ДеньДва,
| РаботаКружка.ДеньТри КАК ДеньТри,
| РаботаКружка.Помещение КАК Помещение
|ИЗ
| Документ.РаботаКружка КАК РаботаКружка";

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

Выборка = РезультатЗапроса.Выбрать();
СтрокаШаблон = "%1 - %2" + Символы.ПС + "%3" + Символы.ПС + "%4";
Массив = Новый Массив;
Массив.Добавить(Перечисления.ДниНедели.Понедельник);
Массив.Добавить(Перечисления.ДниНедели.Вторник);
Массив.Добавить(Перечисления.ДниНедели.Среда);
Массив.Добавить(Перечисления.ДниНедели.Четверг);
Массив.Добавить(Перечисления.ДниНедели.Пятница);
Массив.Добавить(Перечисления.ДниНедели.Суббота);
Массив.Добавить(Перечисления.ДниНедели.Воскресенье);
Пока Выборка.Следующий() Цикл
областьКружок = макет.ПолучитьОбласть("областьКружок");
областьКружок.Параметры.кружок = Выборка.ВидКружка;
Для каждого День Из Массив Цикл
Если Выборка.ДеньОдин = День ИЛИ Выборка.ДеньДва = День ИЛИ Выборка.ДеньТри = День Тогда
областьКружок.Параметры[Строка(День)] = СтрШаблон(СтрокаШаблон, Формат(Выборка.ВремяНачалаЗанятия,"ДФ=ЧЧ:мм"),
Формат(Выборка.ВремяОкончанияЗанятия, "ДФ=ЧЧ:мм"), Выборка.Помещение, Выборка.Преподаватель);
КонецЕсли;
КонецЦикла;
ТабДок.Вывести(областьКружок);
КонецЦикла;
Возврат ТабДок;
КонецФункции

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ТабДок = ОбработкаКомандыНаСервере();
ТабДок.Показать();
КонецПроцедуры

&НаСервере
Функция ОбработкаКомандыНаСервере()
Возврат Документы.РаботаКружка.печать();
КонецФункции



Создание бронирование

//@skip-check module-structure-method-in-regions
&НаКлиенте
Процедура ПоказатьДоступныеПомещения(Команда)
СвободныеПомещения.Очистить();
ПоказатьДоступныеПомещенияНаСервере();
КонецПроцедуры

&НаКлиенте
Процедура СвободныеПомещенияПриАктивизацииСтроки(Элемент)
Попытка
Помещение = Элементы.СвободныеПомещения.ТекущиеДанные.Помещение;
Исключение

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

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ДатаНачала = '20240303' + 60 * 60 * 7;
ДатаОкончания = '20240303' + 60 * 60 * 9;
КонецПроцедуры


&НаКлиенте
Асинх Процедура ВыполнитьБронирование(Команда)
Если НазваниеМероприятия = "" Тогда
Сообщить("Укажите название мероприятия!");
Возврат;
КонецЕсли;
Если Помещение.Пустая() Тогда
Сообщить("Не выбрано помещение для бронирования!");
Возврат;
КонецЕсли;
Если ТолькоЧастично Тогда
Ответ = ЖДАТЬ ВопросАсинх("Возможно только частичное бронирование, продолжить?", РежимДиалогаВопрос.ДаНет);
Если Ответ = КодВозвратаДиалога.Нет Тогда
Возврат;
Иначе
ЧастичноеБронирование = Истина;
КонецЕсли;
КонецЕсли;
Попытка
СоздатьБронирование();
Сообщить("Бронирование создано!");
СвободныеПомещения.Очистить();
Исключение
ВызватьИсключение ОписаниеОшибки();
КонецПопытки;

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

&НаСервере
Процедура СоздатьБронирование()
ДокБронирование = Документы.Бронирование.СоздатьДокумент();
ДокБронирование.Дата = ТекущаяДата();
ДокБронирование.ДатаИВремяНачала = ДатаНачала;
ДокБронирование.ЧастичноеБронирование = ЧастичноеБронирование;
ДокБронирование.ДатаИВремяОкончания = ДатаОкончания;
ДокБронирование.Помещение = Помещение;
ДокБронирование.НазваниеМероприятия = НазваниеМероприятия;
ДокБронирование.Записать(РежимЗаписиДокумента.Проведение);
КонецПроцедуры


//@skip-check module-structure-method-in-regions
&НаСервере
Процедура ПоказатьДоступныеПомещенияНаСервере()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| УчетБронирования.Помещение КАК Помещение
|ПОМЕСТИТЬ ВТ
|ИЗ
| РегистрСведений.УчетБронирования КАК УчетБронирования
|ГДЕ
| (УчетБронирования.ДатаИВремяНачала МЕЖДУ &ДатаНач И &ДатаКон
| ИЛИ УчетБронирования.ДатаИВремяОкончания МЕЖДУ &ДатаНач И &ДатаКон)
| И УчетБронирования.ЧастичноеБронирование = ЛОЖЬ
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Помещения.Ссылка КАК Помещение
|ИЗ
| Справочник.Помещения КАК Помещения
|ГДЕ
| НЕ Помещения.Ссылка В
| (ВЫБРАТЬ
| ВТ.Помещение
| ИЗ
| ВТ)";


Запрос.УстановитьПараметр("ДатаНач", ДатаНачала);
Запрос.УстановитьПараметр("ДатаКон", ДатаОкончания);
РезультатЗапроса = Запрос.Выполнить().Выбрать();
Пока РезультатЗапроса.Следующий() Цикл
НовСтрока = СвободныеПомещения.Добавить();
НовСтрока.Помещение = РезультатЗапроса.Помещение;
КонецЦикла;

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


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

Движения.УчетБронирования.Записывать = Истина;
Движение = Движения.УчетБронирования.Добавить();
Движение.Период = Дата;
Движение.Помещение = Помещение;
Движение.ДатаИВремяНачала = ДатаИВремяНачала;
Движение.ДатаИВремяОкончания = ДатаИВремяОкончания;
Движение.ЧастичноеБронирование = ЧастичноеБронирование;
Движение.Мероприятие = НазваниеМероприятия;

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



























.
This site was made on Tilda — a website builder that helps to create a website without any code
Create a website