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

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

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

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

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

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

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

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

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

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

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

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

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

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

Запрос.Выполнить();
Показать
2. IgorXml 587 30.05.18 15:22 Сейчас в теме
(1) Если данные переносились, то твой запрос для получения списка сотрудников правильно. Но может проще обратиться прямо к "РегистрСведений.ТекущиеКадровыеДанныеСотрудников"?
3. IgorXml 587 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 587 06.06.18 10:30 Сейчас в теме
(5) Самому так больше нравится :)
    //Запрос.Выполнить();
	Результат = Запрос.ВыполнитьПакетСПромежуточнымиДанными();
	//ТЗ_20 =   Результат[19].Выгрузить();
	ТЗ_ВТКадровыеДанныеСотрудников =  Запрос.МенеджерВременныхТаблиц.Таблицы.Найти("ВТКадровыеДанныеСотрудников").ПолучитьДанные().Выгрузить();
8. user620235_m_ginger 01.02.19 12:06 Сейчас в теме
я в отладчике пишу
Запрос.МенеджерВременныхТаблиц.Таблицы.ПОЛУЧИТЬ("ВТКадровыеДанныеСотрудников").ПолучитьДанные().Выгрузить();
Есть ли разница в этих двух методах (Найти и Получить)?
При этом запрос не обязательно выполнять с промежуточными данными - из менеджера он и при Запрос.Выполнить() спокойно все данные вытаскивает.
9. IgorXml 587 04.02.19 09:59 Сейчас в теме
(8) с промежуточными данными , потом Запрос.Выполнить() и потом к менеджеру. Это не связано. Вы правы. Исправлю.
А вопрос пока не проверил.
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Консультант ERP-систем
Москва
Временный (на проект)

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

Бизнес-аналитик 1С
Москва
зарплата от 90 000 руб. до 150 000 руб.
Полный день

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

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