Преобразует код счета в соответствии с маской счета. Если код счета имеет меньшую разрядность, то добавляются пробелы. Числовые фрагменты кода прижимаются вправо. Например, для счета "41.1" при маске "@@@.@@@.@@" метод возвращает строку " 41. 1".
Синтаксис
ПолучитьПорядокКода()Примеры платформы
Процедура ПередЗаписью(Отказ)
Порядок = ПолучитьПорядокКода();
КонецПроцедурыПолное описание, параметры и ограничения
ПланСчетовОбъект.<Имя плана счетов>.ПолучитьПорядокКода (ChartOfAccountsObject.<Chart of accounts name>.GetCodeOrder)
ПланСчетовОбъект.<Имя плана счетов> (ChartOfAccountsObject.<Chart of accounts name>)
ПолучитьПорядокКода (GetCodeOrder)
Доступен, начиная с версии 8.0.
Синтаксис:
ПолучитьПорядокКода()
Возвращаемое значение:
Тип: Строка.
Описание:
Преобразует код счета в соответствии с маской счета. Если код счета имеет меньшую разрядность, то добавляются пробелы. Числовые фрагменты кода прижимаются вправо.
Например, для счета "41.1" при маске "@@@.@@@.@@" метод возвращает строку " 41. 1".
Доступность:
Сервер, толстый клиент, внешнее соединение.
Примечание:
Только для счетов с масками, использующими символы "@" и ".".
Пример:
Процедура ПередЗаписью(Отказ)
Порядок = ПолучитьПорядокКода();
КонецПроцедуры
Использование в версии:
Доступен, начиная с версии 8.0.
Методическая информация
Практические примеры
Правильно упорядочить субсчета 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 и АвтоПорядокПоКоду влияют на стандартную сортировку списка; наша таблица сортируется явно.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.