fbpx

Як працювати з метаданими в 1с

Як працювати з метаданими в 1с?
Нещодавно працюючи з одним клієнтом, нам треба було допрацювати його конфігурацію для узгодження з законодавством «Про захист персональних даних». Це постанову прийняли для конфіденційності інформації клієнтів, застосовується онј так, що якщо відбувається відміна замовником замовлення оформленого вами, то що містяться дані підлягають негайному видаленню. Даних у базі про замовника дуже багато і видалять їх вручну вимагало б дуже багато часу і було б зовсім не зручно. При цьому прати цілий елемент довідника було неможливо, так як це б порушило роботу бази даних.
Для подібних випадків був розроблений інструмент, що дозволяє вивести весь список реквізитів та даних їх таблиці. У всіх об’єктів у базі 1с є функція Метадані(), яка вбудована спочатку.
Дана функція відновлює дані спеціального виду — ОбъектМетаданных. У цьому вигляді зберігається величезна кількість властивостей вибраного об’єкта. Наприклад для складовою довідника це буде довжина імені і коду, автоматична нумерація, стандартні форми, інші наявні форми, ієрархія, шаблони тощо.
Якщо розглядати конкретний випадок, то нам знадобляться Реквізити та частині таблиці. Дані елементи метаданих зберігають в собі значення КоллекцияОбъектовМетаданных. Існує спосіб обходу їх у циклі Для кожного. Будь-який з цих компонентів колекції володіє великим числом різних властивостей. Одне з найважливіших властивостей, властивість Turn. Воно дозволяє отримати типи будь-якого реквізиту. Весь перелік реквізитів є можливість дізнатися з допомогою операції Обчислити вираз. Нам, щоб просити Табличні дані або реквізити знадобитися властивість Ім’я.
Модуль видаляє всі необхідні дані буде мати такий вигляд:
1
2
3
4
5
6
7
8
9
10
11
Контрагент=КонтрагентСсылка.ПолучитьОбъект();
//Змінна КонтрагентСсылка повинна містити посилання на
елемент
Для Кожного Реквізит З Контрагент.Метадані().Реквізити Цикл
Контрагент[Реквізит.Ім’я] = Визначено;
КонецЦикла;
Для Кожного ТаблЧасть З Контрагент.Метадані().ТабличныеЧасти Цикл
Контрагент[ТаблЧасть.Ім’я].Очистити();
КонецЦикла;
Контрагент.Записати();
Функція Метадані() може використовуватися не тільки для об’єкта, але і для того щоб швидко послатися на нього. Розглядаючи випадок нашого клієнта, потрібно було використовувати саме дані реквізитів. Для цього необхідний був сам об’єкт. Метадані() можуть бути використані для будь-яких об’єктів, що знаходяться в конфігурації 1С. Тому існує безліч способів застосування даної функції.
Якщо у вас виникли питання і ви не можете зробити дані доопрацювання 1с самостійно, зв’яжіться з нашими експертами. Вони можуть проконсультувати вас по 1с і миттєво вирішити будь-яку задачу пов’язану з 1с.