Добавлена возможность частичного удаления, предварительно сделав отбор по метаданным (ссылочные типы).
Добавлена возможность интерактивной корректировки списка исключаемых типов ссылок.
Изнаначально взято из конфигурации 1с Документооборот.
В 1с Документооборот Используются справочники для представления документов и, т.к. для элементов справочников нет понятия проведение, при контроле ссылочной целостности некоторые ссылки исключаются. Далее удаление производится автоматически по ведущему измерению регистра.
Список исключаемых метаданных берется из ОбщегоНазначенияПереопределяемый.ПолучитьИсключенияПоискаСсылок().
Добавлена возможность интерактивной корректировки списка исключаемых типов ссылок.
Используется форма ВыборОбъектовМетаданных, взятая из общих форм 1с Документооборот. Подошла без единого исправления, даже позаимствовал функцию ЗначениеПометкиЭлементов в основную форму обработки.
В встроенной в кофигурацию обработке процедуры расположены в модуле менеджера. Пришлось перенести их в модуль объекта. Возможно вставка в конфигурацию.
Есть аналогичные публикации, например, http://forum.infostart.ru/forum24/topic43769/.
Отличий не знаю, т.к. у меня нет прав на скачивание .
Это есть мои упражнения с управляемыми формами.
Попробовал передать таблицу значений между сервером и клиентом (не очень удачно).
Попытался использовать серверную функцию в процедуре ПриАктивизацииСтроки (не потому, что надо, а потому, что хочется).
Замечено, что не совпадает удаление в монопольном и немонопольном режимах (в монопольном, обычно, удаляет больше объектов).
Представляется как есть, без гарантий.
UPD: Добавлена обычная форма. Некоторые изменения, в основном, косметического характера.
UPD2: Исправлена часть ошибок, добавленная при предыдущем обновлении :). Добавлены флажки «Сообщать об удаленных» и «Удалять в транзакции». Количество удаляемых в монопольном и немонопольном режимах, практически, сравнялось.
//Удаляемые = осОбработкаОбъект.ПолучитьПомеченныеНаУдаление();
Удаляемые = осОбработкаОбъект.ПолучитьПомеченныеНаУдаление().Результат;
//ЗначениеВРеквизитФормы(осОбработкаОбъект, "Объект");
UPD3: Исправлены замеченные ошибки.
UPD4: Исправлена ошибка: планы видов расчета не включались в дерево метаданных — ошибка копи-пасты, перенесенная из 1с-Документооборот. Конечно, документообороту виды расчета глубоко параллельны, но мне вот понадобились :).
UPD5: Добавлены ПРОЦЕДУРЫ И ФУНКЦИИ РЕГИСТРАЦИИ обработки в информационной базе
UPD6: Исправлены замеченные ошибки отображения статуса возможности удаления. Замечено, что если установлена дата запрета редактирования и есть ссылки на записи периодическго регистра сведений с более ранним периодом, чем дата запрета редактирования, то статус зеленый (можно удалить), но удалить невозможно. Пока ничего не делал по этому поводу.
UPD7: Добавил планы обмена.
Полезная обработка. Очень пригодилась.
пробовал на документообороте ПРОФ выдает ошибку
{Форма.ОсновнаяФормаУ.Форма(766)}: Ошибка при вызове метода контекста (ЗагрузитьЗначения)
сзУдаляемые.ЗагрузитьЗначения(Удаляемые);
по причине:
Несоответствие типов (параметр номер ‘1’)
Спасибо. Действительно, не протестировал режим полного удаления в УФ при апгрейде. Подправил.
Спасибо, добавил.
(7) Если будете обновлять, не забудьте по ПланыОбмена.
Планы обмена не включаются в дерево метаданных при выборочном удалении — ошибка копи-пасты, перенесенная из 1с-Документооборот. Конечно, документообороту обмены глубоко параллельны, но мне вот понадобились.
(9) Поручик,
Добавил. Гран мерси за конструктивные предложения.
Правда, планы обмена не совсем побоку для 1с-Документооборот, а вот планов счетов или планов видов расчетов там, действительно нет. Ведь по сути Документооборот- это АРМ секретаря (делопроизводителя). И даже объекты метаданных типа документ, в отличие от большинства конфигураций, носят вспомогательный характер. Основные объекты — справочники и бизнес-процессы.
А по планам расчетов там, действительно, была ошибка. И до сих пор есть (смотрел в релизе 1.2.5.3 от 30.08.12). Выглядит так:
Правда, эта общая форма там, по-моему, не используется, держат на всякий случай.
Все хорошо и так работает, но я в коде изменил кое-что:
Модуль объекта строка примерно 284 (чтобы не при каждой итерации медленный поиск в метаданных был)
В модуле формы «ОсновнаяФормаУ» чобы влоделца не в попытке получал:
Показать
выручила обработочка, спсб)
Подскажите обработка не проверяет ссылочную целостность? Запустил автоматическое и все удалила..хотя куча ссылок было и не удаляемых объектов дофига. Начал по коду смотреть и увидел УдалитьОбъекты(УдаляемыеОбъекты, Ложь);
А в справке пишите что проверяется ссылочная целостность… Как быть щас?
Здравствуйте, при удалении помеченных ошибка:
{ВнешняяОбработка.УдалениеПомеченныхОбъектов.МодульОбъекта(561)}: Ошибка при вызове метода контекста (УдалитьОбъекты)
УдалитьОбъекты(лМассив, Ложь);
по причине:
Нарушение прав доступа!
Управление торговлей, редакция 11.1 (11.1.2.10)
1С:Предприятие 8.2 (8.2.18.109)
При установке режима удаления Частичное вываливается ошибка «Неизвестное имя формы. Имя «Обработка.УдалениеПомеченныхОбъектов.Форма.ВыборОбъектовМетаданныхУ»
(0) Обработка не открывается при вызове из дополнительных обработок в конфигурациях на БСП.
В форме ОсновнаяФормаУ режим открытия окна РежимОткрытияОкна поменять на Независимый. Сейчас там установлено Блокировать окно владельца. Именно это мешает открытию обработки.
Скачал. Удобная обработка, активно использую. Рекомендую другим.
Я пока так и не понял — как работает данная обработка. Базу вешает наглухо. Ошибок при этом никаких. Буду пробовать ещё раз на Документообороте.
В какой базе вешается?
К сожалению, будучи вытесненным из стройных рядов оденснегов, перешел на подножный корм (эмбеддед программирование) :).
По возвращении постараюсь устранить замеченные ошибки.
Разобрался. Работает вроде как. Но с большим объёмом информации эта обработка выполняется пол дня и кажется, что база зависла.
Проверил. Работает. Но только сразу поставил Автоматическое удаление.
(0) В 8.3.5 управляемая форма не работает. При открытии выдаётся окно с сообщением
Ошибка отображения типов:
Отсутствует отображение для типа ‘ОбъектМетаданных’
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
http://v8.1c.ru/8.2/uobjects }v
http://v8.1c.ru/8.1/data/core }value
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства ‘v’:
форма: Элемент
имя: {
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства ‘value’:
форма: Элемент
имя: {
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа ‘ОбъектМетаданных’
Где там на форме ОбъектыМетаданных, ума не приложу. Процедура ПриСозданииНаСервере не отрабатывается, видимо ошибка получается при построении формы.
() В 8.3.5.1098. Сейчас скачиваю более свежую версию, попробую на другой конфе.
обработка помогла, спасибо
Говорят что в последних версиях 3.0 удаление и так немонопольное. У меня пока требует монопольного режима.
Да, для БСП обработка не работает. в ERP 2.0 не открывается.
(27) По крайней мере в 8.3.5.1186 обработка работает даже в режиме такси. Сейчас сам проверил.
БСП это всего лишь библиотека прцедур, которая никаким боком к данной обработке. Вот у меня конфа на БСП и что?
УТ 11.1.4
при открытии — не открывается, пишет —
Ошибка отображения типов:
Отсутствует отображение для типа «ОбъектМетаданных»
(29) Поставьте платформу посвежей.
(0)
Например, там нет УФ.
А так — во всех без исключения ПоискИУдалениеПомеченных используется «НайтиПомеченныеНаУдаление» и «НайтиПоСсылкам».
А это самый главный косяк и недостаток всех обработок, т.к. не позволяет в принципе обрабатывать огромные базы с сотнями тысяч помеченных на удаление объектов.
(0)
Не знаю, из какого Документооборота обработка взята — но не из 1С-Документооборот 1.3.
Там совсем другая. И, кстати, проверил: ваша обработка виснет в Документообороте, — т.е. не открывается вовсе.
(32) Нашел наконец-то ограничение (или косяк, называйте, как кому нравится) платформы, связанное со встроенными функциями «НайтиПомеченныеНаУдаление» и «НайтиПоСсылкам»:
При удалении где-то в интервале от 150 тыс до 200 тыс документов (именно документов — они в силу особенности хранения в нескольких таблицах одного «объекта» оказались наиболее «тяжелые» для поиска и удаления) не доходит даже до «НайтиПомеченныеНаУдаление» — виснет на «НайтиПоСсылкам» (т.е. на этапе поиска помеченных на удаление).
На другой базе, где большая часть из 150 тыс удаляемых объектов — записи РС, все проходит достаточно быстро (как в 8.2 в режиме ОФ, так и в режиме УФ).
А вот на другой базе, где более 300 тыс разнообразных объектов (в основном — документы), виснет полностью.
Скажите, на платформе 8.3, конфиг 2.0 будет работать?
(35) Ekater,
да, все будет работать.
Скачал. Действительно работает.
Удаляет даже то, что стандартной обработкой в монопольном удалить нельзя из-за ссылок в других объектах! Осторожно!
Вопрос — это как-то повлияет на работу 1С? А то что-то я заволновался — было около 2000 объектов, которые не удалялись из-за ссылок в других документах. А здесь взяли и удалились в автоматическом режиме.
Добрый день!
Обработка вылетела на 1C 8.3 (8.3.5.1443) 1С: УТ (11.1.9.56) с ошибкой:
{ОбщийМодуль.ДополнительныеОтчетыИОбработкиКлиент.Модуль(400)}: Ошибка при вызове метода контекста (ОткрытьФорму)
http://v8.1c.ru/8.2/uobjects }v
http://v8.1c.ru/8.1/data/core }value
ОткрытьФорму(«ВнешняяОбработка.»+ ИмяОбработки +».Форма», ПараметрыОбработки, Форма);
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства ‘v’:
форма: Элемент
имя: {
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства ‘value’:
форма: Элемент
имя: {
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа ‘ОбъектМетаданных’
Ошибочка!
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
http://v8.1c.ru/8.2/uobjects }v
http://v8.1c.ru/8.1/data/core }value
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства ‘v’:
форма: Элемент
имя: {
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства ‘value’:
форма: Элемент
имя: {
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа ‘ОбъектМетаданных’
(39) Меняй платформу. Вот же описано было два года назад,http://forum.infostart.ru/forum24/topic46071/message1198151/#message1198151
блин, не стал рисковать, т.к. тут пишут, что не контролируется ссылочная целостность, а код анализировать лень.
Не открывается
{Форма.Форма.Форма(153,28)}: Тип не определен (КомпоновщикМакетаКомпоновкиДанных)
й;
КомпоновщикМакета = Новый <<?>>КомпоновщикМакетаКомпоновкиДанных;
{Форма.Форма.Форма(154,28)}: Тип не определен (ДанныеРасшифровкиКомпоновкиДанных)
ДанныеРасшифровки = Новый <<?>>ДанныеРасшифровкиКомпоновкиДанных;
{Форма.Форма.Форма(162,36)}: Тип не определен (ПроцессорКомпоновкиДанных)
ПроцессорКомпоновкиДанных = Новый <<?>>ПроцессорКомпоновкиДанных;
{Форма.Форма.Форма(167,26)}: Тип не определен (ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений)
ПроцессорВывода = Новый <<?>>ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначени
Плюсую. у себя добавил удалять порциями и размер порции в форму, а то помеченных более 5 000 000 + и как то не очень быстро удаляется, а удалять надо. Добавляю выполнение в фоновом задании с указанием видов объектов объектов для удаления и размера порции.
О, какой я большущий недочет заметил: обработка не удаляет помеченные если есть ссылки на регистры сведений.
Подстава, автор подставил бы код с анализом записей РС по ведущим измерениям, как в обработке с ИТС для обычных форм.
upd. хотя разобрался в том как здесь устроено. Что-ж. такой вариант мне даже кажется красивее (обращение к модулю конфигурации для получения списка. Тут уже вопрос к моей старой УТ (почему-то там не указан регистр версий).