Имя: Пароль:
1C
1С v8
Как осуществить проверку даты. Нужна помощь
0 skorp3585
 
21.04.20
23:42
Подскажите кто знает как сделать проверку свободной даты. Происходит запись человека на дату, как сделать чтобы при записи на эту же дату происходила ошибка или чтобы при записи на эту дату пропадала услуга которая уже занята в эту дату?
1 Lex_Liven
 
21.04.20
23:45
Если НачалоДня(Дата) = НачалоДня(ВтораяДата) Тогда

А дальше делай что хочешь.
2 novichok79
 
21.04.20
23:47
Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ ПЕРВЫЕ 1
    |    1 КАК Поле1
    |ИЗ
    |    РегистрСведений.ЖурналЗаписей КАК Т
    |ГДЕ
    |    Т.ДатаЗаписи = &ДатаЗаписи
    |    И Т.Сотрудник = &Сотрудник";
    
    Запрос.УстановитьПараметр("ДатаЗаписи", ДатаЗаписи);
    Запрос.УстановитьПараметр("Сотрудник", Сотрудник);
    
    Выборка = Запрос.Выполнить().Выбрать();
    
    Если Выборка.Следующий() Тогда
        
        ВызватьИсключение СтрШаблон(НСтр("ru='Сотрудник %1 уже записан на дату %2'"), Сотрудник, ДатаЗаписи);
        
    КонецЕсли;
3 Lex_Liven
 
21.04.20
23:48
(2) НАЧАЛОПЕРИОДА(Т.ДатаЗаписи,ДЕНЬ) = НАЧАЛОПЕРИОДА(&ДатаЗаписи,ДЕНЬ)
тогда уж...
4 novichok79
 
21.04.20
23:49
(2) я думаю смысл понятен.
5 novichok79
 
21.04.20
23:49
(3) а кто сказал что датазаписи типа датавремя?
6 Lex_Liven
 
21.04.20
23:50
(5) А никто не сказал ничего. Но если там не ДатаВремя, то мой код не сломается, а вот если ДатаВремя - то ваш не сработает.
7 novichok79
 
21.04.20
23:51
(6) вы правы, приведение к началу дня делать надо, у вас в запросе, но можно и в параметре. в общем, пускай молодой падаван учится.
8 Lex_Liven
 
21.04.20
23:52
(7) В запросе - потому что запись в регистре теоретически тоже может быть не на начало дня.
9 novichok79
 
21.04.20
23:54
(8) зависит от структуры метаданных, а ТС не сообщил о ней ничего.
10 Lex_Liven
 
21.04.20
23:55
(9) Так именно поэтому я и даю максимально универсальный вариант согласно «ТЗ».
11 novichok79
 
21.04.20
23:55
(10) и это замечательно )))
12 skorp3585
 
23.04.20
09:12
(2) За код спасибо, попробую. Ещё говорят есть способ через Регистр сведений, может кто подскажет как это осуществить?
13 fisher
 
23.04.20
09:16
(12) Если сделать зависимый периодический регистр сведений (движения которого пишутся документом) с периодичностью до дня, то попытка записи другим документом на ту же дату по той же комбинации измерений приведет к ошибке (уникальность данных по комбинациям измерений и периоду контролируется платформой).
14 fisher
 
23.04.20
09:22
Ну а попытка записи таких "дублей" одним набором приведет к ошибке и в независимом регистре сведений. Просто если разными наборами писать, то в независимом регистре сведений данные просто перепишутся поверх. А в зависимом регистре сведений данные можно менять только с отбором по регистратору и поэтому выдаст ошибку.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс