Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Установка запрета продажи алкоголя.          
Pashaboston Подменю пользователя
сообщение 28.10.15, 10:38
Сообщение #1

Говорящий
***
Группа: Пользователи
Сообщений: 91
Спасибо сказали: 1 раз
Рейтинг: 1

Конфа УТ для Украины (2.3.24.3).
Вот что написал сам:
ТекущееВремя = ТекущаяДата() - НачалоДня(ТекущаяДата());
    Время = Дата('00010101') + (ТекущаяДата() - НачалоДня(ТекущаяДата()));
    Дата1 = НачалоДня(ТекущаяДата() + 1*60*60*24);
    
    Если (Время >= (Константы.НачалоВремениЗапрета.Получить() + НачалоДня(ТекущаяДата()))) и (Время <= (Константы.КонецВремениЗапрета.Получить() + Дата1 )) Тогда
        
        Для каждого Строка Из Товары Цикл
            Если Строка.Номенклатура.ПодакцизныйТовар И Строка.Номенклатура.ГраппаАкциза <> Перечисления.ГруппаАкциза.Г   Тогда
                Предупреждение("В даний момент заборонено продавати алкогольні напої");        
                Возврат;
            КонецЕсли;
            
        КонецЦикла;
    КонецЕсли;

Это все написано в процедуре ЗакрытьЧек в форме РегистрациПродаж. Даты запрета берутся с констант. Хочу стросить можно ли как то попроще?

Тип констатант Дата, состав даты Время

sava1 Подменю пользователя
сообщение 28.10.15, 11:27
Сообщение #2

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

Проще чего?

В константах лучше хранить время Нач и время Кон (число, время в секундах)
Для сравнения берем текущеевремя. Если оно между нач и кон - можно продавать.

Pashaboston Подменю пользователя
сообщение 28.10.15, 11:38
Сообщение #3

Говорящий
***
Группа: Пользователи
Сообщений: 91
Спасибо сказали: 1 раз
Рейтинг: 1

Как проще можна сравнить время. Суть в том что нужно сравнивать время одного дня (22:00) и время следуещего дня (08:00).
Вот что доработал:

    Время = Дата('00010101') + (ТекущаяДата() - НачалоДня(ТекущаяДата()));
    Дата1 = НачалоДня(ТекущаяДата() + 1*60*60*24);
    Дата2 = НачалоДня(ТекущаяДата());
    Если (Время >= ( Дата2 + (Константы.НачалоВремениЗапрета.Получить() - НачалоДня(Константы.НачалоВремениЗапрета.Получить())))) И (Время <= ( Дата1 + (Константы.КонецВремениЗапрета.Получить() - НачалоДня(Константы.НачалоВремениЗапрета.Получить())))) Тогда
        
        Для каждого Строка Из Товары Цикл
            Если Строка.Номенклатура.ПодакцизныйТовар И Строка.Номенклатура.ГраппаАкциза <> Перечисления.ГруппаАкциза.Г   Тогда
                Предупреждение("В даний момент заборонено продавати алкогольні напої");        
                Возврат;
            КонецЕсли;
            
        КонецЦикла;
    КонецЕсли;

sava1 Подменю пользователя
сообщение 28.10.15, 11:41
Сообщение #4

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

Цитата(Pashaboston @ 28.10.15, 11:38) *
Суть в том что нужно сравнивать время одного дня (22:00) и время следуещего дня (08:00).

Для чего ? Если текущее время меньше или больше означенного интервала - продажа запрещена. При чем здесь дата?

Pashaboston Подменю пользователя
сообщение 28.10.15, 12:08
Сообщение #5

Говорящий
***
Группа: Пользователи
Сообщений: 91
Спасибо сказали: 1 раз
Рейтинг: 1

Цитата(sava1 @ 28.10.15, 12:27) *
В константах лучше хранить время Нач и время Кон (число, время в секундах)

