Розница 2.2.12.30
При формировании отчета о розничных продажах в РИБ, обычно проставляється время в которое реально закрывали смену и формировали отчет. Недавно в некоторых магазинах, создались отчеты в 23:59:59. Посмотрел по коду, действительно, используется метод КонецДня(ТекущаяДата).

Вопрос знатокам. Как тогда могут создаваться документы с текущей датой если в коде жестко прописано конец дня? Почему все другие магазины в течении долгого времени при создании отчета получают его дату на время закрытия смены, а некоторые на конец дня(и то не всегда, иногда как у всех на момент закрытия).

Этот полтергейст сбивает с мыслей.. у кого какие идеи, уважаемые коллеги?
---
Более детально описал то что писал ранее код взял из уже проверенного и рабочего решения которое мы недавно внедрили.
Добавляем в расширение обработку из конфигурации ЗакрытиеКассовойСмены
в модуле формы делаем вот такой код

```1c
    &НаСервере
    &После("ОбработатьДокументыККМСервер")
    Процедура Расш1_ОбработатьДокументыККМСервер(Отказ, СсылкаНаОтчет, НужноДополнительноеПредупреждение)
    ЕСЛИ НЕ СсылкаНаОтчет = Неопределено Тогда
    СуммаФактическойВыемки = СсылкаНаОтчет.СуммаОплатыНаличных;
    ОбъектОтчет = СсылкаНаОтчет.ПолучитьОбъект();
    ОбъектОтчет.Дата = ТекущаяДата();
    ОбъектОтчет.Записать();
    КонецЕсли
    КонецПроцедуры
```

Выемка делается в независимости от того провелся документ Отчет о розничных продажах или нет.
---
Рискну спросить.) В подписках на события при записи/проведении тоже смотрели код?
---
Кстати нет, сегодня посмотрю. Взял копию базы, где периодически смена закрывается в 23:59:59, попробую через отладчик с имитировать, также посмотрю подписку на события.
---
Ну так может это от релиза конфигурации зависит?
---
я использую узлы РИБ, так что релиз везде одинаковый.
---
Может есть константа которая указывает записывать документы расхода в конец дня, документы прихода в начало?
---
дело в том что речь идет о документах Отчет о Розничных продажах. В коде модуля закрытия смены используется приблизительно такой код:

```1c
    ОтчетОРозчниныхПродажах.Дата = КонецДня(ТекущаяДата)
```

в результате можно предположить что все отчеты должны иметь дату 23:59:59,
однако на практике 95% отчетов имеют дату на момент закрытия смены, НО некоторые имеют 23:59:59. Причем как только появляется такой отчет с этой датой, перестает работать автоматическая выемка. В рамках текущего вопроса разбираем причину расхождения во времени, почему по коду отчеты должны делаться в 23:59:59, а по факту делаются при закрытии смены.
---
а вариант, что те которые с нормальным временем, значит смена была закрыта вручную, и при закрытии смены сразу сформировался отчет, по времени закрытия смены физически.
А на конец дня формируется обработкой - например если смена не закрыта до конца дня, программа закрывает ее автоматически ?
---
Я нашел решение данной проблемы может быть кому то поможет.

Не делается выемка, Отчеты о розничных продажах в 1с Розница 2.2. формируются на 23:59:59 , потому что срабатывает контроль остатков при закрытие смены и документ не может быть проведен оперативно, именно поэтому платформа проставляет ему такое время. Если Отчет о розничных продажах не проводяться, не сможет сформироваться корректной остаток по кассе ккм, и не сделается выемка (не будет документа выемка в 1с).

Для решение проблемы выемки подходит расширение.

В модуле типовой обработки "Закрытие смены" есть процедура в которой формируется СуммаФактическойВыемки

Заимствуем в расширение и выполняем после осной процедуры код (код писал по памяти, если что сверьте в вашей конфигурации реквизит СуммаВыручки в ссылке на отчет)

```1c
    СуммаФактическойВыемки = СсылкаНаОтчет.СуммаВыручки;
    ОтчетОбьект = СсыллкаНаОтчет.ПолучитьОбьект;
    ОтчетОбьект.Дата = ТекущаяДата();
    ОтчетОбьект.Записать();
```

Данная доработка поможет создавать выемку в не зависимости от проведения отчета о розничных продажах.

Актуально если тип выемки при закрытии смены у вас стоит ПОЛНЫЙ :)
---
Более детально описал то что писал ранее код взял из уже проверенного и рабочего решения которое мы недавно внедрили.
Добавляем в расширение обработку из конфигурации ЗакрытиеКассовойСмены
в модуле формы делаем вот такой код

```1c
    &НаСервере
    &После("ОбработатьДокументыККМСервер")
    Процедура Расш1_ОбработатьДокументыККМСервер(Отказ, СсылкаНаОтчет, НужноДополнительноеПредупреждение)
    ЕСЛИ НЕ СсылкаНаОтчет = Неопределено Тогда
    СуммаФактическойВыемки = СсылкаНаОтчет.СуммаОплатыНаличных;
    ОбъектОтчет = СсылкаНаОтчет.ПолучитьОбъект();
    ОбъектОтчет.Дата = ТекущаяДата();
    ОбъектОтчет.Записать();
    КонецЕсли
    КонецПроцедуры
```

Выемка делается в независимости от того провелся документ Отчет о розничных продажах или нет.