Как в программе 1С:Розница удалить документ «Выемка денежных средств из кассы»

Программист 1С v8.3 (Управляемые формы) 1С:Розница Управленческий учет Торговля и дистрибуция
← На главную

При работе в программе 1С:Розница 2.0 или 2.1 пользователи часто сталкиваются с необходимостью очистки базы от старых данных, архивных чеков или ошибочно созданных документов. Одной из самых трудоемких задач в этом процессе становится удаление документа Отчет о розничных продажах, который намертво «сцеплен» с документом Выемка денежных средств из кассы. Система блокирует удаление, ссылаясь на нарушение целостности данных, и стандартные методы не всегда помогают. В рамках данной статьи мы подробно разберем, как разорвать эти связи и корректно очистить базу.

Выясним причину блокировки удаления

Прежде чем приступать к радикальным мерам, проанализируем ситуацию и поймем, почему конфигурация сопротивляется удалению. В 1С:Розница реализована жесткая логическая цепочка: Чек ККМ — Отчет о розничных продажах — Выемка денежных средств — Приходный кассовый ордер. Если в настройках магазина или кассы ККМ установлена опция «Производить выемку при закрытии смены», система автоматически генерирует документ выемки в момент формирования Z-отчета. С точки зрения учета, программа защищает пользователя от потери данных о движении наличных денег: нельзя просто удалить «расход» из кассы ККМ, если этот расход зафиксирован в итоговом отчете за смену.

Метод 1. Интерактивное удаление через стандартный интерфейс

Рассмотрим пошаговый алгоритм, который помогает в большинстве случаев без внесения изменений в программный код. Этот способ основан на функционале платформы по обработке помеченных на удаление объектов.

  1. Первым делом найдем нужный нам Отчет о розничных продажах и установим на него пометку на удаление (клавиша Del).
  2. Перейдем в раздел Администрирование — Обслуживание — Удаление помеченных объектов.
  3. Выберем режим «Выборочное удаление» и нажмем «Далее».
  4. Когда система выведет список объектов, которые не могут быть удалены из-за наличия ссылок, мы увидим в нижней части окна дерево зависимостей. Проанализируем его: Отчет о розничных продажах будет ссылаться на Выемку денежных средств.
  5. В этом же окне воспользуемся кнопкой «Пометить на удаление» (или иконкой с красным крестиком) непосредственно для документа Выемка.
  6. После того как оба документа помечены, попробуем запустить повторную проверку. В ряде версий (например, в 2.1.5.9) это позволяет разорвать циклическую зависимость и полностью удалить цепочку документов.

Метод 2. Использование обработки «Групповое изменение реквизитов»

Если интерактивный метод не помог, разберем более продвинутый вариант с использованием стандартной обработки. Этот метод позволяет очистить ссылки на выемку в самих отчетах.

Перейдем в Администрирование — Обслуживание — Корректировка данных — Групповое изменение реквизитов. Нам необходимо выполнить следующие действия:

  1. В поле «Выбирать элементы типа» укажем Отчет о розничных продажах.
  2. Нажмем кнопку «Дополнительные параметры» и установим флажки «Показывать служебные реквизиты» и «Режим разработчика». Без этого программа не позволит редактировать скрытые связи.
  3. В списке реквизитов найдем поле, отвечающее за связь с выемкой (в зависимости от релиза оно может называться по-разному или находиться в табличной части).
  4. Установим новое значение — «Пустая ссылка» — и нажмем «Изменить реквизиты».

После очистки ссылок Отчет о розничных продажах перестанет «держать» выемку, и мы сможем удалить их по отдельности.

Метод 3. Очистка регистров сведений и сброс даты запрета

Проанализируем еще одну причину: скрытые ссылки в регистрах. Связь между отчетом и выемкой часто дублируется в регистре сведений Документы по кассовой смене. Пока запись в этом регистре существует, удаление документа будет заблокировано на уровне платформы.

Чтобы решить эту проблему, выполним следующие шаги:

  1. Зайдем в «Функции для технического специалиста» (ранее «Все функции»).
  2. Найдем регистр сведений Документы по кассовой смене.
  3. Отфильтруем записи по нужному нам отчету или смене и удалим соответствующую строку.
  4. Важно: Проверим Дату запрета изменения данных. Если вы пытаетесь удалить документы за прошлый месяц, а дата запрета установлена на текущее число, программа выдаст ошибку ссылочной целостности, даже если связей нет. Временно отключите дату запрета в разделе «Администрирование» — «Настройки пользователей и прав».

Метод 4. Программное удаление (для разработчиков)

Если вы обладаете навыками программирования или имеете доступ к консоли кода, рассмотрим самый быстрый, но и самый опасный метод. Мы можем принудительно установить пометку удаления, игнорируя встроенные проверки в модулях документа.

Посмотрим на пример кода, который можно выполнить во внешней обработке:


// Находим объект по ссылке или номеру
ВыемкаСсылка = Документы.ВыемкаДенежныхСредствИзКассыККМ.НайтиПоНомеру("0000-000001", ТекущаяДата());
Если Не ВыемкаСсылка.Пустая() Тогда
    ОбъектВыемка = ВыемкаСсылка.ПолучитьОбъект();
    // Второй параметр "Ложь" отключает проверку ссылочной целостности при пометке
    ОбъектВыемка.УстановитьПометкуУдаления(Истина, Ложь);
    ОбъектВыемка.Записать();
    Сообщить("Документ помечен на удаление принудительно.");
КонецЕсли;

Этот метод позволяет обойти жесткие условия в процедуре ПередЗаписью, которые часто прописывают разработчики типовых решений для защиты фискально значимых данных.

Метод 5. Временная корректировка модуля документа

В исключительных случаях, когда документ ЧекККМ или Выемка заблокирован изнутри программного кода (как упоминалось в Сообщении 5 форума), можно прибегнуть к временному изменению конфигурации. Разберем, как это сделать:

  1. В Конфигураторе включим возможность изменения (если конфигурация на поддержке).
  2. Найдем документ ЧекККМ и откроем его Модуль объекта.
  3. Найдем процедуру ПередЗаписью. Ориентировочно в районе 340-360 строк находится условие, проверяющее статус чека (например, Если СтатусЧекаККМ = Перечисления.СтатусыЧековККМ.Архивный...).
  4. Закомментируем блок кода, который вызывает исключение (Отказ = Истина) и выводит предупреждение.
  5. Сохраним конфигурацию базы данных, удалим ненужные документы и обязательно вернем код в исходное состояние.

Рекомендованная последовательность действий

Чтобы не «расхлебывать» последствия некорректного удаления, как предостерегали участники форума, всегда придерживайтесь строгой последовательности:

  1. Снимите с проведения (сделайте непроведенными) все Чеки ККМ, относящиеся к смене.
  2. Снимите с проведения Отчет о розничных продажах. Это освободит связанные движения в регистрах накопления.
  3. Если на основании выемки был создан Приходный кассовый ордер (ПКО) в основную кассу, сначала пометьте на удаление его.
  4. Удалите Выемку денежных средств.
  5. И только в самом конце удаляйте Отчет и Чеки.

Проанализировав все способы, мы видим, что проблема удаления выемки в 1С:Розница решаема как типовыми средствами, так и с помощью небольших технических хитростей. Главное — помнить, что подобные операции напрямую влияют на кассовую дисциплину, поэтому перед началом работ обязательно создайте резервную копию базы данных.

← На главную