Имя: Пароль:
1C
 
Сортировка при проведении
0 Michael_p2004
 
07.04.10
08:18
Необходимо сделать сортировку по номенклатуре в документе "Внутренний заказ" при проведении  документа. В процедуре ПередЗаписью ставлю запрос:

Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
    |    ВнутреннийЗаказ.Товары.(
    |        Номенклатура
    |    )
    |ИЗ
    |    Документ.ВнутреннийЗаказ КАК ВнутреннийЗаказ
    |
    |УПОРЯДОЧИТЬ ПО
    |    ВнутреннийЗаказ.Товары.Номенклатура" ;
     Запрос.Выполнить();

Но как-то не хочет работать. Прошу помощи.
1 Рэйв
 
07.04.10
08:21
(0)в документе "Внутренний заказ" , а причем тут запрос?
2 Рэйв
 
07.04.10
08:21
Табличная часть
Сортировать (Sort)
Синтаксис:
Сортировать(<Колонки>)
Параметры:
<Колонки> (обязательный)
Тип: Строка. Список имен колонок, разделенных запятыми, по которым производится сортировка таблицы. После каждого имени колонки через пробел может быть указано направление сортировки. Направление определяется: "Убыв" ("Desc") - упорядочивать по убыванию; "Возр" ("Asc") - упорядочивать по возрастанию. По умолчанию сортировка производится по возрастанию. Порядок указания имен колонок таблицы определяет порядок сортировки. Это означает, что сначала таблица сортируется по колонке, указанной первой. Затем группы строк с одинаковым значением в этой колонке сортируются по колонке, которая указана второй, и так далее.
Описание:
Сортирует табличную часть в соответствии с указанными правилами сортировки.
Примечание:
Использование метода допустимо только в том случае, если табличная часть получена из свойства объекта. Если табличная часть получена из свойства ссылки (или выборки), то использование этого метода будет вызывать ошибку выполнения.
Пример:
ТаблицаЦен.Сортировать("Цена Убыв, Товар Возр");
3 Irbis
 
07.04.10
08:30
Сортирует, но по внутреннему представлению, а не по наименованию, чего наверное ты ожидаешь.
4 Stim
 
07.04.10
08:32
Так надо:
Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
    |    Товары.Номенклатура
    |    
    |ИЗ
    |    Документ.ВнутреннийЗаказ.Товары КАК Товары
    |
    |УПОРЯДОЧИТЬ ПО
    |    Товары.Номенклатура" ;
     Запрос.Выполнить();
5 Michael_p2004
 
07.04.10
08:33
(3) Нужно по наименованию, как, например, при нажатии на кнопку "Упорядочить по возрастанию"
6 Stim
 
07.04.10
08:35
+4 и где собственно условие на текущий документ?? У тебя запрос выбирает номенклатуру со всех документов!
7 Michael_p2004
 
07.04.10
08:52
(6) Ага, понял. Учусь. Из (4) вставил в модуль, но не работает.
8 Aleksey_3
 
07.04.10
08:57
И что будет если это новый документ, который еще не записан?

Т.е. каким боком вообще запрос к решению этой задачи?
9 Irbis
 
07.04.10
08:58
(7) Так упорядочивай не по ссылке, а по наименованию

УПОРЯДОЧИТЬ ПО
   Товары.Номенклатура.Наименование
10 wise
 
07.04.10
09:03
(7)зачем приПроведении сортировать... сортируй приЗаписи формы
11 wise
 
07.04.10
09:04
10+ групповое проведение у тебя "ЗАГРУСТИТ"
12 Michael_p2004
 
07.04.10
09:32
(10) Так я и ставлю ПередЗаписью. Не взлетает
13 Aprobator
 
07.04.10
09:44
(0) отсортировать ТЧ незаписанного документа таким способом? Жесть.

ТЗ = Товары.Выгрузить();
Запрос = Новый Запрос;
Запрос.Текст =
"
|ВЫБРАТЬ
|ТЧ.Номенклатура
|ИЗ &ТЗ
|УПОРЯДОЧИТЬ ПО Номенклатура.Наименование";

Запрос.УстановитьПараметр("ТЗ", &ТЗ);
Товары.Загрузить(Запрос.Выполнить().Выгрузить());
14 Aprobator
 
07.04.10
09:45
+(13) опс - ошибся в запросе

"
|ВЫБРАТЬ
|ТЧ.Номенклатура
|ИЗ &ТЗ КАК ТЧ // вот здесь упустил
|УПОРЯДОЧИТЬ ПО Номенклатура.Наименование";
15 MishaSan
 
07.04.10
09:46
(13) а остальные колонки?
16 Aprobator
 
07.04.10
09:47
(15) сам допишет. В (0) я вижу только одну колонку )
17 DUDE
 
07.04.10
10:28
(3) +1. Даже если ты сделаешь как в (4), то у тебя будет идти сортировка по внутр. значению - ссылке, если же тебе хочется использовать вменяемые поля, то либо нужно добавить "АВТОУПОРЯДОЧИВАНИЕ" либо явно указать твое поле сортировки , напр., наименование.
18 Vovan1975
 
07.04.10
10:36
Мля, "Перед записью" - данные из ТЧ формы еще в базу не записаны. Что ты там сортируешь то, получая данные через запрос из базы?
19 IronDemon
 
07.04.10
10:46
20 Michael_p2004
 
08.04.10
04:47
А ларчик просто открывался:

Товары.Сортировать("Номенклатура")

Спасибо всем! А (2) отдельная благодарность!!!
Ошибка? Это не ошибка, это системная функция.