Код счета хранится в информационной базе в том виде, в котором был введен. Исключение составляет хранение кода счета в условиях, когда маска кода счета содержит символы “@”. В этом случае группа знаков кода, для которой в маске стоят символы “@”, упаковывается – из нее вырезаются пробелы.
Пример: маска кода "@@@.@@@.@@"
Ввели код "1 .1 .1 "
Сохранится "1.1.1"
При создании нового счета или редактировании уже имеющегося счета в плане счетов код счета редактируется с использованием маски. При вводе ссылки на счета в записях регистров и в других местах код счета вводится без маски.
Перед началом редактирования счета в плане счетов, код счета распаковывается до вида, подходящего под маску. После окончания редактирования код счета упаковывается.
Рассмотрим пример упаковки – распаковки кода счета. Пусть есть некоторый план счетов, для которого указано:
Выполним следующие действия:
Поскольку с помощью кода счета не всегда можно обеспечить его правильное упорядочивание среди других счетов, введено дополнительное поле - порядок счета (Порядок). Его назначение - хранение данных, обеспечивающих правильное упорядочивание счетов в формах списков и результатах запросов.
В информационной базе порядок счета хранится в том виде, в котором был задан. Задавать порядок счета можно только в том случае, если длина поля Порядок больше нуля.
В форме счета поле Порядок доступно для редактирования, однако по умолчанию в форму не включается, и его содержимое автоматически не заполняется. Если длина поля Порядок больше нуля и значение, записываемое в поле, представляет собой пустую строку, записать объект Счет не удастся, и произойдет соответствующая ошибка времени выполнения.
Если маска кода счета состоит только из символов "@" и ".", можно автоматически сформировать поле Порядок. Это можно сделать в обработчике события ПередЗаписью() с помощью метода ПолучитьПорядокКода():
Копировать в буфер обменаПроцедура ПередЗаписью(Отказ)
Порядок = ПолучитьПорядокКода();
КонецПроцедуры
При формировании порядка счета функция ПолучитьПорядокКода() за основу берет код счета. В пределах групп номера счета символы кода счета сдвигаются вправо, дополняясь слева необходимым количеством пробелов.
Рассмотрим два примера:
1) Код счета: "10.12"
Маска кода счета: "@@@.@@@.@@"
Сформированный прядок счета: " 10. 12"
2) Код счета: "10.5"
Маска кода счета: "@@@.@@@.@@"
Сформированный прядок счета: " 10. 5"
В этих двух примерах, если в форме списка счетов или в запросе будет установлено упорядочивание по полю Порядок, сначала будет идти счет "10.5", а затем - счет "10.12".
Свойство АвтоПорядокПоКоду используется для при упорядочивании по коду в формах списков и в запросах. Его назначение - обеспечить правильный порядок следования счетов в формах списков и результатах запросов.
Свойство АвтоПорядокПоКоду используется для подмены упорядочивания по полю Код упорядочиванием по полю Порядок. Упорядочивание по полю Порядок в этом случае используется как, например, в формах списков счетов, так и в процессе формирования запросов.
На рисунке видно, что в качестве колонки, по которой идет сортировка, отмечена колонка Код. Однако реально для сортировки используются данные из поля Порядок.
На рисунке видно, что сортировка данных не изменилась. Это действительно так, поскольку свойство АвтоПорядокПоКоду включено.
Если же свойство АвтоПорядокПоКоду выключить, то сортировка будет выполняться иначе:
На рисунке видно, что сортировка выполнена по полю Порядок.
На рисунке видно, что порядок следования счетов сменился и упорядочивание происходит по полю Код.
Пусть есть следующие счета:
Код Наименование Порядок
3.3.3 Счет 3.3.3 1
2.2.2 Счет 2.2.2 2
1.1.1 Счет 1.1.1 3
Выполним следующий запрос:
Копировать в буфер обменаВЫБРАТЬ
ПланСчетов1.Код КАК Код,
ПланСчетов1.Наименование,
ПланСчетов1.Порядок
ИЗ
ПланСчетов.ПланСчетов1 КАК ПланСчетов1
УПОРЯДОЧИТЬ ПО
Код
Результат:
На этом примере видно, что в случае упорядочивания по полю Код вместо него используется поле Порядок.