Имя: Пароль:
1C
 
округление НДС в документе налоговая накладная
0 Ardov
 
16.10.14
14:03
налоговая накладная, как сделать округление
Всем привет, подскажите пожалуйста, как в налоговой накладной настроить правильно округление? Документ выгружается в медок округление тянет одно а итог другой, рвет на 1 копейку. Я понимаю что нужно сделать два знака после запятой, и вопрос решится, но по некторым причинам это сделать не возможно, можно ли как то программно это сделать?
пробовал при печати выводить три знака, но не помогло, кто сталкивался с таким, подскажите пожалуйста
http://s014.radikal.ru/i328/1410/1f/ba029886ea2f.jpg
http://i008.radikal.ru/1410/6d/ad054a42c5c2.jpg
1 Ardov
 
16.10.14
14:04
1с 7.7
2 Ardov
 
16.10.14
14:09
Перем НачальнаяДатаДокумента;
Перем СтарЧтоПродаем;
Перем СтарыйКонтрагент;
Перем СписокДействий;
Перем СтараяДата;            
Перем СтарВидНДС;
Перем СтарКатегорияЦен;
Перем СтарыйВидОперации;
Перем РеализацияВУкраине;
Перем НоваяНакладная;
Перем ОбновитьБазуНДС;
перем флИзм,фАвто;

Процедура ИзмТипПричины() далее
Процедура ИзмКонтрагент() далее
//========================================
Процедура ЗаполнитьДоговор()
    Если Договор.Выбран()=1 тогда
        ДатаДог = Договор.ДатаДок;
        НомДог = СокрЛП(Договор.НомерДоговора);
        ВидДоговора="Договір поставки" ;
    иначе
        ВидДоговора="Договір поставки";
        ДатаДог = "          ";
        НомДог = "                 ";
    Конецесли;
КонецПроцедуры

// ===============================
Процедура ВыбратьЛьготу()
Перем Выб;
    Спр = СоздатьОбъект("Справочник.ШкалаСтавок");
    Спис = СоздатьОбъект("СписокЗначений");
    ГрЛьгот = ?(ДатаДок >= '10.01.2011', "ЛьготыНДС2011","ЛьготыНДС");
    Если Спр.НайтиПоКоду(ГрЛьгот) = 1 Тогда
        Льготы = Спр.ТекущийЭлемент();
        Спр.ИспользоватьРодителя(Льготы);
        Спр.ВыбратьЭлементы();
        Пока Спр.ПолучитьЭлемент() = 1 Цикл
            Спис.ДобавитьЗначение(Спр.ТекущийЭлемент());    
        КонецЦикла;
        Выб = ПолучитьПустоеЗначение("Справочник.ШкалаСтавок");
        Выб = ЛьготаНДС; // справочник ТМЦ
        Если Спис.ВыбратьЗначение(Выб,,,,2) = 1 Тогда
            ЛьготаНДС = Выб;
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

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

// ===============================
// Назначение: Пересчет сумм в строке документа
//        
// Аргументы: НоваяЦена - новая цена для текущей строки документа
//        
Процедура ПересчетСтроки(НоваяЦена=0)
    Если Константа.ОсновнаяЦена = Перечисление.ВидыЦенВДокументах.ЦенаБезНДС Тогда
        Если ПустоеЗначение(НоваяЦена) = 0 Тогда                                  
            // определим ставку НДС
            Если ВидНДС = ОсновнаяСтавкаНДС Тогда
                СтавкаНДС = ТМЦ.СтавкаНДС;
            Иначе
                СтавкаНДС = ВидНДС;
            КонецЕсли;
            // устанавливаем цену без НДС
            ЦенаБезНДС = НоваяЦена*100/(глПроцентНДС(СтавкаНДС,ДатаДок)+100);
        КонецЕсли;
        глВыч_Суммы_Накл(Контекст,-1);
    Иначе                    
        Если ПустоеЗначение(НоваяЦена) = 0 Тогда
            ЦенаСНДС = НоваяЦена;
        КонецЕсли;
        глВыч_Суммы_Накл(Контекст,1);
    КонецЕсли;
