Вход | Регистрация


Как организовать проверку в ТЧ.

Как организовать проверку в ТЧ.
Я
   ZloyRafa
 
29.09.16 - 05:08
Доброго времени суток!
До этого не сталкивался с подобным, хотелось бы у опытных людей спросить.
У меня ТЧ, в ней есть 4 реквизита(Класс, Курс, ДатаНач, ДатаКон), составляется подобие расписания, вводится 3 курса с произвольными для каждого свой класс, после при вводе любого курса должна проходить проверка ДатыНач курса, если она меньше даты окончания прошлого курса в этом классе, то запрещать проведение(простым языком, дата начала нового курса в кабинете должна быть больше больше даты окончания предыдущего), как сделать проверку такую, либо возможно по другому организовать решение.
Заранее всем откликнувшимся, благодарен.
 
 
   Sammo
 
1 - 29.09.16 - 05:13
Или делать проверку на этапе ввода данных (смотри тогда события ТЧ на форме) или делать массовую проверку при (точнее перед) записью. Там тоже ничего сложного - только я бы сортировал по классу/курсу.
   ZloyRafa
 
2 - 29.09.16 - 05:17
Проверку сделать через текущие данные ?
   impulse9
 
3 - 29.09.16 - 06:07
Обычно такие вещи делают при проведении документа, потому что может быть другой документ с пересекающимися данными
   ZloyRafa
 
4 - 29.09.16 - 06:08
Такая вещи не сработает ?
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА

    // Данный фрагмент построен конструктором.

    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

    
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |    РасписаниеРасписание.Класс КАК Класс,
        |    РасписаниеРасписание.Курс КАК Курс,
        |    РасписаниеРасписание.ДатаНачала КАК ДатаНачала,
        |    РасписаниеРасписание.ДатаОкончания КАК ДатаОкончания
        |ИЗ
        |    Документ.Расписание.Расписание КАК РасписаниеРасписание
        |ГДЕ
        |    РасписаниеРасписание.Ссылка = &Ссылка
        |ИТОГИ ПО
        |    Класс";
    
    Запрос.УстановитьПараметр("Ссылка", Ссылка);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаКласс = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    
    Пока ВыборкаКласс.Следующий() Цикл
        // Вставить обработку выборки ВыборкаКласс

    
        Выборка = ВыборкаКласс.Выбрать();
    
        Пока Выборка.Следующий() Цикл
            Если Выборка.ДатаОкончания>=Выборка.Следующий().ДатаНачала Тогда
                Отказ=истина;
                Возврат;
                КонецЕсли;
            КонецЦикла;
    КонецЦикла;
    
    //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА



КонецПроцедуры
   ZloyRafa
 
5 - 29.09.16 - 06:08
Такие*
   impulse9
 
6 - 29.09.16 - 06:13
ПередЗаписью
Возникает перед выполнением записи объекта. Процедура-обработчик вызывается после начала транзакции записи, но до начала записи документа.
   impulse9
 
7 - 29.09.16 - 06:14
У тебя будут неактуальные данные в запросе
   МимохожийОднако
 
8 - 29.09.16 - 07:45
Подобные вещи для пользователя интереснее делать через табличное поле, в котором можно двигать диапазоны занятий по оси времени. А результат помещать в ТЧ. Кроме ТЧ в документе надо добавить регистры сведений, из которых и брать дополнительные данные. ИМХО, постановка задачи очень размытая.
   ZloyRafa
 
9 - 29.09.16 - 07:59
(8) я может чего-то не понял. вот задание.
В начале месяца составляется расписание курсов на следующий месяц и вводится документ «Расписание», где указано, в каком классе, в какое время и какой курс будет проводиться. Далее документом «Заявка» от слушателей принимаются заявки на обучение.
При вводе расписания необходимо контролировать, что в одном классе, в одно и то же время не могут проводиться разные курсы. Следует считать, что курс длится произвольное количество дней, и занятия по нему длятся полный день, т.е. в один день в одном классе может проводиться не более одного курса, В зависимости от запланированного расписания занятия по курсу могут проводиться в различных классах.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует