7.7 Расчетный листок

Тема в разделе "Отчеты и обработки для "1С:Предприятие 7.7"", создана пользователем Mitay_D, 5 авг 2010.

  1. TopicStarter Overlay
    Mitay_D
    Offline

    Mitay_D Опытный в 1С

    Регистрация:
    16 фев 2010
    Сообщения:
    314
    Симпатии:
    0
    Баллы:
    26
    Код:
     
    Сумма1 = 0;  
    Сумма = 0;  
    н = 0;
    Пока Запрос1.Группировка(1) = 1 Цикл  
    Пока Запрос1.Группировка(2) = 1 Цикл
    Пока Запрос1.Группировка(3) = 1 Цикл       
    Если (Сводно = 1) и (ПоМесяцам = 1) Тогда
    Пока Запрос1.Группировка(4) = 1 Цикл
    Пока Запрос1.Группировка(5) = 1 Цикл
    ВыбраныйДокумент = Запрос1.ТекущийДокумент; 
    Если ((ВыбраныйДокумент.Вид() = "НакопленнаяЗадолженность") или (ВыбраныйДокумент.Вид() = "ВводНачальногоСальдо"))
    и (СписокДокНакЗадолж.Принадлежит(ВыбраныйДокумент) = 1)Тогда
    СписокДокНакЗадолж.ДобавитьЗначение(ВыбраныйДокумент);  
    КонецЕсли;
    КонецЦикла;
    КонецЦикла;
    Иначе  
    
    Пока Запрос1.Группировка(4) = 1 Цикл
    н=н+1; 
    Если Запрос1.Сотрудник = Сотрудник Тогда 
    ТЗ.НоваяСтрока();    
    ВыбраныйДокумент = Запрос1.ТекущийДокумент;
    Если ((ВыбраныйДокумент.Вид() = "НакопленнаяЗадолженность") или (ВыбраныйДокумент.Вид() = "ВводНачальногоСальдо"))
    и (СписокДокНакЗадолж.Принадлежит(ВыбраныйДокумент) = 1)Тогда
    СписокДокНакЗадолж.ДобавитьЗначение(ВыбраныйДокумент);   
    КонецЕсли;   
    ТЗ.Сотрудник = Запрос1.Сотрудник;
    НаименованиеДокумента = Запрос1.ТекущийДокумент;
    ТЗ.НаименованиеДокумента = НаименованиеДокумента; 
    Сумма = Запрос1.Результат; 
    ТЗ.Сумма = Сумма;
    Если Н=1 Тогда
    Сумма1=ТЗ.Сумма;
    Иначе
    Сумма=Сумма+ТЗ.Сумма;
    КонецЕсли;
    Таблица.ВывестиСекцию("Новая");  
    КонецЕсли;
    КонецЦикла;  
    КонецЕсли;        
    КонецЦикла; 
    КонецЦикла;
    КонецЦикла;   
    
    
    Выводит последнее значение в цикле в два раза больше. первые 2-а - правильные, а последнее нет. может я не туда вставил ваш код?
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Где именно не правильно?
  3. TopicStarter Overlay
    Mitay_D
    Offline

    Mitay_D Опытный в 1С

    Регистрация:
    16 фев 2010
    Сообщения:
    314
    Симпатии:
    0
    Баллы:
    26
    выше находиться код, в который я добавил ваше условие. уточним переменные:
    Сумма - значение непосредственно из запроса, которую мы не изменяем, так как она на нужна объективной какая она и есть
    Сумма1 - разность полученных данных из запроса1, т.е. сумма1 = разности всех сумм (их первого вычитаем последующие) когда значений Сумма больше нет, то тогда выводим значение сумма1
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    В приведенном выше примере отсутствует как раз разность. Т.е. нет
    Код:
    Сумма1=Сумма1-Сумма
    
    
  5. TopicStarter Overlay
    Mitay_D
    Offline

    Mitay_D Опытный в 1С

    Регистрация:
    16 фев 2010
    Сообщения:
    314
    Симпатии:
    0
    Баллы:
    26
    Код:
    Пока Запрос1.Группировка(4) = 1 Цикл
    н=н+1; 
    Если Запрос1.Сотрудник = Сотрудник Тогда 
    ТЗ.НоваяСтрока();    
    ВыбраныйДокумент = Запрос1.ТекущийДокумент;
    Если ((ВыбраныйДокумент.Вид() = "НакопленнаяЗадолженность") или (ВыбраныйДокумент.Вид() = "ВводНачальногоСальдо"))
    и (СписокДокНакЗадолж.Принадлежит(ВыбраныйДокумент) = 1)Тогда
    СписокДокНакЗадолж.ДобавитьЗначение(ВыбраныйДокумент);   
    КонецЕсли;   
    ТЗ.Сотрудник = Запрос1.Сотрудник;
    НаименованиеДокумента = Запрос1.ТекущийДокумент;
    ТЗ.НаименованиеДокумента = НаименованиеДокумента; 
    Сумма = Запрос1.Результат; 
    ТЗ.Сумма = Сумма;
    Если Н=1 Тогда
    Сумма1 = Сумма;  // запоминаем первое значение, чтобы потом вычесть из негу сумму оставшихся данных.   
    Иначе
    Сумма1 = Сумма1-Сумма // записываем в табличную часть значение каждых значений.
    КонецЕсли; 
    Таблица.ВывестиСекцию("Новая");  
    КонецЕсли;
    КонецЦикла;   
    
    
    при таком коде вернулись на то же место от куда и начинали тему. по одному сотруднику выводит все правильно, по нескольким чушь, причем полная, даже не близкая к правде :unsure:
  6. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Разницу нужно учитывать ЗА ЦИКЛОМ. Внутри цикла - суммирование
  7. TopicStarter Overlay
    Mitay_D
    Offline

    Mitay_D Опытный в 1С

    Регистрация:
    16 фев 2010
    Сообщения:
    314
    Симпатии:
    0
    Баллы:
    26
    Огромное спасибо! все получилось, заработало! :aua: :unsure: :smile:

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