Имя: Пароль:
1C
1С v8
УТ 11.4 Ограничить продажу Алкогольной продукции по времени в РМК?
,
0 viktarh
 
18.08.19
02:27
1с 8.3 УТ 11.4
Как запретить розничную продажу алкоголя по времени? Продажи ведутся через встроенный РМК.
Пробовал через > Скидки (наценки)
Нету - тип скидки : "запрет розничной продажи" Как в Розница 2.2
Подскажите, как это реализовать?
Большое спасибо за внимание.
1 ДенисЧ
 
18.08.19
06:47
Править конфигурацию не предлагать?
2 runoff_runoff
 
18.08.19
17:04
править через расширятор
3 viktarh
 
19.08.19
01:57
Думаю, что должно решение без правки конфигурации, или я ошибаюсь?
4 Сияющий в темноте
 
19.08.19
02:14
Ут не Розница,там много чего ожидаемого просто нет.
5 viktarh
 
19.08.19
02:39
Получается только через правку конфигурации?
6 Il19
 
19.08.19
04:19
(5) необязательно - проще через внешнюю обработку для скидки
7 FiftyStars
 
20.08.19
01:23
сталкивался с ситуацией, когда кассиры использовали отложенные чеки для пробития в запрещенное время. В рознице(и скорее всего в УТ тоже) запрет продажи алкоголя не работает в момент пробития чека(или как минимум не работал. работал только в момент добавления алкоголя в чек). Еще разок розница морочила голову с непробитыми чеками и их пробитием при закрытии смены. Вышел из ситуации за 15 минут используя файл hosts и маленький скрипт на AutoIt. В итоге 1с, да и любой другой софт не дают пробить чек - ругаются на недоступность УТМ.
Для локального УТМ:
В 1с на кассе доступ к УТМ прописываем адрес UTM и нужный порт
в файле hosts скрипт в зависимости от времени удаляет или наоборот добавляет запись "127.0.0.1 UTM"
скрипт вешается в планировщик задач на нужное время + на вход пользователя(хотя у меня скрипт чуть более модифицированный с уведомлениями кассиру о скором отключении УТМ и повешен на ежеминутное исполнение)
задачу выполняем под админом

текст вот такой:

#include <Math.au3>
#include <File.au3>

$alcoStartHour = 11 ; первый час начала продаж
$alcoEndHour = 21 ; первый час начала действия запрета
$utmHostsLine = "127.0.0.1 UTM"
$hostsPath = "c:\windows\system32\drivers\etc\hosts"

$fileHandle = FileOpen($hostsPath, 0)
$fileContents = FileReadToArray($fileHandle)
FileClose($fileHandle)
$utmLineNum = Null
$lastMeaningLineNum = 0

For $i = 0 to UBound($fileContents) -1
    if $fileContents[$i] = $utmHostsLine Then
       $utmLineNum = $i+1
    EndIf
    if StringStripWS($fileContents[$i],3) <> "" Then
      $lastMeaningLineNum = $i+1
    EndIf
Next

if IsValidTime($alcoStartHour, $alcoEndHour) Then ; разрешенное время
   If $utmLineNum = Null Then ; строка в hosts не найдена
      $fileHandle = FileOpen($hostsPath, 1)
      FileWriteLine($fileHandle, $utmHostsLine)
      FileClose($fileHandle)
   EndIf
Else ; запрещенное время
   If $utmLineNum <> Null Then ; строка в hosts найдена
      _FileWriteToLine($hostsPath, $utmLineNum,"", True)
   EndIf
EndIf

;заодно очистим пустые строки в конце hosts
If UBound($fileContents) > $lastMeaningLineNum Then
   For $i = $lastMeaningLineNum+1 to UBound($fileContents)
      _FileWriteToLine($hostsPath, $lastMeaningLineNum+1,"", True)
   Next
EndIf

Func IsValidTime($start, $end) ; проверка текущего времени
   $currentHour = Int(@HOUR)
   $invert = $start > $end
   $validTime = $currentHour >= _Min($start,$end) And $currentHour <= _Max($start,$end)-1
   If $invert Then
      $validTime = Not $validTime
   EndIf
   Return $validTime
EndFunc
8 FiftyStars
 
20.08.19
01:24
опять забыл про тег =(
9 viktarh
 
20.08.19
10:01
Идея интересная, но как быть с пивом?
10 FiftyStars
 
20.08.19
17:58
(9) на тот момент задача была такая: в любом случае(ошибка кассира/ПО) никакие данные о продажах не должны уйти в егаис в неположенное время. Запрет добавления в чек и пробития чека с алкоголем(даже слабым) в неположенное время был реализован при помощи расширения.
11 Сияющий в темноте
 
20.08.19
19:27
Можно еще проще,в брандмауэре входящие на утм резать по времени,и стандартный шедулер для переключения правил.
но это,чтобы не пробили,а чтобы предупредить и спросить паспорт,тут конфигу править однозначно.