Конфа УТ для Украины (2.3.24.3).
Вот что написал сам:
ТекущееВремя = ТекущаяДата() - НачалоДня(ТекущаяДата());
Время = Дата('00010101') + (ТекущаяДата() - НачалоДня(ТекущаяДата()));
Дата1 = НачалоДня(ТекущаяДата() + 1*60*60*24);
Если (Время >= (Константы.НачалоВремениЗапрета.Получить() + НачалоДня(ТекущаяДата()))) и (Время <= (Константы.КонецВремениЗапрета.Получить() + Дата1 )) Тогда
Для каждого Строка Из Товары Цикл
Если Строка.Номенклатура.ПодакцизныйТовар И Строка.Номенклатура.ГраппаАкциза <> Перечисления.ГруппаАкциза.Г Тогда
Предупреждение("В даний момент заборонено продавати алкогольні напої");
Возврат;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Проще чего?
В константах лучше хранить время Нач и время Кон (число, время в секундах)
Для сравнения берем текущеевремя. Если оно между нач и кон - можно продавать.
Как проще можна сравнить время. Суть в том что нужно сравнивать время одного дня (22:00) и время следуещего дня (08:00).
Вот что доработал:
Время = Дата('00010101') + (ТекущаяДата() - НачалоДня(ТекущаяДата()));
Дата1 = НачалоДня(ТекущаяДата() + 1*60*60*24);
Дата2 = НачалоДня(ТекущаяДата());
Если (Время >= ( Дата2 + (Константы.НачалоВремениЗапрета.Получить() - НачалоДня(Константы.НачалоВремениЗапрета.Получить())))) И (Время <= ( Дата1 + (Константы.КонецВремениЗапрета.Получить() - НачалоДня(Константы.НачалоВремениЗапрета.Получить())))) Тогда
Для каждого Строка Из Товары Цикл
Если Строка.Номенклатура.ПодакцизныйТовар И Строка.Номенклатура.ГраппаАкциза <> Перечисления.ГруппаАкциза.Г Тогда
Предупреждение("В даний момент заборонено продавати алкогольні напої");
Возврат;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Почему пользователь должен менять константы? Или у Вас время запрета меняется каждый день?
на форме поля : время начала, время окончания. при записи преобразовали в секунды. В чем проблема?
Все получилось,константы перевёл в тип число, код стал более понятным:
ТекущееВремя = ТекущаяДата() - НачалоДня(ТекущаяДата());
Если (ТекущееВремя >= Константы.НачалоВремениЗапрета.Получить()) И (ТекущееВремя <= Константы.КонецВремениЗапрета.Получить()) Тогда
Для каждого Строка Из Товары Цикл
Если Строка.Номенклатура.ПодакцизныйТовар И Строка.Номенклатура.ГраппаАкциза <> Перечисления.ГруппаАкциза.Г Тогда
Предупреждение("В даний момент заборонено продавати алкогольні напої");
Возврат;
КонецЕсли;
КонецЦикла;
КонецЕсли;
НачалоДня = НачалоДня(ТекущаяДата());
ДатаВремяНачала = НачалоДня + Константы.НачалоВремениЗапрета.Получить();
ДатаВремяОкончания = НачалоДня + Константы.КонецВремениЗапрета.Получить();
Всем огромное спасибо тема закрыта!!!
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua