Особенности кода счета в 1С:Предприятии 8
Код счета хранится в информационной базе в том виде, в котором был введен. Исключение составляет хранение кода счета в условиях, когда маска кода счета содержит символы “@”. В этом случае группа знаков кода, для которой в маске стоят символы “@”, упаковывается – из нее вырезаются пробелы.Код счета. Порядок счета. Свойство АвтоПорядокПоКоду. Пример использования свойства АвтоПорядокПоКоду в форме списка счетов. Пример использования свойства АвтоПорядокПоКоду в запросе
Пример использования свойства АвтоПорядокПоКоду в форме списка счетов
Пример использования свойства АвтоПорядокПоКоду в запросе
Код счета
Код счета хранится в информационной базе в том виде, в котором был введен. Исключение составляет хранение кода счета в условиях, когда маска кода счета содержит символы “@”. В этом случае группа знаков кода, для которой в маске стоят символы “@”, упаковывается – из нее вырезаются пробелы.
Пример: маска кода "@@@.@@@.@@"
Ввели код "1 .1 .1 "
Сохранится "1.1.1"
При создании нового счета или редактировании уже имеющегося счета в плане счетов код счета редактируется с использованием маски. При вводе ссылки на счета в записях регистров и в других местах код счета вводится без маски.
Перед началом редактирования счета в плане счетов, код счета распаковывается до вида, подходящего под маску. После окончания редактирования код счета упаковывается.
Рассмотрим пример упаковки – распаковки кода счета. Пусть есть некоторый план счетов, для которого указано:
- длина кода счета 10;
- длина наименования счета 30;
- автопорядок по коду – включено;
- длина порядка – 10;
- маска кода счета – “@@@.@@@.@@”.
Выполним следующие действия:
- Введем при создании нового счета код “1 .1 .1 ”, наименование счета и порядок счета.
- Сохраним счет и закроем окно редактирования счета.
- В информационной базе в качестве кода счета сохранится строка “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 УПОРЯДОЧИТЬ ПО Код
Результат:

На этом примере видно, что в случае упорядочивания по полю Код вместо него используется поле Порядок.