Как правильно использовать метод Сортировать для ТаблицыЗначений в 1С 7.7 и почему возникает ошибка со знаком "+" во втором параметре?

Программист 1С v7.7 IT и автоматизация бизнеса
← На главную

При работе с кодом в 1С:Предприятие 7.7 можно столкнуться со следующей конструкцией вызова метода сортировки таблицы значений: ТабЗнач.Сортировать("Отдел, Сотрудник", +). Синтаксический помощник указывает, что второй параметр должен принимать значение 0 или 1, однако синтаксический контроль платформы не выдает ошибку при проверке такого кода. Проанализируем причину этой ситуации, разберем синтаксис метода Сортировать и рассмотрим правильные варианты его использования.

Синтаксис и значение параметров метода Сортировать

Метод Сортировать объекта ТаблицаЗначений в платформе 1С 7.7 предназначен для упорядочивания строк таблицы по значению одной или нескольких колонок. Метод принимает два параметра:

  1. Первый параметр (<Колонки>) — обязательная строка, в которой указываются имена или номера колонок через запятую. Указатели направления сортировки и режима обработки задаются внутри этой строки до или после имени колонки:
    • + (или отсутствие знака) — сортировка по возрастанию;
    • - — сортировка по убыванию;
    • * — сортировка по внутреннему значению (внутреннему представлению) объекта.
  2. Второй параметр (<ДокумПоДате>) — необязательное числовое значение, определяющее режим хронологической сортировки для документов:
    • 1 — сортировка документов с учетом их точного позиционирования в базе данных (дата, время и позиция документа);
    • 0 (значение по умолчанию) — обычная сортировка документов по их строковому представлению или идентификатору.

Причина возникновения проблемы и особенности платформы

Выясним, почему в коде появился знак + во втором параметре и почему платформа пропускает такую запись:

  1. Ошибка разработчика: Программист перепутал расположение символа направления сортировки +. Вместо того чтобы поместить знак внутрь текстового значения первого параметра, символ был передан как отдельный второй параметр.
  2. Динамическая типизация в 1С 7.7: Синтаксический анализатор платформы 1С 7.7 не проверяет соответствие типов передаваемых аргументов во время компиляции. Так как второй параметр объявлен в синтаксисе метода, формально синтаксическая проверка проходит успешно, а вычисление выражения происходит непосредственно при выполнении кода.
  3. Игнорирование параметра при отсутствии документов: Второй параметр имеет значение только в том случае, если среди сортируемых колонок есть значения типа "Документ". Если таблица значений содержит обычные строки, числа или ссылки на справочники, платформа полностью игнорирует содержимое второго параметра. Именно поэтому данный кусок кода мог длительное время выполняться без видимых сбоев.

Варианты исправления кода

Рассмотрим, как правильно скорректировать вызов метода Сортировать в зависимости от поставленной задачи.

Вариант 1. Сортировка обычных данных (строки, числа, справочники)

Если требуется отсортировать колонки по возрастанию или убыванию, перенесите знаки направления внутрь кавычек первой строки или опустите знак +, так как сортировка по возрастанию выполняется по умолчанию.

Пример правильного кода:


// Вариант без указания знака (по умолчанию по возрастанию)
ТабЗнач.Сортировать("Отдел, Сотрудник");

// Вариант с явным указанием направления (+ по возрастанию, - по убыванию)
ТабЗнач.Сортировать("Отдел+, Сотрудник-");

Вариант 2. Сортировка колонок с документами по хронологии

Если в таблице значений содержатся ссылки на документы и их необходимо упорядочить strictly по дате и времени создания, во втором параметре передается число 1.

Пример правильного кода:


// Сортировка колонки ДокументРеализация по хронологии
ТабЗнач.Сортировать("ДокументРеализация", 1);

Альтернативные решения для сложных задач

В практической работе могут возникнуть ситуации, когда стандартных возможностей метода Сортировать недостаточно:

← На главную