Тип: ОбъектМетаданныхКонфигурация. Используется для доступа к структуре метаданных конфигурации.
Полное описание, параметры и ограничения
Глобальный контекст.Метаданные (Global context.Metadata)
Глобальный контекст (Global context)
Метаданные (Metadata)
Доступен, начиная с версии 8.0.
Использование:
Только чтение.
Описание:
Тип: ОбъектМетаданныхКонфигурация.
Используется для доступа к структуре метаданных конфигурации.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
См. также:
ОбъектМетаданныхКонфигурация
Использование в версии:
Доступен, начиная с версии 8.0.
Описание изменено в версии 8.3.14.
Методическая информация
Практические примеры
Правильно упорядочить субсчета 41.2 и 41.10 по маске
Обычная строковая сортировка кода ставит 41.10 перед 41.2. ПолучитьПорядокКода выравнивает числовые части для сортировки; сравниваем два результата в собственной таблице.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Создайте НОВУЮ пустую файловую базу, корневое имя УчебныйУчет85. В рабочей БП/КА2/УТ/УНФ эти задачи не запускайте. Это технический пример API, не готовый бухгалтерский учёт.
Планы видов характеристик → Добавить: УчебныеАналитики85. Тип значения только Строка 30. Элементы, дополнительные реквизиты, табличные части и предопределённые значения не создавайте.
Планы счетов → Добавить: УчебныеСчета85. ДлинаКода 10, МаскаКода @@@.@@@.@@, ДлинаНаименования 100, ДлинаПорядка 20. АвтоПорядокПоКоду выключен, КонтрольУникальности включён. ВидыСубконто=УчебныеАналитики85, МаксКоличествоСубконто=2.
У плана счетов не создавайте пользовательские реквизиты, табличные части, признаки учёта/субконто, предопределённые счета, формы, команды, макеты и дополнительные индексы. Модули оставьте пустыми. Историю данных и два флага обработки её версий выключите. Расширений нет.
Обновите конфигурацию БД. Создайте серверный обработчик ВыполнитьПример() Экспорт в собственной обработке. Фрагмент вставляйте в тело; запускайте уроки по отдельности.
Объекты создаются только в памяти: Записать/Удалить/Заблокировать не вызываются. Регистров бухгалтерии, проводок и фактических остатков в этом примере нет.
Описание = Метаданные.ПланыСчетов.Найти("УчебныеСчета85");
Если Описание = Неопределено Тогда
ВызватьИсключение "Сначала создайте собственный план УчебныеСчета85";
КонецЕсли;
Если Описание.ДлинаКода <> 10 Или Описание.ДлинаНаименования <> 100
Или Описание.ДлинаПорядка <> 20 Или Описание.МаскаКода <> "@@@.@@@.@@"
Или Описание.АвтоПорядокПоКоду Или Описание.МаксКоличествоСубконто <> 2 Тогда
ВызватьИсключение "Настройки учебного плана не соответствуют подготовке";
КонецЕсли;
Если Описание.ВидыСубконто = Неопределено Тогда
ВызватьИсключение "Назначьте собственный план аналитик";
КонецЕсли;
Если Описание.ВидыСубконто.Имя <> "УчебныеАналитики85" Тогда
ВызватьИсключение "Нужны только собственные учебные аналитики";
КонецЕсли;
Менеджер = ПланыСчетов.УчебныеСчета85;
Второй = Менеджер.СоздатьСчет();
Второй.Код = "41.2";
Второй.Наименование = "Учебный субсчёт 2";
Десятый = Менеджер.СоздатьСчет();
Десятый.Код = "41.10";
Десятый.Наименование = "Учебный субсчёт 10";
Второй.Порядок = Второй.ПолучитьПорядокКода();
Десятый.Порядок = Десятый.ПолучитьПорядокКода();
Сообщить(Второй.Порядок = " 41. 2");
Сообщить(Десятый.Порядок = " 41. 10");
Список = Новый ТаблицаЗначений;
Список.Колонки.Добавить("Код", Новый ОписаниеТипов("Строка"));
Список.Колонки.Добавить("Порядок", Новый ОписаниеТипов("Строка"));
СтрокаСписка = Список.Добавить();
СтрокаСписка.Код = Второй.Код;
СтрокаСписка.Порядок = Второй.Порядок;
СтрокаСписка = Список.Добавить();
СтрокаСписка.Код = Десятый.Код;
СтрокаСписка.Порядок = Десятый.Порядок;
Список.Сортировать("Код Возр");
Сообщить(Список[0].Код = "41.10");
Список.Сортировать("Порядок Возр");
Сообщить(Список[0].Код = "41.2");
Сообщить(Список[1].Код = "41.10");
Сообщить(Второй.ЭтоНовый() И Десятый.ЭтоНовый());Разбор по шагам
Маска собственного плана содержит только @ и точки; этот метод предназначен именно для таких масок.
Числовые части кодов прижимаются вправо пробелами; строка порядка сохраняется без СокрЛП, иначе выравнивание будет потеряно.
АвтоПорядокПоКоду выключен по подготовке: свойства не должны скрыть различие двух видов сортировки.
Переносим только код и порядок двух новых объектов в таблицу значений и выполняем две сортировки.
Не записываем счета, не задаём Родитель и не объявляем код 41.2 сохранённым дочерним счётом 41.
Как проверить результат
Шесть логических сообщений дают Истина; пробелы в двух строках порядка важны.
Сортировка по Код начинается с 41.10, по Порядок — с 41.2. Оба счёта остаются новыми.
Ожидаемый результат
На двух конкретных кодах показано, зачем нужен порядок по маске и почему его нельзя обрезать.
На что обратить внимание
Код с точкой сам по себе не устанавливает иерархию через Родитель.
Пример не подменяет реальные счета и правила бухгалтерской конфигурации.
ДлинаПорядка=0 и АвтоПорядокПоКоду влияют на стандартную сортировку списка; наша таблица сортируется явно.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Скопировать определение счёта и изменить только копию
Копирование счёта создаёт другой незаписанный объект. Никакие движения, обороты или денежные средства не копируются.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Создайте НОВУЮ пустую файловую базу, корневое имя УчебныйУчет85. В рабочей БП/КА2/УТ/УНФ эти задачи не запускайте. Это технический пример API, не готовый бухгалтерский учёт.
Планы видов характеристик → Добавить: УчебныеАналитики85. Тип значения только Строка 30. Элементы, дополнительные реквизиты, табличные части и предопределённые значения не создавайте.
Планы счетов → Добавить: УчебныеСчета85. ДлинаКода 10, МаскаКода @@@.@@@.@@, ДлинаНаименования 100, ДлинаПорядка 20. АвтоПорядокПоКоду выключен, КонтрольУникальности включён. ВидыСубконто=УчебныеАналитики85, МаксКоличествоСубконто=2.
У плана счетов не создавайте пользовательские реквизиты, табличные части, признаки учёта/субконто, предопределённые счета, формы, команды, макеты и дополнительные индексы. Модули оставьте пустыми. Историю данных и два флага обработки её версий выключите. Расширений нет.
Обновите конфигурацию БД. Создайте серверный обработчик ВыполнитьПример() Экспорт в собственной обработке. Фрагмент вставляйте в тело; запускайте уроки по отдельности.
Объекты создаются только в памяти: Записать/Удалить/Заблокировать не вызываются. Регистров бухгалтерии, проводок и фактических остатков в этом примере нет.
Описание = Метаданные.ПланыСчетов.Найти("УчебныеСчета85");
Если Описание = Неопределено Тогда
ВызватьИсключение "Сначала создайте собственный план УчебныеСчета85";
КонецЕсли;
Если Описание.ДлинаКода <> 10 Или Описание.ДлинаНаименования <> 100
Или Описание.ДлинаПорядка <> 20 Или Описание.МаскаКода <> "@@@.@@@.@@"
Или Описание.АвтоПорядокПоКоду Или Описание.МаксКоличествоСубконто <> 2 Тогда
ВызватьИсключение "Настройки учебного плана не соответствуют подготовке";
КонецЕсли;
Если Описание.ВидыСубконто = Неопределено Тогда
ВызватьИсключение "Назначьте собственный план аналитик";
КонецЕсли;
Если Описание.ВидыСубконто.Имя <> "УчебныеАналитики85" Тогда
ВызватьИсключение "Нужны только собственные учебные аналитики";
КонецЕсли;
Менеджер = ПланыСчетов.УчебныеСчета85;
Касса = Менеджер.СоздатьСчет();
Касса.Код = "50";
Касса.Наименование = "Учебная касса";
Касса.Вид = ВидСчета.Активный;
Касса.Забалансовый = Ложь;
Касса.Порядок = "50";
Касса.ДополнительныеСвойства.Вставить("МеткаЗадачи", "Только память");
Копия = Касса.Скопировать();
Копия.Код = "51";
Копия.Наименование = "Другой учебный счёт";
Копия.Вид = ВидСчета.Пассивный;
Копия.Порядок = "51";
Сообщить(Копия.ЭтоНовый());
Сообщить(Копия.Ссылка.Пустая());
Сообщить(Касса.ЭтоНовый());
Сообщить(Касса.Код = "50");
Сообщить(Касса.Наименование = "Учебная касса");
Сообщить(Касса.Вид = ВидСчета.Активный);
Сообщить(Копия.Вид = ВидСчета.Пассивный);
Сообщить(Копия.Код <> Касса.Код);Разбор по шагам
Создаём собственный объект кассы в памяти, затем Скопировать создаёт новый объект того же плана.
Меняем код, подпись, вид и порядок только у копии. Сохранения ни одного объекта нет.
Сравниваем исходные значения кассы и изменённые значения копии.
Предопределённость и остатки не создаём; сохранённые счета вообще не читаются.
Как проверить результат
Восемь логических проверок дают Истина.
Оба объекта остаются новыми; в собственном списке счетов ни 50, ни 51 не появилось.
Ожидаемый результат
Показано независимое изменение копии определения счёта без копирования прикладных данных.
На что обратить внимание
Пассивный вид копии выбран только для демонстрации свойства, это не методология учёта банковского счёта.
Не трактуйте Скопировать как копирование проводок или сумм.
Служебные ДополнительныеСвойства не считаем гарантированно скопированными: здесь это не проверяется.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.