ТаблицаЗначений
Показывать по
сообщений
- 1
- 2
28.11.2007
10:43
#11
отчет,<br>слушай точно, ведь в справочнике должности наименование - это строка, а в таблицеРеквизитов получается, что справочник. как же с этим быть?
28.11.2007
13:06
#13
"Поскольку высланный мне код оказался не полным и чтобы долго те телепатировать, решил набросать<br>более оптимальный (в моем понимании) код, показывающий, как надо работать с данными.<br><br>//*******************************************<br>Процедура Сформировать()<br> Сотр = СоздатьОбъект("Справочник.Сотрудники");<br> НаДату = ТекущаяДата(); //или брать из диалога<br> ТЗ = СоздатьОбъект("ТаблицаЗначений");<br> ТЗ.НоваяКолонка("Сотр");<br> ТЗ.НоваяКолонка("Пол");<br> ТЗ.НоваяКолонка("Должность");<br> ТЗ.НоваяКолонка("Категория");<br> ТЗ.НоваяКолонка("Кол");<br> Сотр.ВыбратьЭлементы();<br> Пока Сотр.ПолучитьЭлемент() = 1 Цикл<br> Если (Сотр.ЭтоГруппа() = 1) <br> ИЛИ (ПустоеЗначение(Сотр.Должность.Получить(НаДату)) = 1)<br> ИЛИ (ПустоеЗначение(Сотр.Пол) = 1) Тогда<br> Продолжить;<br> КонецЕсли;<br> ТЗ.НоваяСтрока();<br> ТЗ.Сотр = Сотр.ТекущийЭлемент();<br> ТЗ.Пол = Сотр.Пол;<br> ТЗ.Должность = Сотр.Должность.Получить(НаДату);<br> ТЗ.Категория = Сотр.Должность.Получить(НаДату).Категория;<br> ТЗ.Кол = 1;<br> КонецЦикла;<br> //и вот с этой ТЗ можно работать, извлекая из нее все данные<br> //<br> ВремТЗ = СоздатьОбъект("ТаблицаЗначений");<br> //разберемся с полами<br> ТЗ.Выгрузить(ВремТЗ,,,"Пол,Кол");<br> ВремТЗ.Свернуть("Пол","Кол");<br> ВремТЗ.ВыбратьСтроки();<br> Пока ВремТЗ.ПолучитьСтроку() = 1 Цикл<br> Сообщить("В организации "+ВремТЗ.Кол+" сотрудников имеют "+ВремТЗ.Пол+" пол");<br> КонецЦикла;<br> Сообщить("===================================================================");<br> ВремТЗ.Очистить();<br> <br> //теперь с должностями<br> ТЗ.Выгрузить(ВремТЗ,,,"Должность,Кол");<br> ВремТЗ.Свернуть("Должность","Кол");<br> ВремТЗ.ВыбратьСтроки();<br> Пока ВремТЗ.ПолучитьСтроку() = 1 Цикл<br> Сообщить("В организации "+ВремТЗ.Кол+" сотрудников в должности "+ВремТЗ.Должность);<br> КонецЦикла;<br> Сообщить("===================================================================");<br> ВремТЗ.Очистить();<br> <br> //теперь с категориями<br> ТЗ.Выгрузить(ВремТЗ,,,"Категория,Кол");<br> ВремТЗ.Свернуть("Категория","Кол");<br> ВремТЗ.ВыбратьСтроки();<br> Пока ВремТЗ.ПолучитьСтроку() = 1 Цикл<br> Сообщить("В организации "+ВремТЗ.Кол+" сотрудников категории "+ВремТЗ.Категория);<br> КонецЦикла;<br><br>КонецПроцедуры<br>"
28.11.2007
13:16
#14
Спасибо большое! Обязательно попробую так. Может, я действительн пошла слишком сложным путем.
08.12.2007
21:10
#15
"Вообще, запросы рулят.<br><br>Типа<br><br>запрос = создатьОбъект("Запрос");<br>Если<br>Запрос.Выполнить("<br>|сотр = Справочник.Сотрудники;<br>|Должность = Справочник.Сотрудники.Должность;<br>|Пол = Справочник.Сотрудники.Пол;<br>|Группировка Сотр без групп;<br>|Группировка Должность без групп;<br>|Группировка Пол;") = 0 Тогда Сообщить("Все плохо!"); возврат КонецЕсли;<br><br>колсотр = 0;<br><br>Пока Запрос.Группировка(1)=1 Цикл<br> колпроф = 0;<br> колсотр = колсотр + 1;<br> Пока Запрос.Группировка(2)=1 Цикл<br> колмуж = 0;<br> кол = 0;<br> колпроф = колпроф + 1;<br> Пока Запрос.Группировка(3)=1 Цикл<br> колмуж = ?(Лев(Запрос.Пол)="М",1,0);<br> кол = кол + 1;<br> КонецЦикла;<br> сообщить("Количество мужчин на должности "+Запрос.Должность+" :"+колмуж);<br> сообщить("Количество женщин на должности "+Запрос.Должность+" :"+(кол-колмуж));<br> КонецЦикла;<br>КонецЦикла;<br><br><br>Ну и т.д."
- 1
- 2
Читают тему
(гостей: 1)