helpf.pro
Регистрация

v8.3: Процедура ОбработкаПроведения

scorpion_2510
25.04.2020 04:46Прочитано: 604

Документ "Резервирование" при проведении должен проверять:

окончание резервирования должно быть строго позже начала резервирования

если стол уже зарезервирован на указанное время, то выводить сообщение и не проводить документ

дописать код надо чуть чуть не понимаю помогите пожалуйста

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

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

Пока ВыборкаПересечениеПериодов.Следующий() ЦиклСообщить("Стол " + Стол + " уже забронирован с " + ВыборкаПересечениеПериодов.Период + " по " + ВыборкаПересечениеПериодов.ОкончаниеБронирования);КонецЦикла;

Если ВыборкаПересечениеПериодов.Количество() > 0 ТогдаОтказ = Истина;Возврат;КонецЕсли;

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

Yandex
Возможно, вас также заинтересует
Реклама на портале
Подсказка: Для быстрого поиска ответов - используйте 'Поиск'
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.