КонецПроцедуры //ПересчетСтроки

// ===============================
// Назначение: пересчитывает цену и суммы в строке документа по категори цен
//        
Процедура ПресчитатьЦенуПоКатегории()
    ЦенаТовара = глВернутьЦену(ТМЦ, КатегорияЦен);
    Если ПустоеЗначение(ЦенаТовара) = 0 Тогда
        // получим параметры цены
        ЦенаТовара.ИспользоватьДату(ДатаДок);
        ЦенаЦены   = ЦенаТовара.Цена;
        ВалютаЦены = ЦенаТовара.Валюта;
        ЕдЦены       = ЦенаТовара.Единица;
        ЦенаЦены   = ЦенаЦены * Коэффициент / ЕдЦены.Коэффициент;            
        ЦенаЦены   = глПересчет(ЦенаЦены,ВалютаЦены,ДатаДок,Валюта,Курс,Дата_курса);
        ПересчетСтроки(ЦенаЦены);                                                  
    Иначе
        ПересчетСтроки();
    КонецЕсли;
КонецПроцедуры //ПресчитатьЦенуПоКатегории

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

// ===============================
Функция ФРМСумма(ЧислЗнач)
    // без разделения на Триады
    Возврат СокрЛ(Формат(ЧислЗнач,"Ч15.2"));
КонецФункции

// ===============================
Процедура ВыборОплаты()
    // Процедура по кнопке редактирования параметров оплаты в документе
    ОткрытьФормуМодально("Обработка.ИнформацияОВалюте", Контекст);
КонецПроцедуры    

// ===============================
// Назначение: определяет признак розничной продажи конечному потребителю
// Аргументы:    КонечныйПотребитель -  признак продажи в розницу конечному потребителю из документа
//                Док - документ продажи в розницу
// Возвращает:     1 - продажа конечному потребителю
//                0 - продажа не конечному потрбителю
Функция ЭтоКонечныйПотребитель(КонечныйПотребитель,Док)
    Если (ПустоеЗначение(КонечныйПотребитель) = 1)
    И (Док.Вид() = "ОтчетКА") Тогда
        Возврат 1;
    Иначе
        Возврат КонечныйПотребитель;
    КонецЕсли;    
КонецФункции //ЭтоКонечныйПотребитель

