Salimbek писал(а) 04. Апреля 2014 :: 20:17:Посмотрел "ПоставщикДанных.Справочник"
1. В Процедуре ДобавитьКолонкуДанных жестко устанавливается
ВложеннаяСтруктура.Сортировка = 0;
2. В событии ПриВыбореЗаголовка есть этот код:
Если ВложеннаяСтруктура.Сортировка = 0 Тогда
Возврат;
в результате сортировка по таким полям становится невозможной.
В качестве временного решения "для_себя" можно подправить процедуру 1, чтобы если имя колонки начинается, например, на "_сорт", то Сортировка выставлять в 1.
Примерно так:
Если Лев(ИдентификаторРеквизита,5)="_сорт" Тогда
ВложеннаяСтруктура.Сортировка = 1;
Иначе
ВложеннаяСтруктура.Сортировка = 0;
КонецЕсли;
И добавлять колонку для сортировки как
менование","Строка",15,,1);
После некоторого тестирования получилось следующее:
Когда сортировку включаешь в ПД.Справочник через "_сорт", то далее поле искалось у текущего справочника. И, так как не находило, то все падало с ошибкой.
Решение:
В функции "ПолучитьСтрокуУпорядочивания" вместо
ИначеЕсли ПустоеЗначение(ВрегРеквизитСортировки) = 1 Тогда
Если ИерархическийПросмотр = 1 Тогда
СтрокаПорядка = "ТекущийОбъект.idx_"+Лев(ДобавлениеКИндексу,СтрДлина(ДобавлениеКИндексу)-1);
Иначе
СтрокаПорядка = "ТекущийОбъект.idx_ID";
КонецЕсли;
Иначе
ПолеКодаНаименования = "";
...
пишем
ИначеЕсли ПустоеЗначение(ВрегРеквизитСортировки) = 1 Тогда
Если ИерархическийПросмотр = 1 Тогда
СтрокаПорядка = "ТекущийОбъект.idx_"+Лев(ДобавлениеКИндексу,СтрДлина(ДобавлениеКИндексу)-1);
Иначе
СтрокаПорядка = "ТекущийОбъект.idx_ID";
КонецЕсли;
ИначеЕсли Лев(ВрегРеквизитСортировки,5)="_СОРТ" Тогда
СтрокаПорядка = СтруктураДанных.Получить(ВрегРеквизитСортировки).РеквизитЗапроса;
Иначе
ПолеКодаНаименования = "";
Если используется SQL-сервер, то добавляем подсвеченные строчки и в ветку "Если ЭтоSQL = 1"