![]() |
![]() |
![]() |
|
Как организовать проверку в ТЧ. | ☑ | ||
---|---|---|---|---|
0
ZloyRafa
29.09.16
✎
05:08
|
Доброго времени суток!
До этого не сталкивался с подобным, хотелось бы у опытных людей спросить. У меня ТЧ, в ней есть 4 реквизита(Класс, Курс, ДатаНач, ДатаКон), составляется подобие расписания, вводится 3 курса с произвольными для каждого свой класс, после при вводе любого курса должна проходить проверка ДатыНач курса, если она меньше даты окончания прошлого курса в этом классе, то запрещать проведение(простым языком, дата начала нового курса в кабинете должна быть больше больше даты окончания предыдущего), как сделать проверку такую, либо возможно по другому организовать решение. Заранее всем откликнувшимся, благодарен. |
|||
1
Sammo
29.09.16
✎
05:13
|
Или делать проверку на этапе ввода данных (смотри тогда события ТЧ на форме) или делать массовую проверку при (точнее перед) записью. Там тоже ничего сложного - только я бы сортировал по классу/курсу.
|
|||
2
ZloyRafa
29.09.16
✎
05:17
|
Проверку сделать через текущие данные ?
|
|||
3
impulse9
29.09.16
✎
06:07
|
Обычно такие вещи делают при проведении документа, потому что может быть другой документ с пересекающимися данными
|
|||
4
ZloyRafa
29.09.16
✎
06:08
|
Такая вещи не сработает ?
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения) //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | РасписаниеРасписание.Класс КАК Класс, | РасписаниеРасписание.Курс КАК Курс, | РасписаниеРасписание.ДатаНачала КАК ДатаНачала, | РасписаниеРасписание.ДатаОкончания КАК ДатаОкончания |ИЗ | Документ.Расписание.Расписание КАК РасписаниеРасписание |ГДЕ | РасписаниеРасписание.Ссылка = &Ссылка |ИТОГИ ПО | Класс"; Запрос.УстановитьПараметр("Ссылка", Ссылка); РезультатЗапроса = Запрос.Выполнить(); ВыборкаКласс = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаКласс.Следующий() Цикл // Вставить обработку выборки ВыборкаКласс Выборка = ВыборкаКласс.Выбрать(); Пока Выборка.Следующий() Цикл Если Выборка.ДатаОкончания>=Выборка.Следующий().ДатаНачала Тогда Отказ=истина; Возврат; КонецЕсли; КонецЦикла; КонецЦикла; //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА КонецПроцедуры |
|||
5
ZloyRafa
29.09.16
✎
06:08
|
Такие*
|
|||
6
impulse9
29.09.16
✎
06:13
|
ПередЗаписью
Возникает перед выполнением записи объекта. Процедура-обработчик вызывается после начала транзакции записи, но до начала записи документа. |
|||
7
impulse9
29.09.16
✎
06:14
|
У тебя будут неактуальные данные в запросе
|
|||
8
Мимохожий Однако
29.09.16
✎
07:45
|
Подобные вещи для пользователя интереснее делать через табличное поле, в котором можно двигать диапазоны занятий по оси времени. А результат помещать в ТЧ. Кроме ТЧ в документе надо добавить регистры сведений, из которых и брать дополнительные данные. ИМХО, постановка задачи очень размытая.
|
|||
9
ZloyRafa
29.09.16
✎
07:59
|
(8) я может чего-то не понял. вот задание.
В начале месяца составляется расписание курсов на следующий месяц и вводится документ «Расписание», где указано, в каком классе, в какое время и какой курс будет проводиться. Далее документом «Заявка» от слушателей принимаются заявки на обучение. При вводе расписания необходимо контролировать, что в одном классе, в одно и то же время не могут проводиться разные курсы. Следует считать, что курс длится произвольное количество дней, и занятия по нему длятся полный день, т.е. в один день в одном классе может проводиться не более одного курса, В зависимости от запланированного расписания занятия по курсу могут проводиться в различных классах. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |