Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   Как в СКД передать порядок сортировки ? (http://forums.kuban.ru/f1040/kak_v_skd_peredat-_poryadok_sortirovki-3528916.html)

med 10.01.2013 15:01

Как в СКД передать порядок сортировки ?
 
8.2
УПП
Делаю отчет на СКД, всё хорошо, всё нормально, но
есть несколько вычисляемых полей
и вот по ним надо упорядочивать отчет
На форме задал поле выбора , сделал из него список выбора - там все варинаты сортировок.
А как теперь передать это значение в СКД ?
Вроде как не параметр...
Как с формы задать в каком порядке выводить данные ?
(Можно конечно через настройки, но хотелось бы, что б было красиво , и что б пользоваться могли даже простые пользователи.)

roma n 10.01.2013 15:07

[b]Нужно [/b]конечно через настройки. Или работать с настройками программно не позволяют религиозные убеждения?

Reaper 10.01.2013 16:38

Отчеты для УПП нужно разрабатывать на базе механизма "произвольные отчеты".

med 11.01.2013 06:05

1-roma n > Позволяют, просто хочу сделать неменяемую форму ввода данных, т.к. пользователи запросто прибивают настройки.
2-Reaper > а жить нужно в Ницце, питаться черной икрой, отдыхать на Багамских островах и ездить на Ролс-Ройсе, много чего в этой жизни нужно..., но вопрос был не об этом.

Reaper 11.01.2013 07:21

Вот же столбовая птица... Произвольные отчеты сами генерируют форму настроек, произвольные отчеты опираются на варианты отчетов. В итоге тупые пользователи могут вообще никогда не увидеть формы настроек СКД. Ты долго еще будешь конфигурацию калечить, или наконец начнешь уже ее изучать, террорист?

roma n 11.01.2013 09:41

4-Reaper > а взрывоопасная смесь,- тупые и любопытные,- срубают ранее выставленные настройки и сохраняют в том же варианте :) Плавали, знаем!

med 11.01.2013 12:05

5-roma n > ВОт вот вот , что б не срубали - лучше им их не видеть и не знать, что они существуют
4-Reaper > Насчет калечить так, для сведения - всё делается через внешние отчеты/обработки... Ну напиши ты, что не знаешь как... и ладно ... все равно ведь есть способ, я же не спрашиваю, как это можно сделать, я могу это и через обычный запрос сделать с выводом результата в табличный документ, но я вплотную осваиваю СКД, поэтому и хочу всё сделать через СКД

roma n 11.01.2013 16:55

6-med > оно и средствами подсистемы решается. Главное про это помнить :)
4-Reaper > Не ругайся сильно: в качестве упражнения для понимания (0) вполне оправдано. Ну и, разумеется, в частных случаях такое решение может оказаться гораздо эффективнее использования произвольных отчётов.
3-med > "[em]хочу сделать неменяемую форму ввода данных, т.к. пользователи запросто прибивают настройки[/em]" да пусть хоть обприбиваются... Считывай текущие настройки компоновщика, ищи в настройках нужную тебе сортировку, если нашёл - модифицируй в соответствии с набитым в форме, не нашёл - создавай. Формируй отчёт. Profit

med 14.01.2013 06:12

[quote=roma n;28519538]Считывай текущие настройки компоновщика, ищи в настройках нужную тебе сортировку,[/quote]
Путь понятен, а можно чуть чуть еще поподробнее как найти и как передать ?
Просто тут , как я уже сказал - сортировка по вычисляемому полю - и в самом СКД я это задаю уже непосредственно на закладке "Настройки" ...

med 08.02.2013 07:48

?

Buzz 08.02.2013 08:56

Для 8.1 это выглядет так:
Настройки = КомпоновщикНастроек.Настройки;
Элемент = Настройки.Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных"));
Элемент.Поле = Новый ПолеКомпоновкиДанных(ПолеСортировки); //например("Номенклатура.Код");
Элемент.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Возр;
Элемент.Использование = Истина;

Для 8.2 думаю также будет.

Buzz 08.02.2013 08:57

+10 Настройки.Порядок.Элементы - коллекция элементов сортировки компоновки данных.

med 08.02.2013 10:11

11-Buzz >
Спасибо большое
[quote=Buzz;28958083]Элемент.Поле = Новый ПолеКомпоновкиДанных(ПолеСортировки); //например("Номенклатура.Код");[/quote]
А как вот сюда передать, скажем у меня в скд есть вычисляемое поле "ВремяРаботы" ?

med 08.02.2013 10:16

Я нашел способ управлять программно, но очень нехороший
Я в скд Задал все нужные/возможные сортировки, а из формы вызываю их так

ВремСогл=КомпоновщикНастроек.Настройки.Порядок.Элементы.Получить(0);
ВремСогл.Использование=Истина;
ВремСогл.ТипУпорядочивания=НаправлениеСортировкиКомпоновкиДанных.Убыв;
ВремСогл.ТипУпорядочивания=НаправлениеСортировкиКомпоновкиДанных.Возр;
ДатаСогл=КомпоновщикНастроек.Настройки.Порядок.Элементы.Получить(1);
ДатаСогл.Использование=Ложь;
ДатаПриема=КомпоновщикНастроек.Настройки.Порядок.Элементы.Получить(2);
ДатаПриема.Использование=ЛОЖЬ;
И так далее, в зависимости от нужной сортировки нужную так сказать перевожу в положение ИСТИНА и задаю направление.
Но ведь явно можно как то красивше это сделать ?

med 08.02.2013 10:18

Естественно одновременно Убыв и Возр не используются :-)

ВремСогл=КомпоновщикНастроек.Настройки.Порядок.Эле менты.Получить(0);
ВремСогл.Использование=Истина;
ВремСогл.ТипУпорядочивания=НаправлениеСортировкиКо мпоновкиДанных.Убыв;
ДатаСогл=КомпоновщикНастроек.Настройки.Порядок.Эле менты.Получить(1);
ДатаСогл.Использование=Ложь;
ДатаПриема=КомпоновщикНастроек.Настройки.Порядок.Э лементы.Получить(2);
ДатаПриема.Использование=ЛОЖЬ;

Buzz 08.02.2013 10:23

Не совсем универсально, но тоже пойдет.


Текущее время: 12:24. Часовой пояс GMT +3.