Особливості коду рахунку в 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 УПОРЯДОЧИТЬ ПО Код
Результат:

На цьому прикладі видно, що у разі впорядкування за полем Код замість нього використовується поле Порядок.