8.х Сравнение двух ТЗ

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Люсёк, 28 дек 2010.

  1. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Запрос покажите.
  2. TopicStarter Overlay
    Люсёк
    Offline

    Люсёк

    Регистрация:
    20 дек 2010
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    ОбластьНачисления=Макет.ПолучитьОбласть("СтрокаЗаголовок|Начисления");

    Запрос=Новый Запрос;
    Запрос.Текст="ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
    | ОсновныеДополнительныеНачисления.Период КАК Период,
    | ОсновныеДополнительныеНачисления.ВидРасчета КАК ВидРасчета,
    | ОсновныеДополнительныеНачисления.ОтработаноДней КАК ОтработаноДней
    |ИЗ
    | (ВЫБРАТЬ РАЗЛИЧНЫЕ
    | НАЧАЛОПЕРИОДА(ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации, МЕСЯЦ) КАК Период,
    | ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета КАК ВидРасчета,
    | СУММА(ОсновныеНачисленияРаботниковОрганизаций.Результат) КАК Результат,
    | ОсновныеНачисленияРаботниковОрганизаций.ФизЛицо КАК ФизЛицо,
    | ОсновныеНачисленияРаботниковОрганизаций.ОтработаноДней КАК ОтработаноДней
    | ИЗ
    | РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисленияРаботниковОрганизаций
    | ГДЕ
    | ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации МЕЖДУ НАЧАЛОПЕРИОДА(&НачалоПериода, МЕСЯЦ) И КОНЕЦПЕРИОДА(&КонецПериода, МЕСЯЦ)
    | И ОсновныеНачисленияРаботниковОрганизаций.Организация = &Организация
    | И ОсновныеНачисленияРаботниковОрганизаций.ФизЛицо = &ФизЛицо
    |
    | СГРУППИРОВАТЬ ПО
    | ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета,
    | НАЧАЛОПЕРИОДА(ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации, МЕСЯЦ),
    | ОсновныеНачисленияРаботниковОрганизаций.ФизЛицо,
    | ОсновныеНачисленияРаботниковОрганизаций.ОтработаноДней
    |
    | ОБЪЕДИНИТЬ ВСЕ
    |
    | ВЫБРАТЬ РАЗЛИЧНЫЕ
    | НАЧАЛОПЕРИОДА(ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации, МЕСЯЦ),
    | ДополнительныеНачисленияРаботниковОрганизаций.ВидРасчета,
    | СУММА(ДополнительныеНачисленияРаботниковОрганизаций.Результат),
    | ДополнительныеНачисленияРаботниковОрганизаций.ФизЛицо,
    | 0
    | ИЗ
    | РегистрРасчета.ДополнительныеНачисленияРаботниковОрганизаций КАК ДополнительныеНачисленияРаботниковОрганизаций
    | ГДЕ
    | ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации МЕЖДУ НАЧАЛОПЕРИОДА(&НачалоПериода, МЕСЯЦ) И КОНЕЦПЕРИОДА(&КонецПериода, МЕСЯЦ)
    | И ДополнительныеНачисленияРаботниковОрганизаций.Организация = &Организация
    | И ДополнительныеНачисленияРаботниковОрганизаций.ФизЛицо = &ФизЛицо
    |
    | СГРУППИРОВАТЬ ПО
    | ДополнительныеНачисленияРаботниковОрганизаций.ВидРасчета,
    | НАЧАЛОПЕРИОДА(ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации, МЕСЯЦ),
    | ДополнительныеНачисленияРаботниковОрганизаций.ФизЛицо) КАК ОсновныеДополнительныеНачисления
    |
    |СГРУППИРОВАТЬ ПО
    | ОсновныеДополнительныеНачисления.ВидРасчета,
    | ОсновныеДополнительныеНачисления.Период,
    | ОсновныеДополнительныеНачисления.ОтработаноДней
    |
    |УПОРЯДОЧИТЬ ПО
    | Период,
    | ОтработаноДней УБЫВ";


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

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

    Начисления.Свернуть("ВидРасчета");

    Если Начисления.Количество() > 0 Тогда
    Для СчПоказателей = 0 По (Начисления.Количество()-1) Цикл
    СтрокаНачисления = Начисления.Получить(СчПоказателей);
    ОбластьНачисления.Параметры.ВидРасчета=СтрокаНачисления.ВидРасчета;
    ТабДокумент.Присоединить(ОбластьНачисления);
    КонецЦикла;
    КонецЕсли;
    СтрокаЗаголовок1=Макет.ПолучитьОбласть("Строка|ОбластьШапка");

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


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

    ТЗ=Запрос.Выполнить().Выгрузить();
    Номер=0;

    Для каждого СтрокаТЗ Из ТЗ Цикл

    Если СтрокаТЗ.ОтработаноДней <>0 И СтрокаТЗ.ОтработаноДней<>1 Тогда
    СтрокаЗаголовок1.Параметры.Номер=Номер+1;
    МесяцСтрока=ПредставлениеПериода(НачалоМесяца(СтрокаТЗ.Период), КонецМесяца(СтрокаТЗ.Период), "ФП = Истина");
    СтрокаЗаголовок1.Параметры.Месяц=МесяцСтрока;
    СтрокаЗаголовок1.Параметры.ОтработаноДней=СтрокаТЗ.ОтработаноДней;
    СтрокаЗаголовок1.Параметры.ДолгНаНачало=СтрокаТЗ.СуммаВзаиморасчетовНачальныйОстаток;
    ТабДокумент.Вывести(СтрокаЗаголовок1);
    КонецЕсли;


    ОбластьНачисления=Макет.ПолучитьОбласть("Строка|Начисления");


    Для каждого СтрокаНачисления Из Начисления Цикл

    Если СтрокаТЗ.ВидРасчета=СтрокаНачисления.ВидРасчета Тогда
    ОбластьНачисления.Параметры.Результат=СтрокаТЗ.Результат;
    ТабДокумент.Присоединить(ОбластьНачисления);
    Иначе
    ОбластьНачисления.Параметры.Результат="";
    ТабДокумент.Присоединить(ОбластьНачисления);

    КонецЕсли;

    КонецЦикла;

    КонецЦикла;
  3. TopicStarter Overlay
    Люсёк
    Offline

    Люсёк

    Регистрация:
    20 дек 2010
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
  4. TopicStarter Overlay
    Люсёк
    Offline

    Люсёк

    Регистрация:
    20 дек 2010
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    Код:
    ОбластьНачисления=Макет.ПолучитьОбласть("СтрокаЗаголовок|Начисления");
    
    Запрос=Новый Запрос;
    Запрос.Текст="ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
    | ОсновныеДополнительныеНачисления.Период КАК Период,
    | ОсновныеДополнительныеНачисления.ВидРасчета КАК ВидРасчета,
    | ОсновныеДополнительныеНачисления.ОтработаноДней КАК ОтработаноДней
    |ИЗ
    | (ВЫБРАТЬ РАЗЛИЧНЫЕ
    | НАЧАЛОПЕРИОДА(ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации, МЕСЯЦ) КАК Период,
    | ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета КАК ВидРасчета,
    | СУММА(ОсновныеНачисленияРаботниковОрганизаций.Результат) КАК Результат,
    | ОсновныеНачисленияРаботниковОрганизаций.ФизЛицо КАК ФизЛицо,
    | ОсновныеНачисленияРаботниковОрганизаций.ОтработаноДней КАК ОтработаноДней
    | ИЗ
    | РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисленияРаботниковОрганизаций
    | ГДЕ
    | ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации МЕЖДУ НАЧАЛОПЕРИОДА(&НачалоПериода, МЕСЯЦ) И КОНЕЦПЕРИОДА(&КонецПериода, МЕСЯЦ)
    | И ОсновныеНачисленияРаботниковОрганизаций.Организация = &Организация
    | И ОсновныеНачисленияРаботниковОрганизаций.ФизЛицо = &ФизЛицо
    | 
    | СГРУППИРОВАТЬ ПО
    | ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета,
    | НАЧАЛОПЕРИОДА(ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации, МЕСЯЦ),
    | ОсновныеНачисленияРаботниковОрганизаций.ФизЛицо,
    | ОсновныеНачисленияРаботниковОрганизаций.ОтработаноДней
    | 
    | ОБЪЕДИНИТЬ ВСЕ
    | 
    | ВЫБРАТЬ РАЗЛИЧНЫЕ
    | НАЧАЛОПЕРИОДА(ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации, МЕСЯЦ),
    | ДополнительныеНачисленияРаботниковОрганизаций.ВидРасчета,
    | СУММА(ДополнительныеНачисленияРаботниковОрганизаций.Результат),
    | ДополнительныеНачисленияРаботниковОрганизаций.ФизЛицо,
    | 0
    | ИЗ
    | РегистрРасчета.ДополнительныеНачисленияРаботниковОрганизаций КАК ДополнительныеНачисленияРаботниковОрганизаций
    | ГДЕ
    | ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации МЕЖДУ НАЧАЛОПЕРИОДА(&НачалоПериода, МЕСЯЦ) И КОНЕЦПЕРИОДА(&КонецПериода, МЕСЯЦ)
    | И ДополнительныеНачисленияРаботниковОрганизаций.Организация = &Организация
    | И ДополнительныеНачисленияРаботниковОрганизаций.ФизЛицо = &ФизЛицо
    | 
    | СГРУППИРОВАТЬ ПО
    | ДополнительныеНачисленияРаботниковОрганизаций.ВидРасчета,
    | НАЧАЛОПЕРИОДА(ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации, МЕСЯЦ),
    | ДополнительныеНачисленияРаботниковОрганизаций.ФизЛицо) КАК ОсновныеДополнительныеНачисления
    |
    |СГРУППИРОВАТЬ ПО
    | ОсновныеДополнительныеНачисления.ВидРасчета,
    | ОсновныеДополнительныеНачисления.Период,
    | ОсновныеДополнительныеНачисления.ОтработаноДней
    |
    |УПОРЯДОЧИТЬ ПО
    | Период,
    | ОтработаноДней УБЫВ";
    
    
    Запрос.УстановитьПараметр("НачалоПериода",ЭлементыФормы.ДатаНачала.Значение);
    Запрос.УстановитьПараметр("КонецПериода",ЭлементыФормы.ДатаОкончания.Значение);
    Запрос.УстановитьПараметр("Организация",ЭлементыФормы.Организация.Значение);
    Запрос.УстановитьПараметр("Физлицо",СтрокаТЧ.Сотрудник.Физлицо);
    
    Начисления=Запрос.Выполнить().Выгрузить();
    
    Начисления.Свернуть("ВидРасчета");
    
    Если Начисления.Количество() > 0 Тогда 
    Для СчПоказателей = 0 По (Начисления.Количество()-1) Цикл
    СтрокаНачисления = Начисления.Получить(СчПоказателей); 
    ОбластьНачисления.Параметры.ВидРасчета=СтрокаНачисления.ВидРасчета;
    ТабДокумент.Присоединить(ОбластьНачисления); 
    КонецЦикла; 
    КонецЕсли; 
    СтрокаЗаголовок1=Макет.ПолучитьОбласть("Строка|ОбластьШапка");
    
    Запрос=Новый Запрос;
    Запрос.Текст="ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
    | ОсновныеДополнительныеНачисления.Период КАК Период,
    | ОсновныеДополнительныеНачисления.ВидРасчета КАК ВидРасчета,
    | СУММА(ОсновныеДополнительныеНачисления.Результат) КАК Результат,
    | ОсновныеДополнительныеНачисления.ОтработаноДней КАК ОтработаноДней,
    | ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток
    |ИЗ
    | (ВЫБРАТЬ РАЗЛИЧНЫЕ
    | НАЧАЛОПЕРИОДА(ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации, МЕСЯЦ) КАК Период,
    | ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета КАК ВидРасчета,
    | СУММА(ОсновныеНачисленияРаботниковОрганизаций.Результат) КАК Результат,
    | ОсновныеНачисленияРаботниковОрганизаций.ОтработаноДней КАК ОтработаноДней,
    | ОсновныеНачисленияРаботниковОрганизаций.ФизЛицо КАК ФизЛицо
    | ИЗ
    | РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисленияРаботниковОрганизаций
    | ГДЕ
    | ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации МЕЖДУ НАЧАЛОПЕРИОДА(&НачалоПериода, МЕСЯЦ) И КОНЕЦПЕРИОДА(&КонецПериода, МЕСЯЦ)
    | И ОсновныеНачисленияРаботниковОрганизаций.Организация = &Организация
    | И ОсновныеНачисленияРаботниковОрганизаций.ФизЛицо = &ФизЛицо
    | 
    | СГРУППИРОВАТЬ ПО
    | ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета,
    | НАЧАЛОПЕРИОДА(ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации, МЕСЯЦ),
    | ОсновныеНачисленияРаботниковОрганизаций.ОтработаноДней,
    | ОсновныеНачисленияРаботниковОрганизаций.ФизЛицо
    | 
    | ОБЪЕДИНИТЬ ВСЕ
    | 
    | ВЫБРАТЬ РАЗЛИЧНЫЕ
    | НАЧАЛОПЕРИОДА(ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации, МЕСЯЦ),
    | ДополнительныеНачисленияРаботниковОрганизаций.ВидРасчета,
    | СУММА(ДополнительныеНачисленияРаботниковОрганизаций.Результат),
    | 0,
    | ДополнительныеНачисленияРаботниковОрганизаций.ФизЛицо
    | ИЗ
    | РегистрРасчета.ДополнительныеНачисленияРаботниковОрганизаций КАК ДополнительныеНачисленияРаботниковОрганизаций
    | ГДЕ
    | ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации МЕЖДУ НАЧАЛОПЕРИОДА(&НачалоПериода, МЕСЯЦ) И КОНЕЦПЕРИОДА(&КонецПериода, МЕСЯЦ)
    | И ДополнительныеНачисленияРаботниковОрганизаций.Организация = &Организация
    | И ДополнительныеНачисленияРаботниковОрганизаций.ФизЛицо = &ФизЛицо
    | 
    | СГРУППИРОВАТЬ ПО
    | ДополнительныеНачисленияРаботниковОрганизаций.ВидРасчета,
    | НАЧАЛОПЕРИОДА(ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации, МЕСЯЦ),
    | ДополнительныеНачисленияРаботниковОрганизаций.ФизЛицо) КАК ОсновныеДополнительныеНачисления
    | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСРаботникамиОрганизаций.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Месяц, , ) КАК ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты
    | ПО ОсновныеДополнительныеНачисления.ФизЛицо = ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.Физлицо
    | И ОсновныеДополнительныеНачисления.Период = ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.Период
    |ГДЕ
    | ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.Организация = &Организация
    | И ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.Физлицо = &Физлицо
    | И ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.Период МЕЖДУ НАЧАЛОПЕРИОДА(&НачалоПериода, МЕСЯЦ) И КОНЕЦПЕРИОДА(&КонецПериода, МЕСЯЦ)
    |
    |СГРУППИРОВАТЬ ПО
    | ОсновныеДополнительныеНачисления.ВидРасчета,
    | ОсновныеДополнительныеНачисления.Период,
    | ОсновныеДополнительныеНачисления.ОтработаноДней,
    | ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток
    |
    |УПОРЯДОЧИТЬ ПО
    | Период,
    | ОтработаноДней УБЫВ";
    
    
    Запрос.УстановитьПараметр("НачалоПериода",ЭлементыФормы.ДатаНачала.Значение);
    Запрос.УстановитьПараметр("КонецПериода",ЭлементыФормы.ДатаОкончания.Значение);
    Запрос.УстановитьПараметр("Организация",ЭлементыФормы.Организация.Значение);
    Запрос.УстановитьПараметр("Физлицо",СтрокаТЧ.Сотрудник.Физлицо);
    
    ТЗ=Запрос.Выполнить().Выгрузить();
    Номер=0;
    
    Для каждого СтрокаТЗ Из ТЗ Цикл
    
    Если СтрокаТЗ.ОтработаноДней <>0 И СтрокаТЗ.ОтработаноДней<>1 Тогда 
    СтрокаЗаголовок1.Параметры.Номер=Номер+1;
    МесяцСтрока=ПредставлениеПериода(НачалоМесяца(СтрокаТЗ.Период), КонецМесяца(СтрокаТЗ.Период), "ФП = Истина");
    СтрокаЗаголовок1.Параметры.Месяц=МесяцСтрока; 
    СтрокаЗаголовок1.Параметры.ОтработаноДней=СтрокаТЗ.ОтработаноДней; 
    СтрокаЗаголовок1.Параметры.ДолгНаНачало=СтрокаТЗ.СуммаВзаиморасчетовНачальныйОстаток;
    ТабДокумент.Вывести(СтрокаЗаголовок1); 
    КонецЕсли; 
    
    
    ОбластьНачисления=Макет.ПолучитьОбласть("Строка|Начисления"); 
    
    
    Для каждого СтрокаНачисления Из Начисления Цикл
    
    Если СтрокаТЗ.ВидРасчета=СтрокаНачисления.ВидРасчета Тогда
    ОбластьНачисления.Параметры.Результат=СтрокаТЗ.Результат;
    ТабДокумент.Присоединить(ОбластьНачисления);
    Иначе
    ОбластьНачисления.Параметры.Результат="";
    ТабДокумент.Присоединить(ОбластьНачисления);
    
    КонецЕсли; 
    
    КонецЦикла; 
    
    КонецЦикла;
    
  5. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Времени писать пример нет, я схематично набросаю:
    1) Два одинаковых запроса делать незачем, вы же по сути за одним и тем же 2 раза к ИБ обращаетесь. Либо засуньте первоначальный запрос в ВТ и работайте с ней, либо если вам в отчете в любом случае нужны значения всех видов расчета (в независимости были они в этом периоде или нет), выберите их значения допустим в массив.
    2) Теперь у нас есть значения видов расчета (СписокВидовРасчета в примере). Смотрите: у вас будут приблизительно следующие циклы (пишу все условно):
    Код:
    ВыборкаПоФизлицу = Начисления.Выбрать();
    Пока ВыборкаПоФизлицу.Следующий()
    ВыборкаПоПериоду = ВыборкаПоФизлицу.Выбрать();
    Пока ВыборкаПоПериоду.Следующий()
    
    
    Для каждого ВидРасчета из СписокВидовРасчета Цикл
    Если ВыборкаПоПериоду.НайтиСледующий(ВидРасчета, "ВидРасчета") Тогда
    ОбластьНачисления.Параметры.Значение = ВыборкаПоПериоду.Результат;
    Иначе
    ОбластьНачисления.Параметры.Значение = 0;
    КонецЕсли;
    ТабДокумент.Присоединить(ОбластьНачисления);
    КонецЦикла;
    
    
    КонецЦикла;
    КонецЦикла;
    
    
    
    
  6. TopicStarter Overlay
    Люсёк
    Offline

    Люсёк

    Регистрация:
    20 дек 2010
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    Воспользовалась вашим советом, спасибо) Вроде стало выводится сумма под соответствующим ей начислением.Правда некоторые суммы теряются. Я вычитала что надо сбрасывать выборку, но когда я использую метод Сбросить() у меня зацикливается. И еще проблемка, почему то кагда смотрю в отладчике это условие Если ДетальныеЗаписи.НайтиСледующий(СтруктураПоиска) Тогда все время ложь и выводит о. Если отладчиком не проверять то выводит. Я вообще первый раз с таким столкнулась в чем может быть проблема?


    Код:
    СтрокаЗаголовок1=Макет.ПолучитьОбласть("Строка|ОбластьШапка");
    Номер=0;
    Запрос=Новый Запрос;
    Запрос.Текст="ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
    |	ОсновныеДополнительныеНачисления.Период КАК Период,
    |	ОсновныеДополнительныеНачисления.ВидРасчета КАК ВидРасчета,
    |	СУММА(ОсновныеДополнительныеНачисления.Результат) КАК Результат,
    |	ОсновныеДополнительныеНачисления.ОтработаноДней КАК ОтработаноДней,
    |	ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток
    |ИЗ
    |	(ВЫБРАТЬ РАЗЛИЧНЫЕ
    |		НАЧАЛОПЕРИОДА(ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации, МЕСЯЦ) КАК Период,
    |		ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета КАК ВидРасчета,
    |		СУММА(ОсновныеНачисленияРаботниковОрганизаций.Результат) КАК Результат,
    |		ОсновныеНачисленияРаботниковОрганизаций.ОтработаноДней КАК ОтработаноДней,
    |		ОсновныеНачисленияРаботниковОрганизаций.ФизЛицо КАК ФизЛицо
    |	ИЗ
    |		РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисленияРаботниковОрганизаций
    |	ГДЕ
    |		ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации МЕЖДУ НАЧАЛОПЕРИОДА(&НачалоПериода, МЕСЯЦ) И КОНЕЦПЕРИОДА(&КонецПериода, МЕСЯЦ)
    |		И ОсновныеНачисленияРаботниковОрганизаций.Организация = &Организация
    |		И ОсновныеНачисленияРаботниковОрганизаций.ФизЛицо = &ФизЛицо
    |	
    |	СГРУППИРОВАТЬ ПО
    |		ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета,
    |		НАЧАЛОПЕРИОДА(ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации, МЕСЯЦ),
    |		ОсновныеНачисленияРаботниковОрганизаций.ОтработаноДней,
    |		ОсновныеНачисленияРаботниковОрганизаций.ФизЛицо
    |	
    |	ОБЪЕДИНИТЬ ВСЕ
    |	
    |	ВЫБРАТЬ РАЗЛИЧНЫЕ
    |		НАЧАЛОПЕРИОДА(ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации, МЕСЯЦ),
    |		ДополнительныеНачисленияРаботниковОрганизаций.ВидРасчета,
    |		СУММА(ДополнительныеНачисленияРаботниковОрганизаций.Результат),
    |		0,
    |		ДополнительныеНачисленияРаботниковОрганизаций.ФизЛицо
    |	ИЗ
    |		РегистрРасчета.ДополнительныеНачисленияРаботниковОрганизаций КАК ДополнительныеНачисленияРаботниковОрганизаций
    |	ГДЕ
    |		ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации МЕЖДУ НАЧАЛОПЕРИОДА(&НачалоПериода, МЕСЯЦ) И КОНЕЦПЕРИОДА(&КонецПериода, МЕСЯЦ)
    |		И ДополнительныеНачисленияРаботниковОрганизаций.Организация = &Организация
    |		И ДополнительныеНачисленияРаботниковОрганизаций.ФизЛицо = &ФизЛицо
    |	
    |	СГРУППИРОВАТЬ ПО
    |		ДополнительныеНачисленияРаботниковОрганизаций.ВидРасчета,
    |		НАЧАЛОПЕРИОДА(ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации, МЕСЯЦ),
    |		ДополнительныеНачисленияРаботниковОрганизаций.ФизЛицо) КАК ОсновныеДополнительныеНачисления
    |		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСРаботникамиОрганизаций.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Месяц, , ) КАК ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты
    |		ПО ОсновныеДополнительныеНачисления.ФизЛицо = ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.Физлицо
    |			И ОсновныеДополнительныеНачисления.Период = ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.Период
    |ГДЕ
    |	ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.Организация = &Организация
    |	И ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.Физлицо = &Физлицо
    |	И ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.Период МЕЖДУ НАЧАЛОПЕРИОДА(&НачалоПериода, МЕСЯЦ) И КОНЕЦПЕРИОДА(&КонецПериода, МЕСЯЦ)
    |
    |СГРУППИРОВАТЬ ПО
    |	ОсновныеДополнительныеНачисления.ВидРасчета,
    |	ОсновныеДополнительныеНачисления.Период,
    |	ОсновныеДополнительныеНачисления.ОтработаноДней,
    |	ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток
    |
    |УПОРЯДОЧИТЬ ПО
    |	Период,
    |	ОтработаноДней УБЫВ
    |ИТОГИ ПО
    |	Период ПЕРИОДАМИ(МЕСЯЦ, &НачалоПериода, &КонецПериода)";
    
    
    Запрос.УстановитьПараметр("НачалоПериода",ЭлементыФормы.ДатаНачала.Значение);
    Запрос.УстановитьПараметр("КонецПериода",ЭлементыФормы.ДатаОкончания.Значение);
    Запрос.УстановитьПараметр("Организация",ЭлементыФормы.Организация.Значение);
    Запрос.УстановитьПараметр("Физлицо",СтрокаТЧ.Сотрудник.Физлицо);
    
    ВыборкаПоПериоду = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Период");
    Пока ВыборкаПоПериоду.Следующий() Цикл
    ДетальныеЗаписи = ВыборкаПоПериоду.Выбрать();				
    Пока ДетальныеЗаписи.Следующий() Цикл
    
    СтрокаЗаголовок1.Параметры.Номер=Номер+1;
    МесяцСтрока=ПредставлениеПериода(НачалоМесяца(ДетальныеЗаписи.Период), КонецМесяца(ДетальныеЗаписи.Период), "ФП = Истина");
    СтрокаЗаголовок1.Параметры.Месяц=МесяцСтрока;			  
    СтрокаЗаголовок1.Параметры.ОтработаноДней=ДетальныеЗаписи.ОтработаноДней;			   
    СтрокаЗаголовок1.Параметры.ДолгНаНачало=ДетальныеЗаписи.СуммаВзаиморасчетовНачальныйОстаток;
    ТабДокумент.Вывести(СтрокаЗаголовок1);                                 	
    
    
    ОбластьНачисления=Макет.ПолучитьОбласть("Строка|Начисления"); 
    
    
    Для каждого СтрокаНачисления Из Начисления Цикл
    
    СтруктураПоиска = Новый Структура("ВидРасчета", СтрокаНачисления.ВидРасчета);	      				
    //ДетальныеЗаписи.Сбросить(); 			
    Если ДетальныеЗаписи.НайтиСледующий(СтруктураПоиска) Тогда				//в отладчике при проверке условия всегда ложь					
    ОбластьНачисления.Параметры.Результат = ДетальныеЗаписи.Результат;					
    Иначе  					
    ОбластьНачисления.Параметры.Результат = 0;					
    КонецЕсли; 
    
    ТабДокумент.Присоединить(ОбластьНачисления); 
    
    КонецЦикла;		 			
    КонецЦикла;		 	
    КонецЦикла;
    
    
  7. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Конечно оно будет зацикливаться. У вас немного неправильно: начинается цикл: "Пока ДетальныеЗаписи.Следующий() Цикл", а внутри вы все время методом "Сбросить()" переводите указатель на начало выборки, естественно оно никогда не закончится.
    Этот цикл надо убирать. Собственно шапку и детальные записи надо выводить в двух циклах. В первом выводите шапку, а во втором сами записи. Попробуйте пока добиться вывода записей, шапку уж потом сделать можно. Думаю должно быть как-то так:

    Код:
    Пока ВыборкаПоПериоду.Следующий() Цикл
    ДетальныеЗаписи = ВыборкаПоПериоду.Выбрать();				
    
    ОбластьНачисления=Макет.ПолучитьОбласть("Строка|Начисления"); 
    
    Для каждого СтрокаНачисления Из Начисления Цикл
    
    ДетальныеЗаписи.Сбросить(); 			
    СтруктураПоиска = Новый Структура("ВидРасчета", СтрокаНачисления.ВидРасчета);	      				
    Если ДетальныеЗаписи.НайтиСледующий(СтруктураПоиска) Тогда				//в отладчике при проверке условия всегда ложь					
    ОбластьНачисления.Параметры.Результат = ДетальныеЗаписи.Результат;					
    Иначе  					
    ОбластьНачисления.Параметры.Результат = 0;					
    КонецЕсли; 
    
    ТабДокумент.Присоединить(ОбластьНачисления); 
    
    КонецЦикла;		 			
    КонецЦикла;
    
  8. TopicStarter Overlay
    Люсёк
    Offline

    Люсёк

    Регистрация:
    20 дек 2010
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    Код:
    Пока ДетальныеЗаписи.Следующий() Цикл
    
    СтрокаЗаголовок1.Параметры.Номер=Номер+1;
    МесяцСтрока=ПредставлениеПериода(НачалоМесяца(ДетальныеЗаписи.Период), КонецМесяца(ДетальныеЗаписи.Период), "ФП = Истина");
    СтрокаЗаголовок1.Параметры.Месяц=МесяцСтрока;			  
    СтрокаЗаголовок1.Параметры.ОтработаноДней=ДетальныеЗаписи.ОтработаноДней;			   
    СтрокаЗаголовок1.Параметры.ДолгНаНачало=ДетальныеЗаписи.СуммаВзаиморасчетовНачальныйОстаток;
    ТабДокумент.Вывести(СтрокаЗаголовок1);   
    

    В этом цикле я вывожу первую часть строки, а потом к ней присоединяю следующую часть строки с суммами начислений. Если его выкинуть, то суммы всех начислений выводятся, но присоединяются справа от шапки.

    Вложения:

  9. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Все равно цикл не нужен.
    Попробуйте так:
    Код:
    "ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
    ОсновныеДополнительныеНачисления.Период КАК Период,
    ОсновныеДополнительныеНачисления.ВидРасчета КАК ВидРасчета,
    СУММА(ОсновныеДополнительныеНачисления.Результат) КАК Результат,
    ОсновныеДополнительныеНачисления.ОтработаноДней КАК ОтработаноДней,
    ВзаиморасчетыСРаботникамиОрганизацийОстатки.СуммаВзаиморасчетовОстаток КАК СуммаВзаиморасчетовНачальныйОстаток
    ИЗ
    (ВЫБРАТЬ РАЗЛИЧНЫЕ
    НАЧАЛОПЕРИОДА(ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации, МЕСЯЦ) КАК Период,
    ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета КАК ВидРасчета,
    СУММА(ОсновныеНачисленияРаботниковОрганизаций.Результат) КАК Результат,
    ОсновныеНачисленияРаботниковОрганизаций.ОтработаноДней КАК ОтработаноДней,
    ОсновныеНачисленияРаботниковОрганизаций.ФизЛицо КАК ФизЛицо
    ИЗ
    РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисленияРаботниковОрганизаций
    ГДЕ
    ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации МЕЖДУ НАЧАЛОПЕРИОДА(&НачалоПериода, МЕСЯЦ) И КОНЕЦПЕРИОДА(&КонецПериода, МЕСЯЦ)
    И ОсновныеНачисленияРаботниковОрганизаций.Организация = &Организация
    И ОсновныеНачисленияРаботниковОрганизаций.ФизЛицо = &ФизЛицо
    
    СГРУППИРОВАТЬ ПО
    ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета,
    НАЧАЛОПЕРИОДА(ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации, МЕСЯЦ),
    ОсновныеНачисленияРаботниковОрганизаций.ОтработаноДней,
    ОсновныеНачисленияРаботниковОрганизаций.ФизЛицо
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ РАЗЛИЧНЫЕ
    НАЧАЛОПЕРИОДА(ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации, МЕСЯЦ),
    ДополнительныеНачисленияРаботниковОрганизаций.ВидРасчета,
    СУММА(ДополнительныеНачисленияРаботниковОрганизаций.Результат),
    0,
    ДополнительныеНачисленияРаботниковОрганизаций.ФизЛицо
    ИЗ
    РегистрРасчета.ДополнительныеНачисленияРаботниковОрганизаций КАК ДополнительныеНачисленияРаботниковОрганизаций
    ГДЕ
    ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации МЕЖДУ НАЧАЛОПЕРИОДА(&НачалоПериода, МЕСЯЦ) И КОНЕЦПЕРИОДА(&КонецПериода, МЕСЯЦ)
    И ДополнительныеНачисленияРаботниковОрганизаций.Организация = &Организация
    И ДополнительныеНачисленияРаботниковОрганизаций.ФизЛицо = &ФизЛицо
    
    СГРУППИРОВАТЬ ПО
    ДополнительныеНачисленияРаботниковОрганизаций.ВидРасчета,
    НАЧАЛОПЕРИОДА(ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации, МЕСЯЦ),
    ДополнительныеНачисленияРаботниковОрганизаций.ФизЛицо) КАК ОсновныеДополнительныеНачисления
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСРаботникамиОрганизаций.Остатки(
    ,
    Организация = &Организация
    И Физлицо = &Физлицо) КАК ВзаиморасчетыСРаботникамиОрганизацийОстатки
    ПО ОсновныеДополнительныеНачисления.ФизЛицо = ВзаиморасчетыСРаботникамиОрганизацийОстатки.Физлицо
    И ОсновныеДополнительныеНачисления.Период = ВзаиморасчетыСРаботникамиОрганизацийОстатки.ПериодВзаиморасчетов
    </span>
    СГРУППИРОВАТЬ ПО
    ОсновныеДополнительныеНачисления.ВидРасчета,
    ОсновныеДополнительныеНачисления.Период,
    ОсновныеДополнительныеНачисления.ОтработаноДней,
    ВзаиморасчетыСРаботникамиОрганизацийОстатки.СуммаВзаиморасчетовОстаток
    
    УПОРЯДОЧИТЬ ПО
    Период,
    ОтработаноДней УБЫВ
    ИТОГИ
    СУММА(Результат),
    СУММА(ОтработаноДней),
    СРЕДНЕЕ(СуммаВзаиморасчетовНачальныйОстаток)
    ПО
    Период"
    
    </FONT></FONT></pre>
    и при выводе пишите:
    Код:
    Пока ВыборкаПоПериоду.Следующий() Цикл
    
    СтрокаЗаголовок1.Параметры.Номер=Номер+1;
    МесяцСтрока=ПредставлениеПериода(НачалоМесяца(ВыборкаПоПериоду.Период), КонецМесяца(ВыборкаПоПериоду.Период), "ФП = Истина");
    СтрокаЗаголовок1.Параметры.Месяц=МесяцСтрока;			  
    СтрокаЗаголовок1.Параметры.ОтработаноДней=ВыборкаПоПериоду.ОтработаноДней;			   
    СтрокаЗаголовок1.Параметры.ДолгНаНачало=ВыборкаПоПериоду.СуммаВзаиморасчетовНачальныйОстаток;
    ТабДокумент.Вывести(СтрокаЗаголовок1);
    
    
    ДетальныеЗаписи = ВыборкаПоПериоду.Выбрать();				
    
    ОбластьНачисления=Макет.ПолучитьОбласть("Строка|Начисления"); 
    
    Для каждого СтрокаНачисления Из Начисления Цикл
    
    ДетальныеЗаписи.Сбросить(); 			
    СтруктураПоиска = Новый Структура("ВидРасчета", СтрокаНачисления.ВидРасчета);	      				
    Если ДетальныеЗаписи.НайтиСледующий(СтруктураПоиска) Тогда				//в отладчике при проверке условия всегда ложь					
    ОбластьНачисления.Параметры.Результат = ДетальныеЗаписи.Результат;					
    Иначе  					
    ОбластьНачисления.Параметры.Результат = 0;					
    КонецЕсли; 
    
    ТабДокумент.Присоединить(ОбластьНачисления); 
    
    КонецЦикла;		 			
    КонецЦикла;
    
    
  10. TopicStarter Overlay
    Люсёк
    Offline

    Люсёк

    Регистрация:
    20 дек 2010
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    Спасибо вам большое))) так работает)

Поделиться этой страницей