![]() |
![]() |
![]() |
|
Вопрос по запросу из ЗУПа. | ☑ | ||
---|---|---|---|---|
0
mzelensky
26.08.11
✎
09:43
|
Доброго времени суток! Объясните плиз вот такую вещь.
Типовой ЗУП "Зарплата и Управление Персоналом, редакция 2.5 (2.5.36.3)". Документ "Зарплата к выплате организаций", печать отчета "Список плательщиков в банк". Есть там такая функция: Функция СформироватьЗапросПоДокументу(ДокументСсылка) Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; // Установим параметры запроса Запрос.УстановитьПараметр("ДокументСсылка", ДокументСсылка); Запрос.УстановитьПараметр("ДатаДокумента", ДокументСсылка.Дата); Запрос.УстановитьПараметр("СтруктурнаяЕдиница",ДокументСсылка.Организация); Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | ОтветственныеЛицаСрезПоследних.ФизическоеЛицо.Наименование КАК ФизическоеЛицоНаименование, | ОтветственныеЛицаСрезПоследних.Должность.Наименование КАК ДолжностьНаименование, | ОтветственныеЛицаСрезПоследних.ОтветственноеЛицо, | ОтветственныеЛицаСрезПоследних.ФизическоеЛицо КАК ФизическоеЛицо, | ФизическиеЛица.Комментарий |ПОМЕСТИТЬ ВТОтветственныеЛица |ИЗ | РегистрСведений.ОтветственныеЛицаОрганизаций.СрезПоследних( | &ДатаДокумента, | СтруктурнаяЕдиница = &СтруктурнаяЕдиница | И ОтветственноеЛицо В (ЗНАЧЕНИЕ(Перечисление.ОтветственныеЛицаОрганизаций.Руководитель), ЗНАЧЕНИЕ(Перечисление.ОтветственныеЛицаОрганизаций.Кассир), ЗНАЧЕНИЕ(Перечисление.ОтветственныеЛицаОрганизаций.ГлавныйБухгалтер))) КАК ОтветственныеЛицаСрезПоследних | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица КАК ФизическиеЛица | ПО ОтветственныеЛицаСрезПоследних.ФизическоеЛицо = ФизическиеЛица.Ссылка | |ИНДЕКСИРОВАТЬ ПО | ФизическоеЛицо"; Запрос.Выполнить(); Запрос.Текст = "ВЫБРАТЬ | ОтветственныеЛицаСрезПоследних.ДолжностьНаименование, | ОтветственныеЛицаСрезПоследних.ОтветственноеЛицо КАК ОтветственноеЛицо, | ЕСТЬNULL(ФИОФизЛицСрезПоследнихРуководитель.Фамилия + ВЫБОР | КОГДА ПОДСТРОКА(ФИОФизЛицСрезПоследнихРуководитель.Имя, 1, 1) <> """" | ТОГДА "" "" + ПОДСТРОКА(ФИОФизЛицСрезПоследнихРуководитель.Имя, 1, 1) + ""."" | ИНАЧЕ """" | КОНЕЦ + ВЫБОР | КОГДА ПОДСТРОКА(ФИОФизЛицСрезПоследнихРуководитель.Отчество, 1, 1) <> """" | ТОГДА "" "" + ПОДСТРОКА(ФИОФизЛицСрезПоследнихРуководитель.Отчество, 1, 1) + ""."" | ИНАЧЕ """" | КОНЕЦ, ОтветственныеЛицаСрезПоследних.ФизическоеЛицоНаименование) КАК ФИОРуководителя |ПОМЕСТИТЬ ВТДанныеОтветственныхЛиц |ИЗ | ВТОтветственныеЛица КАК ОтветственныеЛицаСрезПоследних | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц.СрезПоследних( | &ДатаДокумента, | ФизЛицо В | (ВЫБРАТЬ | ОтветственныеЛицаСрезПоследних.ФизическоеЛицо | ИЗ | ВТОтветственныеЛица КАК ОтветственныеЛицаСрезПоследних)) КАК ФИОФизЛицСрезПоследнихРуководитель | ПО ОтветственныеЛицаСрезПоследних.ФизическоеЛицо = ФИОФизЛицСрезПоследнихРуководитель.ФизЛицо | |ИНДЕКСИРОВАТЬ ПО | ОтветственноеЛицо"; Запрос.Выполнить(); Запрос.Текст = "ВЫБРАТЬ | ПечатаемыйДокумент.Дата КАК ДатаДок, | ПечатаемыйДокумент.Организация.НаименованиеПолное КАК НазваниеОрганизации, | ОтветственныеЛицаОрганизацийСрезПоследнихГлБух.ФИОРуководителя КАК ФИОГлБуха |ИЗ | Документ." + ДокументСсылка.Метаданные().Имя + " КАК ПечатаемыйДокумент | ЛЕВОЕ СОЕДИНЕНИЕ ВТДанныеОтветственныхЛиц КАК ОтветственныеЛицаОрганизацийСрезПоследнихРуководитель | ПО (ОтветственныеЛицаОрганизацийСрезПоследнихРуководитель.ОтветственноеЛицо = ЗНАЧЕНИЕ(Перечисление.ОтветственныеЛицаОрганизаций.Руководитель)) | ЛЕВОЕ СОЕДИНЕНИЕ ВТДанныеОтветственныхЛиц КАК ОтветственныеЛицаОрганизацийСрезПоследнихГлБух | ПО (ОтветственныеЛицаОрганизацийСрезПоследнихГлБух.ОтветственноеЛицо = ЗНАЧЕНИЕ(Перечисление.ОтветственныеЛицаОрганизаций.ГлавныйБухгалтер)) | ЛЕВОЕ СОЕДИНЕНИЕ ВТДанныеОтветственныхЛиц КАК ОтветственныеЛицаОрганизацийСрезПоследнихКассир | ПО (ОтветственныеЛицаОрганизацийСрезПоследнихКассир.ОтветственноеЛицо = ЗНАЧЕНИЕ(Перечисление.ОтветственныеЛицаОрганизаций.Кассир)) |ГДЕ | ПечатаемыйДокумент.Ссылка = &ДокументСсылка"; Возврат Запрос.Выполнить(); КонецФункции // СформироватьЗапросДляПечати() я понять не могу, нафига там 3 запроса, которые выполняются по очереди в одну переменную, если возвращается ток последний???? ИЛИ я чего-то не догоняю???? |
|||
1
mzelensky
26.08.11
✎
09:44
|
И буквально следующая функция в этом же модуле(относится туда же):
Функция СформироватьЗапросДляПечатиПеречняПеречислений(ПечатаемыйДокумент, Ведомости, ФИОСокращенно) Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; Если ТипЗнч(ПечатаемыйДокумент) = Тип("ДокументСсылка.ПлатежноеПоручениеИсходящее") Тогда ПечатьПлатежногоПоручения = Истина; Иначе ПечатьПлатежногоПоручения = Ложь; КонецЕсли; // Установим параметры запроса Если ПечатьПлатежногоПоручения Тогда Запрос.УстановитьПараметр("ДокументСсылка", Ведомости); Иначе Запрос.УстановитьПараметр("ДокументСсылка", ПечатаемыйДокумент); КонецЕсли; Запрос.УстановитьПараметр("ДатаДокумента", ПечатаемыйДокумент.Дата); Запрос.УстановитьПараметр("ФИОСокращенно", ФИОСокращенно); ТекстЗапроса = "ВЫБРАТЬ РАЗЛИЧНЫЕ | ЗарплатаКВыплатеОрганизацийЗарплата.Физлицо КАК Физлицо, | ЗарплатаКВыплатеОрганизацийЗарплата.НомерСтроки, | ЗарплатаКВыплатеОрганизацийЗарплата.Сумма, | ЗарплатаКВыплатеОрганизацийЗарплата.КомпенсацияЗаЗадержкуЗарплаты, | ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка.Банк КАК Банк, | ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка.Организация, | ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка КАК Ведомость |ПОМЕСТИТЬ ВТСписокФизлиц |ИЗ | Документ.ЗарплатаКВыплатеОрганизаций.Зарплата КАК ЗарплатаКВыплатеОрганизацийЗарплата |ГДЕ | ЗарплатаКВыплатеОрганизацийЗарплата.Сумма + ЗарплатаКВыплатеОрганизацийЗарплата.КомпенсацияЗаЗадержкуЗарплаты > 0"; Если ПечатьПлатежногоПоручения Тогда ТекстЗапроса = ТекстЗапроса + " | И ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка В(&ДокументСсылка)"; Иначе ТекстЗапроса = ТекстЗапроса + " | И ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка = &ДокументСсылка"; КонецЕсли; ТекстЗапроса = ТекстЗапроса + " |ИНДЕКСИРОВАТЬ ПО | Физлицо"; Запрос.Текст = ТекстЗапроса; Запрос.Выполнить(); ТекстЗапроса = "ВЫБРАТЬ РАЗЛИЧНЫЕ | ЗарплатаКВыплатеОрганизацийЗарплата.НомерСтроки КАК НомерСтроки, | ЕСТЬNULL(ФИОФизЛицСрезПоследних.Фамилия + ВЫБОР | КОГДА ПОДСТРОКА(ФИОФизЛицСрезПоследних.Имя, 1, 1) <> """" | ТОГДА "" "" + ВЫБОР | КОГДА &ФИОСокращенно | ТОГДА ПОДСТРОКА(ФИОФизЛицСрезПоследних.Имя, 1, 1) + ""."" | ИНАЧЕ ФИОФизЛицСрезПоследних.Имя | КОНЕЦ | ИНАЧЕ """" | КОНЕЦ + ВЫБОР | КОГДА ПОДСТРОКА(ФИОФизЛицСрезПоследних.Отчество, 1, 1) <> """" | ТОГДА "" "" + ВЫБОР | КОГДА &ФИОСокращенно | ТОГДА ПОДСТРОКА(ФИОФизЛицСрезПоследних.Отчество, 1, 1) + ""."" | ИНАЧЕ ФИОФизЛицСрезПоследних.Отчество | КОНЕЦ | ИНАЧЕ """" | КОНЕЦ, ЗарплатаКВыплатеОрганизацийЗарплата.Физлицо.Наименование) КАК ФизЛицо, | ЗарплатаКВыплатеОрганизацийЗарплата.Сумма + ЗарплатаКВыплатеОрганизацийЗарплата.КомпенсацияЗаЗадержкуЗарплаты КАК Сумма, | ЛицевыеСчетаРаботниковОрганизации.НомерЛицевогоСчета |ИЗ | ВТСписокФизлиц КАК ЗарплатаКВыплатеОрганизацийЗарплата | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц.СрезПоследних( | &ДатаДокумента, | Физлицо В | (ВЫБРАТЬ | СписокФизЛиц.ФизЛицо | ИЗ | ВТСписокФизлиц КАК СписокФизЛиц)) КАК ФИОФизЛицСрезПоследних | ПО ЗарплатаКВыплатеОрганизацийЗарплата.Физлицо = ФИОФизЛицСрезПоследних.ФизЛицо | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЛицевыеСчетаРаботниковОрганизации КАК ЛицевыеСчетаРаботниковОрганизации | ПО ЗарплатаКВыплатеОрганизацийЗарплата.Физлицо = ЛицевыеСчетаРаботниковОрганизации.ФизЛицо | И ЗарплатаКВыплатеОрганизацийЗарплата.Банк = ЛицевыеСчетаРаботниковОрганизации.Банк | И ЗарплатаКВыплатеОрганизацийЗарплата.Организация = ЛицевыеСчетаРаботниковОрганизации.Организация |УПОРЯДОЧИТЬ ПО | НомерСтроки"; Запрос.Текст = ТекстЗапроса; Возврат Запрос.Выполнить(); КонецФункции // СформироватьЗапросДляПечатиПеречняПеречислений() |
|||
2
almar
26.08.11
✎
09:45
|
(0) В первых двух запросах формируются временные таблицы. Сейчас обычно это делают в одном пакетном запросе, но когда-то в стародавние времена пакетных запросов еще не было
|
|||
3
mzelensky
26.08.11
✎
09:47
|
(2) ага ,увидел...я чет вот эту строчку из вида упустил "ПОМЕСТИТЬ ВТОтветственныеЛица".
Хотя все-равно не понимаю зачем так делать (разделять в смысле). Платформа 8.2, конфа тоже относительно свежая...почему не пакетный запрос??? |
|||
4
almar
26.08.11
✎
09:48
|
(3) Это написано, когда пакетных запросов еще не было.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |