В практике работы с 1С:Управление нашей фирмой (УНФ) редакции 3.0 пользователи часто сталкиваются с ситуацией, когда после загрузки данных из сторонних программ или при синхронизации остатки в кассах ККМ отображаются корректно, но после выполнения операции «Групповое перепроведение документов» данные из отчетов пропадают, а остатки уходят в минус. Разберем детально, почему это происходит, как работает механизм формирования движений и что нужно проверить, чтобы восстановить учет.
Для начала проанализируем, как документ ОтчетОРозничныхПродажах взаимодействует с регистром накопления ДенежныеСредстваВКассахККМ. Важно понимать разницу между «записью набора записей» при обмене данными и «проведением» документа в самой системе. При первичной синхронизации внешние обработки часто записывают данные в регистры напрямую, фактически «насильно» вставляя строки в таблицу базы данных. Однако, когда мы запускаем Групповое перепроведение, система очищает старые движения и запускает штатный программный код модуля документа. Если условия для формирования движений не соблюдены, документ очистит регистр, но не создаст в нем новые записи.
Рассмотрим основные причины, по которым стандартная логика 1С:УНФ может «отказаться» формировать записи по кассе ККМ:
ДенежныеСредстваВКассахККМ обязательно должен быть указан вид оплаты с типом «Наличные». Если при выгрузке это поле осталось пустым или заполнилось некорректно, система решит, что наличных денег в кассу не поступало.Выясним причину в настройках самой программы. В 1С:УНФ 3.0 существует тесная связь между отчетом и сущностью «Кассовая смена». Если вы загрузили отчеты, но в базе отсутствуют соответствующие документы КассоваяСмена со статусом «Закрыта», штатный алгоритм проведения может блокировать движения по денежным средствам.
Также проверим раздел «Настройки — Еще больше возможностей — Продажи». Найдем опцию «Архивировать чеки ККМ». В зависимости от этой настройки, ответственность за остатки в кассе может перекладываться с отдельных чеков на итоговый отчет. Если настройки были изменены перед перепроведением, логика программы изменится для всех документов в периоде.
Если визуальная проверка реквизитов не дала результата, воспользуемся инструментами разработчика. Посмотрим на процесс проведения «глазами программы». Для этого нам понадобится режим Конфигуратора. Разберем этот процесс по шагам:
ОтчетОРозничныхПродажах и откроем его модуль объекта.ОбработкаПроведения. В ней нас интересует вызов общего модуля, отвечающего за отражение движений.ДенежныеСредстваВКассахККМ. Примерный вид кода для поиска:
ПроведениеДокументовУНФ.ОтразитьДвижения(
"ДенежныеСредстваВКассахККМ",
ПараметрыПроведения,
Отказ);
Запустим отладку (F5), перейдем в режим «Предприятие» и попробуем провести один проблемный документ. Программа остановится на выбранной строке. Используя клавишу F8 (шаг «внутрь»), мы сможем проследить, в какой момент условие (например, Если ВидОплаты = ПредопределенноеЗначение(...)) возвращает Ложь и прерывает запись в регистр.
Если мы выяснили, что проблема в неверно заполненных реквизитах (например, не заполнена категория оплаты), мы можем воспользоваться обработкой «Групповое изменение реквизитов». Проанализируем алгоритм действий:
Важный момент: если данные были загружены «криво» изначально, иногда проще очистить документы и выполнить повторную синхронизацию, предварительно настроив правила сопоставления касс и типов оплат в узле обмена. Это гарантирует, что при каждом последующем перепроведении (которое может случиться автоматически при закрытии месяца) ваши остатки в кассах ККМ не «улетят» в минус.