Документ "Резервирование" при проведении должен проверять: окончание резервирования должно быть строго позже начала резервирования если стол уже зарезервирован на указанное время, то выводить сообщение и не проводить документ дописать код надо чуть чуть не понимаю помогите пожалуйста
Процедура ОбработкаПроведения(Отказ, РежимПроведения) СекундВЧасе = 3600;СекундВМинуте = 60;ТекНачалоБронирования = НачалоДня(Дата) + СекундВЧасе * Час(НачалоРезервирование) +СекундВМинуте * Минута(НачалоРезервирование) + Секунда(НачалоРезервирование);ТекОкончаниеБронирования = НачалоДня(Дата) + СекундВЧасе * Час(КонецРезервирование) +СекундВМинуте * Минута(КонецРезервирование) + Секунда(КонецРезервирование);Запрос = Новый Запрос;Запрос.УстановитьПараметр("ТекущийДокумент", Ссылка);Запрос.УстановитьПараметр("Стол", Стол);Запрос.УстановитьПараметр("НачалоПериода", ТекНачалоБронирования);Запрос.УстановитьПараметр("КонецПериода", ТекОкончаниеБронирования);Запрос.Текст = "ВЫБРАТЬ| РезервированиеСтоликовСрезПоследних.Период КАК Период,| РезервированиеСтоликовСрезПоследних.Стол КАК Стол,| РезервированиеСтоликовСрезПоследних.ОкончаниеБронирования КАК ОкончаниеБронирования|ИЗ| РегистрСведений.РезервированиеСтоликов.СрезПоследних(&НачалоПериода, Стол =Стол) КАК РезервированиеСтоликовСрезПоследних|ГДЕ| РезервированиеСтоликовСрезПоследних.ОкончаниеБронирования >НачалоПериода| И РезервированиеСтоликовСрезПоследних.Регистратор <>ТекущийДокумент||ОБЪЕДИНИТЬ ВСЕ||ВЫБРАТЬ| РезервированиеСтоликов.Период,| РезервированиеСтоликов.Стол,| РезервированиеСтоликов.ОкончаниеБронирования|ИЗ| РегистрСведений.РезервированиеСтоликов КАК РезервированиеСтоликов|ГДЕ| РезервированиеСтоликов.Стол =Стол| И РезервированиеСтоликов.Период >НачалоПериода| И РезервированиеСтоликов.Период <КонецПериода| И РезервированиеСтоликов.Регистратор <>ТекущийДокумент";ВыборкаПересечениеПериодов = Запрос.Выполнить().Выбрать(); Пока ВыборкаПересечениеПериодов.Следующий() ЦиклСообщить("Стол " + Стол + " уже забронирован с " + ВыборкаПересечениеПериодов.Период + " по " + ВыборкаПересечениеПериодов.ОкончаниеБронирования);КонецЦикла; Если ВыборкаПересечениеПериодов.Количество() > 0 ТогдаОтказ = Истина;Возврат;КонецЕсли; Движения.РезервированиеСтоликов.Записывать = Истина;Движение = Движения.РезервированиеСтоликов.Добавить();Движение.Период = НачалоДня(Дата) + СекундВЧасе * Час(НачалоРезервирование) +СекундВМинуте * Минута(НачалоРезервирование) + Секунда(НачалоРезервирование);Движение.Стол = Стол;Движение.ОкончаниеБронирования = НачалоДня(Дата) + СекундВЧасе * Час(КонецРезервирование) +СекундВМинуте * Минута(КонецРезервирование) + Секунда(КонецРезервирование);
|