• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

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

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

Roman

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

vitfil

Ваша ошибка в том, что вы не позиционированы на конкретном документе.
 
H

Hryv

Это 7.7?

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

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

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

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

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

:)

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

Roman

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

Hryv

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

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


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

Roman

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

Но мне кажется что он сортирует не по группе
 
S

SeverBap

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

Roman

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


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

Roman

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

vbs

ТЗН.Сортировать("Группа,Подгруппа1,Подгруппа2");
 
R

Roman

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

vbs

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

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

Hryv

как вариант
можно поэкспериментировать с ПолноеНаименование()
но то что предлжил vbs скорее всего проще реализовать

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

vitfil

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

Roman

А можно с этого места по подробнее?
Т.е. я так понимаю колонка уровень - это уровень вложенности,
а колонка наименование это Наименование группы(или подгруппы)
но как мне заполнить колонку - уровень?
 
H

Hryv

Неужели проще написать на форум, чем в хэлпе посмотреть
Уровень()
Синтаксис:
Уровень()
Назначение:
Возвращает номер уровня текущего элемента справочника.
 
V

vbs

ТЗН.Уровень = Номенклатура.Уровень();
Только следи, чтобы в группировке не было указано БезГрупп
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!