Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
16 Дек 2017, 00:39
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Сортировка  (Прочитано 5582 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн sail

  • **
  • Сообщений: 91
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2010-12-08
  • Сайт: 
  • Профессия: Программист 8.1
Подскажите, пожалуйста.
Я сделала печатную форму, которая содержит № п/п/, ФИО сотрудника, Должность, Подразделение, Оклад. Как сделать так, чтобы данные в нее выводились:
а) по подразделениям в алфавитном порядке (Администрация, Бибилиотека, ...)
б) по возрастанию окладов
Заранее спасибо.
P.S. Только, если можно, поскорее надо.


Оффлайн DenPlus

  • ***
  • Сообщений: 106
  • РЕПУТАЦИЯ: 64
  • КПД: 60%
  • Регистрация: 2010-10-27
  • Компания: www.cosmocat.ru
Re: Сортировка
« Ответ #1: 27 Дек 2010, 23:09 »
Когда делаете обход по справочнику, то не выводите результат в таблицу (Таб.вывестиСекцию("строка")), а заполняйте, ранее созданную ТаблицуЗначений (ТЗ.НоваяСтрока()).

После обхода справочника сделайте ТЗ.Сортировать("Подразделение, Оклад"). Далее уже цикл по ТЗ и в этом цикле: Таб.вывестиСекцию("строка").

Цикл по ТЗ (как вариант):

Для нн = 1 По ТЗ.КоличествоСтрок() Цикл
ТЗ.ПолучитьСтрокуПоНомеру(нн);
Подразделение = ТЗ.Подразделение;
Оклад = ТЗ.Оклад;
...
...
КонецЦикла;

Последний раз редактировалось: DenPlus; 27 Дек 2010, 23:21

Оффлайн sail

  • **
  • Сообщений: 91
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2010-12-08
  • Сайт: 
  • Профессия: Программист 8.1
Re: Сортировка
« Ответ #2: 27 Дек 2010, 23:20 »
Мой код таков
   ТЗ = СоздатьОбъект("ТаблицаЗначений");
   ном=0;
       Запрос = СоздатьОбъект("Запрос"); 
         ТекстЗапроса = "
      |Док = Справочник.Сотрудники.ТекущийЭлемент;
      |Наим  = Справочник.Сотрудники.Наименование;
      |Дол = Справочник.Сотрудники.Должность;
      |Подр  = Справочник.Сотрудники.Подразделение;
      |Окл = Справочник.Сотрудники.Оклад; 
      |Группировка  Подр упорядочить по Подр.Наименование;
       |";          
Запрос.Выполнить(ТекстЗапроса) ;
Запрос.Выгрузить(ТЗ,"Док,Наим,Дол,Подр,Окл"); 
ТЗ.ВыбратьСтроки();
   
   Если Первый = 1 Тогда    //по подразделению
   Сортировка = "По подразделениям в алфавитном порядке";
        ТЗ.Сортировать("Подр");
   ИначеЕсли Первый = 2 Тогда    //по окладу
   Сортировка = "По возрастанию окладов";
      ТЗ.Сортировать("Окл");
   КонецЕсли;   
   
   Таб = СоздатьОбъект("Таблица");
   Таб.ИсходнаяТаблица("Реестр");
   Пока ТЗ.ПолучитьСтроку()=1 Цикл
      ном=ном+1;
   Таб.ВывестиСекцию("Строка");
   КонецЦикла;

т.е. делаю запрос, потом его загружаю в Таблицу значений.
(Первый - это переключатели на форме, с помощью которых выбираем вид сортировки)
Выдает мне отсортированные подразделения и по одному сотруднику в каждом из них.

Оффлайн DenPlus

  • ***
  • Сообщений: 106
  • РЕПУТАЦИЯ: 64
  • КПД: 60%
  • Регистрация: 2010-10-27
  • Компания: www.cosmocat.ru
Re: Сортировка
« Ответ #3: 27 Дек 2010, 23:26 »
Как вариант можно и так. А в чем проблема? В любом случае, вы по условию сортируете таблицу значений и в цикле по ней выводите строку в печатную форму.

