1С удалить документ непосредственно программно

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

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

Средства встроенного языка позволяют как пометить на удаление объект, так и удалить его непосредственно без контроля ссылочной целостности. Соответственно, и для интерактивной работы пользователя предусмотрена как возможность пометки объекта на удаление, так и возможность непосредственного удаления объекта.

Для избежания ошибок стандартное действие, вызываемое в списках по клавише Del, выполняет пометку на удаление, а для непосредственного удаления используется комбинация клавиш Shift+Del.

Для того чтобы запретить конечному пользователю возможность непосредственного удаления, следует отключать право "Интерактивное удаление" для соответствующих объектов конфигурации. Следует учитывать, что по умолчанию данное право, как и все остальные права, разрешено.

Таким образом, возможность непосредственного удаления (без контроля ссылочной целостности) должна определяться разработчиком конфигурации при настройке ролей и администратором при назначении ролей пользователям. В большинстве случаев имеет смысл запрещать пользователям интерактивное удаление и обеспечить, таким образом, использование механизма контроля ссылочной целостности. Однако в некоторых случаях непосредственное удаление может быть полезно. Например, для сотрудников, выполняющих первоначальное наполнение информационной базы до начала использования системы, или для объектов, на которые не создается ссылок в других объектах конфигурации.

Иногда возникает ситуация, когда из программы надо удалить все документы, очистить базу, оставив одни справочники. Сделать это можно несколькими способами. Рассмотрим их все, чтобы определить, какой будет удобен именно вам. В любом случае, удаление документов из базы начинается с проставления пометок на удаление. Это несложное действие, но если у вас все же возникнут вопросы, обращайтесь за консультацией по программе 1С к нашим специалистам – мы с радостью вам поможем.

Читайте также:  Тел справочник мтс беларусь

Удаление документов в журнале документов

Если нам надо удалить все счета, как пометить на удаление сразу группу документов? Зайдем в журнал документов «Счета покупателям».


Выделить все документы в журнале, можно нажав комбинацию клавиш «Ctrl+A». Затем или нажав правой кнопкой мышки, или в кнопке «Еще» выбрать команду «Пометить на удаление/Снять пометку». Также можно это сделать, нажав кнопку «Del» на клавиатуре.


Документы помечены на удаление. При этом если в журнале мы установим отбор (по дате, контрагенту), то выделятся только те документы, которые отобразятся в отборе.


Установка пометки на удаление с помощью обработки «Универсальный подбор и обработка объектов»

Еще один способ пометить на удаление все документы – с помощью обработки, доступной на диске ИТС или на сайте 1С (используя поиск) – УниверсальныеПодборИОбработка.epf. Работает она, правда, лишь при запуске программы в режиме обычного приложения. Для управляемого приложения есть аналогичная обработка, найти ее можно поиском на страничках разработчика.

Чтобы открыть нашу базу в обычном режиме, зайдем в Конфигуратор и откроем пункт меню «Сервис-Параметры». Установим переключатель запуска приложения в «Толстый клиент (обычное приложение)». Нажимаем кнопку «Применить».


Перейти к нашей базе в обычном режиме можно, запустив ее через меню «Сервис» – «1С:Предприятие», или используя комбинацию клавиш «Ctrl+F5».


В окне нашей программы через меню «Файл» – «Открыть» (или кнопку на панели инструментов) открываем нашу обработку.


В ней мы задаем объект поиска, в нашем случае – документы, которые мы хотим удалить. Но действия с ними происходят поочередно, т.е. выбрать мы можем только один объект для обработки. Если надо мы можем установить отбор для документов (например, ограничить группу документов датой).

Читайте также:  Усилитель пульсар у 001 стерео отзывы


Посмотрим ее действие на примере документов «Счет покупателю». Предположим, нам надо удалить из информационной базы все введенные документы этого вида. Установим документ «Счет покупателю» в поле «Объект поиска» и сделаем отбор, нажав кнопку «Найти объекты». В списке нам отобразятся все найденные документы.


