Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: В отчете не считает сумму по документам
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
wmatik
1С Предприятие 7.7(сетевая версия) - 7.70.027,Конфигурация: ПУБ (7.70.010)
Есть отчет, в котором в факт должна выводиться сумма по нескольким видам документов: ПриходнаяНакладнаяЗапасы,ПриходнаяНакладнаяГТД,ПриходнаяНакладнаяПрочие и БанковскаяВыписка. Сумма по первым трем видам выводится, а вот Банковской выписки не хочет.
        Если (Док.Вид() = "ПриходнаяНакладнаяЗапасы") ИЛИ
            (Док.Вид() = "ПриходнаяНакладнаяПрочие") ИЛИ
            (Док.Вид() = "ПриходнаяНакладнаяГТД") Тогда
            Док.ВыбратьСтроки();
            Сумма = 0;
            Пока Док.ПолучитьСтроку() = 1 Цикл
                Если ПустоеЗначение(Док.КодДК) = 1 Тогда
                    Продолжить;
                КонецЕсли;
                Если (ПустоеЗначение(ВыбКод) = 0)и((Лев(СокрЛП(Док.КодДК),СтрДлина(СокрЛП(ВыбКод))) <> СокрЛП(ВыбКод))или(СтрДлина(СокрЛП(ВыбКод))>СтрДлина(СокрЛП(Док.КодДК)))) Тогда
                    Продолжить;
                КонецЕсли;
                
                Табл.НоваяСтрока();
                Табл.КодДК = Док.КодДК;
                Сумма=Док.СуммаСНДС;
                //Сумма = глПересчет(Док.СуммаСНДС,Док.Валюта,Док.ДатаДок,Гривня,Док.ДатаДок,Док.ДатаДок);// Док.СуммаСНДС;
                Если ПрошлГод = СокрЛП(ПериодСтр(НачГода(Док.ДатаДок),КонГода(Док.ДатаДок))) Тогда
                    Табл.ПрошлФакт = Сумма;
                ИначеЕсли ЭтотГод = СокрЛП(ПериодСтр(НачГода(Док.ДатаДок),КонГода(Док.ДатаДок))) Тогда
                    Табл.УстановитьЗначение(Табл.КоличествоСтрок(),"мес"+Строка(ДатаМесяц(Док.ДатаДок))+"_факт",Сумма);
                КонецЕсли;
            КонецЦикла;
            
            Иначе  
                Если ПустоеЗначение(Док.ВидыЗакупок) = 1 Тогда
                    Продолжить;
                КонецЕсли;  
                Если (ПустоеЗначение(ВыбКод) = 0)и((Лев(СокрЛП(Док.ВидыЗакупок),СтрДлина(СокрЛП(ВыбКод))) <> СокрЛП(ВыбКод))или(СтрДлина(СокрЛП(ВыбКод))>СтрДлина(СокрЛП(Док.ВидыЗакупок)))) Тогда
                    Продолжить;
                КонецЕсли;
                
                Если Док.Вид() = "БанковскаяВыписка" Тогда
                    Сумма = глПересчет(Док.СуммаСНДС,Док.РСчет.Валюта,Док.ДатаДок,Гривня,Док.ДатаДок,Док.ДатаДок);// Док.СуммаСНДС;
                КонецЕсли;
                Табл.НоваяСтрока();
                Табл.КодДК = Док.ВидыЗакупок;
                Если ПрошлГод = СокрЛП(ПериодСтр(НачГода(Док.ДатаДок),КонГода(Док.ДатаДок))) Тогда
                    Табл.ПрошлФакт = Сумма;
                ИначеЕсли ЭтотГод = СокрЛП(ПериодСтр(НачГода(Док.ДатаДок),КонГода(Док.ДатаДок))) Тогда
                    Табл.УстановитьЗначение(Табл.КоличествоСтрок(),"мес"+Строка(ДатаМесяц(Док.ДатаДок))+"_факт",Сумма);
                КонецЕсли;
            КонецЕсли;
Vofka
А в банковской выписке разве не в табличной части суммы?
wmatik
есть - СуммаСНДС

В общем сделала проще, изменила идентификатор Банковской выписки ВидыЗакупок на КодДК и в итоге:
            Если (Док.Вид() = "БанковскаяВыписка") ИЛИ
            (Док.Вид() = "ПриходнаяНакладнаяЗапасы") ИЛИ
            (Док.Вид() = "ПриходнаяНакладнаяПрочие") ИЛИ
            (Док.Вид() = "ПриходнаяНакладнаяГТД") Тогда
            Док.ВыбратьСтроки();
            Сумма = 0;
            Пока Док.ПолучитьСтроку() = 1 Цикл
                Если ПустоеЗначение(Док.КодДК) = 1 Тогда
                    Продолжить;
                КонецЕсли;
                Если (ПустоеЗначение(ВыбКод) = 0)и((Лев(СокрЛП(Док.КодДК),СтрДлина(СокрЛП(ВыбКод))) <> СокрЛП(ВыбКод))или(СтрДлина(СокрЛП(ВыбКод))>СтрДлина(СокрЛП(Док.КодДК)))) Тогда
                    Продолжить;
                КонецЕсли;
                
                Табл.НоваяСтрока();
                Табл.КодДК = Док.КодДК;
                Сумма=Док.СуммаСНДС;
                //Сумма = глПересчет(Док.СуммаСНДС,Док.Валюта,Док.ДатаДок,Гривня,Док.ДатаДок,Док.ДатаДок);// Док.СуммаСНДС;
                Если ПрошлГод = СокрЛП(ПериодСтр(НачГода(Док.ДатаДок),КонГода(Док.ДатаДок))) Тогда
                    Табл.ПрошлФакт = Сумма;
                ИначеЕсли ЭтотГод = СокрЛП(ПериодСтр(НачГода(Док.ДатаДок),КонГода(Док.ДатаДок))) Тогда
                    Табл.УстановитьЗначение(Табл.КоличествоСтрок(),"мес"+Строка(ДатаМесяц(Док.ДатаДок))+"_факт",Сумма);
                КонецЕсли;
            КонецЦикла;
            КонецЕсли;


Ах да, забыла написать, все считает)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.