Дорошкевич Антон | Руководитель проектов | ООО ЦБР "ИнфоСофт"

«Защита сервера 1С средствами платформы»

Профили безопасности кластера 1С: - Чем хороши? - Как настраивать? - Что в них пока не работает? Пример работы профилей на обработке "Hack-а сервера 1С в несколько строк кода. Помогает ли запуск ragent, rmngr и rphost под разными пользователями от "Hack-а сервера 1С?

Удаление помеченных объектов (немонопольное) для управляемых (UPD: и обычных) форм

0. 12.11.11 10:17 Сейчас в теме
Добавлен немонопольный режим.
Добавлена возможность частичного удаления, предварительно сделав отбор по метаданным (ссылочные типы).
Добавлена возможность интерактивной корректировки списка исключаемых типов ссылок.

Перейти к публикации

Комментарии
Сортировка: Древо
3. wialex 11.04.12 23:42 Сейчас в теме
Полезная обработка. Очень пригодилась.
4. ivdic 31 14.04.12 14:40 Сейчас в теме
пробовал на документообороте ПРОФ выдает ошибку
{Форма.ОсновнаяФормаУ.Форма(766)}: Ошибка при вызове метода контекста (ЗагрузитьЗначения)
сзУдаляемые.ЗагрузитьЗначения(Удаляемые);
по причине:
Несоответствие типов (параметр номер '1')
5. 15.04.12 01:15 Сейчас в теме
Спасибо. Действительно, не протестировал режим полного удаления в УФ при апгрейде. Подправил.
6. Поручик 4097 28.04.12 12:44 Сейчас в теме
(5) Дарю. Вставьте этот фрагмент в модуль обработки. Он нужен для регистрации в справочнике дополнительные отчеты и обработки для конфигураций на БСП.

//////////////////////////////////////////////////////////
// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ РЕГИСТРАЦИИ ОБРАБОТКИ
//

// Сервисная экспортная функция. Вызывается в основной программе при регистрации обработки в информационной базе
// Возвращает структуру с параметрами регистрации
//
// Возвращаемое значение:
//		Структура с полями:
//			Вид - строка, вид обработки, один из возможных: "ДополнительнаяОбработка", "ДополнительныйОтчет", 
//					"ЗаполнениеОбъекта", "Отчет", "ПечатнаяФорма", "СозданиеСвязанныхОбъектов"
//			Назначение - Массив строк имен объектов метаданных в формате: 
//					<ИмяКлассаОбъектаМетаданного>.[ * | <ИмяОбъектаМетаданных>]. 
//					Например, "Документ.СчетЗаказ" или "Справочник.*". Параметр имеет смысл только для назначаемых обработок, для глобальных может не задаваться.
//			Наименование - строка - Наименование обработки, которым будет заполнено наименование элемента справочника по умолчанию.
//			Информация  - строка - Краткая информация или описание по обработке.
//			Версия - строка - Версия обработки в формате “<старший номер>.<младший номер>” используется при загрузке обработок в информационную базу.
//			БезопасныйРежим - булево - Принимает значение Истина или Ложь, в зависимости от того, требуется ли устанавливать или отключать безопасный режим 
//							исполнения обработок. Если истина, обработка будет запущена в безопасном режиме. 
//
//
Функция СведенияОВнешнейОбработке() Экспорт
	
	//Инициализируем структуру с параметрами регистрации
	
	ПараметрыРегистрации = ПолучитьПараметрыРегистрации();
	ПараметрыРегистрации.Вид = "ДополнительнаяОбработка";
	ПараметрыРегистрации.Версия = "1.0.4";

	//Определяем команды для вывода формы
	
	ТаблицаКоманд = ПолучитьТаблицуКоманд();

	ДобавитьКоманду(ТаблицаКоманд,
		ПараметрыРегистрации.Наименование, // Представление команды в пользовательском интерфейсе
		"УдалениеПомеченныхОбъектов",		// Уникальный идентификатор команды
		"ОткрытиеФормы"
	);

	ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
	Возврат ПараметрыРегистрации;

КонецФункции

//
// ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ РЕГИСТРАЦИИ ОБРАБОТКИ
//

