Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
14 дек 2024, 22:19

Суммирование цен по строкам

Автор Kamush723, 05 фев 2024, 12:37

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

Kamush723

Здравствуйте.
Делаю печатную форму, необходимо подтянуть сумму каждого гостя. Но по циклу происходит суммирование цены. То есть, получаю сумму одного гостя, и при получении суммы второго гостя первая складывается со второй. Понимаю, где ошибка, но не понимаю, как пофиксить. На скрине красным подписана сумма, которая должна вывестись.

Код:

      Summa = 0; 
       
        vDocument = GetGuests();
   
        TotalSum = 0;     
       
        While vDocument.Count() > n Do 
           
        Guest = vDocument[n].Guest.LastName + " " + vDocument[n].Guest.FirstName + " " + vDocument[n].Guest.SecondName;   
       
        vGuestForm = vTemplate.GetArea("TableBody");   
       
        FirstDate = Format(Document.CheckInDate, "DF=dd.MM.yyyy");
        LastDate = Format(Document.CheckOutDate, "DF=dd.MM.yyyy");
       
        ServicesVT = vDocument[n].Ref.Services.Unload();
        For Each Str in ServicesVT Do
           
            If Str.VATRate.TaxRate = 0 Then
                NDS = 0;
                NDSResult = NDSResult + NDS;
                vGuestForm.Parameters.NDS = "Без НДС";
               
            Else
                NDS = Str.VATSum;
                NDSResult = NDSResult + NDS;
                vGuestForm.Parameters.NDS = NDS * Document.Duration;
               
            EndIf;   
            Quantity = Str.Quantity;
            DiscountSum = Str.DiscountSum;
     
            Summa = Summa + Str.Sum;           //Ошибка тут
            Total = Summa - DiscountSum;
           
        EndDo;
       
        //SumWord = NumberInWords(Number(StrSplit(String(Total), ",")[0]),"Л=ru_RU; ДП=Истина"," , , , , , , , , 0" );
       
        vGuestForm.Parameters.Number = n + 1;
        vGuestForm.Parameters.Subject = Service; 
        vGuestForm.Parameters.AccommodationType = vDocument[n].Ref.AccommodationType;
        vGuestForm.Parameters.RoomType = vDocument[n].Ref.RoomType;
        vGuestForm.Parameters.FirstDate = FirstDate;
        vGuestForm.Parameters.LastDate = LastDate;
        vGuestForm.Parameters.Duration = vDocument[n].Ref.Duration;
        vGuestForm.Parameters.Guest = Guest;
        vGuestForm.Parameters.HotelProduct = vDocument[n].Ref.HotelProduct;
        vGuestForm.Parameters.Count = Format(Quantity, "NFD=3");
        vGuestForm.Parameters.Sum = Format(Summa, "NFD=2");   
        //Sum = vGuestForm.Parameters.Sum;
        Count = vGuestForm.Parameters.Count;
        vGuestForm.Parameters.Total = Total;     
       
        TotalSum = vGuestForm.Parameters.Total;//Format((TotalSum + Sum), "NFD=2");
        //vGuestForm.Parameters.SumRub = Format(VT[n].Sum, "NFD=2");
        //Summa = Summa + VT[n].Sum;   
        //TotalWords = SumWord;     
        //
        pSpreadsheet.Put(vGuestForm);
       
        n = n + 1;

        EndDo;   

antoneus

    Summa = Str.Sum;           
    Total = Total + Summa - DiscountSum;

а, ну и Total надо инициализировать перед циклом, а то ошибка вылезет.

Теги:

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

Рейтинг@Mail.ru

Поиск