8.х Заполнить таблицу из запроса по параметрам

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем 1С_новый, 28 июн 2011.

  1. TopicStarter Overlay
    1С_новый
    Offline

    1С_новый

    Регистрация:
    21 июн 2011
    Сообщения:
    12
    Симпатии:
    0
    Баллы:
    1
    Помогите пожалуйсто написать запрос для заполнения таблицы

    Есть регистр накопления, в нем хранятся данные в таком виде

    Код:
    № |  знач   |          Дата          |       ФИО           |   Данные      
    1    истина     01.01.2011 0:00:00    Иванов Иван Иванович    Отпуск
    2    истина     02.01.2011 0:00:00    Иванов Иван Иванович    Отпуск
    3    истина     05.01.2011 0:00:00    Иванов Иван Иванович    Отпуск
    4    истина     06.01.2011 0:00:00    Иванов Иван Иванович    Отпуск
    5    истина     08.01.2011 0:00:00    Иванов Иван Иванович    Отпуск
    6    истина     10.01.2011 0:00:00    Иванов Иван Иванович    Отпуск
    7    истина     13.01.2011 0:00:00    Иванов Иван Иванович    Отпуск
    8    истина     15.01.2011 0:00:00    Иванов Иван Иванович    Отпуск
    9    истина     19.01.2011 0:00:00    Иванов Иван Иванович    Отпуск
    10    истина     21.01.2011 0:00:00    Иванов Иван Иванович    Отпуск
    11    истина     23.01.2011 0:00:00    Иванов Иван Иванович    Отпуск
    12    истина     25.01.2011 0:00:00    Иванов Иван Иванович    Отпуск
    13    истина     28.01.2011 0:00:00    Иванов Иван Иванович    Отпуск
    14    истина     30.01.2011 0:00:00    Иванов Иван Иванович    Отпуск
    15    истина     31.01.2011 0:00:00    Иванов Иван Иванович    Отпуск
    

    Получаю данные из регистра я так:


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


    Код:
    Физ лицо                      Дата начала            Дата окончания             Количество
    Иванов Иван Иванович         01.01.2011                 02.01.2011                  2
    Иванов Иван Иванович         05.01.2011                 07.01.2011                  3
    Иванов Иван Иванович         08.01.2011                 15.01.2011                  8
    Иванов Иван Иванович         19.01.2011                 21.01.2011                  3
    Иванов Иван Иванович         21.01.2011                 21.01.2011                  1
    
    
    Можно это как нибуть в запросе сделать?
  2. Максим
    Offline

    Максим Опытный в 1С

    Регистрация:
    28 фев 2008
    Сообщения:
    688
    Симпатии:
    8
    Баллы:
    29
    А количество должно быть равно 3 когда?
    Хоть структуру регистра накопления, что ли напишите
  3. Master_1C
    Offline

    Master_1C

    Регистрация:
    29 июн 2011
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Можно ведь и без запроса это сделать. Делайте выборку из запроса, ставьте условие, типа если дата такая-то, Тогда переменная День=День+1; Примерно так

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