| 
    
        
     
     | 
    
    
  | 
Заполнение дней и часов из табеля (ЗУП) | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        Tanis    
     17.01.13 
            ✎
    11:35 
 | 
         
        Добрый день! Подскажите в упорядовачинии циклов.
  
        Имеем следующее, но это пока не заполняет. Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ | РабочееВремяРаботниковОрганизаций.Сотрудник КАК Сотрудник, | СУММА(РабочееВремяРаботниковОрганизаций.Дней) КАК Дней, | СУММА(РабочееВремяРаботниковОрганизаций.Часов) КАК Часов, | МЕСЯЦ(РабочееВремяРаботниковОрганизаций.Период) КАК Период |ИЗ | РегистрНакопления.РабочееВремяРаботниковОрганизаций КАК РабочееВремяРаботниковОрганизаций | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КлассификаторИспользованияРабочегоВремени КАК КлассификаторИспользованияРабочегоВремени | ПО РабочееВремяРаботниковОрганизаций.ВидИспользованияРабочегоВремени = КлассификаторИспользованияРабочегоВремени.Ссылка |ГДЕ | РабочееВремяРаботниковОрганизаций.Сотрудник = &Сотрудник | И РабочееВремяРаботниковОрганизаций.Период МЕЖДУ &ДатаН И &ДатаК | И (РабочееВремяРаботниковОрганизаций.ВидИспользованияРабочегоВремени.Наименование = ""Явка"" | ИЛИ РабочееВремяРаботниковОрганизаций.ВидИспользованияРабочегоВремени.Наименование = ""Простой, не зависящий от работодателя и работника"" | ИЛИ РабочееВремяРаботниковОрганизаций.ВидИспользованияРабочегоВремени.Наименование = ""Ремонт 75%т.с."" | ИЛИ РабочееВремяРаботниковОрганизаций.ВидИспользованияРабочегоВремени.Наименование = ""ТО 100%."") | |СГРУППИРОВАТЬ ПО | РабочееВремяРаботниковОрганизаций.Сотрудник, | МЕСЯЦ(РабочееВремяРаботниковОрганизаций.Период)"; Запрос.УстановитьПараметр("Сотрудник", Сотрудник); //Сотрудники Запрос.УстановитьПараметр("ДатаН", ПериодРасчетаСреднегоЗаработкаНачало); //Дата Запрос.УстановитьПараметр("ДатаК", ПериодРасчетаСреднегоЗаработкаОкончание); //Дата Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл Период = Выборка.Период; Сотрудник = Выборка.Сотрудник; Дней = Выборка.Дней; Часов = Выборка.Часов; тзДни = Новый ТаблицаЗначений; тзДни.Колонки.Добавить("Период"); тзДни.Колонки.Добавить("Сотрудник"); тзДни.Колонки.Добавить("Дней"); тзДни.Колонки.Добавить("Часов"); КонецЦикла; РасчетСреднего1 = ЭтотОбъект.РасчетСреднего; Для Каждого СтрокаДокумента ИЗ РасчетСреднего1 Цикл Если СтрокаДокумента.ВидРасчета = ПланыВидовРасчета.СреднийЗаработок.ПоЗаработкуИндексируемые Тогда Продолжить; КонецЕсли; ПериодРасч = Месяц(СтрокаДокумента.БазовыйПериодКонец); НайденнаяСтрока = тзДни.Найти(ПериодРасч, "Период"); Если НайденнаяСтрока <> Неопределено Тогда //СтрокаДокумента.Результат = НайденнаяСтрока.Начислено; СтрокаДокумента.ОтработаноДней = НайденнаяСтрока.Дней; КонецЕсли; КонецЦикла;  | 
|||
| 
    1
    
        Tanis    
     17.01.13 
            ✎
    11:52 
 | 
         
        Подскажите, что где изменить...     
         | 
|||
| 
    2
    
        fmrlex    
     17.01.13 
            ✎
    12:06 
 | 
         
        Пока Выборка.Следующий() Цикл 
  
        Период = Выборка.Период; Сотрудник = Выборка.Сотрудник; Дней = Выборка.Дней; Часов = Выборка.Часов; тзДни = Новый ТаблицаЗначений; тзДни.Колонки.Добавить("Период"); тзДни.Колонки.Добавить("Сотрудник"); тзДни.Колонки.Добавить("Дней"); тзДни.Колонки.Добавить("Часов"); КонецЦикла; Что цикл то делает?  | 
|||
| 
    3
    
        Tanis    
     17.01.13 
            ✎
    12:15 
 | 
         
        Исправлен на 
  
        тзДни = Новый ТаблицаЗначений; тзДни.Колонки.Добавить("Период"); тзДни.Колонки.Добавить("Сотрудник"); тзДни.Колонки.Добавить("Дней"); тзДни.Колонки.Добавить("Часов"); Пока Выборка.Следующий() Цикл //Период = Выборка.Период; //Сотрудник = Выборка.Сотрудник; //Дней = Выборка.Дней; //Часов = Выборка.Часов; НоваяСтрока = тзДни.Добавить(); НоваяСтрока.Период = Выборка.Период; НоваяСтрока.Сотрудник = Выборка.Сотрудник; НоваяСтрока.Дней = Выборка.Дней; НоваяСтрока.Часов = Выборка.Часов; КонецЦикла;  | 
