7.7 В партии не хватает количества товара

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем AD1986, 18 апр 2012.

  1. TopicStarter Overlay
    AD1986
    Offline

    AD1986 Опытный в 1С

    Регистрация:
    8 фев 2011
    Сообщения:
    138
    Симпатии:
    0
    Баллы:
    26
    Добрый день столкнулся вот с такой проблемой. Есть товар который приходуеться по партиям, в одном товаре есть две партии разными ценами. Когда я провожу в одной накладной эти две партии то пишет ошибку (18.04.12/17:20:23) Документ Накладная 00003008853 (06.04.12) НЕ проведен - по 1 позициям не хватает товара/продукции!. Хотя товар есть и количество требуемое тоже есть . Но вот в чем порадокс если отписывать товар в разных накладных то все супер. Пожалуйста подскажите в чем проблема я так понимаю это что то в накладной будет ... очень уж нужно код прилагаеться накладной

    Код:
    Перем ВсегоПоПродукции,ВсегоПоУслугам;
    Перем ВсегоПоТоварам,ВыделенныйНДС;
    Перем ТаблицаДокумента, Курс, ЗнОкр;
    Перем ТаблицаОтгрузки, ТаблицаКомисии;
    Перем СчКМС,БухИт004;
    Перем СчДох, СчРасх, СчНДС; // Доб., релиз 12.01.1 ПС 01.01.12
    Перем ЕстьНУ; // Доб., релиз 12.02.1 ПС 31.01.12
    //----------------------------------------------------------------
    // Доб., релиз 12.02.1 ПС 31.01.12 - НалоговыйУчет
    Процедура ОперацияДебетНалоговыйУчет(СубконтоНалоговыйУчет)
    Перем НалоговыйУчет;
    Если ЕстьНУ = 0 Тогда
    Возврат
    КонецЕсли;
    Операция.Дебет.НалоговыйУчет = СубконтоНалоговыйУчет;
    КонецПроцедуры // ОперацияДебетНалоговыйУчет()
    //_____________________________________________________________________________
    Процедура СообщитьОДокументе(ТекстСообщения,Парам="I")
    Сообщить("("+РабочаяДата()+"/"+ТекущееВремя()
    +") Документ "+ТекущийДокумент()+" "+ТекстСообщения,Парам);
    КонецПроцедуры //СообщитьОдокументе
    //------------------ 26.08.05				   
    Процедура РассчитатьНДСдоб(СуммаОтгрузкиПоУчЦене,СтНДС,СуммаСНДСвал,Коэф)
    Если ДатаДок >= юДатаОтменыНДСдоб тогда  // {Изм., релиз 10.12.1 ПС 06.12.10
    //При определении налоговой базы с 1 января 2011 г. исключена необходимость исчисления налога
    //от цены приобретения товаров для приобретенных на стороне товаров, либо исходя из остаточной
    //стоимости для отдельных предметов в составе оборотных средств и имущества, учитываемого
    //в составе внеоборотных активов, в случаях реализации указанных объектов ниже цены приобретения
    //(остаточной стоимости).
    //
    //То есть, исчисление налога будет производиться непосредственно исходя
    //из цены реализации без ограничения права на вычет сумм "входного" НДС.
    //
    // Закон РБ от 15 октября 2010 г. № 174-З «О внесении дополнений и изменений в
    //  Налоговый кодекс Республики Беларусь», вступающих в силу с 1 января 2011 г.
    Возврат
    КонецЕсли;
    // При реализации объектов
    // по ценам ниже цены приобретения (для приобретенных на стороне объектов) налоговая база
    // определяется соответственно исходя из остаточной стоимости, цены приобретения (гл.4, п.8.4).
    // учетная цена в основной валюте (рублях)
    Если (ВидОтгрузки<3) тогда // не возврат поставщику
    СуммаБезНДСруб = СуммаСНДСвал*Курс*100/(100+СтНДС);
    Если (СуммаБезНДСруб*Коэф<СуммаОтгрузкиПоУчЦене*Коэф) тогда // продажа ниже с/с
    НДСвесьВал = Окр(СуммаОтгрузкиПоУчЦене*СтНДС*0.01/Курс,ЗнОкр);
    ТаблицаДокумента.НДСдоб  = НДСвесьВал - ТаблицаДокумента.НДС; // НДС в валюте!
    КонецЕсли;
    КонецЕсли;
    КонецПроцедуры
    //_____________________________________________________________________________
    // Проверка табличной части
    Функция ПроверитьТЧ()
    ВсегоПоТоварам   = 0;
    ВсегоПоПродукции = 0;
    ВсегоПоУслугам = 0;
    ВыделенныйНДС    = 0;
    ВыгрузитьТабличнуюЧасть(ТаблицаДокумента, "Товар,УчетнаяЦена,Количество,Сумма,СтавкаНДСспр,СтавкаНДС,
    |НДС,СуммаСНДС,НДСдоб,Комитент,ДоговорКомиссии,Партия");
    КолОшибок = 0;
    ВыбратьСтроки();
    Пока ПолучитьСтроку() = 1 Цикл
    ЕстьОш = 0;
    Если Товар.Выбран() = 0 Тогда
    ТекстСообщения = " не указан товар.";
    ЕстьОш = 1;
    ИначеЕсли ВидОтгрузки >= 3 Тогда // // возврат поставщику товара
    Если Товар.ТипНоменклатуры <> Перечисление.ТипыНоменклатуры.Товар Тогда
    ТекстСообщения = " для возврата следует указать покупной товар.";
    ЕстьОш = 1;
    КонецЕсли;
    ИначеЕсли (Сумма=0) И (Количество=0) тогда
    ТекстСообщения = " не задано ни суммы, ни количества!";
    ЕстьОш = 1;
    КонецЕсли;
    Если ЕстьОш<>0 Тогда
    Сообщить("Строка "+НомерСтроки+" не проводится: "+ТекстСообщения,"I");
    КолОшибок = КолОшибок + ?(ЕстьОш>0,1,0);
    Продолжить;
    КонецЕсли;
    ТаблицаДокумента.ПолучитьСтрокуПоНомеру(НомерСтроки);
    Если (ИзТиС=0) И (ТаблицаДокумента.Количество>0) тогда
    ТаблицаДокумента.УчетнаяЦена=0; // обнулим в ТЗ, чтобы потом подставить среднюю
    КонецЕсли;
    ТаблицаДокумента.НДСдоб = 0; // пс 26.08.05
    // Для расчета аванса необходимо разделить выручку от
    // продукции (работ, услуг) и выручку от покупных товаров.
    Если Товар.ТипНоменклатуры = Перечисление.ТипыНоменклатуры.Товар Тогда
    Если Товар.ТипТовара <> Перечисление.ТипыТоваров.НаКомиссии Тогда
    ВсегоПоТоварам = ВсегоПоТоварам + СуммаСндс;
    ВыделенныйНДС  = ВыделенныйНДС + НДС; // необходимо учесть при возврате товара поставщику
    Если (ИзТиС=1) И (ДатаДок < юДатаОтменыНДСдоб) тогда // {Изм., релиз 10.12.1 ПС 06.12.10
    // сразу считаем НДС добавочный, учетная цена получена из ТиС //пс 26.08.05
    РассчитатьНДСдоб(Количество*УчетнаяЦена,СтавкаНДСспр.Ставка,СуммаСНДС,?(Количество>0,1,-1));
    НДСдоб = ТаблицаДокумента.НДСдоб; // подставим рассчитанное значение в ТЧ
    КонецЕсли;
    Иначе
    Если ВидОтгрузки >= 3 Тогда // возврат поставщику товара, принятого на комиссию
    ТаблицаДокумента.Комитент	    = Получатель; //Контрагент;
    ТаблицаДокумента.ДоговорКомиссии = Договор;
    КонецЕсли;
    КонецЕсли;
    ИначеЕсли Товар.ТипНоменклатуры = Перечисление.ТипыНоменклатуры.Продукция Тогда
    ВсегоПоПродукции = ВсегоПоПродукции + СуммаСндс;
    Иначе
    ВсегоПоУслугам = ВсегоПоУслугам + СуммаСндс;
    КонецЕсли;
    КонецЦикла;
    Если КолОшибок=0 Тогда
    Возврат 1;
    Иначе
    СообщитьОДокументе(" не будет проведен. "+КолОшибок + " строк не удастся провести.","!");
    Возврат 0;
    КонецЕсли;
    КонецФункции //ПроверитьТЧ
    //_____________________________________________________________________________
    Процедура ПроводкиПоКомисТовару(Тов,СчетУчета,ТаблицаОтгрузки)
    Если ИзТис=1 тогда // если получено из ТиС, то известны комитент, договор комиссиии и учетная цена(цена комитента с НДС)
    Если ВидОтгрузки = 1 Тогда // реализация  (выручка по отгрузке)
    //проводка 1  Кт. 004
    Операция.НоваяПроводка();
    Операция.СодержаниеПроводки = "Отгружено со склада";
    Операция.НомерЖурнала = "ТВ";
    Операция.Кредит.Счет = СчетУчета;
    Операция.Кредит.Номенклатура = Тов;
    Операция.Кредит.Контрагенты = ТаблицаДокумента.Комитент;
    Операция.Кредит.Основание   = ТаблицаДокумента.ДоговорКомиссии;
    Операция.Количество = ТаблицаДокумента.Количество;
    Операция.Сумма	  = ТаблицаДокумента.Количество*ТаблицаДокумента.УчетнаяЦена;
    
    ТаблицаКомисии.НоваяСтрока();
    ТаблицаКомисии.Комитент = ТаблицаДокумента.Комитент;
    ТаблицаКомисии.ДоговорКомиссии = ТаблицаДокумента.ДоговорКомиссии;
    ТаблицаКомисии.Сумма		 = ТаблицаДокумента.СуммаСНДС;  // по цене продажи с НДС
    ТаблицаКомисии.Себестоимость = ТаблицаДокумента.Количество*ТаблицаДокумента.УчетнаяЦена; // по цене комитента с НДС
    
    ИначеЕсли ВидОтгрузки = 2 Тогда // отгрузка без перехода права собственности (по оплате)
    //проводка 1  Дт. КМС 
    Операция.НоваяПроводка();
    Операция.СодержаниеПроводки = "Передан/отгружен комис.товар"; // ПС 14.01.10 "Передано на комиссию";
    Операция.НомерЖурнала = "ТВ";
    Операция.Дебет.Счет   = СчКМС;
    Операция.Дебет.Номенклатура	    = Тов;
    Операция.Дебет.ДоговорКомитента    = ТаблицаДокумента.ДоговорКомиссии;
    Операция.Дебет.ДоговорКомиссионера = Договор;
    Операция.Количество = ТаблицаДокумента.Количество;
    Операция.Сумма	  = ТаблицаДокумента.СуммаСНДС;
    Иначе // возврат комис. товара
    Операция.НоваяПроводка();
    Операция.НомерЖурнала = "ТВ";
    Операция.СодержаниеПроводки = "Возврат поставщику "; //(по претензии)";
    Операция.Кредит.Счет = СчетУчета;
    Операция.Кредит.Номенклатура = Тов;
    Операция.Кредит.Контрагенты = ТаблицаДокумента.Комитент;
    Операция.Кредит.Субконто(3,ТаблицаДокумента.ДоговорКомиссии);
    Операция.Количество = ТаблицаДокумента.Количество;
    Операция.Сумма	  = ТаблицаДокумента.Количество*ТаблицаДокумента.УчетнаяЦена; // в рублях
    КонецЕсли;
    Иначе // комис. товар не из ТиС
    ОсталосьОтгрузить = ТаблицаДокумента.Количество;
    ВсегоРеализовано = 0;
    ВсегоСебестоимость=0;
    БухИт004.ВыбратьСубконто(2);
    Пока ((БухИт004.ПолучитьСубконто(2) = 1) и (ОсталосьОтгрузить <> 0)) или (ОсталосьОтгрузить < 0) Цикл
    БухИт004.ВыбратьСубконто(3);
    Пока (БухИт004.ПолучитьСубконто(3) = 1) и (ОсталосьОтгрузить <> 0) или (ОсталосьОтгрузить < 0) Цикл
    КоличествоПоДоговору = БухИт004.СНД("К");
    Если (КоличествоПоДоговору = 0) и (ОсталосьОтгрузить > 0) Тогда
    Продолжить;
    КонецЕсли;
    
    КоличествоОтгрузки = Мин(ОсталосьОтгрузить, КоличествоПоДоговору);
    СуммаПоДоговору    = БухИт004.СНД("С");
    Если КоличествоПоДоговору>0 Тогда
    Если КоличествоОтгрузки = КоличествоПоДоговору Тогда
    СуммаОтгрузки = СуммаПоДоговору;
    Иначе
    СуммаОтгрузки = КоличествоОтгрузки*Окр(СуммаПоДоговору/КоличествоПоДоговору,2);
    КонецЕсли;
    Иначе
    СуммаОтгрузки=ТаблицаДокумента.СуммаСндс;
    КонецЕсли;
    ОсталосьОтгрузить = ОсталосьОтгрузить - КоличествоОтгрузки;
    СуммаОтгрузки	 = Окр(СуммаОтгрузки,0); // способ округления как в свойствах конфигурации
    
    СуммаРеализации  = ?(ТаблицаДокумента.Количество=0,0,
    Окр(ТаблицаДокумента.СуммаСндс*КоличествоОтгрузки/ТаблицаДокумента.Количество,ЗнОкр));
    Если (ОсталосьОтгрузить=0) И (ВсегоРеализовано+СуммаРеализации<> ТаблицаДокумента.СуммаСНДС) Тогда
    СуммаРеализации = ТаблицаДокумента.СуммаСНДС - ВсегоРеализовано;
    КонецЕсли;
    ВсегоРеализовано = ВсегоРеализовано  + СуммаРеализации; // по цене продажи с НДС
    ВсегоСебестоимость=ВсегоСебестоимость+ СуммаОтгрузки; // по цене комитента с НДС
    
    Если ВидОтгрузки = 1 Тогда // реализация  (выручка по отгрузке)
    //проводка 1  Кт. 004
    Операция.НоваяПроводка();
    Операция.СодержаниеПроводки = "Отгружено со склада";
    Операция.НомерЖурнала = "ТВ";
    Операция.Кредит.Счет = СчетУчета;
    Операция.Кредит.Номенклатура = Тов;
    Если  (ОсталосьОтгрузить < 0) и (ТаблицаДокумента.Комитент.Выбран()=1) Тогда
    Операция.Кредит.Контрагенты = ТаблицаДокумента.Комитент;
    Операция.Кредит.Основание   = ТаблицаДокумента.ДоговорКомиссии;
    иначе
    Операция.Кредит.Контрагенты = БухИт004.Субконто(2);
    Операция.Кредит.Основание   = БухИт004.Субконто(3);
    КонецЕсли;
    Операция.Количество = КоличествоОтгрузки;
    Операция.Сумма	  = СуммаОтгрузки;
    
    ТаблицаКомисии.НоваяСтрока();
    Если  (ОсталосьОтгрузить < 0) и (ТаблицаДокумента.Комитент.Выбран()=1) Тогда
    ТаблицаКомисии.Комитент = ТаблицаДокумента.Комитент;
    ТаблицаКомисии.ДоговорКомиссии = ТаблицаДокумента.ДоговорКомиссии;
    иначе
    ТаблицаКомисии.Комитент = БухИт004.Субконто(2);
    ТаблицаКомисии.ДоговорКомиссии = БухИт004.Субконто(3);
    КонецЕсли;
    ТаблицаКомисии.Сумма		 = СуммаРеализации;
    ТаблицаКомисии.Себестоимость = СуммаОтгрузки;
    
    ИначеЕсли ВидОтгрузки = 2 Тогда // отгрузка без перехода права собственности (по оплате)
    //проводка 1  Дт. КМС 
    Операция.НоваяПроводка();
    Операция.СодержаниеПроводки = "Передан/отгружен комис.товар"; // ПС 14.01.10 "Передано на комиссию";
    Операция.НомерЖурнала = "ТВ";
    Операция.Дебет.Счет   = СчКМС;
    Операция.Дебет.Номенклатура	    = Тов;
    Операция.Дебет.ДоговорКомитента    = БухИт004.Субконто(3);
    Операция.Дебет.ДоговорКомиссионера = Договор;
    Операция.Количество = КоличествоОтгрузки;
    Операция.Сумма	  = СуммаРеализации;
    Иначе // возврат комис. товара
    Операция.НоваяПроводка();
    Операция.НомерЖурнала = "ТВ";
    Операция.СодержаниеПроводки = "Возврат поставщику "; //(по претензии)";
    Операция.Кредит.Счет = СчетУчета;
    Операция.Кредит.Номенклатура = Тов;
    Операция.Кредит.Контрагенты = БухИт004.Субконто(ВидыСубконто.Контрагенты);
    Операция.Кредит.Субконто(3,БухИт004.Субконто(ВидыСубконто.Основание));
    Операция.Количество = КоличествоОтгрузки;
    Операция.Сумма	  = СуммаОтгрузки; // в рублях
    КонецЕсли;
    КонецЦикла;
    КонецЦикла; // БухИт004
    Если окр(ВсегоРеализовано) <> окр(ТаблицаДокумента.СуммаСндс) Тогда // 08.06.05 пс
    Если ВидОтгрузки = 1 Тогда // реализация - продажа при отгрузке
    ТаблицаКомисии.Сумма = ТаблицаКомисии.Сумма + ТаблицаДокумента.СуммаСндс - ВсегоРеализовано;
    КонецЕсли;
    КонецЕсли;
    КонецЕсли;
    //
    Если ВидОтгрузки = 1 Тогда // Комиссионное вознаграждение при реализации по отгрузке
    ТаблицаОтгрузки.НоваяСтрока();
    ТаблицаОтгрузки.ВидДеятельности = Тов.ВидПоОКДП;
    ТаблицаОтгрузки.Стоимость = ВсегоСебестоимость;
    Если Тов.НеРассчитыватьКомисВознаграждение=0 Тогда // по умолч. надо рассчитывать комис. вознагр
    СтНДС =  ТаблицаДокумента.СтавкаНДСспр.Ставка;
    ТаблицаОтгрузки.Сумма = окр(ВсегоРеализовано,ЗнОкр)-окр(ВсегоСебестоимость/Курс,ЗнОкр); // комис. вознагр. в валюте договора
    ТаблицаОтгрузки.НДС = ТаблицаОтгрузки.Сумма*СтНДС/(100+СтНДС); // НДС с комис. вознагр.
    ТаблицаОтгрузки.СтавкаНДСспр = ТаблицаДокумента.СтавкаНДСспр;
    КонецЕсли;
    КонецЕсли;
    КонецПроцедуры //ПроводкиПоКомисТовару
    //_____________________________________________________________________________
    Процедура УстановитьУчЦенуИ_НДСдоб()
    // подстановка средней учетной цены, по которой делались проводки на отгрузку.
    // и добавочного НДС
    Если ИзТиС=0 тогда
    ВыбратьСтроки();
    Пока  ПолучитьСтроку()=1 цикл
    НДСдоб = 0;
    Если (Количество>0) тогда
    НомСтроки = 0;
    Если ТаблицаДокумента.НайтиЗначение(Товар, НомСтроки,"Товар")=1 тогда
    
    ТаблицаДокумента.ПолучитьСтрокуПоНомеру(НомСтроки);
    Если (ТаблицаДокумента.УчетнаяЦена>0)
    И (УчетнаяЦена<>ТаблицаДокумента.УчетнаяЦена) тогда
    УчетнаяЦена=ТаблицаДокумента.УчетнаяЦена;
    КонецЕсли;
    Если ДатаДок < юДатаОтменыНДСдоб тогда  // {Изм., релиз 10.12.1 ПС 06.12.10
    
    Если  (ТаблицаДокумента.НДСдоб <>0) тогда
    Если НДС = ТаблицаДокумента.НДС тогда
    НДСдоб = ТаблицаДокумента.НДСдоб;
    Иначе
    СтавкаНДС = СтавкаНДСспр.Ставка;
    Если Цена*Курс<УчетнаяЦена тогда
    НалоговаяБазаруб = Окр(УчетнаяЦена*Количество,0);
    НДСдоб = Окр(НалоговаяБазаРуб*СтавкаНДС*0.01/Курс,ЗнОкр) - НДС;
    КонецЕсли;
    КонецЕсли;
    КонецЕсли;
    
    КонецЕсли; // релиз 10.12.1 ПС 06.12.10}
    
    КонецЕсли;
    КонецЕсли; 
    КонецЦикла;	 
    КонецЕсли; 
    КонецПроцедуры //УстановитьУчЦенуИ_НДСдоб
    //__________________________________________ Накладная
    Процедура ОбработкаПроведения()
    Перем ТаблицаПокупок,АвтоКП,ТаблицаОтгрузки,Валютный;
    //
    // {Изм., релиз 10.12.1 ПС 08.12.10
    //  Обработка ошибок при проведении
    ТекстСообщения = "";
    Если КоличествоСтрок()=0 тогда
    ТекстСообщения = "Заполните хотя бы одну строку в табличной части!";
    КонецЕсли;
    Если (Итог("Сумма")=0) И (Итог("Количество")=0) тогда
    ТекстСообщения = ?(ПустаяСтрока(ТекстСообщения)=1,"",ТекстСообщения + РазделительСтрок)
    +"Ни одной суммы не введено! Ни одного количества не введено";
    КонецЕсли;
    Если ДатаДок > КонецРассчитанногоПериодаБИ() Тогда
    // Ошибка вида:
    // БухИт.ВыполнитьЗапрос(,ТекущийДокумент(),СчетУчета,,,,,5);
    // {Документ.Накладная.Модуль Документа(491)}: За данный период бухгалтерские итоги не рассчитаны!
    ТекстСообщения = ?(ПустаяСтрока(ТекстСообщения)=1,"",ТекстСообщения+РазделительСтрок)
    +"Выполните расчет бухгалтерских итогов!";
    КонецЕсли;
    // {Изм., релиз 12.01.1 ПС 03.01.12 - новый план счетов с 01.01.2012
    Если юСчетаДоходовРасходов("90", ДатаДок, СчДох, СчНДС, СчРасх) = 0 Тогда
    Если ПустаяСтрока(ТекстСообщения)=1 Тогда
    ТекстСообщения = " не заданы счета доходов/расходв";
    КонецЕсли;
    КонецЕсли;
    // изм., релиз 12.01.1 пс}
    Если ПустаяСтрока(ТекстСообщения)=0 Тогда
    Сообщить("---------"+ТекущийДокумент()+" не проведен: "+ТекстСообщения,"!");
    Предупреждение(ТекстСообщения,10);
    СтатусВозврата(0);
    Возврат;
    КонецЕсли;
    // пс}
    // {Изм., релиз 12.02.1 ПС 31.01.12 - налоговый учет по счету 90.04
    ЕстьНУ = Метаданные.ВидСубконто("НалоговыйУчет").Выбран();
    Если (ЕстьНУ = 1) И (СчРасх.КоличествоСубконто() >= 2) Тогда
    Если СчРасх.ВидСубконто(2) <> ВидыСубконто.НалоговыйУчет Тогда
    ЕстьНУ = 0
    КонецЕсли;
    КонецЕсли;
    // изм., релиз 12.02.1 пс}
    // Авт. кн. покупок
    юАвтоКП(1,АвтоКП,Договор,ТаблицаПокупок);
    АвтоКП = ?((АвтоКП=1) И (ВидОтгрузки >=3) И (ДокументПоступления.Выбран()=1),1,0);
    //
    Если АвтоКП=1 Тогда
    // проверка начисления по счету АКП
    БИ = СоздатьОбъект("БухгалтерскиеИтоги");
    БИ.ИспользоватьСубконто(ВидыСубконто.Контрагенты, Получатель, 2);
    БИ.ИспользоватьСубконто(ВидыСубконто.Основание,Договор,2);
    БИ.ИспользоватьСубконто(ВидыСубконто.ДокПриобретения,ДокументПоступления,2);
    БИ.ВыполнитьЗапрос(ДокументПоступления.ДатаДок,ТекущийДокумент(),"АКП",,,,,1);
    Если БИ.КО()=0 Тогда // начисления не было
    АвтоКП = 0;
    КонецЕсли;
    КонецЕсли;
    //
    юПроверкаНДСтч(Контекст,1); // Проверка ставок НДС в ТЧ
    //
    Если ВидОтгрузки = 0 тогда
    Если Отгрузка.ПринадлежитГруппе(СчетПоКоду("45")) = 1 Тогда
    ВидОтгрузки = 2;
    Иначе   
    ВидОтгрузки = 1;
    КонецЕсли;
    КонецЕсли;
    //
    Валютный=0;
    ЗнОкр=0;
    Курс = 1;
    КолОш = 0;
    ВыбратьСтроки();
    Пока ПолучитьСтроку() = 1 Цикл
    Если ОптНадбавка > 200 Тогда
    Сообщить("В строке №"+НомерСтроки+" наценка превышает максимальную!!!");
    КолОш = КолОш + 1;
    КонецЕсли;
    КонецЦикла;
    Если КолОш > 0  Тогда
    СтатусВозврата(0);
    Возврат;
    КонецЕсли;
    Если (Договор.Выбран()=1) тогда
    Если (Договор.Валютный=1) И (Договор.Валюта.Выбран()=1) Тогда
    Валютный=1;
    ЗнОкр=2;
    Курс = ПолучитьКурс(Договор.Валюта,ДатаДок); //.Курс.Получить(ДатаДок);
    КонецЕсли;
    КонецЕсли;
    Сч68ндс = СчетПоКоду("68.25");  //ндс
    Сч43   = СчетПоКоду("43"); 
    Сч41_1 = СчетПоКоду("41.1");
    Сч41_3 = СчетПоКоду("41.3");
    Сч41_4 = СчетПоКоду("41.4");
    Сч45   = СчетПоКоду("45");
    Сч76   = СчетПоКоду("76.1"); 
    Если Валютный=1 тогда   
    Сч62	 = СчетПоКоду("62.2");
    СчАванса = СчетПоКоду("62.5");
    Сч62_    = СчетПоКоду("62.02");
    Сч60	 = СчетПоКоду("60.2");
    Иначе
    Сч62	 = СчетПоКоду("62.1");
    СчАванса = СчетПоКоду("62.4");
    Сч62_    = СчетПоКоду("62.01");
    Сч60	 = СчетПоКоду("60.1");
    КонецЕсли;
    Сч60в = ?(Валютный=1,СчетПоКоду("60.2"),СчетПоКоду("60.1"));
    Если (ВидОтгрузки >=3) И (ДокументПоступления.Выбран()=1) тогда
    Если ДокументПоступления.ВидПоставщика <> Перечисление.ВидПоставщика.Поставщики Тогда
    Сч60в = ?(Валютный=1,СчетПоКоду("76.2"),СчетПоКоду("76.1"));
    КонецЕсли;
    КонецЕсли;
    Сч004 = СчетПоКоду("004");
    СчКМС = СчетПоКоду("КМС");
    Сч45  = СчетПоКоду("45");
    ТаблицаДокумента = СоздатьОбъект("ТаблицаЗначений");
    Если ПроверитьТЧ()=0 Тогда
    СтатусВозврата(0);
    Возврат;
    КонецЕсли;
    //
    ТаблицаОтгрузки = СоздатьОбъект("ТаблицаЗначений");
    ТаблицаОтгрузки.НоваяКолонка("ВидДеятельности");
    ТаблицаОтгрузки.НоваяКолонка("Стоимость","Число");
    ТаблицаОтгрузки.НоваяКолонка("Сумма","Число");
    ТаблицаОтгрузки.НоваяКолонка("НДС","Число");
    ТаблицаОтгрузки.НоваяКолонка("НДСдоб","Число"); // пс 26.08.05
    ТаблицаОтгрузки.НоваяКолонка("СтавкаНДСспр"); // ставка НДС по товару
    ТаблицаКомисии = СоздатьОбъект("ТаблицаЗначений");
    ТаблицаКомисии.НоваяКолонка("Комитент");
    ТаблицаКомисии.НоваяКолонка("ДоговорКомиссии");
    ТаблицаКомисии.НоваяКолонка("Сумма");
    ТаблицаКомисии.НоваяКолонка("Себестоимость");
    //
    ВыбратьСтроки();
    Пока ПолучитьСтроку() = 1 Цикл
    Если Товар.Выбран() = 0 Тогда
    ТекстСообщения = "В строке "+НомерСтроки+" не указан товар.";
    глОшибкаПроведения(Контекст, ТекстСообщения);
    СтатусВозврата(0);
    Возврат;
    
    ИначеЕсли ВидОтгрузки >= 3 Тогда // // возврат поставщику товара
    Если Товар.ТипНоменклатуры <> Перечисление.ТипыНоменклатуры.Товар Тогда
    ТекстСообщения = "В строке "+НомерСтроки+" указан не покупной товар.";
    глОшибкаПроведения(Контекст, ТекстСообщения);
    СтатусВозврата(0);
    Возврат;
    КонецЕсли;
    КонецЕсли;
    ТаблицаДокумента.ПолучитьСтрокуПоНомеру(НомерСтроки);
    Если (ИзТиС=0) И (ТаблицаДокумента.Количество>0) тогда
    //ТаблицаДокумента.УчетнаяЦена=0; // обнулим в ТЗ, чтобы потом подставить среднюю
    КонецЕсли;
    ТаблицаДокумента.НДСдоб = 0; // пс 26.08.05
    // Для расчета аванса необходимо разделить выручку от
    // продукции (работ, услуг) и выручку от покупных товаров.
    Если Товар.ТипНоменклатуры = Перечисление.ТипыНоменклатуры.Товар Тогда
    Если Товар.ТипТовара <> Перечисление.ТипыТоваров.НаКомиссии Тогда
    ВсегоПоТоварам = ВсегоПоТоварам + СуммаСндс;
    ВыделенныйНДС  = ВыделенныйНДС + НДС; // необходимо учесть при возврате товара поставщику
    Если (ИзТиС=1) тогда
    // сразу считаем НДС добавочный, учетная цена получена из ТиС //пс 26.08.05
    РассчитатьНДСдоб(Количество*УчетнаяЦена,СтавкаНДСспр.Ставка,СуммаСНДС,?(Количество>0,1,-1));
    НДСдоб = ТаблицаДокумента.НДСдоб; // подставим рассчитанное значение в ТЧ
    КонецЕсли;
    Иначе
    Если ВидОтгрузки >= 3 Тогда // возврат поставщику товара, принятого на комиссию
    ТаблицаДокумента.Комитент	    = Получатель; //Контрагент;
    ТаблицаДокумента.ДоговорКомиссии = Договор;
    КонецЕсли;
    КонецЕсли;
    ИначеЕсли Товар.ТипНоменклатуры = Перечисление.ТипыНоменклатуры.Продукция Тогда
    ВсегоПоПродукции = ВсегоПоПродукции + СуммаСндс;
    Иначе
    ВсегоПоУслугам = ВсегоПоУслугам + СуммаСндс;
    КонецЕсли;
    КонецЦикла;
    //
    СписокТоваров = СоздатьОбъект("СписокЗначений");
    ВыгрузитьТабличнуюЧасть(СписокТоваров, "Товар");
    БухИт64 = СоздатьОбъект("БухгалтерскиеИтоги");
    БухИт64.ИспользоватьСубконто(ВидыСубконто.Контрагенты, Получатель, 2);
    БухИт004 = СоздатьОбъект("БухгалтерскиеИтоги");
    СуммаПС=0;
    //
    КолОшибок = 0; // Проверка по свернутой таблице
    КолОшибокОст = 0; // ПС 14.01.10  Количество позиций, по которым нет товара/продукции
    ТаблицаДокумента.Свернуть("Товар,Комитент,ДоговорКомиссии,СтавкаНДСспр,СтавкаНДС,УчетнаяЦена",
    "Количество,Сумма,НДС,СуммаСНДС,НДСдоб,Партия");
    // проводки по движению товара
    ТаблицаДокумента.ВыбратьСтроки();
    Пока ТаблицаДокумента.ПолучитьСтроку() = 1 Цикл
    ЕстьОш = 0;
    Тов = ТаблицаДокумента.Товар;
    Парт = ТаблицаДокумента.Партия;
    Если ТаблицаДокумента.Количество = 0 Тогда
    ТекстСообщения = "не указано количество товара";
    ЕстьОш = 1;
    ИначеЕсли (Тов.ТипНоменклатуры.Выбран() = 0) тогда //
    ТекстСообщения = "не указан тип номенклатуры";
    ЕстьОш = 1;
    КонецЕсли;
    Если ЕстьОш<>0 Тогда
    Сообщить("Отгрузка товара "+Тов+" не проводится: "+ТекстСообщения,"I");
    КолОшибок = КолОшибок + 1;
    Продолжить;
    КонецЕсли;
    СчитатьНДСДоб = 0;
    СчетУчета	 = ""; // для услуг и работ
    Сч45		  = "";
    КомисТовар    = 0;
    ЭтоУслуги	 = 0;
    Если Тов.ТипНоменклатуры = Перечисление.ТипыНоменклатуры.Продукция Тогда
    //При реализации товаров (работ, услуг) собственного производства
    //по ценам ниже их себестоимости налоговая база определяется исходя
    // из цены реализации таких товаров (работ, услуг) (гл.4, п.8.4 Инстр 16)
    СчетУчета = Сч43;
    Сч45  = СчетПоКоду("45.4");
    ИначеЕсли Тов.ТипНоменклатуры = Перечисление.ТипыНоменклатуры.Товар Тогда
    Сч45  = СчетПоКоду("45.1");
    СчитатьНДСДоб = ?((ИзТиС=0) И (ДатаДок < юДатаОтменыНДСдоб), 1, 0); // {Изм., релиз 10.12.1 ПС 06.12.10
    Если Тов.ТипТовара = Перечисление.ТипыТоваров.НаКомиссии Тогда
    КомисТовар = 1;
    СчетУчета = Сч004;
    ИначеЕсли Тов.ТипТовара = Перечисление.ТипыТоваров.Тара Тогда
    СчетУчета = Сч41_3;
    СчитатьНДСДоб = 0;
    ИначеЕсли Тов.ТипТовара = Перечисление.ТипыТоваров.ПокупныеИзделия Тогда
    СчетУчета = Сч41_4;
    Иначе //Если Товар.ТипТовара = Перечисление.ТипыТоваров.Собственный Тогда
    СчетУчета = Сч41_1;
    КонецЕсли;
    Иначе
    ЭтоУслуги = 1;
    КонецЕсли;
    // для товара или продукции контроль остатка
    Если ЭтоУслуги = 0 Тогда
    Если ПустоеЗначение(СчетУчета) = 1 Тогда //счет учета не выбран
    ТекстСообщения = " не известен счет учета товара" ;
    ЕстьОш = 1;
    КонецЕсли;
    Если (ВидОтгрузки=2) И (ПустоеЗначение(Сч45) = 1) Тогда //счет 45 не выбран
    ТекстСообщения = " не известен счет учета отгруженного товара" ;
    ЕстьОш = 1;
    КонецЕсли;
    Если ЕстьОш<>0 Тогда
    Сообщить("Отгрузка товара "+Тов+" не проводится, для указанного типа номенклатуры ("+Тов.ТипНоменклатуры+") "+ТекстСообщения,"I");
    КолОшибок = КолОшибок + 1;
    Продолжить;
    КонецЕсли;
    
    КоличествоНаСкладе = 0;
    СуммаНаСкладах = 0;
    Если КомисТовар = 1 Тогда
    БухИт004.ИспользоватьСубконто(ВидыСубконто.Номенклатура, Тов, 2);
    БухИт004.ИспользоватьСубконто(ВидыСубконто.ПартииТовара, Парт, 2);
    БухИт004.ИспользоватьСубконто(ВидыСубконто.Контрагенты, ТаблицаДокумента.Комитент, ?(ТаблицаДокумента.Комитент.Выбран()=1,2,1));
    БухИт004.ИспользоватьСубконто(ВидыСубконто.Основание, ТаблицаДокумента.ДоговорКомиссии, ?(ТаблицаДокумента.ДоговорКомиссии.Выбран()=1,2,1));
    БухИт004.ВыполнитьЗапрос(ТекущийДокумент(),,"004",,,,,5);
    КоличествоНаСкладе = БухИт004.СНД("К");
    СуммаНаСкладах = БухИт004.СНД("С");
    Иначе
    БухИт = СоздатьОбъект("БухгалтерскиеИтоги");
    БухИт.ИспользоватьСубконто(ВидыСубконто.Номенклатура, Тов,2);
    БухИт.ИспользоватьСубконто(ВидыСубконто.ПартииТовара, Парт, 2);
    БухИт.ИспользоватьСубконто(ВидыСубконто.МестаХранения,Склад,2);
    БухИт.ВыполнитьЗапрос(,ТекущийДокумент(),СчетУчета,,,,,5);
    КоличествоНаСкладе = БухИт.СКД("К");
    СуммаНаСкладах	 = БухИт.СКД("С");
    КонецЕсли;
    //
    Если (ТаблицаДокумента.Количество>0) и (КоличествоНаСкладе  < ТаблицаДокумента.Количество) Тогда
    Сообщить("Отгрузка товара "+Тов+" не проводится:
    | на складе "+КоличествоНаСкладе+" "+Тов.ЕдиницаИзмерения+
    " из необходимых "+ТаблицаДокумента.Количество+" "+Тов.ЕдиницаИзмерения);
    КолОшибок = КолОшибок + 1;
    КолОшибокОст = КолОшибокОст + 1; // ПС 14.01.10
    Продолжить;
    //СтатусВозврата(0); Возврат; // 06.03.06
    КонецЕсли;
    КонецЕсли; // не услуги
    Если КомисТовар = 1 Тогда   // комис. товар
    ПроводкиПоКомисТовару(Тов,СчетУчета,ТаблицаОтгрузки);
    ИначеЕсли ЭтоУслуги=0 тогда  // не комис. товар (товар или продукция)
    Если (ТаблицаДокумента.Количество>0) И (ИзТиС=0) тогда
    Если ТаблицаДокумента.Количество = КоличествоНаСкладе Тогда
    СуммаОтгрузки = СуммаНаСкладах;
    Иначе
    СуммаОтгрузки = ТаблицаДокумента.Количество*СуммаНаСкладах/КоличествоНаСкладе;
    КонецЕсли;
    ТаблицаДокумента.УчетнаяЦена = СуммаНаСкладах/КоличествоНаСкладе; // Средняя уч. цена в основной валюте
    Иначе // отрицательное число - возврат от покупателя или выгружено из торговли
    СуммаОтгрузки=ТаблицаДокумента.Количество*ТаблицаДокумента.УчетнаяЦена; // учетная цена в основной валюте (рублях)
    КонецЕсли;
    СтНДС =  ТаблицаДокумента.СтавкаНДСспр.Ставка;
    СуммаОтгрузки  = Окр(СуммаОтгрузки,0); // способ округления как в свойствах конфигурации
    Если (СчитатьНДСДоб = 1) тогда
    РассчитатьНДСдоб(СуммаОтгрузки,СтНДС,ТаблицаДокумента.СуммаСНДС,
    ?(ТаблицаДокумента.Количество>0,1,-1));
    КонецЕсли;
    //проводка 2 СчетОтгр - СчетУчета
    Если ВидОтгрузки = 2 тогда    // 45.х - 41.у (43) - по оплате (товары отгруженные)
    Операция.НоваяПроводка();
    Операция.СодержаниеПроводки = "Отгружено со склада по цене реализации";
    Операция.НомерЖурнала	   = "ТВ";
    Операция.Дебет.Счет = СчетПоКоду("ТОВ.1"); //Отгрузка;
    Операция.Дебет.Номенклатура = Тов;
    Операция.Дебет.ПартииТовара = Парт;
    Операция.Дебет.Накладная = ТекущийДокумент();
    Операция.Количество = ТаблицаДокумента.Количество;
    Операция.Сумма = ТаблицаДокумента.СуммаСНДС;				   
    Конецесли;
    Операция.НоваяПроводка();
    Операция.СодержаниеПроводки = "Отгружено со склада";
    Операция.НомерЖурнала = "ТВ";
    Если ВидОтгрузки = 2 тогда    // 45.х - 41.у (43) - по оплате (товары отгруженные)
    Операция.Дебет.Счет = Сч45; //Отгрузка;
    Операция.Дебет.Контрагенты  = Получатель;
    Операция.Дебет.Основание    = Договор;
    Операция.Дебет.Номенклатура = Тов;
    Операция.Дебет.ПартииТовара = Парт;
    ИначеЕсли  ВидОтгрузки = 1 тогда // 90.2 - 41.у (43) - по отгрузке (себестоимость реализации)
    ВД = Тов.ВидПоОКДП;
    
    Операция.Дебет.Счет = СчРасх;
    Операция.Дебет.ВидыДеятельности = ВД;
    ОперацияДебетНалоговыйУчет(юНалоговыйУчетПоУмолчанию(?(ЕстьНУ = 1, ВД, ""))); // Доб., релиз 12.02.1 ПС 01.02.12 - налоговый учет
    
    ТаблицаОтгрузки.НоваяСтрока();
    ТаблицаОтгрузки.ВидДеятельности = ВД;
    ТаблицаОтгрузки.Стоимость = СуммаОтгрузки;
    ТаблицаОтгрузки.Сумма	 = ТаблицаДокумента.СуммаСНДС;
    ТаблицаОтгрузки.НДС	   = ТаблицаДокумента.НДС; // НДС по ставке
    ТаблицаОтгрузки.НДСдоб    = ТаблицаДокумента.НДСдоб; // НДС от разницы цен 
    
    ТаблицаОтгрузки.СтавкаНДСспр = ТаблицаДокумента.СтавкаНДСспр;
    
    ИначеЕсли ВидОтгрузки >= 3 тогда    // 60 (76) - 41.у - возврат поставщику
    Операция.Дебет.Счет = Сч60в; //
    Операция.Дебет.Контрагенты  = Получатель;
    Операция.Дебет.Основание    = Договор;
    Если Валютный=1 тогда
    Операция.ВалСумма = ТаблицаДокумента.Сумма;
    Операция.Валюта   = Договор.Валюта;
    КонецЕсли;
    Если (АвтоКП=1) Тогда
    ТаблицаПокупок.НоваяСтрока();
    ТаблицаПокупок.Товар = Тов;
    ТаблицаПокупок.Всего = ТаблицаДокумента.СуммаСНДС;
    ТаблицаПокупок.Сумма = ТаблицаДокумента.Сумма;
    ТаблицаПокупок.НДС   = ТаблицаДокумента.НДС;
    ТаблицаПокупок.СтавкаНДС = ТаблицаДокумента.СтавкаНДСспр.Ставка;
    //ТаблицаПокупок.СтавкаНДС = ТаблицаДокумента.СтавкаНДС;
    КонецЕсли;
    КонецЕсли;
    Операция.Кредит.Счет = СчетУчета;
    Операция.Кредит.Номенклатура = Тов;
    Операция.Кредит.ПартииТовара  = Парт;
    Операция.Кредит.МестаХранения = Склад;
    Операция.Количество = ТаблицаДокумента.Количество;
    Если КоличествоНаСкладе = ТаблицаДокумента.Количество Тогда				   
    Операция.Сумма	  = СуммаНаСкладах; // сумма операции без знаков после точки
    Иначе
    Операция.Сумма	  = СуммаОтгрузки; // сумма операции без знаков после точки
    КонецЕсли;
    СуммаПС = СуммаПС + СуммаОтгрузки;
    КонецЕсли;
    Операция.ЗаписатьПроводки();
    КонецЦикла; // проводки по движению товара
    //
    Если ВидОтгрузки >= 3 тогда // возврат поставщику
    // сторно НДС поставщика
    Если (ВыделенныйНДС > 0) тогда // и (НДСвключатьВСтоимость = 0) Тогда
    Операция.НоваяПроводка();
    Операция.НомерЖурнала = "ТВ";
    Операция.СодержаниеПроводки = "Сторнирование НДС";
    Операция.Кредит.Счет = СчетПоКоду("18.4");
    Операция.Кредит.Субконто(1,Получатель); //
    Операция.Дебет.Счет = Сч60в;
    Операция.Дебет.Субконто(1,Получатель); //
    Операция.Дебет.Субконто(2,Договор);
    КурсНДС = Курс;
    Если Валютный=1 тогда
    Операция.ВалСумма = ВыделенныйНДС;
    Операция.Валюта   = Договор.Валюта;
    Если ДокументПоступления.Выбран()=1 тогда
    КурсНДС = ПолучитьКурс(Договор.Валюта,ДокументПоступления.ДатаДок);
    КонецЕсли;
    КонецЕсли;
    Операция.Сумма = Окр(ВыделенныйНДС*КурсНДС,0);
    КонецЕсли;
    Иначе //										    продажа или отгрузка
    // выручка по отгрузке по видам деятельности
    ТаблицаОтгрузки.Свернуть("ВидДеятельности,СтавкаНДСспр","Стоимость,Сумма,НДС,НДСдоб");
    ТаблицаОтгрузки.ВыбратьСтроки();
    Пока ТаблицаОтгрузки.ПолучитьСтроку() = 1 Цикл
    ВД =  ТаблицаОтгрузки.ВидДеятельности;
    Если Окр(ТаблицаОтгрузки.Сумма,ЗнОкр)=0 Тогда
    
    Иначе
    //проводка 3 62.в - 90.1:ВидДеят
    СубконтоНалоговыйУчет = юНалоговыйУчетПоУмолчанию(?(ЕстьНУ = 1, ВД, "")); // Доб., релиз 12.02.1 ПС 01.02.12
    Операция.НоваяПроводка();
    Операция.НомерЖурнала = "ТВ";
    Если ВД.ХарактерДеятельности = Перечисление.ХарактерДеятельности.КомТорговля тогда
    Операция.СодержаниеПроводки = "Комис. вознаграждение";
    Операция.Дебет.Счет = Сч62_;							   
    Иначе
    Операция.СодержаниеПроводки = "Учтена выручка";
    Операция.Дебет.Счет = Сч62;						   
    КонецЕсли;
    Если Валютный=1 тогда//
    Операция.ВалСумма = ТаблицаОтгрузки.Сумма;
    Операция.Сумма    = ТаблицаОтгрузки.Сумма*Курс;
    Операция.Валюта   = Договор.Валюта;
    Иначе
    Операция.Сумма = ТаблицаОтгрузки.Сумма;
    КонецЕсли;
    Операция.Дебет.Контрагенты = Получатель;
    Операция.Дебет.Основание   = Договор;
    Операция.Кредит.Счет	   = СчДох; // 90.1;
    Операция.Кредит.ВидыДеятельности =ВД;
    Операция.Кредит.Субконто(2,ТаблицаОтгрузки.СтавкаНДСспр);
    //
    СумНДС=ОКР(ТаблицаОтгрузки.НДС*Курс,0);   
    Если СумНДС<>0 Тогда
    // 90.3 - 68.25
    Операция.НоваяПроводка();
    Операция.Дебет.Счет			 = СчНДС;
    Операция.Дебет.ВидыДеятельности = ВД; //ТаблицаОтгрузки.ВидДеятельности;
    Операция.Дебет.Субконто(2,ТаблицаОтгрузки.СтавкаНДСспр);
    ОперацияДебетНалоговыйУчет(СубконтоНалоговыйУчет); // Доб., релиз 12.02.1 ПС 01.02.12 - налоговый учет
    
    Операция.Кредит.Счет = Сч68ндс;
    Операция.Кредит.ПлатежиВбюджет=Перечисление.ПлатежиВбюджет.Налог;
    Операция.Сумма = СумНДС;
    Операция.СодержаниеПроводки = ?(ВД.ХарактерДеятельности = Перечисление.ХарактерДеятельности.КомТорговля,
    "НДС с комис. вознаграждения","Выделен НДС из выручки");
    Операция.НомерЖурнала = "ТВ";
    
    Если ДатаДок < юДатаОтменыНДСдоб тогда  // {Изм., релиз 10.12.1 ПС 06.12.10
    
    СумНДСдоб = ОКР(ТаблицаОтгрузки.НДСдоб*Курс,0);   
    Если СумНДСдоб<>0 Тогда
    // 90.3 - 68.25
    Операция.НоваяПроводка();
    Операция.Дебет.Счет			 = СчНДС;
    Операция.Дебет.ВидыДеятельности = ВД; //ТаблицаОтгрузки.ВидДеятельности;
    Операция.Дебет.Субконто(2,ТаблицаОтгрузки.СтавкаНДСспр);
    Операция.Кредит.Счет = Сч68ндс;
    Операция.Кредит.ПлатежиВбюджет=Перечисление.ПлатежиВбюджет.Налог;
    Операция.Сумма = СумНДСдоб;
    Операция.СодержаниеПроводки = "НДС доб."+СокрЛП(ТаблицаОтгрузки.СтавкаНДСспр.Ставка)+"%";
    Операция.НомерЖурнала = "ТВ";
    КонецЕсли;
    
    КонецЕсли; // релиз 10.12.1 ПС 06.12.10}
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;
    // проводки по комис товару (задолженность перед комитентом)
    ТаблицаКомисии.Свернуть("Комитент, ДоговорКомиссии","Сумма, Себестоимость");
    ТаблицаКомисии.ВыбратьСтроки();
    Пока ТаблицаКомисии.ПолучитьСтроку() = 1 Цикл
    // 62.01 - 76.1
    Операция.НоваяПроводка();
    Операция.СодержаниеПроводки = "Задолж-сть перед комитентом"; //"Выручка за комисс.товар";
    Операция.НомерЖурнала = "ТВ";
    Операция.Дебет.Счет	    = Сч62_;
    Операция.Дебет.Контрагенты = Получатель;
    Операция.Дебет.Основание   = Договор;
    Операция.Кредит.Счет	    = Сч76;
    Операция.Кредит.Контрагенты = ТаблицаКомисии.Комитент;
    Операция.Кредит.Основание   = ТаблицаКомисии.ДоговорКомиссии;
    Сумма76 = ТаблицаКомисии.Себестоимость;
    Операция.Сумма = Сумма76;
    Если Валютный=1 тогда//
    Операция.ВалСумма = Сумма76/Курс;
    Операция.Валюта   = Договор.Валюта;
    КонецЕсли;
    КонецЦикла;
    // когда выручка по оплате - проводки по забалансовым счетам
    Если ВидОтгрузки = 2 тогда  // по оплате
    Если СуммаПС<>0 Тогда
    Операция.НоваяПроводка();
    Операция.СодержаниеПроводки = "Себестоимость отгрузки";
    Операция.Дебет.Счет = СчетПоКоду("ПС");
    Операция.Дебет.Накладная = ТекущийДокумент();
    Операция.Сумма = СуммаПС;
    КонецЕсли;
    
    Операция.НоваяПроводка();
    Операция.СодержаниеПроводки = "Сумма отгрузки";
    Если Валютный=1 тогда
    Операция.Дебет.Счет = СчетПоКоду("РЕА.2");
    Операция.Валюта=Договор.Валюта;
    Операция.ВалСумма = Итог("СуммаСНДС");
    Иначе
    Операция.Дебет.Счет = СчетПоКоду("РЕА.1");
    КонецЕсли;
    Операция.Сумма = Итог("СуммаСНДС")*Курс;
    Операция.Дебет.Накладная = ТекущийДокумент();
    Операция.Дебет.Контрагенты=Получатель;
    
    КонецЕсли;
    //взаимозачеты 60 - 62
    Если Зачет60<>0 тогда
    Операция.НоваяПроводка();
    Операция.СодержаниеПроводки = "Взаимозачет";
    Операция.НомерЖурнала = "ТВ";
    Аванс60 = Мин(Итог("СуммаСНДС"), Зачет60);
    Если Валютный=1 тогда
    Операция.ВалСумма = Аванс60;
    Операция.Сумма    = Аванс60*Курс;
    Операция.Валюта   = Договор.Валюта;
    Иначе
    Операция.Сумма    = Аванс60;
    КонецЕсли;
    Операция.Дебет.Счет	    = Сч60;
    Операция.Дебет.Контрагенты = Получатель;
    Если Сч60.КоличествоСубконто()>1 тогда
    Операция.Дебет.Основание = Договор;
    КонецЕсли;
    Операция.Кредит.Счет = Сч62;
    Операция.Кредит.Контрагенты = Получатель;
    Операция.Кредит.Основание   = Договор;
    
    
    Если Константа.МетодОпределенияВыручки.Получить(ДатаДок)=Перечисление.МетодыОпределенияВыручки.ПоОплате тогда
    Операция.НоваяПроводка();
    Операция.СодержаниеПроводки = "Взаимозачет";
    Операция.Кредит.Счет	    = СчетПоКоду("ЗАЧ");
    Операция.Кредит.Накладная   = ТекущийДокумент();
    Операция.Сумма			  = Аванс60;
    КонецЕсли;
    
    КонецЕсли;
    
    //зачет предоплаты
    Если Зачет64<>0 тогда
    Операция.НоваяПроводка();
    Операция.СодержаниеПроводки = "Зачет аванса";
    Операция.НомерЖурнала = "ТВ";
    Аванс = Мин(Итог("СуммаСНДС")-Аванс60, Зачет64);
    
    Если Валютный=1 тогда
    Операция.ВалСумма = Аванс;
    Операция.Сумма    = Аванс*Курс;
    Операция.Валюта   = Договор.Валюта;
    Иначе
    Операция.Сумма    = Аванс;
    КонецЕсли;		 
    Операция.Дебет.Счет	    = СчАванса;
    Операция.Дебет.Контрагенты = Получатель;
    Если СчАванса.КоличествоСубконто()>1 тогда
    Операция.Дебет.Основание = Договор;
    КонецЕсли;
    Операция.Кредит.Счет	    =  Сч62;
    Операция.Кредит.Контрагенты = Получатель;
    Операция.Кредит.Основание   = Договор;
    КонецЕсли;
    КонецЕсли;
    //
    Если АвтоКП=1 Тогда
    юДляЗаполненияАвтоКнигиПокупок(Контекст, ТаблицаПокупок);
    КонецЕсли;
    ОтказПроведения =0;
    Если КолОшибокОст >0 Тогда // ПС 14.01.10
    ОтказПроведения = 1;
    СообщитьОДокументе("НЕ проведен - по "+КолОшибокОст + " позициям не хватает товара/продукции!","!");
    СтатусВозврата(0);
    ИначеЕсли КолОшибок>0 Тогда
    ОтветНаВопрос = Вопрос("Не менее "+КолОшибок + " строк не удалось провести. Записать операцию?",
    "Да+Нет",10); // Таймаут 10 секунд
    Если (ОтветНаВопрос="Нет") ИЛИ (ОтветНаВопрос="Таймаут") Тогда
    ОтказПроведения =1;
    СообщитьОДокументе("НЕ проведен, "+КолОшибок + " строк не проводятся.","I");
    СтатусВозврата(0);
    Иначе
    СообщитьОДокументе("проведен, "+КолОшибок + " строк НЕ проведено.");
    Операция.Записать();
    КонецЕсли;
    Иначе
    Операция.Записать();
    КонецЕсли;
    Если ОтказПроведения =0 тогда
    УстановитьУчЦенуИ_НДСдоб();
    КонецЕсли;
    КонецПроцедуры
    
  2. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Бывает такой глюк у метода свернуть... попробуйте так

    Код:
    ТаблицаДокумента.Свернуть("Товар,Комитент,ДоговорКомиссии,СтавкаНДСспр,СтавкаНДС,УчетнаяЦена",
    "Количество,Сумма,НДС,СуммаСНДС,НДСдоб,Партия");
    // проводки по движению товара
    Т=СоздатьОбъект("ТаблицаЗначений");
    ТаблицаДокумента.Выгрузить(Т);
    Т.Выгрузить(ТаблицаДокумента);
    
    ТаблицаДокумента.ВыбратьСтроки()
    Если не взлетит - только отладчиком... смотреть что у вас возвращается в БИ
  3. SerzhM
    Offline

    SerzhM Опытный в 1С

    Регистрация:
    26 окт 2009
    Сообщения:
    511
    Симпатии:
    3
    Баллы:
    29
    Может у вас отрицательный остаток. Сделайте след образом на копии базы(все эксперименты делаем только на копии) продаем 1 шт этого товара. Потом открываем в подборе щелкаем что бы вышло кол-во и цена и как раз там можно увидеть отрицательный остаток либо кол либо цена со знаком -. Если минусовой остаток значит накосячили документом переоценка(провели здним числом). В этом варианте нужно перепроводить док-ты переоценка и продажи. Документы прошлой даты нерекомендуется проводить, попрбуте провести документ сегоднишним числом.
  4. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Не думаю.. Потому что сказано "по отдельности проводятся". Ошибка возникает если партии в одном документе

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