8.х отчет для контроля продаж о пробитии чека "налету"

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем dimao, 8 июл 2019.

  1. TopicStarter Overlay
    dimao
    Offline

    dimao Опытный в 1С

    Регистрация:
    15 сен 2008
    Сообщения:
    101
    Симпатии:
    0
    Баллы:
    26
    Добрый день. Руководству требуется в реальном режиме отслеживать продажи. Например: пробился чек на товар ниже себистоимости - на месенжер менеджеру сообщение с параметрами продажи(товар, сумма, номер чека, касса итд). Или еще пример, пробился чек на сумму 50000 - тоже сообщение.
    Отправка сообщений - это операция отлаженная. А вот как встроиться в цепочку пробития чека, чтобы сделать все с наименьшими изменениями кода? оформить подписку на событие "Обработка проведения" для документа ЧекККМ? или на запись набора данных в какой-то регистр?
    Как более правильно?
  2. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.586
    Симпатии:
    996
    Баллы:
    204
    На запись набора записей - более строгий режим, чем на проведение документа.
  3. TopicStarter Overlay
    dimao
    Offline

    dimao Опытный в 1С

    Регистрация:
    15 сен 2008
    Сообщения:
    101
    Симпатии:
    0
    Баллы:
    26
    Мне тоже так показалось (на мой неопытный взгляд). Я еще хотел расширение прицепить, но оказалось, что у нас писанная-переписанная конфигурация, в которой используется режим совместимости! и поэтому некоторые ошибки, к которым старая платформа лояльна, начинают вылезать при снятии режима совместимости, так что система становится неработоспособна! (например, обнаружилось использование конструкции "ПЕРВЫЕ" в запросе для динамического списка, которое игнорируется при режиме совместимости с какой-то старой платформой !) выискивать все такие места - дело муторное и неблагодарное, хотя использование расширений - очень вкусный результат.
    Короче, буду копать в сторону подписки на событие записи в регистр, генерируемой проведением чека.
  4. TopicStarter Overlay
    dimao
    Offline

    dimao Опытный в 1С

    Регистрация:
    15 сен 2008
    Сообщения:
    101
    Симпатии:
    0
    Баллы:
    26
    Моего опыта не хватает, чтобы выбрать место, для перехвата момента пробития чека! Помогите решить, пожалуйста:
    Пробовал Документ.ЧекККМ.ОбработкаПроведения - вызывается раз 5 при работе ассистента продаж (интерфейса кассира)! Не могу понять, как выбрать "тот самый, единственный раз".
    Пробовал РегистрНакопления.ТоварыНаСкладах.ПриЗаписи - как понять, что это именно пробитие чека?
  5. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.586
    Симпатии:
    996
    Баллы:
    204
    регистратор - документ "ЧекККМ"
    dimao нравится это.
  6. nsk1C
    Offline

    nsk1C Профессионал в 1С

    Регистрация:
    25 май 2016
    Сообщения:
    1.971
    Симпатии:
    185
    Баллы:
    104
    Какие продажи - оптовые или розничные?
    В какой конфигурации?
    В УТ пробитие кассового чека при оптовых продажах - только планируется к реализации в будущем релизе 11.4.9
    https://dl03.1c.ru/content/Trade/Extrafiles/PlanNews.htm
  7. TopicStarter Overlay
    dimao
    Offline

    dimao Опытный в 1С

    Регистрация:
    15 сен 2008
    Сообщения:
    101
    Симпатии:
    0
    Баллы:
    26
    Спасибо за информацию. Имеется в виду розничная торговля в УТ11.1 (там еще до меня прикручены онлайн кассы).
    Чтобы не лезть в код, я подписался на событие ПриЗаписи для набора данных регистранакопления ТоварыНаСкладах.
    Вот, примерно, что получилось:
    Код:
    Процедура аТоварыНаСкладахПриЗаписи(Источник, Отказ, Замещение) Экспорт
        // Обрабатываем пробитие чека. Если регистратор в первой строке переданного набора - чек,
        // то считаем, что весь набор - один ЧекККМ
        Если ТипЗнч(Источник[0].Регистратор)=тип("ДокументСсылка.ЧекККМ") тогда
                СтруктураПараметровОтбора = Новый Структура("Валюта, Дата, ВидЦены, Номенклатура, Характеристика, Упаковка");
                СтруктураПараметровОтбора.Валюта = Источник[0].Регистратор.Валюта;
                СтруктураПараметровОтбора.Дата = ТекущаяДата();
                СтруктураПараметровОтбора.ВидЦены = Справочники.ВидыЦен.НайтиПоНаименованию("Закупочная").Ссылка;
                чек=Строка(Источник[0].Регистратор);
                количествоПозиций=Источник[0].Регистратор.Товары.Количество();
                датаЧека=Источник[0].Регистратор.Дата;
                касса= Строка(Источник[0].Регистратор.КассаККМ);
                кассир= Строка(Источник[0].Регистратор.Кассир);
                суммаЧека=Строка(Источник[0].Регистратор.СуммаДокумента);
            Для каждого СтрокаЧека из  Источник[0].Регистратор.Товары Цикл
                СтруктураПараметровОтбора.Номенклатура = СтрокаЧека.Номенклатура;
                СтруктураПараметровОтбора.Характеристика = СтрокаЧека.Характеристика;
                СтруктураПараметровОтбора.Упаковка = СтрокаЧека.Упаковка;
                СпецЦена =  ПродажиСервер.ПолучитьЦенуПоОтбору(СтруктураПараметровОтбора);
                Если СтрокаЧека.Сумма/СтрокаЧека.Количество< СпецЦена*1.2 Тогда
                    проблема="Продажа ниже наценки 20%";
                КонецЕсли;
              
            КонецЦикла;
    
    //ТУТ будет вывод результата(параметры чека и позиции с подозрительной ценой)
          
        КонецЕсли;
      
    КонецПроцедуры
    Последнее редактирование: 9 июл 2019
  8. TopicStarter Overlay
    dimao
    Offline

    dimao Опытный в 1С

    Регистрация:
    15 сен 2008
    Сообщения:
    101
    Симпатии:
    0
    Баллы:
    26
    Еще странная вещь: при пробитии чека с частичной оплатой, запись в регистр инициируется несколько раз. Не могу отладить пока. Подскажите, почему так происходит и как избежать многократной проверки?

    И не только с частичной оплатой! странно, но все проблемные чеки с одного подразделения! куда копать?
    Последнее редактирование: 11 июл 2019 в 13:58
  9. TopicStarter Overlay
    dimao
    Offline

    dimao Опытный в 1С

    Регистрация:
    15 сен 2008
    Сообщения:
    101
    Симпатии:
    0
    Баллы:
    26
    Попробую прицепиться к обработке проведения документа ЧекККМ и в условие вставить
    "Если ТипЗнч(Источник)=тип("ДокументОбъект.ЧекККМ")
    И Источник.Статус=ПредопределенноеЗначение("Перечисление.СтатусыЧековККМ.Пробит") Тогда
    "