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

Тема в разделе "1C и всё что с ней связано", создана пользователем Roman, 17 мар 2010.

  1. Roman

    Roman Гость

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

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
    Ваша ошибка в том, что вы не позиционированы на конкретном документе.
     
  3. Hryv

    Hryv Гость

    Это 7.7?

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

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

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

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

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

    :)

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

    Roman Гость

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

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    А откуда он взялся ?
    Его надо либо выбрать, либо найти :)
     
  6. Hryv

    Hryv Гость

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

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


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

    Roman Гость

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

    SeverBap Well-Known Member

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

    Roman Гость

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


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

    SeverBap Well-Known Member

    Регистрация:
    18 сен 2007
    Сообщения:
    440
    Симпатии:
    0
  11. Roman

    Roman Гость

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

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    ТЗН.Сортировать("Группа,Подгруппа1,Подгруппа2");
     
  13. Roman

    Roman Гость

    Я может неправильно написал. У меня нет реквизита Подруппа1 и т.д.
    Мне нужно в документе Заявка отсортировать строки по номенклатуре по группам и вложенностям
    По группе я сделал(читай код выше ), а как мне теперь реализовать сортировки согласно вложенности
     
  14. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    ТЗН.НоваяКолонка("Подгруппа2"); // Номенклатура.Родитель
    ТЗН.НоваяКолонка("Подгруппа1"); // Номенклатура.Родитель.Родитель
    ТЗН.НоваяКолонка("Группа"); // Номенклатура.Родитель.Родитель.Родитель

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

    Hryv Гость

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

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

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
    ТЗН.НоваяКолонка("Уровень","Число");
    ТЗН.НоваяКолонка("Наименование","Строка");
    Дальше идею рассказывать? Опять же становится совершенно монопенисуальна вложенность и количество уровней.
     
  17. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Тоже вариант, еще и лучше :D
     
  18. Roman

    Roman Гость

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

    Hryv Гость

    Неужели проще написать на форум, чем в хэлпе посмотреть
     
  20. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    ТЗН.Уровень = Номенклатура.Уровень();
    Только следи, чтобы в группировке не было указано БезГрупп
     
Загрузка...
Похожие Темы - Упорядочивание строк документе
  1. Zhuk
    Ответов:
    18
    Просмотров:
    1.967
  2. Whatka
    Ответов:
    4
    Просмотров:
    2.048
  3. vbs
    Ответов:
    3
    Просмотров:
    2.683
  4. Escaper
    Ответов:
    3
    Просмотров:
    39
  5. Вероника Эл
    Ответов:
    5
    Просмотров:
    200

Поделиться этой страницей