// ======================================
Процедура ЗаполнитьРозница()
    
    Предоплата = Перечисление.ВидыТорговли.Предоплата;
    Розн = СоздатьОбъект("Запрос");
    ТекстЗапр =     "//{{ЗАПРОС(Розн)
        |Период с ДатаДок по ДатаДок;
        |ОбрабатыватьДокументы Проведенные;
        |Док                 = Документ.РасходнаяРозничная.ТекущийДокумент,            Документ.ОтчетКА.ТекущийДокумент;
        |Дат                 = Документ.РасходнаяРозничная.ТекущийДокумент.ДатаДок, Документ.ОтчетКА.ТекущийДокумент.ДатаДок;
        |Фрм                 = Документ.РасходнаяРозничная.Фирма,                    Документ.ОтчетКА.Фирма;
        |ВидНДСРозн            = Документ.РасходнаяРозничная.ВидНДС,                    Документ.ОтчетКА.ВидНДС;
        |Скидка                = Документ.РасходнаяРозничная.Скидка;
        
        |КонечныйПотребитель= Документ.РасходнаяРозничная.КонечныйПотребитель;
        |ВидТорговли        = Документ.РасходнаяРозничная.ВидТорговли;    

        |ДокБазаНДС_БезНДС    = Документ.РасходнаяРозничная.БазаНДС1, Документ.ОтчетКА.БазаНДС1;
        |ДокБазаНДС_0        = Документ.РасходнаяРозничная.БазаНДС2, Документ.ОтчетКА.БазаНДС2;
        |ДокБазаНДС_20        = Документ.РасходнаяРозничная.БазаНДС3, Документ.ОтчетКА.БазаНДС3;

        |ДокНДС_БезНДС        = Документ.РасходнаяРозничная.НДС1, Документ.ОтчетКА.НДС1;
        |ДокНДС_0            = Документ.РасходнаяРозничная.НДС2,    Документ.ОтчетКА.НДС2;
        |ДокНДС_20            = Документ.РасходнаяРозничная.НДС3,    Документ.ОтчетКА.НДС3;

        |Функция БазаНДС_БезНДС     = Сумма(ДокБазаНДС_БезНДС)     Когда (ЭтоКонечныйПотребитель(КонечныйПотребитель,Док) = 1);
        |Функция БазаНДС_0             = Сумма(ДокБазаНДС_0)         Когда (ЭтоКонечныйПотребитель(КонечныйПотребитель,Док) = 1);
        |Функция БазаНДС_20         = Сумма(ДокБазаНДС_20)         Когда (ЭтоКонечныйПотребитель(КонечныйПотребитель,Док) = 1);

        |Функция НДС_БезНДС         = Сумма(ДокНДС_БезНДС)     Когда (ЭтоКонечныйПотребитель(КонечныйПотребитель,Док) = 1);
        |Функция НДС_0                 = Сумма(ДокНДС_0)         Когда (ЭтоКонечныйПотребитель(КонечныйПотребитель,Док) = 1);
        |Функция НДС_20             = Сумма(ДокНДС_20)         Когда (ЭтоКонечныйПотребитель(КонечныйПотребитель,Док) = 1);
        
        |Условие(Фрм = Фирма);
        |Условие(ВидНДСРозн = ВидНДС);
        |Условие(ВидТорговли <> Предоплата);
        |"//}}ЗАПРОС
        ;        

    Если Розн.Выполнить(ТекстЗапр)=0 Тогда
        Предупреждение("Не выполнился запрос по розничным накладным!");
        Возврат;
    КонецЕсли;
    
    Если КоличествоСтрок() > 0 Тогда
        Если Вопрос("Очистить табличную часть?","Да+Нет")="Нет" Тогда
            Возврат;
        КонецЕсли;
        УдалитьСтроки();
    КонецЕсли;    
    
    НоваяСтрока();
    
    ТМЦ = Константа.НоменклатураДляННПоРознице;
    НулеваяСтавкаНДС = Нет;
    
    Если ВидНДС = БезНДС тогда
        СуммаСНДС = Розн.БазаНДС_БезНДС;
        НДС = Розн.НДС_БезНДС;
        СуммаБезНДС = СуммаСНДС-НДС;
        СуммаБезСкидки =СуммаСНДС;
        Если Константа.ОсновнаяЦена = Перечисление.ВидыЦенВДокументах.ЦенаСНДС Тогда
            СуммаБезСкидки = СуммаСНДС;
        Иначе
            СуммаБезСкидки = СуммаСНДС/ (1 + ВидНДС.Ставка.Получить(ДатаДок));
        КонецЕсли;    
    ИначеЕсли ВидНДС = ЛьготнаяСтавкаНДС тогда
        СуммаСНДС = Розн.БазаНДС_0;
        НДС = Розн.НДС_0;
        СуммаБезНДС = СуммаСНДС-НДС;
        Если Константа.ОсновнаяЦена = Перечисление.ВидыЦенВДокументах.ЦенаСНДС Тогда
            СуммаБезСкидки = СуммаСНДС;
        Иначе
            СуммаБезСкидки = СуммаСНДС/ (1 + ВидНДС.Ставка.Получить(ДатаДок));
        КонецЕсли;    
    Иначе
        СуммаСНДС = Розн.БазаНДС_20;
        НДС = Розн.НДС_20;
        СуммаБезНДС = СуммаСНДС-НДС;
        Если Константа.ОсновнаяЦена = Перечисление.ВидыЦенВДокументах.ЦенаСНДС Тогда
            СуммаБезСкидки = СуммаСНДС;
        Иначе
            СуммаБезСкидки = СуммаСНДС/ (1 + ВидНДС.Ставка.Получить(ДатаДок));
        КонецЕсли;    
    КонецЕсли;
    
    ЦенаСНДС = СуммаСНДС;
    ЦенаБезНДС = СуммаБезНДС;
                            
    Если ЕстьНулевыеСтавкиНДС = 1 Тогда
        НоваяСтрока();
        ТМЦ = Константа.НоменклатураДляННПоРознице;
        НулеваяСтавкаНДС = Да;
        СуммаСНДС = Розн.БазаНДС_0;
        НДС = Розн.НДС_0;
        СуммаБезНДС = СуммаСНДС-НДС;
        Если Константа.ОсновнаяЦена = Перечисление.ВидыЦенВДокументах.ЦенаСНДС Тогда
            СуммаБезСкидки = СуммаСНДС;
        Иначе
            СуммаБезСкидки = СуммаСНДС/ (1 + ВидНДС.Ставка.Получить(ДатаДок));
        КонецЕсли;
        ЦенаСНДС = СуммаСНДС;
        ЦенаБезНДС = СуммаБезНДС;
    КонецЕсли;
    
    РассчитатьБазуНДС();
    
