Related Posts
Восстановление последовательности документов при закрытии месяца в Бухгалтерия 3.0 не завершается
Заполнение табличных частей
Формирование сводных актов выполненных работ
Ввод поступления в переработку на основании передачи сырья (между организациями)
Конспект по установке сервера 1С на linux
Получение имени компьютера и его IP локально и в терминале
(0) Для большей универсальности все остальные ссылочные объекты тоже добавить.
(1) угу, сделаю, просто делал под свои цели — мне только 3 объекта были нужны
Вы пишете в описании: «Это крайне полезно при большой нагрузке на сервер 1С с большим количеством пользователей при большом объеме удаляемых объектов. Дабы не «подвешивать» сервер на долгое время можно назначить кол-во удаляемых объектов в порции, а также время следущего вызова процедуры удаления» — подразумеваете удаление не в монопольном режиме?
(3) apostal86, все верно, не в монопольном режиме обработка удаления может очень сильно грузить сервер 1С особенно при большом кол-ве помеченных на удаление объектов, такое наблюдалось и не раз. Пакетное удаление решает эту проблему.
Спасибо за обработку — полезная!
Что я изменил:
1) Поменял местами кнопки «Контроль» и «Удаление», так интуитивней — юзеры быстрее разберутся.
2) Флажки «Использование» в дереве — по умолчнию Истина, при открытии формы обработки. Чтобы сразу можно после запуска нажимать кнопку «Контроля», без лишних телодвижений.
Очень не хватает перехода по ссылкам на те объекты, из-за которых нельзя удалить.
(5) спасибо за комментарий.
1) Возможно — надо будет прикинуть как лучше
2) При большом кол-ве объектов поиск помеченных по всем видам объектов это далеко не очень хорошо, потому что это порой отнимает значительное серверное время на поиск всех объектов с пометками удаления. На то оно и выборочное удаление, чтобы пользователь сам мог проставить флажки на те объекты, что ему необходимы.
Очень не хватает перехода по ссылкам на те объекты, из-за которых нельзя удалить.
Вы имеете виду поиск ссылок с рекурсией. Это сделано в моей публикацииhttp://infostart.ru/public/148771/ Рекомендую ознакомиться. Там еще много нового и полезного, но она не бесплатная.
спасибо за обработку, очень интересная вещь
(6) В моем случае — это база с небольшим документооборотом, поэтому я смело включил все флажки. Если это все обсуждаемо и спорно — тогда сделать кнопку вкл/выкл флагов всей колонки.
Samarin, это совершенно несложно, и без проблем могу сделать тогда в самое ближайшее время.
Samarin, сделал кнопки по вашей просьбе =)
При «Контроле удаления» в список выводятся только те объекты, которые нельзя удалить!
Кнопка «Удалить» неактивна.
Платформа: 8.2.15.310
Конфигурация: ЗУП, редакция 2.5.
(11) все верно, так и должно быть. Если нельзя удалить, значит есть подчиненные объекты. Хотите их видеть и легко удалять тоже в виде дерева? Рекомендую купитьhttp://infostart.ru/public/148771/
Дело в том, что есть объекты, которые ни с чем ни связаны.
Стандартная обработка УдалениеПомеченныхОбъектов с контролем целостности спокойно удаляет несвязанные.
А в данной обработке те объекты, которые можно удалить вообще не выводятся. В итоге получаем очень сильно урезанный список объектов.
(13) моя обработка имеет проверку контроля еще и по подчиненным записям регистрам сведений, чего не имеет типовая. Поэтому вы и думаете, что Стандартная обработка УдалениеПомеченныхОбъектов с контролем целостности спокойно удаляет несвязанные. Потому что в ней нет проверки на подчиненные записи РС.
Если вы напишите простой код для проверки наличия ссылок тех объектов, которые моя обработка не дает удалить, то увидите записи РС. При удалении объекта типовой обработкой, если он имеет свои ссылки в записях РС и записи не подчинены регистратору, а просто содержат поле со ссылкой на удаляемый объект, то скорее всего после удаления объекта останется запись, в поле которой будет такая вещь как «<Объект не найден>» (например, когда включено версионирование). Что не есть гуд. Данная моя обработка просто не даст такое допустить, а коммерческая в (12) дает возможность удалять любые подчиненные объекты, включая записи РС.
В конфигурации Документооборот (1С:Документооборот 8 КОРП, редакция 1.1 (1.1.4.1)) обработка УдалениеПомеченныхОбъектов работает с контролем целостности как с РС, так и с остальными объектами как положено.
(15) ОК, хорошая иллюстрация! Стало быть типовая автоматически чистит записи РС если нет других подчиненных объектов. Без проблем — могу это так сделать, чтоб записи тоже вычищались.
Неплохо было бы сделать функционал, позволяющий выбирать:
1.Удаляем с контролем целостности (мягкий)
2.Удаляем без контроля целостности (грубый)
3.Удаляем объект и все связанные с ним объекты (очень грубый =))
(17)
1. Уже есть
2. Зачем это надо? Ошибки плодить в базе?
3. Речь идет о рекурсии. К тому же не видя, что удаляем — это плохо. А чтобы сделать видимым полное дерево подчиненных ссылок — это надо писать рекурсию с заполнением дерева ссылок.
В данной обработке ее делать не буду — слишком трудоемко.
Хотя поддерживаю сделать удаление автоматически подч. записей РС.
Для большего удобства было бы здорово добавить стандартный функционал, позволяющий добавлять обработку в базу на управляемых формах как дополнительную обработку.
А-то возникает ошибка «Ошибка получения сведений о внешней обработке такой-то при ее загрузке: Метод объекта не обнаружен (СведенияОВнешнейОбработке)».
(19) Сделано. Обновил до 1.5. Там уже есть авторегистрация доп.обработки.
Поставила плюсик.
Из пожеланий: хочется, чтобы можно было открывать на просмотр те объекты, из-за которых невозможно удалить исходный. Сейчас ссылки отображаются, но чтобы понять, что в них, приходится дополнительно лезть в журналы документов, справочники и т.п.
На платформе 8.2.18.109 конфигурации Бух. предприятия 2.0.52.6 почему-то вообще не запускается
(21) принято
(22) потому что это обработка для управляемого приложения. В обычном работать не будет.
{Форма.Форма.Форма(76)}: Значение не является значением объектного типа (ПолноеИмя)
СтрокаПодчиненныеНайденныеСсылки.ТипОбъектаСтр = Метаданные.НайтиПоТипу(ТипЗнч(ТекСтрока.Данные)).ПолноеИмя();
Вот такая ошибка вылазит.
1С 8.2.18.61 База 1С:Розница
не открывается обработка ни одной УТ ни БП
(25) Потому что ваши УТ и БП на обычном приложении, а эта обработка для управляемого.
1) Не плохо бы вставить ОписаниеОшибки() в попытку удаления объекта
А то в случае фэйла просто краснеет текст «можно удалить» и непонятно, что произошло или не произошло.
УТ11.1.2.27 не удаляет объекты, которые спокойно удаляет типовая обработка
Ошибка:
{Форма.Форма.Форма(197)}: Ошибка при вызове метода контекста (Удалить): Нарушение прав доступа!
Обработка запущена под полными правами.
2) Рядом с большой кнопкой «плюсануть разработку» можно сделать небольшую «минусануть».
(27) под полными правами запускайте
(28) Если вы внимательно прочитаете моё сообщение, то увидите :
(29) Значит RLS наложен, в запросе к метаданным нужно довесить ВЫБРАТЬ РАЗРЕШЕННЫЕ
(30) На выбранный объект RLS не наложены. Связанных объектов или РС нет (уже всё удалил)
+ повторюсь, что типовая обработка объект удаляет без проблем.
У вас есть под рукой УТ11? Попробуйте удалить реализацию вашей обработкой (предварительно почистив связанные объекты и РС)
(31) На работе нет под рукой УТ, дома гляну.
Пользуюсь уже некоторое время версией 1.5.
На БП 3.0 возникла проблема: обработка не удаляет объекты помеченные на удаление, но ссылающиеся друг на друга, при этом стандартное удаление помеченных объектов спокойно их удаляет.
(33) bird21, +1
Это не проблема в Бух 3.0, это проблема обработки 🙂
Мне тоже приходится удалять такие объекты в монопольном режиме стандартной обработкой…
Из обработки невозможно открыть объекты, отображаемые в списке.
в УТ 11 не удаляет документ «Передача товаров между организациями», пишет «нельзя удалить», в раскрываемом списке документа (я предполагаю что там показывается объект, который содержит ссылку на удаляемый) показывается этот же документ.
(27)
УстановитьПривилегированныйРежим(Истина);
ТекОбъект.Удалить();
УстановитьПривилегированныйРежим(Ложь);
(37)
Для Каждого ТекСтрока Из ТабСсылокНаОбъект Цикл
//Klesk666
Если ТекСтрока.Ссылка=Выборка.Ссылка и Выборка.Ссылка.ПолучитьОбъект().Метаданные()=ТекСтрока.Метаданные Тогда
Продолжить;
КонецЕсли;
//Klesk666
Я думаю, что так долго работает… А там «НайтиПоСсылкам» в цикле вызывается, каждый раз для одного элемента. о_О
(39) а вы как иерархию построите зависимых объектов если сразу в НайтиПоСсылкам() скормите все помеченные на удаление объекты вне цикла? Метод вам вернет просто плоскую таблицу значений. Как тут раз идея та, что видны все зависимые объекты в дереве значений, а не просто список всего что нашло.
(40) Я бы искал ссылки при разворачивании узла дерева.
(41) НайтиПоСсылкам() найдет первые зависимые объекты, у него нет в функционале рекурсивного поиска, на этом принципе работает типовое удаление объектов. Как вы без рекурсии (в цикле) обойдете все зависимые от зависимых объекты? К тому же ряд зависимых объектов не найдет даже этот метод, если мы говорим о записях РС, например.
(42) А, ну да
Да обработка удаляет не все, что можно. При наличии ссылок на удаляемый нет проверки на то что объект, на который ссылаются, сам помечен на удаление. В общем в процедуру УдалитьОбъектыСервер() добавил в конце УдалитьОбъекты(), с контролем целостности данных.