// Формирует структуру с параметрами регистрации регистрации обработки в информационной базе
//
// Параметры:
//	ОбъектыНазначенияФормы - Массив - Массив строк имен объектов метаданных в формате: 
//					<ИмяКлассаОбъектаМетаданного>.[ * | <ИмяОбъектаМетаданных>]. 
//					или строка с именем объекта метаданных 
//	НаименованиеОбработки - строка - Наименование обработки, которым будет заполнено наименование элемента справочника по умолчанию.
//							Необязательно, по умолчанию синоним или представление объекта
//	Информация  - строка - Краткая информация или описание обработки.
//							Необязательно, по умолчанию комментарий объекта
//	Версия - строка - Версия обработки в формате “<старший номер>.<младший номер>” используется при загрузке обработок в информационную базу.
//
//
// Возвращаемое значение:
//		Структура
//
Функция ПолучитьПараметрыРегистрации(ОбъектыНазначенияФормы = Неопределено, НаименованиеОбработки = "", Информация = "", Версия = "1.0")

	Если ТипЗнч(ОбъектыНазначенияФормы) = Тип("Строка") Тогда
		ОбъектНазначенияФормы = ОбъектыНазначенияФормы;
		ОбъектыНазначенияФормы = Новый Массив;
		ОбъектыНазначенияФормы.Добавить(ОбъектНазначенияФормы);
	КонецЕсли; 
	
	ПараметрыРегистрации = Новый Структура;
	ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
	ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
	ПараметрыРегистрации.Вставить("Назначение", ОбъектыНазначенияФормы);
	
	Если Не ЗначениеЗаполнено(НаименованиеОбработки) Тогда
		НаименованиеОбработки = ЭтотОбъект.Метаданные().Представление();
	КонецЕсли; 
	ПараметрыРегистрации.Вставить("Наименование", НаименованиеОбработки);
	
	Если Не ЗначениеЗаполнено(Информация) Тогда
		Информация = ЭтотОбъект.Метаданные().Комментарий;
	КонецЕсли; 
	ПараметрыРегистрации.Вставить("Информация", Информация);
	
	ПараметрыРегистрации.Вставить("Версия", Версия);

	Возврат ПараметрыРегистрации;

КонецФункции

// Формирует таблицу значений с командами печати
//	
// Возвращаемое значение:
//		ТаблицаЗначений
//
Функция ПолучитьТаблицуКоманд()

	Команды = Новый ТаблицаЗначений;
	
	//Представление команды в пользовательском интерфейсе
	Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
	
	//Уникальный идентификатор команды или имя макета печати
	Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
	
	//Способ вызова команды: "ОткрытиеФормы", "ВызовКлиентскогоМетода", "ВызовСерверногоМетода"
	// "ОткрытиеФормы" - применяется только для отчетов и дополнительных отчетов
	// "ВызовКлиентскогоМетода" - вызов процедуры Печать(), определённой в модуле формы обработки
	// "ВызовСерверногоМетода" - вызов процедуры Печать(), определённой в модуле объекта обработки
	Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
	
	//Показывать оповещение.
	//Если Истина, требуется показать оповещение при начале и при завершении работы обработки. 
	//Имеет смысл только при запуске обработки без открытия формы
	Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
	
	//Дополнительный модификатор команды. 
	//Используется для дополнительных обработок печатных форм на основе табличных макетов.
	//Для таких команд должен содержать строку ПечатьMXL
	Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));

	Возврат Команды;

КонецФункции

// Вспомогательная процедура.
//
Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование = "ВызовСерверногоМетода", ПоказыватьОповещение = Ложь, Модификатор = "ПечатьMXL")

	НоваяКоманда = ТаблицаКоманд.Добавить();
	НоваяКоманда.Представление = Представление;
	НоваяКоманда.Идентификатор = Идентификатор;
	НоваяКоманда.Использование = Использование;
	НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
	НоваяКоманда.Модификатор = Модификатор;

