При работе с кодом в 1С:Предприятие 7.7 можно столкнуться со следующей конструкцией вызова метода сортировки таблицы значений: ТабЗнач.Сортировать("Отдел, Сотрудник", +). Синтаксический помощник указывает, что второй параметр должен принимать значение 0 или 1, однако синтаксический контроль платформы не выдает ошибку при проверке такого кода. Проанализируем причину этой ситуации, разберем синтаксис метода Сортировать и рассмотрим правильные варианты его использования.
Метод Сортировать объекта ТаблицаЗначений в платформе 1С 7.7 предназначен для упорядочивания строк таблицы по значению одной или нескольких колонок. Метод принимает два параметра:
<Колонки>) — обязательная строка, в которой указываются имена или номера колонок через запятую. Указатели направления сортировки и режима обработки задаются внутри этой строки до или после имени колонки:
+ (или отсутствие знака) — сортировка по возрастанию;- — сортировка по убыванию;* — сортировка по внутреннему значению (внутреннему представлению) объекта.<ДокумПоДате>) — необязательное числовое значение, определяющее режим хронологической сортировки для документов:
1 — сортировка документов с учетом их точного позиционирования в базе данных (дата, время и позиция документа);0 (значение по умолчанию) — обычная сортировка документов по их строковому представлению или идентификатору.Выясним, почему в коде появился знак + во втором параметре и почему платформа пропускает такую запись:
+. Вместо того чтобы поместить знак внутрь текстового значения первого параметра, символ был передан как отдельный второй параметр.Рассмотрим, как правильно скорректировать вызов метода Сортировать в зависимости от поставленной задачи.
Если требуется отсортировать колонки по возрастанию или убыванию, перенесите знаки направления внутрь кавычек первой строки или опустите знак +, так как сортировка по возрастанию выполняется по умолчанию.
Пример правильного кода:
// Вариант без указания знака (по умолчанию по возрастанию)
ТабЗнач.Сортировать("Отдел, Сотрудник");
// Вариант с явным указанием направления (+ по возрастанию, - по убыванию)
ТабЗнач.Сортировать("Отдел+, Сотрудник-");
Если в таблице значений содержатся ссылки на документы и их необходимо упорядочить strictly по дате и времени создания, во втором параметре передается число 1.
Пример правильного кода:
// Сортировка колонки ДокументРеализация по хронологии
ТабЗнач.Сортировать("ДокументРеализация", 1);
В практической работе могут возникнуть ситуации, когда стандартных возможностей метода Сортировать недостаточно:
Запрос с конструкцией Упорядочить по ..., что избавляет от необходимости дополнительной пост-сортировки таблицы в коде.