Особенности кода счета в 1С:Предприятии 8

Код счета

Код счета хранится в информационной базе в том виде, в котором был введен. Исключение составляет хранение кода счета в условиях, когда маска кода счета содержит символы “@”. В этом случае группа знаков кода, для которой в маске стоят символы “@”, упаковывается – из нее вырезаются пробелы.

Пример: маска кода "@@@.@@@.@@"
Ввели код "1 .1 .1 "
Сохранится "1.1.1"

При создании нового счета или редактировании уже имеющегося счета в плане счетов код счета редактируется с использованием маски. При вводе ссылки на счета в записях регистров и в других местах код счета вводится без маски.

Перед началом редактирования счета в плане счетов, код счета распаковывается до вида, подходящего под маску. После окончания редактирования код счета упаковывается.

Рассмотрим пример упаковки – распаковки кода счета. Пусть есть некоторый план счетов, для которого указано:

Выполним следующие действия:

  1. Введем при создании нового счета код “1 .1 .1 ”, наименование счета и порядок счета.
  2. Сохраним счет и закроем окно редактирования счета.
  3. В информационной базе в качестве кода счета сохранится строка “1.1.1”.
  4. Откроем окно редактирования счета: в качестве кода счета будем видеть строку “1 .1 .1 ”. 

Порядок счета

Поскольку с помощью кода счета не всегда можно обеспечить его правильное упорядочивание среди других счетов, введено дополнительное поле - порядок счета (Порядок). Его назначение -  хранение данных, обеспечивающих правильное упорядочивание счетов в формах списков и результатах запросов.

В информационной базе порядок счета хранится в том виде, в котором был задан. Задавать порядок счета можно только в том случае, если длина поля Порядок больше нуля.

В форме счета поле Порядок доступно для редактирования, однако по умолчанию в форму не включается, и его содержимое автоматически не заполняется. Если длина поля Порядок больше нуля и значение, записываемое в поле, представляет собой пустую строку, записать объект Счет не удастся, и произойдет соответствующая ошибка времени выполнения.

Если маска кода счета состоит только из символов "@" и ".", можно автоматически сформировать поле Порядок. Это можно сделать в обработчике события ПередЗаписью() с помощью метода ПолучитьПорядокКода():

Копировать в буфер обмена

Процедура ПередЗаписью(Отказ)
    Порядок = ПолучитьПорядокКода();
КонецПроцедуры

При формировании порядка счета функция ПолучитьПорядокКода() за основу берет код счета. В пределах групп номера счета символы кода счета сдвигаются вправо, дополняясь слева необходимым количеством пробелов.

Рассмотрим два примера:
1)     Код счета: "10.12"
Маска кода счета: "@@@.@@@.@@"
Сформированный прядок счета: " 10. 12"

2)    Код счета: "10.5"
Маска кода счета: "@@@.@@@.@@"
Сформированный прядок счета: " 10.  5"

В этих двух примерах, если в форме списка счетов или в запросе будет установлено упорядочивание по полю Порядок, сначала будет идти счет "10.5", а затем - счет "10.12".

Свойство АвтоПорядокПоКоду

Свойство АвтоПорядокПоКоду используется для при упорядочивании по коду в формах списков и в запросах. Его назначение - обеспечить правильный порядок следования счетов в формах списков и результатах запросов.

Свойство АвтоПорядокПоКоду используется для подмены упорядочивания по полю Код упорядочиванием по полю Порядок. Упорядочивание по полю Порядок в этом случае используется как, например, в формах списков счетов, так и в процессе формирования запросов.

Пример использования свойства АвтоПорядокПоКоду в форме списка счетов

В случае, если свойство АвтоПорядокПоКоду включено, сделаем следующее:
  1. Откроем форму списка для счета:


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

  1. Сменим сортировку: укажем, что сортировать надо по колонке Порядок:


На рисунке видно, что сортировка данных не изменилась. Это действительно так, поскольку свойство АвтоПорядокПоКоду включено.

Если же свойство АвтоПорядокПоКоду выключить, то сортировка будет выполняться иначе:

  1. Откроем еще раз форму списка для счета:


На рисунке видно, что сортировка выполнена по полю Порядок.

  1. Сменим сортировку: укажем, что сортировать надо по колонке Код:


На рисунке видно, что порядок следования счетов сменился и упорядочивание происходит по полю Код.

Пример использования свойства АвтоПорядокПоКоду в запросе

Пусть есть следующие счета:

Код         Наименование         Порядок
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

УПОРЯДОЧИТЬ ПО
        Код

Результат:

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