Имя: Пароль:
1C
1С v8
Как сделать сортировку как в док. основание?
0 Natalika
 
18.04.13
14:00
Если на основании "Заказа покупателя" ввести документ "Реализация", то сортировка строк "Товары" и "Услуги" меняется. А мне нужно оставить такую же сортировку, как в заказе. Как это сделать? При этом документ "Заказ покупателя" не отсортирован и его нельзя сортировать.
1 butterbean
 
18.04.13
14:02
проще доказать, что это не надо делать, чем сделать
2 zak555
 
18.04.13
14:02
разве ?
3 kosts
 
18.04.13
14:02
(0)


Табличная часть.Сдвинуть (Tabular section.Move)
Табличная часть (Tabular section)
Сдвинуть (Move)
Синтаксис:

Сдвинуть(<Строка>, <Смещение>)
Параметры:

<Строка> (обязательный)

Тип: Число; Строка табличной части.
Индекс строки, которую нужно сдвинуть, либо сама сдвигаемая строка.
<Смещение> (обязательный)

Тип: Число.
Количество строк, на которое необходимо переместить строку. Положительное значение означает, что строка будет передвинута ближе к концу табличной части (вниз), отрицательное - ближе к началу (вверх).
Описание:

Сдвигает указанную строку табличной части на указанное смещение.

Доступность:

Сервер, толстый клиент, внешнее соединение.
Примечание:

Использование метода допустимо только в том случае, если табличная часть получена из свойства объекта. Если табличная часть получена из свойства ссылки (или выборки), то использование этого метода будет вызывать ошибку выполнения.
Пример:

// сдвиг 2-й строки на предыдущую позицию
Состав.Сдвинуть(1, -1);
// сдвиг 2-й строки на следующую позицию
Состав.Сдвинуть(1, 1);

4 Fedot200
 
18.04.13
14:08
(0) Во-первых - зачем, а во-вторых - почему меняется?
5 Natalika
 
18.04.13
14:14
все, я сделала.
6 mooo
 
18.04.13
14:21

// Сортирует строки табличной части в том же порядке, как у документа основания
//
// Параметры
//  <ТабЧасть>  - <ТабличнаяЧасть> - Табличная часть, которую необходимо упорядочить
//  
//  <ДокументОснование>  - <ДокументСсылка> - Ссылка на документ основание
//
//
Процедура УпорядочитьСтрокиПоДокументуОснованию(ТабЧасть, ДокументОснование, ИмяТабЧасти = "Товары") Экспорт
   
   МетаданныеДокументаОснования = ДокументОснование.Метаданные();
   ИмяДокументаОснования        = МетаданныеДокументаОснования.Имя;
   
   Если НЕ ОбщегоНазначения.ЕстьТабЧастьДокумента(ИмяТабЧасти, МетаданныеДокументаОснования) Тогда
       Возврат;
   КонецЕсли;
   
   Если НЕ ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("Номенклатура", МетаданныеДокументаОснования, ИмяТабЧасти) Тогда
       Возврат;
   КонецЕсли;
   
   Если НЕ ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("ХарактеристикаНоменклатуры", МетаданныеДокументаОснования, ИмяТабЧасти) Тогда
       Возврат;
   КонецЕсли;
   
   Запрос = Новый Запрос();
   Запрос.Текст =
   "ВЫБРАТЬ
   |    ТабЧастьДокумента.Номенклатура,
   |    ТабЧастьДокумента.ХарактеристикаНоменклатуры,
   |    МИНИМУМ(ТабЧастьДокумента.НомерСтроки) КАК Порядок
   |ИЗ
   |    Документ." + ИмяДокументаОснования + "." + ИмяТабЧасти + " КАК ТабЧастьДокумента
   |ГДЕ
   |    ТабЧастьДокумента.Ссылка = &ДокументОснование
   |
   |СГРУППИРОВАТЬ ПО
   |    ТабЧастьДокумента.Номенклатура,
   |    ТабЧастьДокумента.ХарактеристикаНоменклатуры
   |
   |УПОРЯДОЧИТЬ ПО
   |    Порядок";
   
   Запрос.УстановитьПараметр("ДокументОснование", ДокументОснование);
   
   ТаблицаУпорядоченныхСтрок = Запрос.Выполнить().Выгрузить();
   
   ТаблицаДокумента = ТабЧасть.Выгрузить();
   
   ТаблицаДокумента.Колонки.Добавить("ПорядокСтрокиОснования", Новый ОписаниеТипов("Число"));
   
   СтруктураПоиска = Новый Структура("Номенклатура, ХарактеристикаНоменклатуры");
   
   Для каждого СтрокаТаблицы Из ТаблицаДокумента Цикл
       
       СтруктураПоиска.Номенклатура               = СтрокаТаблицы.Номенклатура;
       СтруктураПоиска.ХарактеристикаНоменклатуры = СтрокаТаблицы.ХарактеристикаНоменклатуры;
       
       НайденныеСтроки = ТаблицаУпорядоченныхСтрок.НайтиСтроки(СтруктураПоиска);
       
       Если НайденныеСтроки.Количество() > 0 Тогда
           СтрокаТаблицы.ПорядокСтрокиОснования = НайденныеСтроки[0].Порядок;
       Иначе
           СтрокаТаблицы.ПорядокСтрокиОснования = 9999;
       КонецЕсли;
       
   КонецЦикла;
   
   ТаблицаДокумента.Сортировать("ПорядокСтрокиОснования");
   
   ТабЧасть.Загрузить(ТаблицаДокумента);
   
КонецПроцедуры
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший