Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
25 июл 2021, 05:30

Обезличивание данных. Скрытие персональной информации. Нужна срочная помощь.

Автор Varlant1n, 13 окт 2020, 11:53

0 Пользователей и 1 гость просматривают эту тему.

Varlant1n

Здравствуйте, дорогие друзья форумчане! Я уже писал про это пару тем назад, но тема стала неинтересной никому и поэтому упала вниз, без ответов. Я в данный момент учусь 1С в копании, будучи на практике. И передо мной стоит задача сделать ОбщуюКоманду, которая при нажатии обезличит все данные и в справочниках и в документах и вообще везде. То есть после нажатия все данные должны превратиться во что-то по типу "Наименование1, Наименование2 и тд...." Я прекрасно знаю, что есть уже готовые обработки для данной задачи, но мне же поставили задачу сделать то самому в виде команды, чтобы была кнопка, при нажатии на которую произойдёт выше сказанное. Прошу вас помочь мне с решением данной задачи. Можете хотя бы в виде тегов написать план действий, который нужно сделать, что добиться этого. Заранее огромное спасибо. Буду очень благодарен!

MuI_I_Ika

Предлагаю стандартную обработку встроить в вашу конфигурацию. А дальше вы можете просто вызывать ее командой.

Varlant1n

Цитата: MuI_I_Ika от 13 окт 2020, 13:17
Предлагаю стандартную обработку встроить в вашу конфигурацию. А дальше вы можете просто вызывать ее командой.

Спасибо за ваш совет! Но это задание, которое будет проверяться и следовательно это должен быть мой код с нуля. Я поэтому и просил помощи. Чтобы мне посоветовали ход действий.

IL2016

Цитата: Varlant1n от 13 окт 2020, 11:53передо мной стоит задача сделать ОбщуюКоманду, которая при нажатии обезличит все данные и в справочниках и в документах и вообще везде.
На чем Вы будете её реализовывать? Наверное менять наименования придется только в справочниках, а дальше платформа сама поменяет по ссылкам. Полагаю что это проверка на умение использовать метаданные.
Использую учебную платформу 1С:Предприятие 8.3

MuI_I_Ika

Тогда в обработке надо пробежаться по всем метаданным циклом. Так же по всем их реквизитам и табличным частям.

Выбираете каждый элемент объекта.

И там уже меняете все текстовые поля.

Varlant1n

Цитата: MuI_I_Ika от 13 окт 2020, 14:27
Тогда в обработке надо пробежаться по всем метаданным циклом. Так же по всем их реквизитам и табличным частям.

Выбираете каждый элемент объекта.

И там уже меняете все текстовые поля.

Вот, что я написал, но почему-то это не работает


&НаКлиенте
Процедура КнопкаСмерти(Команда)

КнопкаСмертиНаСервере();


КонецПроцедуры

&НаСервере
Процедура КнопкаСмертиНаСервере()

Для Каждого МетаданноеСправочника Из Метаданные.Справочники Цикл
Выборка = Справочники[МетаданноеСправочника.Имя].Выбрать();
Пока Выборка.Следующий() Цикл

МетаданноеОбъект = Выборка.ПолучитьОбъект();

МассивСтандартныхРеквизитов = Новый Массив;
Если МетаданноеСправочника.ДлинаКода > 0 Тогда
МассивСтандартныхРеквизитов.Добавить(Новый Структура("Имя", "Код"));
КонецЕсли;
Если МетаданноеСправочника.ДлинаНаименования > 0 Тогда
МассивСтандартныхРеквизитов.Добавить(Новый Структура("Имя", "Наименование"));
КонецЕсли;
ОчиститьДанные(МетаданноеОбъект, МассивСтандартныхРеквизитов);

ОчиститьДанные(МетаданноеОбъект, МетаданноеСправочника.Реквизиты);

МетаданноеОбъект.ОбменДанными.Загрузка = Истина;
МетаданноеОбъект.Записать();

КонецЦикла;
КонецЦикла;


КонецПроцедуры

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


MuI_I_Ika

А выдает какую-то ошибку. Если нет, то поставь те точку остановки в строку МетаданноеОбъект.Записать(); и посмотрите на значения реквизитов объекта.

Varlant1n

Цитата: MuI_I_Ika от 20 окт 2020, 10:04
А выдает какую-то ошибку. Если нет, то поставь те точку остановки в строку МетаданноеОбъект.Записать(); и посмотрите на значения реквизитов объекта.

Нет, ошибку никакую не выдает и никаких значений реквизитов то же нет. Я думал, что ошибка может быть в том, что это общая команда и попробовал создать внешнюю обработку и вставить эту команду там, но опять ничего не работает

MuI_I_Ika


Varlant1n


Теги:

Похожие темы (5)

35876

Ответов: 2
Просмотров: 3577

56678

Ответов: 8
Просмотров: 3426

59126

Ответов: 8
Просмотров: 1650

Рейтинг@Mail.ru Rambler's Top100

Поиск