КонецПроцедуры
Показать
9. Поручик 4097 30.08.12 13:33 Сейчас в теме
(7) Если будете обновлять, не забудьте по ПланыОбмена.
Планы обмена не включаются в дерево метаданных при выборочном удалении - ошибка копи-пасты, перенесенная из 1с-Документооборот. Конечно, документообороту обмены глубоко параллельны, но мне вот понадобились.
10. 04.09.12 12:07 Сейчас в теме
(9) Поручик,
Добавил. Гран мерси за конструктивные предложения.
Правда, планы обмена не совсем побоку для 1с-Документооборот, а вот планов счетов или планов видов расчетов там, действительно нет. Ведь по сути Документооборот- это АРМ секретаря (делопроизводителя). И даже объекты метаданных типа документ, в отличие от большинства конфигураций, носят вспомогательный характер. Основные объекты - справочники и бизнес-процессы.
А по планам расчетов там, действительно, была ошибка. И до сих пор есть (смотрел в релизе 1.2.5.3 от 30.08.12). Выглядит так:
КоллекцииОбъектовМетаданных_НоваяСтрока("ПланыВидовРасчета",            "Планы видов характеристик",      БиблиотекаКартинок.ПланВидовХарактеристик, БиблиотекаКартинок.ПланВидовХарактеристикОбъект, Ложь, КоллекцииОбъектовМетаданных);

Правда, эта общая форма там, по-моему, не используется, держат на всякий случай.
11. ilya2184 59 18.02.13 11:41 Сейчас в теме
Все хорошо и так работает, но я в коде изменил кое-что:
Модуль объекта строка примерно 284 (чтобы не при каждой итерации медленный поиск в метаданных был)
ИзмеренияРегистра = Метаданные.НайтиПоПолномуИмени(лИмяМетаданных).Измерения;
Для каждого лИзмерение Из ИзмеренияРегистра Цикл


В модуле формы "ОсновнаяФормаУ" чобы влоделца не в попытке получал:
МД_Справочники = Метаданные.Справочники; //перед циклом
Для Каждого МассивПомеченныхЭлемент Из МассивПомеченных Цикл
	...
	ТекущееМД = МассивПомеченныхЭлемент.Метаданные(); //внутри цикла: платим памятью за быстродействие
	...
	Если МД_Справочники.Найти(ТекущееМД.Имя)<>Неопределено И ТекущееМД.Владельцы.Количество()>0 Тогда
		лВладелецЭлемента = МассивПомеченныхЭлемент.Владелец;
	КонецЕсли;
	...
КонецЦикла;
Показать
12. Stradivari 139 07.05.13 16:04 Сейчас в теме
выручила обработочка, спсб)
13. Confucius 75 07.08.13 10:08 Сейчас в теме
Подскажите обработка не проверяет ссылочную целостность? Запустил автоматическое и все удалила..хотя куча ссылок было и не удаляемых объектов дофига. Начал по коду смотреть и увидел УдалитьОбъекты(УдаляемыеОбъекты, Ложь);
А в справке пишите что проверяется ссылочная целостность... Как быть щас?
14. Signal 26.08.13 13:42 Сейчас в теме
Здравствуйте, при удалении помеченных ошибка:
{ВнешняяОбработка.УдалениеПомеченныхОбъектов.МодульОбъекта(561)}: Ошибка при вызове метода контекста (УдалитьОбъекты)
УдалитьОбъекты(лМассив, Ложь);
по причине:
Нарушение прав доступа!

Управление торговлей, редакция 11.1 (11.1.2.10)
1С:Предприятие 8.2 (8.2.18.109)
15. Signal 26.08.13 13:44 Сейчас в теме
При установке режима удаления Частичное вываливается ошибка "Неизвестное имя формы. Имя "Обработка.УдалениеПомеченныхОбъектов.Форма.ВыборОбъектовМетаданныхУ"
16. Поручик 4097 19.03.14 09:24 Сейчас в теме
(0) Обработка не открывается при вызове из дополнительных обработок в конфигурациях на БСП.
В форме ОсновнаяФормаУ режим открытия окна РежимОткрытияОкна поменять на Независимый. Сейчас там установлено Блокировать окно владельца. Именно это мешает открытию обработки.
insurgut; sinitsin86; Йожкин Кот; +3 Ответить
17. nastrou1c 24 23.04.14 12:51 Сейчас в теме
Скачал. Удобная обработка, активно использую. Рекомендую другим.
18. kredko 16 15.05.14 17:28 Сейчас в теме
Я пока так и не понял - как работает данная обработка. Базу вешает наглухо. Ошибок при этом никаких. Буду пробовать ещё раз на Документообороте.
19. 16.05.14 07:49 Сейчас в теме
В какой базе вешается?
К сожалению, будучи вытесненным из стройных рядов оденснегов, перешел на подножный корм (эмбеддед программирование) :).
По возвращении постараюсь устранить замеченные ошибки.
20. kredko 16 19.05.14 05:11 Сейчас в теме
Разобрался. Работает вроде как. Но с большим объёмом информации эта обработка выполняется пол дня и кажется, что база зависла.
21. kredko 16 27.05.14 07:58 Сейчас в теме
Проверил. Работает. Но только сразу поставил Автоматическое удаление.
23. Поручик 4097 22.08.14 11:22 Сейчас в теме
(0) В 8.3.5 управляемая форма не работает. При открытии выдаётся окно с сообщением

Ошибка отображения типов:
Отсутствует отображение для типа 'ОбъектМетаданных'

Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'v':
форма: Элемент
имя: {http://v8.1c.ru/8.2/uobjects}v
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'value':
форма: Элемент
имя: {http://v8.1c.ru/8.1/data/core}value
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа 'ОбъектМетаданных'


Где там на форме ОбъектыМетаданных, ума не приложу. Процедура ПриСозданииНаСервере не отрабатывается, видимо ошибка получается при построении формы.
24. Поручик 4097 22.08.14 11:39 Сейчас в теме
() В 8.3.5.1098. Сейчас скачиваю более свежую версию, попробую на другой конфе.
25. Гуррыч 7 02.10.14 23:05 Сейчас в теме
26. SemenovaMarinaV 15.10.14 17:14 Сейчас в теме
Говорят что в последних версиях 3.0 удаление и так немонопольное. У меня пока требует монопольного режима.
27. Kamikadze 44 28.11.14 09:48 Сейчас в теме
Да, для БСП обработка не работает. в ERP 2.0 не открывается.
28. Поручик 4097 28.11.14 10:20 Сейчас в теме
(27) По крайней мере в 8.3.5.1186 обработка работает даже в режиме такси. Сейчас сам проверил.

БСП это всего лишь библиотека прцедур, которая никаким боком к данной обработке. Вот у меня конфа на БСП и что?
29. mchammer4 29 10.12.14 18:50 Сейчас в теме
УТ 11.1.4
при открытии - не открывается, пишет -
Ошибка отображения типов:
Отсутствует отображение для типа "ОбъектМетаданных"
30. Поручик 4097 12.12.14 09:03 Сейчас в теме
(29) Поставьте платформу посвежей.
31. AlexO 125 22.02.15 17:59 Сейчас в теме
(0)
Есть аналогичные публикации, например, http://forum.infostart.ru/forum24/topic43769/.
Например, там нет УФ.
32. AlexO 125 22.02.15 18:00 Сейчас в теме
А так - во всех без исключения ПоискИУдалениеПомеченных используется "НайтиПомеченныеНаУдаление" и "НайтиПоСсылкам".
А это самый главный косяк и недостаток всех обработок, т.к. не позволяет в принципе обрабатывать огромные базы с сотнями тысяч помеченных на удаление объектов.
34. AlexO 125 26.02.15 22:58 Сейчас в теме
(32) Нашел наконец-то ограничение (или косяк, называйте, как кому нравится) платформы, связанное со встроенными функциями "НайтиПомеченныеНаУдаление" и "НайтиПоСсылкам":
При удалении где-то в интервале от 150 тыс до 200 тыс документов (именно документов - они в силу особенности хранения в нескольких таблицах одного "объекта" оказались наиболее "тяжелые" для поиска и удаления) не доходит даже до "НайтиПомеченныеНаУдаление" - виснет на "НайтиПоСсылкам" (т.е. на этапе поиска помеченных на удаление).
На другой базе, где большая часть из 150 тыс удаляемых объектов - записи РС, все проходит достаточно быстро (как в 8.2 в режиме ОФ, так и в режиме УФ).
А вот на другой базе, где более 300 тыс разнообразных объектов (в основном - документы), виснет полностью.
33. AlexO 125 23.02.15 18:33 Сейчас в теме
(0)
Изнаначально взято из конфигурации 1с Документооборот.
Не знаю, из какого Документооборота обработка взята - но не из 1С-Документооборот 1.3.
Там совсем другая. И, кстати, проверил: ваша обработка виснет в Документообороте, - т.е. не открывается вовсе.
35. Ekater 27.02.15 13:09 Сейчас в теме
Скажите, на платформе 8.3, конфиг 2.0 будет работать?
36. AlexO 125 27.02.15 13:20 Сейчас в теме
(35) Ekater,
на платформе 8.3, конфиг 2.0 будет работать?
да, все будет работать.
37. Ekater 27.02.15 13:51 Сейчас в теме
Скачал. Действительно работает.
38. Ekater 02.03.15 07:48 Сейчас в теме
Удаляет даже то, что стандартной обработкой в монопольном удалить нельзя из-за ссылок в других объектах! Осторожно!

Вопрос - это как-то повлияет на работу 1С? А то что-то я заволновался - было около 2000 объектов, которые не удалялись из-за ссылок в других документах. А здесь взяли и удалились в автоматическом режиме.
39. Sintson 350 22.07.15 13:02 Сейчас в теме
Добрый день!
Обработка вылетела на 1C 8.3 (8.3.5.1443) 1С: УТ (11.1.9.56) с ошибкой:

{ОбщийМодуль.ДополнительныеОтчетыИОбработкиКлиент.Модуль(400)}: Ошибка при вызове метода контекста (ОткрытьФорму)
ОткрытьФорму("ВнешняяОбработка."+ ИмяОбработки +".Форма", ПараметрыОбработки, Форма);
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'v':
форма: Элемент
имя: {http://v8.1c.ru/8.2/uobjects}v
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'value':
форма: Элемент
имя: {http://v8.1c.ru/8.1/data/core}value
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа 'ОбъектМетаданных'

41. Поручик 4097 25.03.16 08:59 Сейчас в теме
40. Spacer 278 23.03.16 11:57 Сейчас в теме
Ошибочка!

Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'v':
форма: Элемент
имя: {http://v8.1c.ru/8.2/uobjects}v
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'value':
форма: Элемент
имя: {http://v8.1c.ru/8.1/data/core}value
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа 'ОбъектМетаданных'
42. fixin 3718 30.04.16 11:49 Сейчас в теме
блин, не стал рисковать, т.к. тут пишут, что не контролируется ссылочная целостность, а код анализировать лень.
43. HolodZar 19.09.16 05:11 Сейчас в теме
Не открывается


{Форма.Форма.Форма(153,28)}: Тип не определен (КомпоновщикМакетаКомпоновкиДанных)
КомпоновщикМакета = Новый <<?>>КомпоновщикМакетаКомпоновкиДанных;
{Форма.Форма.Форма(154,28)}: Тип не определен (ДанныеРасшифровкиКомпоновкиДанных)
ДанныеРасшифровки = Новый <<?>>ДанныеРасшифровкиКомпоновкиДанных;
{Форма.Форма.Форма(162,36)}: Тип не определен (ПроцессорКомпоновкиДанных)
ПроцессорКомпоновкиДанных = Новый <<?>>ПроцессорКомпоновкиДанных;
{Форма.Форма.Форма(167,26)}: Тип не определен (ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений)
ПроцессорВывода = Новый <<?>>ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначени­й;
44. isn@nk-nw.ru 11.07.17 14:10 Сейчас в теме
Плюсую. у себя добавил удалять порциями и размер порции в форму, а то помеченных более 5 000 000 + и как то не очень быстро удаляется, а удалять надо. Добавляю выполнение в фоновом задании с указанием видов объектов объектов для удаления и размера порции.
Оставьте свое сообщение

Вакансии

Бизнес-аналитик 1С
Санкт-Петербург
зарплата от 80 000 руб. до 100 000 руб.
Полный день

Руководитель проектов по внедрению 1С документооборота
Санкт-Петербург
зарплата от 100 000 руб. до 130 000 руб.
Полный день

Руководитель по сопровождению и внедрению 1С
Санкт-Петербург
зарплата от 100 000 руб. до 120 000 руб.
Полный день

Программист 1С
Санкт-Петербург
Полный день

Ведущий специалист 1С
Москва
Полный день