Удаление контрагентов

1. user698184_bunegin 24.10.18 17:17 Сейчас в теме
Народ помогите решить задачу. Нужно удалить всех контрагентов у которых нет документов. По идеи, можно просто пометить на удаление всех контрагентов, но как это сделать массово? После уже запустить стандартную обработку и она должна удалить всех у кого нет никаких ссылок. В общем кто чем поможет? УТ 10.3.20.2 платформа 8.3.10
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
14. starjevschik 26.10.18 10:44 Сейчас в теме
(1) обработку написать такую - минут 20, по-моему. Спрашивать дольше о)
Fox-trot; +1 Ответить
2. dka80 21 24.10.18 17:42 Сейчас в теме
Групповая обработка тебе поможет пометить на удаление массово
4. user698184_bunegin 24.10.18 17:46 Сейчас в теме
(2)Да уже наткнулся на нее. Думаю как вариант
6. user698184_bunegin 24.10.18 17:49 Сейчас в теме
(4)Только вопрос в том, отработает ли стандартное удаление корректно. Нужное не затрет к примеру ?
3. harvester_sorrow 24 24.10.18 17:44 Сейчас в теме
нет ни одного документа в базе?
Как вариант напрашивается создание запроса ко всем документам где есть реквизит контрагент и перебором в цикле
Правда это костыль и запрос в цикле... но если не постоянная обработка будет то на один- два раза пойдет)
5. user698184_bunegin 24.10.18 17:47 Сейчас в теме
(3)С кодом я на вы, по быстрому точно не напишу. Вариант выше выглядит проще))
7. harvester_sorrow 24 24.10.18 17:56 Сейчас в теме
(5) попробуй тогда всех контрагентов пометить на удаление и попробовать удалить, может получится, должен не дать по ссылкам удалить, но это не точно, откуда то ж берутся битые ссылки)))
user1604844; collider; Timur.V; +3 Ответить
8. Timur.V 79 24.10.18 18:24 Сейчас в теме
(7)
Да, так можно.
1) помечаем всех контрагентов на удаление
2) Администрирование - Удаление помеченных объектов - выборочно- Контрагенты - удаляем
3) у помеченных на удаление контрагентов - убираем признак Удаления у контрагентов

Битые ссылки получаются, когда программисты 1с удаляют без проверки на ссылки т.е. программно.
Если удалять через интерфейс программы 1с (типовые возможности программы) - проверяется ссылочная целостность - битых ссылок не бывает.
usersed; user705522_constantin_h; mariyanna; +3 Ответить
9. mariyanna 24.10.18 19:13 Сейчас в теме
(8) Так и делали в свое время, все отлично получилось, никаких битых ссылок не возникло.
user705522_constantin_h; +1 Ответить
13. user698184_bunegin 26.10.18 10:43 Сейчас в теме
Попробовал я способ описанный в комментарии (8) . Результат такой, Справочник Контрагенты удалено 28 шт, а вот Справочник Контактные лица контрагентов удалено 5347. Соответственно я получил контрагентов без контактных лиц. Удалял не трогая никаких документов.
Я так понимаю, что все обработки работают по двум способам:
1. Удаление контрагентов со всеми ссылками.
2. Когда обработка режет все ссылки и удаляет только контрагентов. При таком способе мы получим в документах, вместо контрагента, ссылка не найдена. Этот способ не подходит.
Документы трогать нельзя. Вообще нельзя трогать контрагента если есть хоть какая то ссылка.
10. user698184_bunegin 25.10.18 08:24 Сейчас в теме
Так первым делом и попробую. Посмотрим, что из этого выйдет)Спасибо.
11. Vitaly1C8 25.10.18 11:26 Сейчас в теме
НайтиПоСсылкам (FindDataByRef)
Синтаксис:
НайтиПоСсылкам (< Список ссылок> )
Параметры:
<Список ссылок> Обязательный
Тип: Массив. Массив со списком ссылок на объекты, ссылки на которые нужно найти.
Возвращаемое значение:
Тип: ТаблицаЗначений. Таблица значений, состоящая из ко­лонок с индексами: 0 - Искомая ссылка; 1 - Ссылка на объект, который содержит искомую ссылку.
Описание:
Осуществляет поиск ссылок на объекты.
Код 1C v 8.х

//Примеры:

    Ссылки = НайтиПомеченныеНаУдаление();
      

    ТабСсылок = НайтиПоСсылкам (Ссылки);
      

    Для Каждого Ссылка из ТабСсылок Цикл
      

     Сообщить (" " + Сокр(Ссылка[0]) + " " + Сокр(Ссылка[1]));
      

    КонецЦикла;
Показать
12. traktor 25.10.18 13:49 Сейчас в теме
При установке пометки на удаление для контрагента помечаются на удаление и все подчиненные справочники - договора, контактные лица, расчетные счета и т.д.
Если на них нет ссылок в базе, то они удалятся...
Если не жалко потерять - можно попробовать.
Также контрагент может не удалиться, если на него есть ссылка, но не в документах.

Но наверное проще воспользоваться критерием отбора, который есть в типовой УТ 10
ВыборкаКонтрагентов = Справочники.Контрагенты.Выбрать();
	Пока ВыборкаКонтрагентов.Следующий() Цикл
		Если ВыборкаКонтрагентов.ПометкаУдаления 
			ИЛИ ВыборкаКонтрагентов.ЭтоГруппа Тогда
				Продолжить;
		КонецЕсли;
		
		МассивДокументовПоКонтрагенту = КритерииОтбора.ДокументыПоКонтрагенту.Найти(ВыборкаКонтрагентов.Ссылка);
		
		Если МассивДокументовПоКонтрагенту.Количество() = 0 Тогда
			ОбъектКонтрагента = ВыборкаКонтрагентов.ПолучитьОбъект();
			ОбъектКонтрагента.УстановитьПометкуУдаления(Истина);
		КонецЕсли;
	КонецЦикла;
Показать
15. progr-2008 118 26.10.18 23:55 Сейчас в теме
Всех контрагентов переместить в одну папку и отметить ее на удаление.
После удаления - признак удаления снять.
16. progr-2008 118 27.10.18 21:42 Сейчас в теме
(15)Я про использование типового варианта удаления с проверкой ссылочной целостности.
С общей папки признак удаления потом снять. В ней останутся контрагенты, у которых будут ссылки на какие-либо объекты в базе.
17. Hoppius 05.04.19 15:49 Сейчас в теме
Добрый день!

Удаление помеченных объектов не удаляет контрагентов. При чем ссылается на Контрагента только элемент справочника "Ключи реестра документов". Данный элемент справочника "Ключи реестра документов" пометить на удаление на дает.
Как удалить контрагента?
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот