Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
17 апр 2024, 02:05

Не получается сравнение типов

Автор ProfileS, 28 мар 2011, 16:54

0 Пользователей и 1 гость просматривают эту тему.

ProfileS

Здравствуйте, возникла такая вот проблема: есть документ "выдача книги" и константа "максимальное количество дней выдачи". В модуле объекта описываю проверку реквизитов один из них "ДатаВыдачи"(тип дата) , так вот хочу сравнить  с константой (тип Число), но в служебном сообщении пишет, что должны быть одинакового типа. Как мне сделать, чтобы можно было сравнивать(я думаю что преобразовать число в тип дату, но не знаю как=( )....

Klyacksa

Приветствую!
Как это "преобразовать число в тип дата"?  :xfbnsdfb: физический смысл этого действия какой?
Я так понимаю, стоИт задача проверить - не просрочено ли... Тогда у нас должны быть параметры:
1. Дата выдачи - когда реально выдали
2. Количество дней, на которое максимально выдали
3. Момент времени, на который проверяем просрочку.

Тогда для проверки, нужно всего лишь проверить, сколько дней прошло с момента выдачи на момент проверки, и не превышает ли это максимальное количество дней выдачи.
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

cska-fanat-kz

Если ТекущаяДата() <= (ДатаВыдачи+86400*КоличествоДнейНаКоторыеВыдалиКнигу) Тогда
//Все нормально
КонецЕсли;
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

ProfileS

Спасибо за ответы, но я не совсем правильно объяснился. Вот я начал не получается перевести 2 даты в дни, так как пишет "Преобразование значения к типу Число не может быть выполнено", а дни нужны, чтобы я думаю сравнивать с константой. Вот на картинках что я хочу, чтобы получилось

Klyacksa

Нет, мы Вас правильно поняли.
И Вы поймите - нельзя сравнивать Число и Дату. Нужно либо найти количество дней между двумя датами, и потом сравнивать, либо  получать максимально-устраивающую дату, и сравнивать ее с текущей.

В 1С разность дат (как Вы находите переменную Кол) дает разницу в секундах.
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

ProfileS

Klyacksa Я и пробую первым способ "получение количества дней", но когда я начинаю переводить разницу между датами умножая на (24*60*60), конфигуратор начинает выдавать "преобразование невозможно", вот и не пойму как сделать чтобы мне он дни выдавал, а сравнить потом с константой будет делом техники=)

Klyacksa

Выложите Ваш код (тот, что выше) в текстовом виде, я поправлю. Самой набирать, знаете ли, лень :)
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

ProfileS

Процедура ТблКнигиПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
          
            Для Каждого ТекСтрокаТблКниги Из ТблКниги Цикл
                 
            Кол=(НачалоДня(ТекСтрокаТблКниги.СрокВозврата)- НачалоДня(ТекущаяДата()* 86400));
                      
   Если  ТекСтрокаТблКниги.НомерСтроки> Константы.МаксКолКнигНаРуках.Получить() Тогда
         Сообщить("Слишком много уберите лишнее! ",СтатусСообщения.Важное);
         Отказ= Истина;
            КонецЕсли;
         
         Если  Кол>Константы.КолДнейВыдачи.Получить() Тогда
            Сообщить("Слишком много дней! ",СтатусСообщения.Важное);
         Отказ= Истина;
            КонецЕсли;
          КонецЦикла;

   
КонецПроцедуры

вот сам код в текстовом виде
Конечно понимаю B)

Klyacksa

Процедура ТблКнигиПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
         
           Для Каждого ТекСтрокаТблКниги Из ТблКниги Цикл
               
           Кол=(НачалоДня(ТекСтрокаТблКниги.СрокВозврата)- НачалоДня(ТекущаяДата()))/(24*60*60);
           // либо как вариант, сравниваем так:
           // Если НачалоДня(ТекущаяДата())+Константы.КолДнейВыдачи.Получить()*24*60*60>(НачалоДня(ТекСтрокаТблКниги.СрокВозврата) тогда ....
                     
  Если  ТекСтрокаТблКниги.НомерСтроки> Константы.МаксКолКнигНаРуках.Получить() Тогда
        Сообщить("Слишком много уберите лишнее! ",СтатусСообщения.Важное);
        Отказ= Истина;
           КонецЕсли;
       
        Если  Кол>Константы.КолДнейВыдачи.Получить() Тогда
           Сообщить("Слишком много дней! ",СтатусСообщения.Важное);
        Отказ= Истина;
           КонецЕсли;
         КонецЦикла;

 
КонецПроцедуры
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

ProfileS

Klyacksa Большое тебе спасибо за помощь :zebzdr:

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск