К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

Подскажите как оно работает (или должно работать)?

0 - 19.11.2021 - 10:57
В общем модуле ВедомостьНаВыплатуЗарплатыРасширенный имеется такая процедура:

Процедура СоздатьВТСотрудникиДляВедомостиПоШапке(МенеджерВре менныхТаблиц, ОписаниеОперации, ОтборСотрудников) Экспорт

ИменаПромежуточныхВТ = Новый Массив;
ИмяВТСотрудники = "";

// Отбор сотрудников по документам-основаниям.
СоздатьВТСотрудникиДляВедомостиПоОснованиям(Менедж ерВременныхТаблиц, ОписаниеОперации, ИмяВТСотрудники);
ИменаПромежуточныхВТ.Добавить(ИмяВТСотрудники);

// Отбор сотрудников по организации и подразделению.
СоздатьВТСотрудникиДляВедомостиПоМестуРаботы(Менед жерВременныхТаблиц, ОписаниеОперации, ОтборСотрудников, ИмяВТСотрудники);
ИменаПромежуточныхВТ.Добавить(ИмяВТСотрудники);

// Отбор по месту выплаты зарплаты.
СоздатьВТСотрудникиДляВедомостиПоМестуВыплаты(Мене джерВременныхТаблиц, ОписаниеОперации, ОтборСотрудников, ИмяВТСотрудники);
ИменаПромежуточныхВТ.Добавить(ИмяВТСотрудники);

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

Запрос.Выполнить();

ЗарплатаКадры.УничтожитьВТ(МенеджерВременныхТаблиц , ИменаПромежуточныхВТ, Истина);

КонецПроцедуры

Она создает таблицу для заполнения ведомости. Как-то странно она работает. Казалось бы, в запрос должны передаваться все три ВТ, однако из-за строки
(Запрос.Текст, "#ВТСотрудники", ИмяВТСотрудники);
в запрос передается только последняя.
Сложилась такая ситуация, что сотрудник отбирается только по первой процедуре СоздатьВТСотрудникиДляВедомостиПоОснованиям(), но из-за того, что берется только последняя ВТ, результат запроса пустой. .Если закомментировать строки:
//СоздатьВТСотрудникиДляВедомостиПоМестуРаботы(Менед жерВременныхТаблиц, ОписаниеОперации, ОтборСотрудников, ИмяВТСотрудники);
//ИменаПромежуточныхВТ.Добавить(ИмяВТСотрудники);
/СоздатьВТСотрудникиДляВедомостиПоМестуВыплаты(Мене джерВременныхТаблиц, ОписаниеОперации, ОтборСотрудников, ИмяВТСотрудники);
//ИменаПромежуточныхВТ.Добавить(ИмяВТСотрудники);
то запрос отрабатывается нормально.
Что это, косяк писателей из 1С, или я чего-то недопонимаю?





К списку вопросов






Copyright ©, Все права защищены