Перейдем на закладку «Обработки». Из списка доступных обработок выберем «Пометка на удаление», используя стрелку, перенесем ее в правое окно. Нажмем кнопку «Выполнить».


Аналогичные действия проделываем с другими ненужными документами.

Запустим 1С в обычном режиме работы и проверим наш результат. Документы «Счета покупателям» помечены на удаление.


После установки пометки на удаление на все документы, которые нужно удалить, идем в пункт меню «Администрирование» и запускаем процедуру «Удаление помеченных объектов», установив режим «Автоматическое удаление всех помеченных объектов», и нажимаем «Удалить». После проведения контроля ссылочной целостности, документы будут удалены.


Удаление всех документов из программы без контроля ссылочной целостности

Этот способ хорошо использовать, когда надо очистить полностью информационную базу от всех документов. Сделать это можно с помощью обработки «Универсальный обмен данными в формате XML». Найти ее можно в разделе «Все функции»-«Обработки».


Эта обработка предназначена для обмена данными, но в ней имеется закладка «Удаление данных». Хотя разработчики предупреждают, что использовать ее не рекомендуется, т.к. может нарушиться ссылочная целостность информации, ею мы воспользуемся, т.к. нам она нужна именно для полной очистки информационной базы. Устанавливаем галочку, что удалять мы будем все документы.


При значительном объеме данных эта процедура может занять очень длительное время. Поэтому рекомендуется выполнять удаление по частям.

Работая в программах 1С, рекомендуется периодически удалять помеченные объекты. Накапливаясь в программе, они приводят к увеличению информационной базы, снижается быстродействие программы, появляются недочеты в работе пользователя. Ошибки могут возникнуть, если пользователь случайно выберет помеченный на удаление объект, что часто бывает при копировании документов, создании дублей записей и потом установки пометки на удаление на одну из них и т.п. При установлении даты запрета редактирования на определенную дату будет проблемно удалить такие объекты. Поэтому необходимо вовремя освобождать программу от ненужной информации самостоятельно или осуществлять данные действия силами специалистов в рамках сопровождения 1С 8.3.

Читайте также:  Файл spw чем открыть

Иногда необходимо удалить документы из базы 1С несмотря на наличие ссылок на них. Пометка на удаление и затем удаление помеченных объектов желаемого результата не принесут.

Ниже представлен код управляемой формы обработки, который удаляет все документы ПорчаТоваров.

В моем случае обработка пригодилась для завершения обновления 1С Управление торговлей до версии 11.4.3.160. После обновления выполняются дополнительные процедуры обработки данных, часть из которых у меня завершалась ошибкой. И в разделе НСИ и администрирование – Обслуживание – Результаты обновления и дополнительная обработка данных было указано: "Не все процедуры удалось выполнить (выполнено 12 из 14)."

Одна из процедур завершилась ошибкой:
"Процедура "Документы.ПорчаТоваров.ОбработатьДанныеДляПереходаНаНовуюВерсию" обработки данных завершилась с ошибкой:
"<ОбщийМодуль.ОбновлениеИнформационнойБазыСлужебный.Модуль(4342)>: Произошло зацикливание процедуры обработки данных. Выполнение прервано. ВызватьИсключение ТекстИсключения;"

При установке пометки удаления на документ Порча товаров (у меня был единственный в базе) возникала ошибка: "Ошибка при выполнении обработчика – ‘ПередЗаписью’ по причине:
<ОбщийМодуль.ОбновлениеИнформационнойБазы.Модуль(194)>: Действия с объектом временно запрещены, так как не завершен переход на новую версию программы.
Не завершены следующие процедуры обработки данных: Документы.ПорчаТоваров.ОбработатьДанныеДляПереходаНаНовуюВерсию ВызватьИсключение Результат.ТекстИсключения."

В общем получился замкнутый круг, в связи с чем и было принято решение удалить документ программно с использованием приложенной обработки, после чего ошибка ушла.

Открывать через Файл – Открыть.

Тестировалось на 1С: Управление торговлей, редакция 11.4.3.160.

Оцените статью
Добавить комментарий

Adblock detector