КонецПроцедуры    


// ======================================
Процедура Заполнить(Док=0)
    Док=ДокументОснование;
    ДокОснование=Док;
    
    Если ПустоеЗначение(ДокументОснование.Договор)=1 тогда
    НомерДог="      ";
    датаДог="          ";
    ВидДоговора="Дого";
    Иначе        
    Договор=Док.Договор;
    НомДог = СокрЛП(Договор.НомерДоговора);
    ДатаДог = Договор.ДатаДок;
    ВидДоговора="Договір поставки" ;
    Конецесли;
//    Если ПустоеЗначение(Док) = 1 Тогда
////        Если (РодительскийДокумент.Выбран() = 1) И (Найти("Счет,РасходнаяНакладная,ЛиквидацияНеоборАктивов,ОказаниеУслуг",РодительскийДокумент.Вид()) > 0) Тогда        
//        Если (РодительскийДокумент.Выбран() = 1) И (Найти("Счет,РасходнаяНакладная,РасходнаяНакладнаяК,ЛиквидацияНеоборАктивов,ОказаниеУслуг",РодительскийДокумент.Вид()) > 0) Тогда
//            ДокОснование = РодительскийДокумент;
//        Иначе
//            ДокОснование = ДокументОснование;
//        КонецЕсли;
//    КонецЕсли;
//    
//    Если ПустоеЗначение(ДокОснование) = 1 Тогда
//        // не удалось выбрать основание для заполнения
//        Возврат;
//    КонецЕсли;
    Если ПустоеЗначение(Док) = 1 Тогда
        Если (РодительскийДокумент.Выбран() = 1) И (Найти("Счет,РасходнаяНакладная,РасходнаяНакладнаяК,ЛиквидацияНеоборАктивов,ОказаниеУслуг",РодительскийДокумент.Вид()) > 0) Тогда
            ДокОснование = РодительскийДокумент;
//--            
            Если ПустоеЗначение(Договор)=1 Тогда
            Договор=ДокОснование.Договор;
                Валюта_Прежн = Валюта;
                Валюта = Договор.Валюта;
                Если Валюта <> Валюта_Прежн Тогда
                    Дата_Курса=ДатаДок;
                    Курс_Прежн = Курс;
                    Курс = глКурсДляВалюты(Валюта,ДатаДок);
                    Если ((Валюта_Прежн <> Валюта) Или (Курс_Прежн <> Курс)) Тогда
                        // что-то изменилось, надо пересчитать цены
                        глУстан_Вал(Контекст, Валюта, Валюта_Прежн, Курс, Курс_Прежн);
                    КонецЕсли;
                КонецЕсли;
            ВидТорговли = Договор.ВидТорговли;
            ИзмВидТорговли();
            ВидНДС = Договор.ВидНДС;
            ИзмРеквизитШапки("ВидНДС");
            ДатаДог = Договор.ДатаДок;
            НомДог = СокрЛП(Договор.НомерДоговора);
                Если (ДокОснование.Вид() = "РасходнаяНакладная") ИЛИ (ДокОснование.Вид() = "РасходнаяНакладнаяК") ИЛИ (ДокОснование.Вид() = "РасходнаяРозничная") Тогда
                УсловиеПродажи="по договору";
                ФормаРасчетов="оплата з поточного рахунку";
                ВидДоговора="Договір поставки" ;
                КонецЕсли;
            КонецЕсли;
            Если ПустоеЗначение(Контрагент)=1 Тогда
                Контрагент=ДокОснование.Контрагент;
                ИзмКонтрагент();
            КонецЕсли;
