8.х Сортировка в форме списка документа

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем mhl, 28 июн 2008.

  1. TopicStarter Overlay
    mhl
    Offline

    mhl Опытный в 1С

    Регистрация:
    23 июн 2007
    Сообщения:
    418
    Симпатии:
    0
    Баллы:
    26
    Как в форме списка документа сделать сортировку по каждой колонке? Например сейчас это работает только на колонке Номер, т.е. когда делаешь двойной щелчок по названию колонки номера сортируются по возрастанию или убыванию. Необходимо сделать это на некоторых других колонках. Подскажите пожалуйста как это реализовать.
  2. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Поставить у нужных реквизитов документа галочку "Индексировать"?
  3. TopicStarter Overlay
    mhl
    Offline

    mhl Опытный в 1С

    Регистрация:
    23 июн 2007
    Сообщения:
    418
    Симпатии:
    0
    Баллы:
    26
    А можно реализовать такое в макете отчета?
  4. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Подробнее.
  5. TopicStarter Overlay
    mhl
    Offline

    mhl Опытный в 1С

    Регистрация:
    23 июн 2007
    Сообщения:
    418
    Симпатии:
    0
    Баллы:
    26
    ну чтоб после формирования отчета можно было делать сортировку в его колонках
  6. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Да, можно. Но предвидя Ваш следующий вопрос, о том как это сделать - опережу, спросив, какого именно отчета?
  7. TopicStarter Overlay
    mhl
    Offline

    mhl Опытный в 1С

    Регистрация:
    23 июн 2007
    Сообщения:
    418
    Симпатии:
    0
    Баллы:
    26
    Отчет не стандартный 1С-ий, мы сами его добавили.
    Данные выводятся в поле табличного документа

    Код:
    ТабДок = ЭлементыФормы.ТаблДок;
    Макет = ПолучитьМакет("Анкеты");
    ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
    ОбластьДетали = Макет.ПолучитьОбласть("Детали");
    
  8. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    В ТабличномДокументе сортировка не предусмотрена. Сортировать нужно до того, как данные вставляются в ТабДок. Например, если запрос отчета выполняется быстро, то можно отсортировать еще в в запросе, перестраивая текст запроса в зависимости от выбранного пользователем значения для сортировки. Если запрос выполняется медленно, то можно сохранить результаты запроса в ТЗ, и при смене режима сортировки - сортировать данные в ТЗ и снова выводить в ТабДок...
  9. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Добавлю, что при больших выборках имеет смысл индексировать полученную таблицу значений. (Возможно только в 8.1)
  10. Саша82
    Offline

    Саша82 Активный ученик

    Регистрация:
    11 окт 2007
    Сообщения:
    307
    Симпатии:
    0
    Баллы:
    26
    А на сколько большая может быть таблица значений?
    Как можно перестраивать текст запроса в зависимости от выбранного значения?
  11. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    1. Сколько памяти будет :)
    2. Можно, но делать несколько выборок из базы (большого размера) - не очень хорошо.
  12. Саша82
    Offline

    Саша82 Активный ученик

    Регистрация:
    11 окт 2007
    Сообщения:
    307
    Симпатии:
    0
    Баллы:
    26
    Значит если база большая то лучше один раз запросом вывести в ТЗ индексировать ее, а потом из нее запросами уже выбирать? Кстати к ТЗ можно запросы делать?
    Как перестраивать текст в запросе с помощью "Если тогда" "Если тогда" так что ли ?
  13. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Ну, может имеет смысл зафигачить все во временную таблицу (она в базе храниться) и дергать её.

    ТЗ можно, опять таки, через ВТ в запрос запихать (но проще заранее создать ВТ)

    ЗЫ. А вообще, зависит от конкретной задачи
  14. Саша82
    Offline

    Саша82 Активный ученик

    Регистрация:
    11 окт 2007
    Сообщения:
    307
    Симпатии:
    0
    Баллы:
    26
    Ну то есть к ТЗ нельзя запрос делать?
  15. AlexFF
    Offline

    AlexFF Разбирающийся

    Регистрация:
    6 мар 2007
    Сообщения:
    565
    Симпатии:
    1
    Баллы:
    26
    Можно. BabySG написал же. Запихни свою ТЗ во временную таблицу и делай по ней запросы как хочешь.(временные таблицы доступны в 8.1)
  16. avantime
    Offline

    avantime

    Регистрация:
    23 июл 2007
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    Каким образом это можно реализовать... Я не нашел :unsure:
  17. Stack_G
    Offline

    Stack_G Опытный в 1С

    Регистрация:
    10 дек 2007
    Сообщения:
    786
    Симпатии:
    2
    Баллы:
    26
    Ответ на вопрос из заголовка темы.
    Найден в просторах интернета.
    Если реквизит примитивного типа, то достаточно установить для свойства реквизита Индексировать значение Индексировать или Индексировать с доп. упорядочиванием (не доступно для реквизитов типа ХранилищеЗначения). Если же реквизит ссылочного типа, то необходимо явно разрешить для него доступность сортировки. Например:

    Код:
    ЭлементУП = ЭлементыФормы.СправочникСписок.НастройкаПорядка.Найти("Реквизит1");
    Если ЭлементУП <> Неопределено Тогда
    ЭлементУП.Доступность = Истина; 
    КонецЕсли;
    

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