Нужно в отчете СКД Связать Данные из Регистра Накопления ВзаиморасчетыСРаботниками и Табличной Части Документа ЗарплатаКВыплате по Ссылке на Документ и ФизЛицу! И вывести полученные данные за указанный Период(с ДатаН по ДатаК) - Запрос будет такой:
Код 1C v 8.х ВЫБРАТЬ
ВзаиморасчетыСРаботникамиОрганизаций. Период,
ВзаиморасчетыСРаботникамиОрганизаций. Физлицо,
ВзаиморасчетыСРаботникамиОрганизаций. СуммаВзаиморасчетов,
ВзаиморасчетыСРаботникамиОрганизаций. Организация,
ВзаиморасчетыСРаботникамиОрганизаций. ПериодВзаиморасчетов,
ВзаиморасчетыСРаботникамиОрганизаций. Регистратор
ПОМЕСТИТЬ РегВзаимРасч
ИЗ
РегистрНакопления. ВзаиморасчетыСРаботникамиОрганизаций КАК ВзаиморасчетыСРаботникамиОрганизаций
ГДЕ
ВзаиморасчетыСРаботникамиОрганизаций. Период МЕЖДУ &ДатаН И &ДатаК
;
ВЫБРАТЬ
ЗарплатаКВыплатеОрганизацийЗарплата. Физлицо,
ЗарплатаКВыплатеОрганизацийЗарплата. Сумма,
ЗарплатаКВыплатеОрганизацийЗарплата. ВыплаченностьЗарплаты,
ЗарплатаКВыплатеОрганизацийЗарплата. КомпенсацияЗаЗадержкуЗарплаты,
ЗарплатаКВыплатеОрганизацийЗарплата. Ссылка
ПОМЕСТИТЬ ДокумЗарплКВыпл
ИЗ
Документ. ЗарплатаКВыплатеОрганизаций. Зарплата КАК ЗарплатаКВыплатеОрганизацийЗарплата
ГДЕ
ЗарплатаКВыплатеОрганизацийЗарплата. Ссылка. Дата МЕЖДУ &ДатаН И &ДатаК
;
ВЫБРАТЬ
РегВзаимРасч. Период,
РегВзаимРасч. Физлицо,
РегВзаимРасч. СуммаВзаиморасчетов,
ДокумЗарплКВыпл. Сумма,
ДокумЗарплКВыпл. ВыплаченностьЗарплаты,
ДокумЗарплКВыпл. КомпенсацияЗаЗадержкуЗарплаты
ИЗ
РегВзаимРасч КАК РегВзаимРасч
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДокумЗарплКВыпл КАК ДокумЗарплКВыпл
ПО РегВзаимРасч. Регистратор = ДокумЗарплКВыпл. Ссылка
И РегВзаимРасч. Физлицо = ДокумЗарплКВыпл. Физлицо
;
УНИЧТОЖИТЬ РегВзаимРасч
;
УНИЧТОЖИТЬ ДокумЗарплКВыпл
Временные таблицы - хранятся на сервере и позволяют писать более простые запросы.
Временные таблицы хранятся в объекте типа
МенеджерВременныхТаблиц . Когда этот объект уничтожается, уничтожаются и временные таблицы.
Чтобы создать временную таблицу, используется ключевое слово "
ПОМЕСТИТЬ В ", например:
Код 1C v 8.х |ВЫБРАТЬ * ИЗ Справочник.Номенклатура ПОМЕСТИТЬ В ВТТовары
Временная таблица создается при выполнении запроса, если повторно выполнить запрос, то выдастся ошибка, что таблица уже существует.
Описания временных таблиц хранятся в свойстве запроса МенеджерВременныхТаблиц. К сожалению, нельзя получить список временных таблиц, которые хранятся в запросе.
Пример 1: Как можно выгрузить временную таблицу в таблицу значений и как использовать менеджер временных таблиц:
Код 1C v 8.х Запрос= Новый Запрос( "ВЫБРАТЬ * ИЗ Справочник.Номенклатура ПОМЕСТИТЬ В ВТТовары" ) ;
Запрос. Выполнить( ) ;
ЗапросТМП= Новый Запрос( "ВЫБРАТЬ * ИЗ ВТТовары" ) ;
ЗапросТМП. МенеджерВременныхТаблиц= Запрос. МенеджерВременныхТаблиц;
ТЗ= ЗапросТМП. Выполнить( ) . Выгрузить( ) ;
Готовую таблицу значений из памяти можно выгружать в менеджер временных таблиц запроса. Единственное условие - колонки таблицы значений должны быть типизированными, т. е. иметь тип. Вот пример, демонстрирующий это:
ТЗ= Новый ТаблицаЗначений( ) ;
ТЗ. Колонки. Добавить( "А" , Новый ОписаниеТипов( "Строка" ) ) ;
ТЗ. Колонки. Добавить( "Б" , Новый ОписаниеТипов( "Строка" ) ) ;
Стр= ТЗ. Добавить( ) ;
Стр. А= "А" ;
Стр. Б= "Б" ;
Стр= ТЗ. Добавить( ) ;
Стр. А= "А1" ;
Стр. Б= "Б1" ;
Запрос= Новый Запрос( "Выбрать Т.А, Т.Б ПОМЕСТИТЬ ВТТаб Из &Таб Как Т" ) ;
Запрос. МенеджерВременныхТаблиц= Новый МенеджерВременныхТаблиц;
Запрос. УстановитьПараметр( "Таб" , ТЗ) ;
Запрос. Выполнить( ) ;
ЗапросТМП= Новый Запрос( "ВЫБРАТЬ * ИЗ ВТТаб" ) ;
ЗапросТМП. МенеджерВременныхТаблиц= Запрос. МенеджерВременныхТаблиц;
ТЗ1 = ЗапросТМП. Выполнить( ) . Выгрузить( ) ;
ТЗ1 . ВыбратьСтроку( ) ;
Вместо перечисления списка полей можно использовать "ВЫБРАТЬ * ".
Если есть ТЗ, в каждой колонке которой значения всего одного типа, для типизации колонок, можно воспользоваться функцией:
Код 1C v 8.х Процедура ТипизацияТЗ(ТЗ) Экспорт
РезультатТЗ = новый ТаблицаЗначений;
Для Каждого Колонка из ТЗ. Колонки Цикл
Имя = Колонка. Имя;
МассивТипов = новый Массив( 1 ) ;
МассивТипов[0 ] = ТипЗнч( ТЗ[0 ][Имя]) ;
Описатель = новый ОписаниеТипов( МассивТипов) ;
РезультатТЗ. Колонки. Добавить( Имя, Описатель) ;
КонецЦикла ;
Для каждого Строка из ТЗ Цикл
СтрокаРез = РезультатТЗ. Добавить( ) ;
ЗаполнитьЗначенияСвойств( СтрокаРез, Строка) ;
КонецЦикла ;
ТЗ = РезультатТЗ. Скопировать( ) ;
КонецПроцедуры
Пример 2: Нужно в отчете СКД Связать Данные из Регистра Накопления ВзаиморасчетыСРаботниками и Табличной Части Документа ЗарплатаКВыплате по Ссылке на Документ и ФизЛицу! И вывести полученные данные за указанный Период(с ДатаН по ДатаК) - Запрос будет такой:
Код 1C v 8.х ВЫБРАТЬ
ВзаиморасчетыСРаботникамиОрганизаций. Период,
ВзаиморасчетыСРаботникамиОрганизаций. Физлицо,
ВзаиморасчетыСРаботникамиОрганизаций. СуммаВзаиморасчетов,
ВзаиморасчетыСРаботникамиОрганизаций. Организация,
ВзаиморасчетыСРаботникамиОрганизаций. ПериодВзаиморасчетов,
ВзаиморасчетыСРаботникамиОрганизаций. Регистратор
ПОМЕСТИТЬ РегВзаимРасч
ИЗ
РегистрНакопления. ВзаиморасчетыСРаботникамиОрганизаций КАК ВзаиморасчетыСРаботникамиОрганизаций
ГДЕ
ВзаиморасчетыСРаботникамиОрганизаций. Период МЕЖДУ &ДатаН И &ДатаК
;
ВЫБРАТЬ
ЗарплатаКВыплатеОрганизацийЗарплата. Физлицо,
ЗарплатаКВыплатеОрганизацийЗарплата. Сумма,
ЗарплатаКВыплатеОрганизацийЗарплата. ВыплаченностьЗарплаты,
ЗарплатаКВыплатеОрганизацийЗарплата. КомпенсацияЗаЗадержкуЗарплаты,
ЗарплатаКВыплатеОрганизацийЗарплата. Ссылка
ПОМЕСТИТЬ ДокумЗарплКВыпл
ИЗ
Документ. ЗарплатаКВыплатеОрганизаций. Зарплата КАК ЗарплатаКВыплатеОрганизацийЗарплата
ГДЕ
ЗарплатаКВыплатеОрганизацийЗарплата. Ссылка. Дата МЕЖДУ &ДатаН И &ДатаК
;
ВЫБРАТЬ
РегВзаимРасч. Период,
РегВзаимРасч. Физлицо,
РегВзаимРасч. СуммаВзаиморасчетов,
ДокумЗарплКВыпл. Сумма,
ДокумЗарплКВыпл. ВыплаченностьЗарплаты,
ДокумЗарплКВыпл. КомпенсацияЗаЗадержкуЗарплаты
ИЗ
РегВзаимРасч КАК РегВзаимРасч
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДокумЗарплКВыпл КАК ДокумЗарплКВыпл
ПО РегВзаимРасч. Регистратор = ДокумЗарплКВыпл. Ссылка
И РегВзаимРасч. Физлицо = ДокумЗарплКВыпл. Физлицо
;
УНИЧТОЖИТЬ РегВзаимРасч
;
УНИЧТОЖИТЬ ДокумЗарплКВыпл