Для пользователя проще чтобы он ставил время, а как мне время например "01.01.0001 22:00:00" перевести в число секунд?

sava1 Подменю пользователя
сообщение 28.10.15, 12:19
Сообщение #6

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

Почему пользователь должен менять константы? Или у Вас время запрета меняется каждый день?

Pashaboston Подменю пользователя
сообщение 28.10.15, 12:21
Сообщение #7

Говорящий
***
Группа: Пользователи
Сообщений: 91
Спасибо сказали: 1 раз
Рейтинг: 1

Цитата(sava1 @ 28.10.15, 13:19) *
Почему пользователь должен менять константы? Или у Вас время запрета меняется каждый день?

У пользователя могут быть кривые руки), нужно прощитать все варианты.

sava1 Подменю пользователя
сообщение 28.10.15, 12:27
Сообщение #8

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

Цитата(Pashaboston @ 28.10.15, 12:21) *
У пользователя могут быть кривые руки), нужно прощитать все варианты.

Какие варианты? Пользователь не должен менять константы. Раз установили и забыли. Или через обработку (как дата запрета)

Pashaboston Подменю пользователя
сообщение 28.10.15, 12:28
Сообщение #9

Говорящий
***
Группа: Пользователи
Сообщений: 91
Спасибо сказали: 1 раз
Рейтинг: 1

Цитата(sava1 @ 28.10.15, 13:27) *
Какие варианты? Пользователь не должен менять константы. Раз установили и забыли. Или через обработку (как дата запрета)

Через обработку.

sava1 Подменю пользователя
сообщение 28.10.15, 12:32
Сообщение #10

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

на форме поля : время начала, время окончания. при записи преобразовали в секунды. В чем проблема?

Спасибо сказали: Pashaboston,

Pashaboston Подменю пользователя
сообщение 28.10.15, 12:52
Сообщение #11

Говорящий
***
Группа: Пользователи
Сообщений: 91
Спасибо сказали: 1 раз
Рейтинг: 1

Все получилось,константы перевёл в тип число, код стал более понятным:
ТекущееВремя = ТекущаяДата() - НачалоДня(ТекущаяДата());                  
    Если (ТекущееВремя >= Константы.НачалоВремениЗапрета.Получить()) И (ТекущееВремя <= Константы.КонецВремениЗапрета.Получить()) Тогда
        
        Для каждого Строка Из Товары Цикл
            Если Строка.Номенклатура.ПодакцизныйТовар И Строка.Номенклатура.ГраппаАкциза <> Перечисления.ГруппаАкциза.Г   Тогда
                Предупреждение("В даний момент заборонено продавати алкогольні напої");        
                Возврат;
            КонецЕсли;
        КонецЦикла;
    КонецЕсли;

Теперь как мне при открытии обработки преобразить число секунд в Время?

TipsyKID Подменю пользователя
сообщение 28.10.15, 13:16
Сообщение #12

Оратор
Иконка группы
Группа: Местный
Сообщений: 413
Из: Киев
Спасибо сказали: 161 раз
Рейтинг: 0

НачалоДня = НачалоДня(ТекущаяДата());
ДатаВремяНачала = НачалоДня +  Константы.НачалоВремениЗапрета.Получить();
ДатаВремяОкончания = НачалоДня + Константы.КонецВремениЗапрета.Получить();


Сообщение отредактировал TipsyKID - 28.10.15, 13:17


Signature
Специалист : Технологическая платформа 8.х, Бухгалтерия для Украины, Управление торговлей для Украины, Зарплата и Управление Персоналом для Украины

Спасибо сказали: Pashaboston,

Pashaboston Подменю пользователя
сообщение 28.10.15, 13:26
Сообщение #13

Говорящий
***
Группа: Пользователи
Сообщений: 91
Спасибо сказали: 1 раз
Рейтинг: 1

Всем огромное спасибо тема закрыта!!! icon_beer17.gif

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.03.24, 22:54
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!