Оффлайн DenPlus

  • ***
  • Сообщений: 106
  • РЕПУТАЦИЯ: 64
  • КПД: 60%
  • Регистрация: 2010-10-27
  • Компания: www.cosmocat.ru
Re: Сортировка
« Ответ #4: 27 Дек 2010, 23:51 »
Кстати

Запрос.Выгрузить(ТЗ,"Док,Наим,Дол,Подр,Окл");

Это конечно не канает.

Синтаксис:
Выгрузить(<ТаблЗнач>,<Флаг>,<Итоги>)

Вашем случае:
Выгрузить(ТЗ,0,0)

Ну и это лишнее (поскольку все равно потом работать с ТЗ):
|Группировка  Подр упорядочить по Подр.Наименование;

 

Оффлайн sail

  • **
  • Сообщений: 91
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2010-12-08
  • Сайт: 
  • Профессия: Программист 8.1
Re: Сортировка
« Ответ #5: 28 Дек 2010, 00:18 »
Но мне выдает только одного сотрудника по каждому подразделению, но ведь их там много. В этом проблема.

Оффлайн prog1c7.7

  • Модератор
  • *****
  • Сообщений: 784
  • РЕПУТАЦИЯ: 260
  • КПД: 33%
  • ну - да , ну - да...
  • Регистрация: 2010-10-20
  • Сайт: 
  • Профессия: Программист 1С
Re: Сортировка
« Ответ #6: 28 Дек 2010, 08:34 »
1.//вместо
Запрос.Выполнить(ТекстЗапроса) ;
Запрос.Выгрузить(ТЗ,"Док,Наим,Дол,Подр,Окл"); 
//сделай
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
Запрос.Выгрузить(ТЗ, 1);

2.//СНАЧАЛА ДЕЛАЕШЬ !!!
Если Первый = 1 Тогда    //по подразделению
   Сортировка = "По подразделениям в алфавитном порядке";
        ТЗ.Сортировать("Подр");
   ИначеЕсли Первый = 2 Тогда    //по окладу
   Сортировка = "По возрастанию окладов";
      ТЗ.Сортировать("Окл");
   КонецЕсли;   
// А УЖЕ ПОТОМ
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Реестр");
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку()=1 Цикл
      ном=ном+1;
Таб.ВывестиСекцию("Строка");
КонецЦикла;


Оффлайн DenPlus

  • ***
  • Сообщений: 106
  • РЕПУТАЦИЯ: 64
  • КПД: 60%
  • Регистрация: 2010-10-27
  • Компания: www.cosmocat.ru
Re: Сортировка
« Ответ #7: 28 Дек 2010, 16:02 »
Но мне выдает только одного сотрудника по каждому подразделению, но ведь их там много. В этом проблема.
Группировка нужна. Имел ввиду упорядочить по лишнее. Ведь потом все равно сортируете ТЗ в зависимости от настроек формы.

Оффлайн prog1c7.7

  • Модератор
  • *****
  • Сообщений: 784
  • РЕПУТАЦИЯ: 260
  • КПД: 33%
  • ну - да , ну - да...
  • Регистрация: 2010-10-20
  • Сайт: 
  • Профессия: Программист 1С
Re: Сортировка
« Ответ #8: 30 Дек 2010, 09:39 »
Конечно у вас будет по одному сотруднику.(Только заметил, извиняюсь)
у вас же группировка только по должностям, вот он и выводит вам ТОЛЬКО
сотрудников у которых различаются записи в реквизите должность,
надо группировку по сотрудникам делать:

|Группировка  Док упорядочить по Док.Наименование;

а по должностям не надо вообще,
т.к. потом все равно сортируете
ТЗ.Сортировать("Подр");


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
154 Сообщений
ilyay ilyay
66 Сообщений
alex0402
53 Сообщений
AIFrame
46 Сообщений
oleg-x
44 Сообщений
andron81_81
44 Сообщений
BuhRust
32 Сообщений
MuI_I_Ika MuI_I_Ika
32 Сообщений
Golickoff Golickoff
31 Сообщений
Dima Dddd Dima Dddd
24 Сообщений

* Кто онлайн

  • Точка Гостей: 177
  • Точка Скрытых: 0
  • Точка Пользователей: 0

Нет пользователей онлайн.

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal