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

1C-Бухгалтерия Формирование книги покупок.

Автор Ice-Dragon1988, 01 дек 2011, 12:23

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

Ice-Dragon1988

Помогите оптимизировать код заполнения книги покупок.Жду предложений. Спасибо.

Процедура Заполнить()   
   Док=СоздатьОбъект("Документ");
   сзСтрСовпадения=СоздатьОбъект("СписокЗначений");
   
   Если ТекущийДокумент().Проведен()=1 Тогда
      Предупреждение("Заполнить можно только не проведенный документ");
      СтатусВозврата(0);
      Возврат;
   КонецЕсли;
   
   СпрСтавкиНДС = СоздатьОбъект("Справочник.СтавкиНДС");                 
   Если   СпрСтавкиНДС.НайтиПоНаименованию("Расчетная ставка") = 1 Тогда
      РасчСтавка = СпрСтавкиНДС.ТекущийЭлемент();
   Иначе Сообщить("Внесите Расчетную ставку в справочник СтавкиНДС");
   КонецЕсли;                                                           
   
   тзТаблЧасть=СоздатьОбъект("ТаблицаЗначений");
   ВыгрузитьТабличнуюЧасть(тзТаблЧасть);
   Стр=1;
   УдаленоСтр=0;   
   КоличествоСтр=тзТаблЧасть.КоличествоСтрок();
   Состояние("Обработка табличной части (процент загрузки убран с целью более быстрого формирования отчета)"); //Чижиков 15.11.2011 добавлено
   Пока Стр<=тзТаблЧасть.КоличествоСтрок() Цикл
      Если тзТаблЧасть.ПолучитьЗначение(Стр,"РучнаяЗапись")=Перечисление.Булево.Да Тогда
         Стр=Стр+1;
         Состояние("Обработка табличной части: "+Окр(Стр/?(тзТаблЧасть.КоличествоСтрок()=0,Стр,тзТаблЧасть.КоличествоСтрок())*100)+" %."); 
      Иначе
         тзТаблЧасть.УдалитьСтроку(Стр);
         УдаленоСтр=УдаленоСтр+1;                                                                                   
         Состояние("Обработка табличной части: "+Окр(УдаленоСтр/?(КоличествоСтр=0,?(УдаленоСтр=0,1,УдаленоСтр),КоличествоСтр)*100)+" %."); 
      КонецЕсли;
   КонецЦикла;
   ЗагрузитьТабличнуюЧасть(тзТаблЧасть);
   
   Таб=СоздатьОбъект("ТаблицаЗначений");
   Таб.НоваяКолонка("Контрагент","Справочник.Контрагенты");
   Таб.НоваяКолонка("Основание","Справочник.Договора");
   Таб.НоваяКолонка("ПлатДок");
   Таб.НоваяКолонка("ДокументПоставкиГИППО");
   Таб.НоваяКолонка("Выписка");
   Таб.НоваяКолонка("Сумма","Число");
   Таб.НоваяКолонка("Осталось","Число");

   Ит=СоздатьОбъект("БухгалтерскиеИтоги");
   Ит.ИспользоватьСубконто(ВидыСубконто.Контрагенты);
   Ит.ИспользоватьСубконто(ВидыСубконто.Основание);
   Ит.ИспользоватьСубконто(ВидыСубконто.ПлатДок);
   Ит.ВыполнитьЗапрос(ДатаС,ДатаПо,"П60",,,,"Операция");
   Ит.ВыбратьСубконто();
   Пока Ит.ПолучитьСубконто()=1 Цикл
      Ит.ВыбратьСубконто(2);
      Пока Ит.ПолучитьСубконто(2)=1 Цикл
         Ит.ВыбратьСубконто(3);
         Пока Ит.ПолучитьСубконто(3)=1 Цикл
            Если Ит.Субконто(3).Выбран()=1 Тогда                   
               Док.НайтиДокумент(Ит.Субконто(3).ТекущийДокумент());
            КонецЕсли;                                           
                                                                                             
            СтрСостояние="Формирование оплат: ";                
            Для Поз=1 По 3 Цикл                                   
               СтрСостояние=СтрСостояние+Ит.Субконто(Поз);
            КонецЦикла;                                           
            Состояние(СтрСостояние);                             
            
            Выписка="";
            Ит.ВыбратьПериоды();
            Пока Ит.ПолучитьПериод()=1 Цикл
               Если Ит.Операция.Документ.Вид()="Выписка" Тогда
                  Выписка=Ит.Операция.Документ.ТекущийДокумент();
                  Прервать;
               КонецЕсли;
            КонецЦикла;
            
            СоздаватьСтрокуТЗ=1;
            Если Док.Выбран()=1 Тогда     
                    Док.ВыбратьСтроки();
               Пока Док.ПолучитьСтроку()=1 Цикл
                  СоздаватьСтрокуТЗ=0;
                  Таб.НоваяСтрока();                   
                  Таб.Контрагент=Ит.Субконто();
                  Таб.Основание=Ит.Субконто(2);
                  Таб.ПлатДок=Док.ТекущийДокумент();
                  Таб.Выписка=Выписка;
                  Таб.Сумма=Ит.СКД();
                  Таб.Осталось=Ит.СКД();
                  Попытка
                     Таб.ДокументПоставкиГиппо=Док.ДокументПоставкиГиппо;
                  Исключение
                     Попытка
                        Таб.ДокументПоставкиГиппо=Док.Поставка;
                     Исключение
                     КонецПопытки;
                  КонецПопытки;                         
               КонецЦикла; 
            КонецЕсли;                   
            Если СоздаватьСтрокуТЗ=0 Тогда Продолжить КонецЕсли;
            Таб.НоваяСтрока();                   
            Таб.Контрагент=Ит.Субконто();
            Таб.Основание=Ит.Субконто(2);
            Таб.ПлатДок=Док.ТекущийДокумент();
            Таб.Выписка=Выписка;
            Таб.Сумма=Ит.СКД();
            Таб.Осталось=Ит.СКД();
            Попытка
               Таб.ДокументПоставкиГиппо=Док.ДокументПоставкиГиппо;
            Исключение
               Попытка
                  Таб.ДокументПоставкиГиппо=Док.Поставка;
               Исключение
               КонецПопытки;
            КонецПопытки;                       
         КонецЦикла;
      КонецЦикла;
   КонецЦикла;
   Таб.Сортировать("Контрагент,Основание,ПлатДок,Сумма");
   Состояние("Заполнение документа");  //Чижиков 15.11.2011   добавлено
   Ит.ИспользоватьСубконто(ВидыСубконто.Контрагенты);
   Ит.ИспользоватьСубконто(ВидыСубконто.Основание);
   Ит.ИспользоватьСубконто(ВидыСубконто.СчетНДС,ПризнакНДС);
   Ит.ИспользоватьСубконто(ВидыСубконто.ПриходДокумент);
   Ит.ИспользоватьСубконто(ВидыСубконто.СтавкиНДС);
   Ит.ВыполнитьЗапрос(ДатаС,ДатаПо,"Т60");
   Ит.ВыбратьСубконто(1);
   Пока Ит.ПолучитьСубконто(1)=1 Цикл
      Ит.ВыбратьСубконто(2);
      Пока Ит.ПолучитьСубконто(2)=1 Цикл
         Ит.ВыбратьСубконто(3);
         Пока Ит.ПолучитьСубконто(3)=1 Цикл
            Если (Ит.Субконто(3).Код = "18.8.1") или (Ит.Субконто(3).Код = "18.8.10") Тогда
               Продолжить; //в книгу покупок не попадает
            КонецЕсли;
            Ит.ВыбратьСубконто(4,,,,,"ДатаДок");
            Пока Ит.ПолучитьСубконто(4)=1 Цикл
               Если (Найти("ПлатежноеТребованиеНПлатежноеПоручение",Ит.Субконто(4).Вид())>0) Или (ПустоеЗначение(Ит.Субконто(4).Вид())=1) Тогда     
                  Продолжить;
               КонецЕсли;
               
               СуммаНДС=Ит.КО("К");
               
               Если (Ит.КО("С")<>0) или (Ит.КО("К")<>0) Тогда //временно по "К" много хвостов
                  НоваяСтрока();
                  НомерОпл="";
                  СуммаОпл=0;
                  Контрагент=Ит.Субконто(1);
                  Основание=Ит.Субконто(2);
                  ДокПр=Ит.Субконто(4);
                  ДатаПР=ДокПр.ДатаДок;
                  НомерПР=ПредставлениеДокумента(ДокПр,1);
                  
                  СтоимостьБезНДС=0;
                  Ит.ВыбратьСубконто(5);
                  Пока Ит.ПолучитьСубконто(5)=1 Цикл
                     СтрСостояние="Заполнение: ";               
                     Для Поз=1 По 5 Цикл                        
                        СтрСостояние=СтрСостояние+Ит.Субконто(Поз);   
                     КонецЦикла;                                   
                     Состояние(СтрСостояние);                     
                     
                     СтавкаНДС=Ит.Субконто(5).Ставка; 
                     
                     Если Ит.Субконто(5) = РасчСтавка Тогда      //*** 140110 
                        СтавкаНДС  = 999;
                     КонецЕсли;                                               
                     
                     РФ=0;
                     Попытка
                        РФ=ДокПр.РФ;
                     Исключение
                     КонецПопытки;
                     
                     Если СтавкаНДС=0 Тогда
                        СтоимостьБезНДС=СтоимостьБезНДС+Ит.КО();
                     Иначе
                        Если РФ=0 Тогда
                           Если СтавкаНДС=10 Тогда
                              Стоимость10=Стоимость10+?((Ит.КО("С") = 0) И (Ит.КО("К") <> 0),Окр(Ит.КО("К")*(100+СтавкаНДС)/СтавкаНДС),Ит.КО("С")) - Ит.КО("К");
                              СуммаНДС10=СуммаНДС10+Мин(Ит.КО("К"),СуммаНДС);
                              Стоимость10 = Макс(Стоимость10,0);
                           ИначеЕсли (СтавкаНДС = 18) или  (СтавкаНДС = 20) или  (СтавкаНДС = 999) или (СтавкаНДС =  16.67) Тогда       //*** 140110   
                              Стоимость20=Стоимость20+?((Ит.КО("С") = 0) И (Ит.КО("К") <> 0),Окр(Ит.КО("К")*(100+СтавкаНДС)/СтавкаНДС),Ит.КО("С")) - Ит.КО("К");
                              СуммаНДС20=СуммаНДС20+Мин(Ит.КО("К"),СуммаНДС);
                              Стоимость20 = Макс(Стоимость20,0);
                           Иначе  //***
                              Сообщить("Другая ставка - "+СтавкаНДС+ "   " + Ит.Субконто(1)+ "  " + Ит.Субконто(2)+ "  " +Ит.Субконто(3)+ "  " + Ит.Субконто(4)+ "  " + Ит.Субконто(5));
                           КонецЕсли;
                        Иначе
                           СтоимостьРФ=СтоимостьРФ+?((Ит.КО("С") = 0) И (Ит.КО("К") <> 0),Окр(Ит.КО("К")*(100+СтавкаНДС)/СтавкаНДС),Ит.КО("С")) - Ит.КО("К");
                           СуммаНДСРФ=СуммаНДСРФ+Мин(Ит.КО("К"),СуммаНДС);
                           СтоимостьРФ = Макс(СтоимостьРФ,0);
                        КонецЕсли;
                     КонецЕсли;
                  КонецЦикла;//Пока Ит.ПолучитьСубконто(4)=1 Цикл
                  
                                    
                  СуммаПР=Ит.КО("С");
                  ВсегоПокупок = Стоимость10+СуммаНДС10+Стоимость20+СуммаНДС20+СтоимостьРФ+СуммаНДСРФ+СтоимостьБезНДС;
                  ОсталосьЗакрытьПокупок=ВсегоПокупок;
                  Стр=0;
                  КоличествоСтрок=Таб.КоличествоСтрок(); 
                  Если Таб.НайтиЗначение(Ит.Субконто(),Стр,"Контрагент")=1 Тогда
                     Пока Ит.Субконто()=Таб.ПолучитьЗначение(Стр,"Контрагент") Цикл
                        Если (ОсталосьЗакрытьПокупок<=0) Или (Таб.ПолучитьЗначение(Стр,"Осталось")<=0) Тогда   
                           Стр=Стр+1;
                           Если Стр>КоличествоСтрок Тогда Прервать КонецЕсли; 
                           Продолжить;
                        КонецЕсли;                                                                             
                  
                        Если Ит.Субконто(2)=Таб.ПолучитьЗначение(Стр,"Основание") Тогда
                           СтрНачала=Стр;
                           сзСтрСовпадения.УдалитьВсе();
                           ДобавлятьСтроку=0;
                           //Проверка на непосредственное указание документа поступления в документе оплаты
                           _Стр=0;
                           Если Таб.НайтиЗначение(ДокПр,_Стр,"ДокументПоставкиГиппо")=1 Тогда
                              ДокументПоставкиГиппо=Таб.ПолучитьЗначение(_Стр,"ДокументПоставкиГиппо");
                              Пока ДокументПоставкиГиппо=Таб.ПолучитьЗначение(_Стр,"ДокументПоставкиГиппо") Цикл
                                 Если ДобавлятьСтроку=1 Тогда НоваяСтрокаДок(Ит) КонецЕсли;
                                 ДокОпл=Таб.ПолучитьЗначение(_Стр,"ПлатДок");
                                 ДатаОпл=?(ПустоеЗначение(Таб.ПолучитьЗначение(_Стр,"Выписка"))=0,Таб.ПолучитьЗначение(_Стр,"Выписка").ДатаДок,Таб.ПолучитьЗначение(_Стр,"ПлатДок").ДатаДок);
                                 НомерОпл="№"+СокрЛП(Строка(Таб.ПолучитьЗначение(_Стр,"ПлатДок").НомерДок));
                                 СуммаОпл=Мин(Таб.ПолучитьЗначение(_Стр,"Осталось"),ОсталосьЗакрытьПокупок);
                                 Таб.УстановитьЗначение(_Стр,"Осталось",Таб.ПолучитьЗначение(_Стр,"Осталось")-СуммаОпл);
                                 ОсталосьЗакрытьПокупок=ОсталосьЗакрытьПокупок-СуммаОпл;
                                 сзСтрСовпадения.Установить(_Стр,_Стр);
                                 Сопоставлено=1;
                                 ДобавлятьСтроку=1;
                                 _Стр=_Стр+1;
                                 Если (_Стр>КоличествоСтрок) Или (ОсталосьЗакрытьПокупок=0) Тогда Прервать КонецЕсли;   
                              КонецЦикла;
                           КонецЕсли;
                           Если ОсталосьЗакрытьПокупок<>0 Тогда
                              //Проверка на полное совпадение
                              Пока Ит.Субконто(2)=Таб.ПолучитьЗначение(Стр,"Основание") Цикл
                                 Если сзСтрСовпадения.НайтиЗначение(Стр)>0 Тогда
                                    Стр=Стр+1;
                                    Если Стр>КоличествоСтрок Тогда Прервать КонецЕсли; /
                                    Продолжить;
                                 КонецЕсли;
                                 Если Таб.ПолучитьЗначение(Стр,"Осталось")=ОсталосьЗакрытьПокупок Тогда
                                    Если ДобавлятьСтроку=1 Тогда НоваяСтрокаДок(Ит) КонецЕсли;
                                    ДокОпл=Таб.ПолучитьЗначение(Стр,"ПлатДок");
                                    ДатаОпл=?(ПустоеЗначение(Таб.ПолучитьЗначение(Стр,"Выписка"))=0,Таб.ПолучитьЗначение(Стр,"Выписка").ДатаДок,Таб.ПолучитьЗначение(Стр,"ПлатДок").ДатаДок);
                                    НомерОпл="№"+СокрЛП(Строка(Таб.ПолучитьЗначение(Стр,"ПлатДок").НомерДок));
                                    СуммаОпл=Мин(Таб.ПолучитьЗначение(Стр,"Осталось"),ОсталосьЗакрытьПокупок);
                                    Таб.УстановитьЗначение(Стр,"Осталось",Таб.ПолучитьЗначение(Стр,"Осталось")-СуммаОпл);
                                    ОсталосьЗакрытьПокупок=ОсталосьЗакрытьПокупок-СуммаОпл;
                                    сзСтрСовпадения.Установить(Стр,Стр);
                                    Сопоставлено=0;
                                    ДобавлятьСтроку=1;
                                    Прервать;
                                 КонецЕсли;
                                 Стр=Стр+1;
                                 Если Стр>КоличествоСтрок Тогда Прервать КонецЕсли;
                              КонецЦикла;
                              
                              
                              Если ОсталосьЗакрытьПокупок>0 Тогда
                                 Стр=СтрНачала;
                                 Если сзСтрСовпадения.НайтиЗначение(Стр)>0 Тогда
                                    Стр=Стр+1;
                                    Если Стр>КоличествоСтрок Тогда Прервать КонецЕсли; 
                                    Продолжить;
                                 КонецЕсли;
                                 Пока Ит.Субконто(2)=Таб.ПолучитьЗначение(Стр,"Основание") Цикл
                                    Если (ОсталосьЗакрытьПокупок<=0) Или (Таб.ПолучитьЗначение(Стр,"Осталось")<=0) Тогда   
                                       Стр=Стр+1;
                                       Если Стр>КоличествоСтрок Тогда Прервать КонецЕсли; 
                                       Продолжить;
                                    КонецЕсли;                                                                             
                                 Если ДобавлятьСтроку=1 Тогда НоваяСтрокаДок(Ит) КонецЕсли;
                                    ДокОпл=Таб.ПолучитьЗначение(Стр,"ПлатДок");
                                    ДатаОпл=?(ПустоеЗначение(Таб.ПолучитьЗначение(Стр,"Выписка"))=0,Таб.ПолучитьЗначение(Стр,"Выписка").ДатаДок,Таб.ПолучитьЗначение(Стр,"ПлатДок").ДатаДок);
                                    НомерОпл="№"+СокрЛП(Строка(Таб.ПолучитьЗначение(Стр,"ПлатДок").НомерДок));
                                    СуммаОпл=Мин(Таб.ПолучитьЗначение(Стр,"Осталось"),ОсталосьЗакрытьПокупок);
                                    Таб.УстановитьЗначение(Стр,"Осталось",Таб.ПолучитьЗначение(Стр,"Осталось")-СуммаОпл);
                                    ОсталосьЗакрытьПокупок=ОсталосьЗакрытьПокупок-СуммаОпл;
                                    ДобавлятьСтроку=1;
                                    Сопоставлено=0;
                                    Стр=Стр+1;
                                    Если Стр>КоличествоСтрок Тогда Прервать КонецЕсли; 
                                 КонецЦикла;
                              КонецЕсли;
                           КонецЕсли;
                        Иначе
                           Стр=Стр+1;
                        КонецЕсли;
                        Если Стр>КоличествоСтрок Тогда Прервать КонецЕсли; 
                     КонецЦикла;
                  КонецЕсли; 
                  //Возвраты
               ИначеЕсли (Ит.ДО("С")<>0) или (Ит.ДО("К")<>0) Тогда
                  Если Ит.Субконто(4).вид() = "РТ_ВозвратПостащику" Тогда
                     Если Ит.Субконто(1).ВидКонтрагента=Перечисление.ВидыКонтрагентов.ОсобыеЗаказчики Тогда
                        Продолжить;
                     КонецЕсли;
                     НоваяСтрока();
                     НомерОпл="";
                     СуммаОпл=0;
                     Контрагент=Ит.Субконто(1);
                     Основание=Ит.Субконто(2);
                     ДокПр=Ит.Субконто(4);
                     ДатаПР=ДокПр.ДатаДок;
                     НомерПР=ПредставлениеДокумента(ДокПр,1);
                     СуммаНДС=Ит.ДО("К");
                     
                     СтоимостьБезНДС=0;
                     Ит.ВыбратьСубконто(5);
                     Пока Ит.ПолучитьСубконто(5)=1 Цикл
                        СтавкаНДС=Ит.Субконто(5).Ставка;
                        
                        Если Ит.Субконто(5) = РасчСтавка Тогда      //*** 140110     
                           СтавкаНДС  = 999;
                        КонецЕсли;                                                   
                        
                        РФ=0;
                        Попытка
                           РФ=ДокПр.РФ;
                        Исключение
                        КонецПопытки;
                        
                        Если СтавкаНДС=0 Тогда
                           СтоимостьБезНДС=СтоимостьБезНДС+Ит.КО();
                        Иначе
                           Если РФ=0 Тогда
                              Если СтавкаНДС=10 Тогда
                                 Стоимость10=Стоимость10+?((Ит.ДО("С") = 0) И (Ит.ДО("К") <> 0),Окр(Ит.ДО("К")*(100+СтавкаНДС)/СтавкаНДС),Ит.ДО("С")) - Ит.ДО("К");
                                 СуммаНДС10=СуммаНДС10+Ит.ДО("К");
                                 //СуммаНДС10=СуммаНДС10+Мин(Ит.ДО("К"),СуммаНДС);
                                 //Стоимость10 = Макс(Стоимость10,0);
                              ИначеЕсли (СтавкаНДС = 18) или  (СтавкаНДС = 20) или  (СтавкаНДС = 999) или (СтавкаНДС =  16.67) Тогда       //*** 140110   
                                 Стоимость20=Стоимость20+?((Ит.ДО("С") = 0) И (Ит.ДО("К") <> 0),Окр(Ит.ДО("К")*(100+СтавкаНДС)/СтавкаНДС),Ит.ДО("С")) - Ит.ДО("К");
                                 СуммаНДС20=СуммаНДС20+Ит.ДО("К");
                                 //СуммаНДС20=СуммаНДС20+Мин(Ит.ДО("К"),СуммаНДС);
                                 //Стоимость20 = Макс(Стоимость20,0);
                              Иначе //***
                                 Сообщить("Другая ставка - " + СтавкаНДС  + "   " + Ит.Субконто(1)+ "  " + Ит.Субконто(2) + "  " + Ит.Субконто(3) + "  " + Ит.Субконто(4) + "  " + Ит.Субконто(5));
                              КонецЕсли;
                           Иначе
                              СтоимостьРФ=СтоимостьРФ+?((Ит.ДО("С") = 0) И (Ит.ДО("К") <> 0),Окр(Ит.ДО("К")*(100+СтавкаНДС)/СтавкаНДС),Ит.ДО("С")) - Ит.ДО("К");
                              СуммаНДСРФ=СуммаНДСРФ+Мин(Ит.ДО("К"),СуммаНДС);
                              //СтоимостьРФ = Макс(СтоимостьРФ,0);
                           КонецЕсли;
                        КонецЕсли;
                     КонецЦикла;//Пока Ит.ПолучитьСубконто(4)=1 Цикл
                     
                     СуммаПР=Ит.ДО("С");
                     ВсегоПокупок = Стоимость10+СуммаНДС10+Стоимость20+СуммаНДС20+СтоимостьРФ+СуммаНДСРФ+СтоимостьБезНДС;
                  КонецЕсли;
               КонецЕсли;//Если (Ит.КО("С")<>0) Тогда
            КонецЦикла;//Пока Ит.ПолучитьСубконто(4)=1 Цикл
         КонецЦикла;//Пока Ит.ПолучитьСубконто(3)=1 Цикл
      КонецЦикла;//Пока Ит.ПолучитьСубконто(2)=1 Цикл
   КонецЦикла;//Пока Ит.ПолучитьСубконто(1)=1 Цикл

   //выбираем З18
   Ит.ИспользоватьСубконто(ВидыСубконто.Контрагенты);
   Ит.ИспользоватьСубконто(ВидыСубконто.ПриходДокумент);
   Ит.ИспользоватьСубконто(ВидыСубконто.ПлатДок);
   Ит.Опции(1,1);
   Ит.ВыполнитьЗапрос(ДатаС,ДатаПо,СчетПоКоду("З18"));
   Ит.ВыбратьСубконто(1);
   Пока Ит.ПолучитьСубконто(1)=1 Цикл
      Ит.ВыбратьСубконто(2);
      Пока Ит.ПолучитьСубконто(2)=1 Цикл
         Ит.ВыбратьСубконто(3,,,,,"ДатаДок");
         Пока Ит.ПолучитьСубконто(3)=1 Цикл
            Если Ит.КО("С")<>0 Тогда
               НоваяСтрока();
               Контрагент=Ит.Субконто(1);
               
               ДокПр=Ит.Субконто(2);
               ДатаПР=ДокПр.ДатаДок;
               НомерПР=ПредставлениеДокумента(ДокПр,1);
               ДокОпл=Ит.Субконто(3);
               ДатаОпл=ДокОпл.ДатаДок;
               НомерОпл="№"+ДокОпл.НомерДок;
               
               РФ=0;
               Попытка
                  РФ=ДокПр.РФ;
               Исключение
               КонецПопытки;
               
               Если РФ=0 Тогда
                  СуммаНДС20=Ит.КО("С");
               Иначе
                  СуммаНДСРФ=Ит.КО("С");
               КонецЕсли;
            КонецЕсли;//Если Ит.КО("С")<>0 Тогда
         КонецЦикла;//Пока Ит.ПолучитьСубконто(3)=1 Цикл
      КонецЦикла;//Пока Ит.ПолучитьСубконто(2)=1 Цикл
   КонецЦикла;//Пока Ит.ПолучитьСубконто(1)=1 Цикл     
КонецПроцедуры

Теги:

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

Рейтинг@Mail.ru

Поиск