Упорядочивание строк в документе

  • Автор темы Roman
  • Дата начала
R

Roman

#1
Код:
Процедура УпорядочитьСтроки()
Если Вопрос("Упорядочить строки?","Да+Нет") = "Да" Тогда
ТЗН = СоздатьОбъект("ТаблицаЗначений");
Док = СоздатьОбъект("Документ.ПредЗаявка");
Док.ВыгрузитьТабличнуюЧасть(ТЗН);
ТЗН.НоваяКолонка("Родитель");
ТЗН.Родитель = Номенклатура.Родитель;
ТЗН.Сортировать.("Родитель +");
КонецЕсли;
КонецПроцедуры;
Выдает ошибку и закрывает приложение, не пойму в чем моя ошибка?
 

vitfil

IT-интегратор
02.04.2004
2 062
0
#2
Ваша ошибка в том, что вы не позиционированы на конкретном документе.
 
H

Hryv

#3
Это 7.7?

Почему постоянно никто не пишет платформу

если 7.7, то как минимум 2 ошибки

1. ТЗН.Сортировать.("Родитель +"); - после Сортировать точка зачем?????

2. Док = СоздатьОбъект("Документ.ПредЗаявка");
Док.ВыгрузитьТабличнуюЧасть(ТЗН);

Док создал и сразу выгружаешь, а из какого конкретно документа??????

:)

Добавлено: Мой 2-й пункт - это то о чем уже vitfil ответил
Просто я его сообщения еще не видел, когда сам писал
 
R

Roman

#4
Код:
Если Вопрос("Упорядочить строки?","Да+Нет") = "Да" Тогда
ТЗН = СоздатьОбъект("ТаблицаЗначений");
Док = СоздатьОбъект("Документ.ПредЗаявка");
Док.ТекущийДокумент(); 
Док.ВыгрузитьТабличнуюЧасть(ТЗН);
ТЗН.НоваяКолонка("Родитель");
ТЗН.Родитель = Номенклатура.Родитель;
ТЗН.Сортировать("Родитель +");
Док.ЗагрузитьТабличнуюЧасть(ТЗН);
КонецЕсли;
Делаю так один фиг фатальная ошибка :)
Суть в следующем, мне надо отсортировать строки дока
по группам номенклатуры
Конфа ТиС версия 7.7
 
H

Hryv

#6
Roman, а что по твоему делает
Док.ТекущийДокумент();
????

Наверное надеешься, что позиционирует на конкретный документ
Таки нет!
А в синтакс-помошник влом посмотреть?


Где ты хоть используешь эту процедуру? В документе, журнале, ...?
 
R

Roman

#7
Мальца затупил, сейчас переделал
Мне нужно было в открытом документе упорядочить
Сделал так:
Код:
ВыгрузитьТабличнуюЧасть(ТЗН)
ЗагрузитьТабличнуюЧасть(ТЗН)
Но мне кажется что он сортирует не по группе
 

SeverBap

Well-known member
18.09.2007
451
0
#8
Код:
Если Вопрос("Упорядочить строки?","Да+Нет") = "Да" Тогда
ТЗН = СоздатьОбъект("ТаблицаЗначений");
ВыгрузитьТабличнуюЧасть(ТЗН);
ТЗН.НоваяКолонка("Родитель");
ТЗН.ВыбратьСтроки();
Пока ТЗН.ПолучитьСтроку()=1 Цикл
ТЗН.Родитель =ТЗН.Номенклатура.Родитель;
КонецЦикла;
ТЗН.Сортировать("Родитель +");
ЗагрузитьТабличнуюЧасть(ТЗН);
КонецЕсли;
Скорее тебе надо было такое, а также надо было описать что у тебя в табличной части документа предЗаявка! (скорее всего тебе это не надо так как стандартными средствами это реализуется)
 
R

Roman

#9
Скорее тебе надо было такое, а также надо было описать что у тебя в табличной части документа предЗаявка! (скорее всего тебе это не надо так как стандартными средствами это реализуется)
Скорее всего да. Спасибо
а стандартная функция этого не делает( она сортирует просто по номенклатуре, а по группе нет.)
Но всё равно не то
Суть в следующем: при набивки заявки, по кнопке упорядочить, нужно чтобы строки сортировались по группам и подгруппам
До этого был алгоритм такой:
Создал реквизит ГруппаН(число) в справочнике номенклатура
Обработкой присвоил каждому элементу справочника номер группы
и сортировал себе строки:
Код:
СортироватьСтроки("ГруппаН +");
Всё работало нормально
Но появляются новые позиции и соответственно данный реквизит не проставляется
и сортировка нарушается. А мне каждый раз следить за этим как-то никак.


Добавлено: Всё тема закрыта.Сделал.
Надо было :
Код:
ТЗН.Родитель =ТЗН.Номенклатура.Родитель.Наименование;
И всё
 
R

Roman

#11
Всем снова здрасте.
Тема следующая:
Надо теперь изменить алгоритм сортировки, так чтобы сортировалось, по вложенности
т. е. Номенклатура->Группа->Подгруппа1->Подгруппа2 и т.д.
пока вложенность не закончилась.
Подскажите пожалуйста как это сделать?
 

vbs

Well-known member
18.02.2007
1 708
1
#12
ТЗН.Сортировать("Группа,Подгруппа1,Подгруппа2");
 
R

Roman

#13
ТЗН.Сортировать("Группа,Подгруппа1,Подгруппа2");
Я может неправильно написал. У меня нет реквизита Подруппа1 и т.д.
Мне нужно в документе Заявка отсортировать строки по номенклатуре по группам и вложенностям
По группе я сделал(читай код выше ), а как мне теперь реализовать сортировки согласно вложенности
 

vbs

Well-known member
18.02.2007
1 708
1
#14
ТЗН.НоваяКолонка("Подгруппа2"); // Номенклатура.Родитель
ТЗН.НоваяКолонка("Подгруппа1"); // Номенклатура.Родитель.Родитель
ТЗН.НоваяКолонка("Группа"); // Номенклатура.Родитель.Родитель.Родитель

Если уровней много (да и вообще технично) при формировании колонок исследовать родителей снизу, пока не доберешься до верхнего уровня
 
H
#15
как вариант
можно поэкспериментировать с ПолноеНаименование()
но то что предлжил vbs скорее всего проще реализовать

надо проверить что вернет ПолноеНаименование() элемента, который не максимально глубоко вложен
при удачном раскладе так может проще получится
 

vitfil

IT-интегратор
02.04.2004
2 062
0
#16
ТЗН.НоваяКолонка("Уровень","Число");
ТЗН.НоваяКолонка("Наименование","Строка");
Дальше идею рассказывать? Опять же становится совершенно монопенисуальна вложенность и количество уровней.
 
R

Roman

#18
А можно с этого места по подробнее?
Т.е. я так понимаю колонка уровень - это уровень вложенности,
а колонка наименование это Наименование группы(или подгруппы)
но как мне заполнить колонку - уровень?
 
H
#19
Неужели проще написать на форум, чем в хэлпе посмотреть
Уровень()
Синтаксис:
Уровень()
Назначение:
Возвращает номер уровня текущего элемента справочника.
 

vbs

Well-known member
18.02.2007
1 708
1
#20
ТЗН.Уровень = Номенклатура.Уровень();
Только следи, чтобы в группировке не было указано БезГрупп