0. IgorXml 586 25.05.18 16:42 Сейчас в теме

Представления в запросах. ЗУП

О пользе функции ЗаменитьЗапросыКПредставлениямВиртуальныхТаблиц(Запрос.Текст, ). Где есть запрос-пустышка, например, "Представления_КадровыеДанныеСотрудников.
Тестировано в Зарплата и управление персоналом КОРП, редакция 3.1 (3.1.4.171) на платформе 8.3.12.1412. В этой конфигурации я насчитал 66 макетов в различных отчетах, где применяется этот механизм, в которых можно получить до 220 различных данных о сотруднике. Если доработать типовой код, то возможно этот список добавить. В моем примере я нахожу данные: Организация, Сотрудник, ФизЛицо, ФИОПолные, ДатаРождения, МестоРождения, ДокументПредставление, АдресПоПропискеПредставление, АдресМестаПроживанияПредставление, ДатаПриема, Должность, ДатаУвольнения,ТрудовойДоговорДата,ТрудовойДоговорНомер, Подразделение.

Перейти к публикации

Лучшие комментарии
1. xrrg 171 30.05.18 10:10 Сейчас в теме
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.Текст = 
"ВЫБРАТЬ
|	&Сотрудник Сотрудник,
|	&Период Период
|ПОМЕСТИТЬ ВТСотрудники";
Запрос.УстановитьПараметр("Сотрудник", Сотрудник);
Запрос.УстановитьПараметр("Период", Период);

КоллекцияПолей = "Организация, Сотрудник, ФизическоеЛицо, ФИОПолные, ДатаРождения, МестоРождения, ДокументПредставление, АдресПоПропискеПредставление, АдресМестаПроживанияПредставление, ДатаПриема, Должность, ДатаУвольнения,ТрудовойДоговорДата,ТрудовойДоговорНомер, Подразделение";

ОписательТаблицыОтборов = КадровыйУчет.ОписаниеВременнойТаблицыОтборовСотрудников(
	"ВТСотрудники",
	"Сотрудник",
	"Период");

ЗапросКадровыеДанные = КадровыйУчет.ЗапросВТКадровыеДанныеСотрудников(Истина, ОписательТаблицыОтборов, КоллекцияПолей);

ЗарплатаКадрыОбщиеНаборыДанных.ОбъединитьЗапросы(Запрос, ЗапросКадровыеДанные);

Запрос.Выполнить();
Показать
Остальные комментарии
Избранное Подписка Сортировка: Древо
1. xrrg 171 30.05.18 10:10 Сейчас в теме
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.Текст = 
"ВЫБРАТЬ
|	&Сотрудник Сотрудник,
|	&Период Период
|ПОМЕСТИТЬ ВТСотрудники";
Запрос.УстановитьПараметр("Сотрудник", Сотрудник);
Запрос.УстановитьПараметр("Период", Период);

КоллекцияПолей = "Организация, Сотрудник, ФизическоеЛицо, ФИОПолные, ДатаРождения, МестоРождения, ДокументПредставление, АдресПоПропискеПредставление, АдресМестаПроживанияПредставление, ДатаПриема, Должность, ДатаУвольнения,ТрудовойДоговорДата,ТрудовойДоговорНомер, Подразделение";

ОписательТаблицыОтборов = КадровыйУчет.ОписаниеВременнойТаблицыОтборовСотрудников(
	"ВТСотрудники",
	"Сотрудник",
	"Период");

ЗапросКадровыеДанные = КадровыйУчет.ЗапросВТКадровыеДанныеСотрудников(Истина, ОписательТаблицыОтборов, КоллекцияПолей);

ЗарплатаКадрыОбщиеНаборыДанных.ОбъединитьЗапросы(Запрос, ЗапросКадровыеДанные);

Запрос.Выполнить();
Показать
2. IgorXml 586 30.05.18 15:22 Сейчас в теме
(1) Если данные переносились, то твой запрос для получения списка сотрудников правильно. Но может проще обратиться прямо к "РегистрСведений.ТекущиеКадровыеДанныеСотрудников"?
3. IgorXml 586 30.05.18 16:38 Сейчас в теме
(2) это ошибка.
(1) Недооценил код. Спасибо. Код полностью заменяет весь код в публикации. Лишь бы 1С завтра не исправил функционал :)
Для себя добавил бы две строки:
    //Запрос.Выполнить();
	Результат = Запрос.ВыполнитьПакетСПромежуточнымиДанными();
	ТаблицаЗначений_20 =   Результат[19].Выгрузить();	
4. Serj1C 477 05.06.18 08:34 Сейчас в теме
(3) Из Менеджера Временных Таблиц теперь можно получать таблицы по наименованию, а не по индексу.
А то опасно так, с обновлением количество запросов представления изменится с вероятностью 146% и ваш код станет неработоспособным.
корум; AntonH851; IgorXml; +3 Ответить
7. vat-74 166 07.06.18 00:03 Сейчас в теме
(1)Звездочка в КоллекцияПолей для примера стоит? т.к. с ней вызывается исключение.
ОбщийМодуль.КадровыйУчетБазовый.Модуль(5615)}: Среди кадровых данных сотрудников нет данных с именем "*"
ВызватьИсключение ТекстСообщенияИсключения;
5. ccserg 68 06.06.18 09:48 Сейчас в теме
а что это за цифра 19 ?
ТаблицаЗначений_20 = Результат[19].Выгрузить();
6. IgorXml 586 06.06.18 10:30 Сейчас в теме
(5) Самому так больше нравится :)
    //Запрос.Выполнить();
	Результат = Запрос.ВыполнитьПакетСПромежуточнымиДанными();
	//ТЗ_20 =   Результат[19].Выгрузить();
	ТЗ_ВТКадровыеДанныеСотрудников =  Запрос.МенеджерВременныхТаблиц.Таблицы.Найти("ВТКадровыеДанныеСотрудников").ПолучитьДанные().Выгрузить();
8. user620235_m_ginger 01.02.19 12:06 Сейчас в теме
я в отладчике пишу
Запрос.МенеджерВременныхТаблиц.Таблицы.ПОЛУЧИТЬ("ВТКадровыеДанныеСотрудников").ПолучитьДанные().Выгрузить();
Есть ли разница в этих двух методах (Найти и Получить)?
При этом запрос не обязательно выполнять с промежуточными данными - из менеджера он и при Запрос.Выполнить() спокойно все данные вытаскивает.
9. IgorXml 586 04.02.19 09:59 Сейчас в теме
(8) с промежуточными данными , потом Запрос.Выполнить() и потом к менеджеру. Это не связано. Вы правы. Исправлю.
А вопрос пока не проверил.
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Санкт-Петербург
Полный день

Консультант 1С
Нижний Новгород
зарплата до 100 000 руб.
Полный день


Программист 1С
Москва
зарплата от 140 000 руб.
Полный день

Программист 1С
Бобров
зарплата от 100 000 руб. до 150 000 руб.
Временный (на проект)