При работе в программе 1С:Розница 2.0 или 2.1 пользователи часто сталкиваются с необходимостью очистки базы от старых данных, архивных чеков или ошибочно созданных документов. Одной из самых трудоемких задач в этом процессе становится удаление документа Отчет о розничных продажах, который намертво «сцеплен» с документом Выемка денежных средств из кассы. Система блокирует удаление, ссылаясь на нарушение целостности данных, и стандартные методы не всегда помогают. В рамках данной статьи мы подробно разберем, как разорвать эти связи и корректно очистить базу.
Прежде чем приступать к радикальным мерам, проанализируем ситуацию и поймем, почему конфигурация сопротивляется удалению. В 1С:Розница реализована жесткая логическая цепочка: Чек ККМ — Отчет о розничных продажах — Выемка денежных средств — Приходный кассовый ордер. Если в настройках магазина или кассы ККМ установлена опция «Производить выемку при закрытии смены», система автоматически генерирует документ выемки в момент формирования Z-отчета. С точки зрения учета, программа защищает пользователя от потери данных о движении наличных денег: нельзя просто удалить «расход» из кассы ККМ, если этот расход зафиксирован в итоговом отчете за смену.
Рассмотрим пошаговый алгоритм, который помогает в большинстве случаев без внесения изменений в программный код. Этот способ основан на функционале платформы по обработке помеченных на удаление объектов.
Отчет о розничных продажах и установим на него пометку на удаление (клавиша Del).Отчет о розничных продажах будет ссылаться на Выемку денежных средств.Выемка.Если интерактивный метод не помог, разберем более продвинутый вариант с использованием стандартной обработки. Этот метод позволяет очистить ссылки на выемку в самих отчетах.
Перейдем в Администрирование — Обслуживание — Корректировка данных — Групповое изменение реквизитов. Нам необходимо выполнить следующие действия:
Отчет о розничных продажах.После очистки ссылок Отчет о розничных продажах перестанет «держать» выемку, и мы сможем удалить их по отдельности.
Проанализируем еще одну причину: скрытые ссылки в регистрах. Связь между отчетом и выемкой часто дублируется в регистре сведений Документы по кассовой смене. Пока запись в этом регистре существует, удаление документа будет заблокировано на уровне платформы.
Чтобы решить эту проблему, выполним следующие шаги:
Документы по кассовой смене.Если вы обладаете навыками программирования или имеете доступ к консоли кода, рассмотрим самый быстрый, но и самый опасный метод. Мы можем принудительно установить пометку удаления, игнорируя встроенные проверки в модулях документа.
Посмотрим на пример кода, который можно выполнить во внешней обработке:
// Находим объект по ссылке или номеру
ВыемкаСсылка = Документы.ВыемкаДенежныхСредствИзКассыККМ.НайтиПоНомеру("0000-000001", ТекущаяДата());
Если Не ВыемкаСсылка.Пустая() Тогда
ОбъектВыемка = ВыемкаСсылка.ПолучитьОбъект();
// Второй параметр "Ложь" отключает проверку ссылочной целостности при пометке
ОбъектВыемка.УстановитьПометкуУдаления(Истина, Ложь);
ОбъектВыемка.Записать();
Сообщить("Документ помечен на удаление принудительно.");
КонецЕсли;
Этот метод позволяет обойти жесткие условия в процедуре ПередЗаписью, которые часто прописывают разработчики типовых решений для защиты фискально значимых данных.
В исключительных случаях, когда документ ЧекККМ или Выемка заблокирован изнутри программного кода (как упоминалось в Сообщении 5 форума), можно прибегнуть к временному изменению конфигурации. Разберем, как это сделать:
ЧекККМ и откроем его Модуль объекта.ПередЗаписью. Ориентировочно в районе 340-360 строк находится условие, проверяющее статус чека (например, Если СтатусЧекаККМ = Перечисления.СтатусыЧековККМ.Архивный...).Отказ = Истина) и выводит предупреждение.Чтобы не «расхлебывать» последствия некорректного удаления, как предостерегали участники форума, всегда придерживайтесь строгой последовательности:
Чеки ККМ, относящиеся к смене.Отчет о розничных продажах. Это освободит связанные движения в регистрах накопления.Приходный кассовый ордер (ПКО) в основную кассу, сначала пометьте на удаление его.Выемку денежных средств.Отчет и Чеки.Проанализировав все способы, мы видим, что проблема удаления выемки в 1С:Розница решаема как типовыми средствами, так и с помощью небольших технических хитростей. Главное — помнить, что подобные операции напрямую влияют на кассовую дисциплину, поэтому перед началом работ обязательно создайте резервную копию базы данных.