//--            
        Иначе
            ДокОснование = ДокументОснование;
            Если ПустоеЗначение(Договор)=1 Тогда
            Договор=ДокОснование.Договор;
                Валюта_Прежн = Валюта;
                Валюта = Договор.Валюта;
                Если Валюта <> Валюта_Прежн Тогда
                    Дата_Курса=ДатаДок;
                    Курс_Прежн = Курс;
                    Курс = глКурсДляВалюты(Валюта,ДатаДок);
                    Если ((Валюта_Прежн <> Валюта) Или (Курс_Прежн <> Курс)) Тогда
                        // что-то изменилось, надо пересчитать цены
                        глУстан_Вал(Контекст, Валюта, Валюта_Прежн, Курс, Курс_Прежн);
                    КонецЕсли;
                КонецЕсли;
            ВидТорговли = Договор.ВидТорговли;
            ИзмВидТорговли();
            ВидНДС = Договор.ВидНДС;
            ИзмРеквизитШапки("ВидНДС");
            ДатаДог = Договор.ДатаДок;
            НомДог = СокрЛП(Договор.НомерДоговора);
                Если (ДокОснование.Вид() = "РасходнаяНакладная") ИЛИ (ДокОснование.Вид() = "РасходнаяНакладнаяК") ИЛИ (ДокОснование.Вид() = "РасходнаяРозничная") Тогда
                УсловиеПродажи="по договору";
                ФормаРасчетов="оплата з поточного рахунку";
                ВидДоговора="Договір поставки" ;
                КонецЕсли;
            КонецЕсли;
            Если ПустоеЗначение(Контрагент)=1 Тогда
                Контрагент=ДокОснование.Контрагент;
                ИзмКонтрагент();
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;



    Если Вопрос("Заполнить накладную номенклатурой из документа-основания?","Да+Нет") = "Нет" Тогда
        Возврат;
    КонецЕсли;
    
    УдалитьСтроки();
    ЧтоПродаем = Перечисление.ЧтоПродаем.ТМЦ;
    Если ДокОснование.Вид() = "Счет" Тогда
        ЧтоПродаем = ДокОснование.ЧтоПродаем;
    ИначеЕсли ДокОснование.Вид() = "ЛиквидацияНеоборАктивов" Тогда
        ЧтоПродаем = Перечисление.ЧтоПродаем.НеоборотныеАктивы;
    КонецЕсли;
    
    Попытка
        ВидНДС = ДокОснование.ВидНДС;
    Исключение
        ВидНДС=ОсновнаяСтавкаНДС;
    КонецПопытки;
    НДС20 = ?(СокрЛП(ВидНДС.Код) = "НДС20", 1, 0);
    
    ДокОснование.ВыбратьСтроки();
    // пересчитаем возвратную тару
    СуммаВозвратнойТары = 0;
    
    Пока ДокОснование.ПолучитьСтроку() = 1 Цикл
        // добавим строку
        НоваяСтрока();
        Если ЧтоПродаем = Перечисление.ЧтоПродаем.НеоборотныеАктивы Тогда
            НазначитьВид(ТМЦ,"ОФ");
        Иначе
            НазначитьВид(ТМЦ,"ТМЦ");
        КонецЕсли;
        Форма.ТМЦ.НеИзменятьВид(1);
        Если ДокОснование.Вид() = "ЛиквидацияНеоборАктивов" Тогда
            ТМЦ = ДокОснование.НеоборотныйАктив;
        ИначеЕсли ДокОснование.Вид() = "ОказаниеУслуг" Тогда
            ТМЦ = ДокОснование.Услуга;
        Иначе
            ТМЦ = ДокОснование.ТМЦ;
            глУстановкаБазЕд(Контекст, ТМЦ);
        КонецЕсли;
        Если ТМЦ.Вид() = "ТМЦ" Тогда
            Если ТМЦ.ВидТМЦ = Перечисление.ВидыТМЦ.Тара Тогда
                Если (глЕстьРеквизитШапки("ВидТары",ДокОснование.Вид()) = Да) Тогда
                    Если (ДокОснование.ВидТары <> Перечисление.ВидыТары.Покупная) Тогда
                        // возвратная тара не должна попадать в табличную часть
                        СуммаВозвратнойТары = СуммаВозвратнойТары + ДокОснование.СуммаБезНДС;
                        УдалитьСтроку();
                        Продолжить;
                    КонецЕсли;
                КонецЕсли;
            КонецЕсли;
        КонецЕсли;
        СуммаСНДС = ДокОснование.СуммаСНДС;
        НулеваяСтавкаНДС = Нет;
        Если ДокОснование.Вид() = "ЛиквидацияНеоборАктивов" Тогда
            ЦенаБезНДС = ДокОснование.ЦенаБезНДС;
            ЦенаСНДС = ЦенаБезНДС * (1 + ВидНДС.Ставка.Получить(ДатаДок));
            СуммаБезНДС = ДокОснование.СуммаБезНДС;
            СуммаБезСкидки = СуммаБезНДС;
            НДС = ДокОснование.НДС;
            Кво = 1;
            глУстановкаБазЕд(Контекст,,ТМЦ.БазЕдиница);
        иначеесли  ДокОснование.Вид() = "РНМатериалы" Тогда
            Кво = ДокОснование.Кво;
            //Ед = ТМЦ.БазоваяЕдиница;
            Коэффициент = 1;            
            ЦенаСНДС = ДокОснование.ЦенаСНДС;
            ЦенаБезНДС = окр(ЦенаБезНДС/6*5,2);
            НДС = ДокОснование.НДС;
            Скидка = 0;
            СуммаБезСкидки = ДокОснование.СуммаСНДС;
            СуммаБезНДС = окр(СуммаСндс/6*5,2);
        Иначе
            // счета и накладные
            Кво = ДокОснование.Кво;
            Ед = ДокОснование.Ед;
            
            
            Если ДокОснование.Вид() = "РасходнаяНакладная" Тогда
                Коэффициент = ДокОснование.Коэффициент;
                ЦенаБезНДС = ДокОснование.ЦенаБезНДС;
                ЦенаСНДС = ДокОснование.ЦенаСНДС;
                Скидка = ДокОснование.Скидка;
                СуммаБезСкидки = ДокОснование.СуммаБезСкидки;
                СуммаБезНДС = ДокОснование.СуммаБезНДС;
                НДС = СуммаСНДС - СуммаБезНДС;
            ИначеЕсли ДокОснование.Вид() = "РасходнаяНакладнаяК" Тогда
                
                ЦенаСНДС = ДокОснование.ЦенаСНДС;
                Скидка = ДокОснование.Скидка;
                СуммаБезСкидки = ДокОснование.СуммаБезСкидки;
                СуммаБезНДС = ДокОснование.СуммаБезНДС;
                НДС = СуммаСНДС - СуммаБезНДС;
                ЦенаБезНДС = СуммаБезНДС/кво;
            ИначеЕсли ДокОснование.Вид() = "РасходнаяРозничная" Тогда
                Коэффициент = ДокОснование.Коэффициент;
                ЦенаСНДС = ДокОснование.ЦенаСНДС;
                Если ДокОснование.ВидНДС = ОсновнаяСтавкаНДС Тогда
                    СтНДС = ТМЦ.СтавкаНДС.Ставка.Получить(ДатаДок);
             &n