Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
06 июл 2022, 18:39

небольшая проблема с обработкой

Автор Sheriff, 21 ноя 2017, 07:39

0 Пользователей и 1 гость просматривают эту тему.

Sheriff

Всем привет! Есть обработка по автоматической печати договоров.
Если в ней нажимаешь кнопку "Сформировать", то в табличную часть для печати, попадают все договора (за весь период), как сделать так, чтобы в эту табличную часть попадали только последние договора (по последней дате)?
Макет = ВнешняяОбработкаОбъект.ПолучитьМакет("Отчет");

    ВидЗанятости = Новый СписокЗначений;
    ВидЗанятости.Добавить(Перечисления.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы);
   
    ДатаПроверкиУволенных =ДАТА(1,1,1);
    парамОрганизация = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глТекущийПользователь, "ОсновнаяОрганизация");
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ВидЗанятости", ВидЗанятости);


    Запрос.УстановитьПараметр("ДатаНач", текущаядата());

Запрос.УстановитьПараметр("ДатаПроверкиУволенных", ДатаПроверкиУволенных);
Запрос.УстановитьПараметр("парамВнутреннееСовместительство", Перечисления.ВидыЗанятостиВОрганизации.ВнутреннееСовместительство);

Запрос.УстановитьПараметр("парамОрганизация", парамОрганизация);
Запрос.УстановитьПараметр("парамУвольнение", Перечисления.ПричиныИзмененияСостояния.Увольнение);


    Запрос.УстановитьПараметр("парамУвольнение", Перечисления.ПричиныИзмененияСостояния.Увольнение);
    Запрос.УстановитьПараметр("ВидДокумента", 6);

    Запрос.УстановитьПараметр("подразделение", Подразделение);


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


Результат = Запрос.Выполнить();



ВыборкаДетальныеЗаписи = Результат.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Новстр = Работники.Добавить();
Новстр.ФизЛицо =ВыборкаДетальныеЗаписи.Работник;
Новстр.Должность = ВыборкаДетальныеЗаписи.Должность;
Новстр.подразделение =ВыборкаДетальныеЗаписи.ПодразделениеОрганизации;
Новстр.СправСсылкаХранилище  =ВыборкаДетальныеЗаписи.Ссылка;
     //   Новстр.ХранилищеПриложение  =ВыборкаДетальныеЗаписи.ХранилищеПриложение;
Новстр.Наименование =ВыборкаДетальныеЗаписи.Представление;
Новстр.НаПечать = Истина;

КонецЦикла;

wise

(0) можно, если в Справочник.ds_ХранилищеДоговоров хранятся даты.
возьми Максимальную дату и выводи.
Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают

ilyay

надо запросом с группировкой по физ.лицам выбрать максимум(договор.датадоговора), а потом другим запросом с группировкой по физ.лицам найти максимум(договор.ссылка) и в ГДЕ наложить условие, что (физлицо, дата) в (первыйзапрос.физлицо, первыйзапрос.дата).
Так получите по одному договору с максимальной датой на физлицо. После этого соединяйте внутренним соединением этот результат, как вы и делаете.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск