Народ помогите решить задачу. Нужно удалить всех контрагентов у которых нет документов. По идеи, можно просто пометить на удаление всех контрагентов, но как это сделать массово? После уже запустить стандартную обработку и она должна удалить всех у кого нет никаких ссылок. В общем кто чем поможет? УТ 10.3.20.2 платформа 8.3.10
По теме из базы знаний
- Обработка "Партионное удаление объектов" для 1С:Предприятие-7.7
- Выборочное удаление организаций из информационных баз 1С (управляемые формы), с удалением всех ссылающихся на эти организации данных
- Обработка удаления данных по организации для УПП 1.3
- Поиск и пометка на удаление контрагентов без документов
- Удаление контрагентов по последней дате взаимодействия
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
нет ни одного документа в базе?
Как вариант напрашивается создание запроса ко всем документам где есть реквизит контрагент и перебором в цикле
Правда это костыль и запрос в цикле... но если не постоянная обработка будет то на один- два раза пойдет)
Как вариант напрашивается создание запроса ко всем документам где есть реквизит контрагент и перебором в цикле
Правда это костыль и запрос в цикле... но если не постоянная обработка будет то на один- два раза пойдет)
(7)
Да, так можно.
1) помечаем всех контрагентов на удаление
2) Администрирование - Удаление помеченных объектов - выборочно- Контрагенты - удаляем
3) у помеченных на удаление контрагентов - убираем признак Удаления у контрагентов
Битые ссылки получаются, когда программисты 1с удаляют без проверки на ссылки т.е. программно.
Если удалять через интерфейс программы 1с (типовые возможности программы) - проверяется ссылочная целостность - битых ссылок не бывает.
Да, так можно.
1) помечаем всех контрагентов на удаление
2) Администрирование - Удаление помеченных объектов - выборочно- Контрагенты - удаляем
3) у помеченных на удаление контрагентов - убираем признак Удаления у контрагентов
Битые ссылки получаются, когда программисты 1с удаляют без проверки на ссылки т.е. программно.
Если удалять через интерфейс программы 1с (типовые возможности программы) - проверяется ссылочная целостность - битых ссылок не бывает.
Попробовал я способ описанный в комментарии (8) . Результат такой, Справочник Контрагенты удалено 28 шт, а вот Справочник Контактные лица контрагентов удалено 5347. Соответственно я получил контрагентов без контактных лиц. Удалял не трогая никаких документов.
Я так понимаю, что все обработки работают по двум способам:
1. Удаление контрагентов со всеми ссылками.
2. Когда обработка режет все ссылки и удаляет только контрагентов. При таком способе мы получим в документах, вместо контрагента, ссылка не найдена. Этот способ не подходит.
Документы трогать нельзя. Вообще нельзя трогать контрагента если есть хоть какая то ссылка.
Я так понимаю, что все обработки работают по двум способам:
1. Удаление контрагентов со всеми ссылками.
2. Когда обработка режет все ссылки и удаляет только контрагентов. При таком способе мы получим в документах, вместо контрагента, ссылка не найдена. Этот способ не подходит.
Документы трогать нельзя. Вообще нельзя трогать контрагента если есть хоть какая то ссылка.
НайтиПоСсылкам (FindDataByRef)
Синтаксис:
НайтиПоСсылкам (< Список ссылок> )
Параметры:
<Список ссылок> Обязательный
Тип: Массив. Массив со списком ссылок на объекты, ссылки на которые нужно найти.
Возвращаемое значение:
Тип: ТаблицаЗначений. Таблица значений, состоящая из колонок с индексами: 0 - Искомая ссылка; 1 - Ссылка на объект, который содержит искомую ссылку.
Описание:
Осуществляет поиск ссылок на объекты.
Код 1C v 8.х
//Примеры:
Синтаксис:
НайтиПоСсылкам (< Список ссылок> )
Параметры:
<Список ссылок> Обязательный
Тип: Массив. Массив со списком ссылок на объекты, ссылки на которые нужно найти.
Возвращаемое значение:
Тип: ТаблицаЗначений. Таблица значений, состоящая из колонок с индексами: 0 - Искомая ссылка; 1 - Ссылка на объект, который содержит искомую ссылку.
Описание:
Осуществляет поиск ссылок на объекты.
Код 1C v 8.х
//Примеры:
Ссылки = НайтиПомеченныеНаУдаление();
ТабСсылок = НайтиПоСсылкам (Ссылки);
Для Каждого Ссылка из ТабСсылок Цикл
Сообщить (" " + Сокр(Ссылка[0]) + " " + Сокр(Ссылка[1]));
КонецЦикла;
Показать
При установке пометки на удаление для контрагента помечаются на удаление и все подчиненные справочники - договора, контактные лица, расчетные счета и т.д.
Если на них нет ссылок в базе, то они удалятся...
Если не жалко потерять - можно попробовать.
Также контрагент может не удалиться, если на него есть ссылка, но не в документах.
Но наверное проще воспользоваться критерием отбора, который есть в типовой УТ 10
Если на них нет ссылок в базе, то они удалятся...
Если не жалко потерять - можно попробовать.
Также контрагент может не удалиться, если на него есть ссылка, но не в документах.
Но наверное проще воспользоваться критерием отбора, который есть в типовой УТ 10
ВыборкаКонтрагентов = Справочники.Контрагенты.Выбрать();
Пока ВыборкаКонтрагентов.Следующий() Цикл
Если ВыборкаКонтрагентов.ПометкаУдаления
ИЛИ ВыборкаКонтрагентов.ЭтоГруппа Тогда
Продолжить;
КонецЕсли;
МассивДокументовПоКонтрагенту = КритерииОтбора.ДокументыПоКонтрагенту.Найти(ВыборкаКонтрагентов.Ссылка);
Если МассивДокументовПоКонтрагенту.Количество() = 0 Тогда
ОбъектКонтрагента = ВыборкаКонтрагентов.ПолучитьОбъект();
ОбъектКонтрагента.УстановитьПометкуУдаления(Истина);
КонецЕсли;
КонецЦикла;
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот