Имя: Пароль:
1C
 
Сортировка табличной части
0 Dreams
 
30.11.07
16:15
Есть документ. По кнопке  вызывается функция "заполнить" в модуле документа,которая заполняет табличную часть. После заполнения необходимо полученную табличную часть сортировать по возрастанию по значению первого столбца (тип число).
Пользуюсь типовой функцией

СортироватьСтроки(<?>);
Синтаксис:
СортироватьСтроки(<Колонки>)
Назначение:
Сортировать многострочную часть документа по реквизитам.
Параметры:
<Колонки> - перечисленные через запятую реквизиты многострочной части документа, по которым следует сортировать. Знаки +,- ,* , предшествующие названию реквизита, указывают направление сортировки по реквизиту. ''+''    - сортировать по  возрастанию; ''- ''  - сортировать по убыванию; ''*'' - сортировать по внутреннему значению.

В результате ничего не меняется, строки как были по наименованию отсортированы, так и осталось.
Можно ли выполнить сортировку иначе или я не верно использую данную функцию?
1 ТелепатБот
 
гуру
30.11.07
16:15
2 GrayT
 
30.11.07
16:16
Обновить() ?
3 Dreams
 
30.11.07
16:20
GrayT  обращаюсь к табличной части из модуля формы, метод Обновить  не работает.  А функцию СотрироватьСтроки() пишу просто, без использования сетода Создать Объект, потому что табличная часть этого документа
Обновить<<?>>();
{Документ.Автоматы.Форма.Модуль(230)}: Процедура не обнаружена (Обновить)
4 4pok
 
30.11.07
16:20
(0) "или я не верно использую данную функцию". А как именно Вы используете данную функцию?
5 Dreams
 
30.11.07
16:21
4pok  в модуле формы документа пишу строку
   СортироватьСтроки("НомерАвтоматаВЗале");
6 Нуф-Нуф
 
30.11.07
16:22
Форма.Обновить();
7 Dreams
 
30.11.07
16:29
Нуф-Нуф  то же самое, остается сортировка по наименование
8 LarSha
 
30.11.07
16:31
ВыгрузитьТабличнуюЧасть,ЗагрузитьТабличнуюЧасть
9 Ёпрст2
 
30.11.07
16:31
(7) Если руками нажимать на кнопку сортировки,  сортируется хоть? НомерАвтоматаВЗале - реквизит документа или текстовая колонка?
10 4pok
 
30.11.07
16:35
+(9) иногда еще путают с заголовком колонки. Но попробовать: СортироватьСтроки("+НомерАвтоматаВЗале");
11 Dreams
 
30.11.07
16:42
LarSha не могу использовать такую функцию потому что нахожусь в модуле формы
  Ёпрст2 кнопки сортировка нет, мне нужно чтобы по кнопке заполнить табличная часть заполнялась данными отсортированными не по наименованию а по  одной колонке,которая заполняется как и все остальные функцией заполнить.Я в конце этой процедуры писала СортироватьСтроки("+НомерАвтоматаВЗале");
Пробовала сделать отдельную кнопку, эффект тот же, ничего не происходить, хотя все колонки ко времени вызова функции СортироватьСтроки уже заполенны
  4pok результат тот же
12 Ёпрст2
 
30.11.07
16:45
(11) Как это нет кнопок сортировки? Панель струментов скрыла ? ...
И это, так , что пишет:
Сообщить(Метаданные.Документ(Вид()). РеквизитТабличнойЧасти(НомерАвтоматаВЗале).Выбран()
); //????
13 Ёпрст2
 
30.11.07
16:45
(11) Как это нет кнопок сортировки? Панель струментов скрыла ? ...
И это, так , что пишет:
Сообщить(Метаданные.Документ(Вид()). РеквизитТабличнойЧасти("НомерАвтоматаВЗале").Выбран()
); //????
14 4pok
 
30.11.07
16:48
(11) Кнопки сртировки есть. В панельке открытого документа (сверху с буковками AZ - ZA). Курсор установить на колонку с НомерАвтоматаВЗале и нажать кнопочку Сортировать по возрастанию, затем Сортировать по убыванию.Что происходит?
15 Dreams
 
30.11.07
16:52
Ёпрст2
документ не типовой,написан с нуля.
вот функции по заполению ТЧ
Процедура Заполнить()
   Если Вопрос("Перед заполнением табличная часть будет очищена."
   "Продолжить?","Да+Нет")="Нет" Тогда
       Возврат;
   КонецЕсли;
   УдалитьСтроки();
   
   //Из существующих документов за этот день сформировать список автоматов
   ДокА=СоздатьОбъект("Документ.Автоматы");
   ДокА.ВыбратьДокументы(ДатаДок,ДатаДок);
   СпА=СоздатьОбъект("СписокЗначений");
   СпА.УдалитьВсе();
   Пока ДокА.ПолучитьДокумент()=1 Цикл
       Если ДокА.Проведен()=0 Тогда
           Продолжить;
       КонецЕсли;
       ДокА.ВыбратьСтроки();
       Пока ДокА.ПолучитьСтроку()=1 Цикл
           СпА.ДобавитьЗначение(ДокА.ИгровойАвтомат);
       КонецЦикла;
   КонецЦикла; //существующие документы
   
   Спр=СоздатьОбъект("Справочник.ИгровыеАвтоматы");
   Спр.ВыбратьЭлементы();
   Пока Спр.ПолучитьЭлемент()=1 Цикл
       Если Спр.Состояние.Получить(ДатаДок)<>Перечисление.Состояния.Работает Тогда
           Продолжить;
       КонецЕсли;
       //проверка по введенным документам
       Если СпА.НайтиЗначение(Спр.ТекущийЭлемент())>0 Тогда
           Продолжить;
       КонецЕсли; //введенные документы
       Если (АвтоматыАтроникс=1) и (Спр.Производитель.Наименование="Atronic") Тогда
           НоваяСтрока();
           ИгровойАвтомат=Спр.ТекущийЭлемент();
           ПриВыбореАвтомата();    
       КонецЕсли;
       Если (АвтоматыАтроникс=0) и (Спр.Производитель.Наименование<>"Atronic") Тогда
           НоваяСтрока();
           ИгровойАвтомат=Спр.ТекущийЭлемент();
           ПриВыбореАвтомата();    
       КонецЕсли;
   ЗаполнитьНачало();  
   СортироватьСтроки("НомерАвтоматаВЗале");
   Форма.Обновить();
КонецПроцедуры
Процедура ЗаполнитьНачало()
   Док=СоздатьОбъект("Документ.Автоматы");
   Док.ОбратныйПорядок(1);
   ВыбратьСтроки();
   Пока ПолучитьСтроку()=1 Цикл
       ст=0;
       Док.ВыбратьДокументы(,ДатаДок-1);
       Пока Док.ПолучитьДокумент()=1 Цикл
           Док.ВыбратьСтроки();
           Пока Док.ПолучитьСтроку()=1 Цикл
               Если Док.ИгровойАвтомат=ИгровойАвтомат Тогда
                   ПолученоНачало=Док.ПолученоКонец;
                   Стр2Начало=Док.Стр2Конец;
                   Стр3Начало=Док.Стр3Конец;
                   ВложеноНачало=Док.ВложеноКонец;
                   СнялиНачало=Док.СнялиКонец;
                   Деном=ИгровойАвтомат.Деноминация.Получить(ДатаДок);
                   ст=1;
                   Прервать;
               КонецЕсли;
           КонецЦикла;
           Если ст=1 Тогда
               Прервать;
           КонецЕсли;
       КонецЦикла;
       Если ИгровойАвтомат.ДатаОбнуления.Получить(ДатаДок)=ДатаДок Тогда
           ПолученоНачало=0;
           Стр2Начало=0;
           Стр3Начало=0;
           ВложеноНачало=0;
           СнялиНачало=0;
           Деном=ИгровойАвтомат.Деноминация.Получить(ДатаДок);
       КонецЕсли;
   КонецЦикла;
КонецПроцедуры
Процедура ПриВыбореАвтомата()
Если ИгровойАвтомат.Состояние.Получить(ДатаДок)<>Перечисление.Состояния.Работает Тогда
       Если Вопрос("Данный автомат не является рабочим в данный момент. Продолжить?",4)=7 Тогда
       ИгровойАвтомат="";
           Возврат;
       КонецЕсли;
   КонецЕсли;
НомерВЗале=ИгровойАвтомат.НомерАвтоматаВЗале.Получить(ДатаДок);
КонецПроцедуры


вот процедуры по которым заполняется ТЧ. Реквизит НомерАвтоматаВЗале периоднический НО!!!! я ведь сортирую после заполнения ТЧ, и все данные по сути уже есть
16 4pok
 
30.11.07
16:54
СортироватьСтроки("+НомерВЗале")
17 Ёпрст2
 
30.11.07
16:54
(15) Ну и где у тебя там реквизит "НомерАвтоматаВЗале " ??? Может, всё же
СортироватьСтроки("НомерВЗале");
18 Dreams
 
30.11.07
16:55
Ёпрст2
если б она правильно работала,я бы не спрашивала,ни фига она ей не сортирует!!!
19 Shaman100M
 
30.11.07
16:57
СортироватьСтроки("НомерВЗале");
А?
20 AcaGost
 
30.11.07
16:58
(18) Реквизиты табличной части???
21 Ёпрст2
 
30.11.07
17:00
(18) :))
На кнопки AZ&#8593; понажимай для начала ...
22 Dreams
 
30.11.07
17:04
теперь сортирует,но все равно как то странно.
23 4pok
 
30.11.07
17:05
(22) В чем странность?
24 Dreams
 
30.11.07
17:05
получается
1 10 11 12 13 14 15 2 21 22 23 24
25 Ёпрст2
 
30.11.07
17:05
(22) Чего странного то? Реквизит в документе у тебя - "НомерВЗале", его и сортировать надо ... а какой ты там ему Заголовок назначила для показа - фиолетово, хоть "Ромашкой" его назови ...
26 Ёпрст2
 
30.11.07
17:06
(24) Тип реквизита, строковый видать ... :))
27 Dreams
 
30.11.07
17:07
Ёпрст2  если пользоваться типовой соритровкой,как ты говоришь он сортирует точно так же,в формате 1,10,11,12,13,14,2,21,22,23,3,....
28 4pok
 
30.11.07
17:08
(24) Наверное этот реквизит имеет тип Строка, или... Надо бы Число.
29 Ёпрст2
 
30.11.07
17:08
(27) Ну правильно, тип реквизита в документе у вас - Строка.
30 Dreams
 
30.11.07
17:10
да, конец рабочего дня это тяжко,особенно в пятницу. Всем спасибо))
31 AcaGost
 
30.11.07
17:10
(27) Выгрузи в ТЗ, добавь числовую колонку, заполни ее (Число(НомерВЗале)), отсортируй, удали лишнюю колонку, Загрузи обратно.