|||
| 
    4
    
        Tanis    
     17.01.13 
            ✎
    12:16 
 | 
         
        Хочу в таблицу занести данные, потом из нее заполнить таблицу расчета.     
         | 
|||
| 
    5
    
        fmrlex    
     17.01.13 
            ✎
    12:18 
 | 
         
        (4) Ну вижу в цикле создаешь на каждой итерации таблицу значений и создаешь в ней колонки. А данные в таблицу засовывать собираешься?     
         | 
|||
| 
    6
    
        Tanis    
     17.01.13 
            ✎
    12:21 
 | 
         
        а как? он из запроса не проставляет данные?     
         | 
|||
| 
    7
    
        Tanis    
     17.01.13 
            ✎
    12:23 
 | 
         
        получает он там данные, и таблица нормальная выводится     
         | 
|||
| 
    8
    
        fmrlex    
     17.01.13 
            ✎
    12:25 
 | 
         
        тзДни как заполняется? Данными я имею в виду.     
         | 
|||
| 
    9
    
        vah1    
     17.01.13 
            ✎
    12:26 
 | 
         
        (0) ты лучше сразу в отчет свои данные подставляй, нафига в выборку-то тыкать     
         | 
|||
| 
    10
    
        fmrlex    
     17.01.13 
            ✎
    12:28 
 | 
         
        (3) а все, вижу     
         | 
|||
| 
    11
    
        Tanis    
     17.01.13 
            ✎
    12:32 
 | 
         
        Все, вопрос решен. Всем спасибо. Решение.
  
        Процедура ЗаполнитьДниИЧасы(Кнопка) Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ | РабочееВремяРаботниковОрганизаций.Сотрудник КАК Сотрудник, | СУММА(РабочееВремяРаботниковОрганизаций.Дней) КАК Дней, | СУММА(РабочееВремяРаботниковОрганизаций.Часов) КАК Часов, | МЕСЯЦ(РабочееВремяРаботниковОрганизаций.Период) КАК Период |ИЗ | РегистрНакопления.РабочееВремяРаботниковОрганизаций КАК РабочееВремяРаботниковОрганизаций | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КлассификаторИспользованияРабочегоВремени КАК КлассификаторИспользованияРабочегоВремени | ПО РабочееВремяРаботниковОрганизаций.ВидИспользованияРабочегоВремени = КлассификаторИспользованияРабочегоВремени.Ссылка |ГДЕ | РабочееВремяРаботниковОрганизаций.Сотрудник = &Сотрудник | И РабочееВремяРаботниковОрганизаций.Период МЕЖДУ &ДатаН И &ДатаК | И (РабочееВремяРаботниковОрганизаций.ВидИспользованияРабочегоВремени.Наименование = ""Явка"" | ИЛИ РабочееВремяРаботниковОрганизаций.ВидИспользованияРабочегоВремени.Наименование = ""Простой, не зависящий от работодателя и работника"" | ИЛИ РабочееВремяРаботниковОрганизаций.ВидИспользованияРабочегоВремени.Наименование = ""Ремонт 75%т.с."" | ИЛИ РабочееВремяРаботниковОрганизаций.ВидИспользованияРабочегоВремени.Наименование = ""ТО 100%."") | |СГРУППИРОВАТЬ ПО | РабочееВремяРаботниковОрганизаций.Сотрудник, | МЕСЯЦ(РабочееВремяРаботниковОрганизаций.Период)"; Запрос.УстановитьПараметр("Сотрудник", Сотрудник); Запрос.УстановитьПараметр("ДатаН", ПериодРасчетаСреднегоЗаработкаНачало); Запрос.УстановитьПараметр("ДатаК", ПериодРасчетаСреднегоЗаработкаОкончание); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); тзДни = Новый ТаблицаЗначений; тзДни.Колонки.Добавить("Период"); тзДни.Колонки.Добавить("Сотрудник"); тзДни.Колонки.Добавить("Дней"); тзДни.Колонки.Добавить("Часов"); Пока Выборка.Следующий() Цикл НоваяСтрока = тзДни.Добавить(); НоваяСтрока.Период = Выборка.Период; НоваяСтрока.Сотрудник = Выборка.Сотрудник; НоваяСтрока.Дней = Выборка.Дней; НоваяСтрока.Часов = Выборка.Часов; КонецЦикла; РасчетСреднего1 = ЭтотОбъект.РасчетСреднего; Для Каждого СтрокаДокумента ИЗ РасчетСреднего1 Цикл Если СтрокаДокумента.ВидРасчета <> ПланыВидовРасчета.СреднийЗаработок.ПоЗаработкуИндексируемые Тогда Продолжить; КонецЕсли; ПериодРасч = Месяц(СтрокаДокумента.БазовыйПериодКонец); НайденнаяСтрока = тзДни.Найти(ПериодРасч, "Период"); Если НайденнаяСтрока <> Неопределено Тогда СтрокаДокумента.ОтработаноДней = НайденнаяСтрока.Дней; СтрокаДокумента.ОтработаноЧасов = НайденнаяСтрока.Часов; КонецЕсли; КонецЦикла; КонецПроцедуры  | 
|||
| 
    12
    
        Tanis    
     17.01.13 
            ✎
    12:32 
 | 
         
        В какой отчет? Выборку, чтоб выбрать...     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |