7.7 Сортировать по алфавиту отчет

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем nestov, 26 окт 2011.

  1. TopicStarter Overlay
    nestov
    Offline

    nestov Опытный в 1С

    Регистрация:
    25 апр 2011
    Сообщения:
    65
    Симпатии:
    0
    Баллы:
    26
    никак не сортирует колонку в отчете, не могу понять в чем дело...
    писал через запрос. Есть Подразделение колонка, если добавлю упорядочить по ... , то все-равно ничего не сортируется.

    вот мой запрос сам:
    Код:
    ТекстЗапроса = 
    "//{{ЗАПРОС(Сформировать)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |Наименование1 = Справочник.Сотрудники.Подразделение, Справочник.ВнутренниеСовместители.Подразделение;
    |Наименование = Справочник.Сотрудники.Должность, Справочник.ВнутренниеСовместители.Должность;
    |Ставка = Справочник.Сотрудники.Ставка, Справочник.ВнутренниеСовместители.Ставка;
    |Наименование2 = Справочник.Сотрудники.МестоРаботы.ИсточникФинансирования, Справочник.ВнутренниеСовместители.МестоРаботы.ИсточникФинансирования;
    |Функция СтавкаСумма = Сумма(Ставка);
    |Группировка Наименование1;
    |Группировка Наименование;
    |Группировка Наименование2;
    
    Значение в таблице в ячейке по которой нужна сортировка: "Запрос.ЗначениеУпорядочивания(2)".
    - может быть дальше по коду можно как-то прописать перед выводом секции используя это значение?
    а то в запросе самом, если добавить "|Группировка Наименование1 упорядочить по наименование1.наименование" - не работает.

    [warn="!!! ВНИМАНИЕ !!!"]Пользуемся тегами[/warn]
  2. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    можно предположить, что при выгрузке результата запроса в таблицу значений, в последней и сортировать записи
  3. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Теоретически все должно работать... Вы точно уверены что сортирует? Может просто регистр влияет
  4. TopicStarter Overlay
    nestov
    Offline

    nestov Опытный в 1С

    Регистрация:
    25 апр 2011
    Сообщения:
    65
    Симпатии:
    0
    Баллы:
    26
    Я без использования регистра вывожу отчет.
    Вот когда в запросе добавляю "Упорядочивание" :

    Код:
    	ТекстЗапроса = 
    "//{{ЗАПРОС(Сформировать)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |Наименование1 = Справочник.Сотрудники.Подразделение, Справочник.ВнутренниеСовместители.Подразделение;
    |Наименование = Справочник.Сотрудники.Должность, Справочник.ВнутренниеСовместители.Должность;
    |Ставка = Справочник.Сотрудники.Ставка, Справочник.ВнутренниеСовместители.Ставка;
    |Наименование2 = Справочник.Сотрудники.МестоРаботы.ИсточникФинансирования, Справочник.ВнутренниеСовместители.МестоРаботы.ИсточникФинансирования;
    |Функция СтавкаСумма = Сумма(Ставка);
    [b]	|Группировка Наименование1 упорядочить по Наименование1.Наименование;[/b]
    |Группировка Наименование;
    |Группировка Наименование2;
    |"//}}ЗАПРОС
    
    
    то

    отчет все-равно не выводит сортированный

    поэтому может быть можно по коду (может быть перед выводом секции) как-то прописать сортировку??
    обращаясь, например, к значению ячейки ( у меня это "Запрос.ЗначениеУпорядочивания(2)")

    Вложения:

  5. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Дык... Все верно - внутри группировки-то у вас все отсортировано... Уберите 2 других и убедитесь
  6. TopicStarter Overlay
    nestov
    Offline

    nestov Опытный в 1С

    Регистрация:
    25 апр 2011
    Сообщения:
    65
    Симпатии:
    0
    Баллы:
    26
    аа... теперь понятно. убирать другие группировки мне не нужно (они мне нужны для вывода других колонок). А получается, что в моем случае упорядочивание нужно писать только в последней группировке. Разобрался
    спасибо!
  7. TopicStarter Overlay
    nestov
    Offline

    nestov Опытный в 1С

    Регистрация:
    25 апр 2011
    Сообщения:
    65
    Симпатии:
    0
    Баллы:
    26
    Хотя здесь возникает еще один вопрос:
    мне нужно вывести группировки именно в таком порядке:
    Код:
    	ТекстЗапроса = 
    "//{{ЗАПРОС(Сформировать)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |Наименование1 = Справочник.Сотрудники.Подразделение, Справочник.ВнутренниеСовместители.Подразделение;
    |Наименование2 = Справочник.Сотрудники.Должность, Справочник.ВнутренниеСовместители.Должность;
    |Ставка = Справочник.Сотрудники.Ставка, Справочник.ВнутренниеСовместители.Ставка;
    |Наименование3 = Справочник.Сотрудники.МестоРаботы.ИсточникФинансирования, Справочник.ВнутренниеСовместители.МестоРаботы.ИсточникФинансирования;
    |Функция СтавкаСумма = Сумма(Ставка);
    |Группировка Наименование1;
    |Группировка Наименование2;
    |Группировка Наименование3;
    
    как мне написать упорядочивание по Наименование1??
    если напишу

    Код:
    |Группировка Наименование1;
    |Группировка Наименование2;
    |Группировка Наименование3;
    
    
    то сортировать не будет, а в конце если поставить

    Код:
    |Группировка Наименование2;
    |Группировка Наименование3;
    |Группировка Наименование1 упорядочить по наименование1.наименование;
    
    то будет выводиться, сортироваться не в первой колонке.
    понимаете вопрос?

    все-таки было бы легче обратиться к сортировке как-то не из запроса...
  8. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    попробуйте все таки выгрузить рзультат запроса в ТЗ и сортировать ТЗ, раз хотите помимо запроса отсортировать выборку
  9. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    [warn="!!! ВНИМАНИЕ !!!"]Пользуемся тегами!
    Дальше будут предупреждения[/warn]
  10. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Что мешает упорядочить остальные группировки... И кашерно было бы выделить их (хотя бы фоном). Так было бы нагляднее
  11. TopicStarter Overlay
    nestov
    Offline

    nestov Опытный в 1С

    Регистрация:
    25 апр 2011
    Сообщения:
    65
    Симпатии:
    0
    Баллы:
    26
    И все-таки что-то не то... все-равно не сортирует. И через таблицу значений не получилось, но скорее это с ТЗ я что-то ошибся... но пока хочу разобраться с группировкой в запросах.
    если ставлю везде упорядочивание, то все-равно сортирует не первую колонку.
    Если Вам не лень, то посмотрите пожалуйста, почему не хочет сортировать...
    мне нужно сортировать именно по колонке "Подразделение" и чтобы все остальное не нарушалось...
    заранее благодарю.
    вот внешний отчет, файл

    Вложения:

  12. TopicStarter Overlay
    nestov
    Offline

    nestov Опытный в 1С

    Регистрация:
    25 апр 2011
    Сообщения:
    65
    Симпатии:
    0
    Баллы:
    26
    вот весь текст:
    Код:
    Процедура Сформировать()
    Перем Запрос, ТекстЗапроса, Таб;
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса = 
    "//{{ЗАПРОС(Сформировать)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |НаименованиеП = Справочник.Сотрудники.Подразделение, Справочник.ВнутренниеСовместители.Подразделение;
    |НаименованиеД = Справочник.Сотрудники.Должность, Справочник.ВнутренниеСовместители.Должность;
    |Ставка = Справочник.Сотрудники.Ставка, Справочник.ВнутренниеСовместители.Ставка;
    |НаименованиеИ = Справочник.Сотрудники.МестоРаботы.ИсточникФинансирования, Справочник.ВнутренниеСовместители.МестоРаботы.ИсточникФинансирования;
    |Функция СтавкаСумма = Сумма(Ставка);
    |Группировка НаименованиеП упорядочить по НаименованиеП.Наименование;
    |Группировка НаименованиеД упорядочить по НаименованиеД.Наименование;
    |Группировка НаименованиеИ упорядочить по НаименованиеИ.Наименование;
    |"//}}ЗАПРОС;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    Возврат;
    КонецЕсли;                                                            
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Таблица");
    Таб.ВывестиСекцию("Заголовок");
    Состояние("Заполнение выходной таблицы...");
    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
    Пока Запрос.Группировка(1) = 1 Цикл
    Пока Запрос.Группировка(2) = 1 Цикл
    Пока Запрос.Группировка(3) = 1 Цикл  
    
    если Запрос.СтавкаСумма>0 тогда
    
    Таб.ВывестиСекцию("Наименование2");
    
    конецесли;  
    
    КонецЦикла;
    КонецЦикла;
    КонецЦикла;
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Таблица", "");
    КонецПроцедуры
    
    
    а вот результат:

    и ничего не сортирует... так и не пойму в чем дело

    Вложения:

  13. TopicStarter Overlay
    nestov
    Offline

    nestov Опытный в 1С

    Регистрация:
    25 апр 2011
    Сообщения:
    65
    Симпатии:
    0
    Баллы:
    26
    А не подскажите как мне написать сортировку по колонке Подразделение ( там в запросе НаименованиеП) через выгрузку запроса в таблицу значений... как вообще это все описывается?
  14. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Код:
    ...
    ТЗ = СоздатьОбъект("ТаблицаЗначений");
    Запрос.Выгрузить(ТЗ,0,0);
    ТЗ.Сортировать("НаименованиеП");
    
    
  15. TopicStarter Overlay
    nestov
    Offline

    nestov Опытный в 1С

    Регистрация:
    25 апр 2011
    Сообщения:
    65
    Симпатии:
    0
    Баллы:
    26
    все-равно не сортирует.
    что я не так написал ??
    Я вставляю код:
    Код:
    	ТЗ = СоздатьОбъект("ТаблицаЗначений");
    Запрос.Выгрузить(ТЗ,0,0);
    ТЗ.Сортировать("НаименованиеП");  
    
    получается в общем:

    Код:
    Процедура Сформировать()
    Перем Запрос, ТекстЗапроса, Таб;
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса = 
    "//{{ЗАПРОС(Сформировать)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |НаименованиеП = Справочник.Сотрудники.Подразделение, Справочник.ВнутренниеСовместители.Подразделение;
    |НаименованиеД = Справочник.Сотрудники.Должность, Справочник.ВнутренниеСовместители.Должность;
    |Ставка = Справочник.Сотрудники.Ставка, Справочник.ВнутренниеСовместители.Ставка;
    |НаименованиеИ = Справочник.Сотрудники.МестоРаботы.ИсточникФинансирования, Справочник.ВнутренниеСовместители.МестоРаботы.ИсточникФинансирования;
    |Функция СтавкаСумма = Сумма(Ставка);
    |Группировка НаименованиеП упорядочить по НаименованиеП.Наименование;
    |Группировка НаименованиеД упорядочить по НаименованиеД.Наименование;
    |Группировка НаименованиеИ упорядочить по НаименованиеИ.Наименование;
    |"//}}ЗАПРОС
    ;                             
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    Возврат;
    КонецЕсли;               
    
    ТЗ = СоздатьОбъект("ТаблицаЗначений");
    Запрос.Выгрузить(ТЗ,0,0);
    ТЗ.Сортировать("НаименованиеП");        
    
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Таблица");
    Таб.ВывестиСекцию("Заголовок");
    Состояние("Заполнение выходной таблицы...");
    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
    
    
    
    Пока Запрос.Группировка(1) = 1 Цикл
    Пока Запрос.Группировка(2) = 1 Цикл
    Пока Запрос.Группировка(3) = 1 Цикл  
    
    если Запрос.СтавкаСумма>0 тогда
    
    Таб.ВывестиСекцию("Наименование2");
    конецесли;  		
    КонецЦикла;
    КонецЦикла;
    КонецЦикла;
    Таб.ТолькоПросмотр(1); 
    
    Таб.Показать("Таблица", "");
    КонецПроцедуры
    
    и все-равно не хочешь сортировать колонку
    само значение в ячейке в таблице называется "Запрос.ЗначениеУпорядочивания(1)", но думаю не в этом дело ведь...

    Вложения:

  16. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    После того как отсортировали вы должны работать не с запросом, а с таблицей значений. Также придется менять и макет.
    Посмотрите методы в СП: ВыбратьСтроки(), ПолучитьСтроку()

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