7.7 Не видит партию товара

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

  1. TopicStarter Overlay
    AD1986
    Offline

    AD1986 Опытный в 1С

    Регистрация:
    8 фев 2011
    Сообщения:
    138
    Симпатии:
    0
    Баллы:
    26
    Здраствуйте очень нужна решение данрный проблемы суть такова: для номенклатуры есть партия товара есть комиссионный (004) и собственный (41) при отгрузке товара собственный видит и партию и т.п. все отгружаеться хорошо. Но если отгружать комиссионый товар то в номенклатуре виден остаток но когда выбираешь партию все понулям если же провести без партии документ то все проводиться и товра списываеться, но очень нужно что бы подбирал партию товара по комиссии что не делалал ничгео не получаеться((( подскажите где загвоздка модуль докумета накладной прилагаеться. Заранее огромное спасибо . Это форма модуля документа.
    Код:
    Перем ТаблицаПечФорм;  // список печатных форм справочникаПерем НомерТекущейФормы;Перем НачальнаяДатаДокумента,Новый;Перем СчетКредита;Перем ТекстВалютный;Перем КонтекстФормыПодбора;Перем ЗаказчикПлательщик,Грузоотправитель,НашСчет,НашБанк,БанкЗак,БанкПол,ГрузоПолучатель,Примечание;Перем ЗаказчикНомерЛицензии,ЗаказчикУНН;Перем КолМест,ВсегоНДС,ВсегоСуммаСНДС,ИтогМасса,БруттоПрописью;Перем ЗнОкр,ВалютаНакладной,сФормат,сПропись,сФорматНДС;Перем КолонтитулВерхний;Перем ПриИзмЦеныРеализацииПересчитыватьТолькоСкидку;// ПС 02.05.08Перем НашОКЮЛП,ПолучательОКЮЛП,ЗаказчикОКЮЛП;Перем НашУНН,НашОКПО,ПолучательУНН,ЛицПолучателя,ЛицЗаказчика,ЛицензияОтправителя;Перем НазвОтправителя,НазвПолучателя,НашАдрес,АдресПолучателя;Перем ИтогСумма,ИтогоКол;Перем ВалютаДоговора,сФорм,КурсНаДату,сФормБел;// пс//--------------------- // Отгружено на сумму: 999'999'999'999.99, в т.ч. НДС: 999'999'999'999.99 руб. (НДС добавочно от снижения цены ниже с/с 999'999'999'999.99)Функция ИтоговаяСтрока()// ПС 03.05.08Если КоличествоСтрок()=0 Тогда  ИтСтрока = "";Иначе  СуммаНДС = Итог("НДС");  ИтСтрока =  "Отгружено на сумму: "  +СокрЛ(Формат(Итог("СуммаСндс"),сФорм))  +?(СуммаНДС=0," "+ВалютаНакладной+". Без НДС",  +", в т.ч. НДС: "+СокрЛ(Формат(СуммаНДС,сФорм))+" "+ВалютаНакладной);  Если (Проведен()=1) тогда   ИтНДСдоб = Итог("НДСдоб");   ИтСтрока = ИтСтрока   + ?(ИтНДСдоб=0,"",РазделительСтрок + "(НДС добавочно от снижения цены ниже с/с "   + СокрЛ(Формат(ИтНДСдоб,сФорм))+")");  КонецЕсли;КонецЕсли; // псВозврат ИтСтрока;КонецФункции//Процедура ПриНачалеВыбораЗначения(ИдентЭлементаДиалога, ФлагСтандартнойОбработки)Если ИдентЭлементаДиалога = "Товар" Тогда  ФлагСтандартнойОбработки = 0;  Расшифровка = СоздатьОбъект("СписокЗначений");  Расшифровка.Установить("ВидДокумента", "Накладная");  Расшифровка.Установить("ДатаДок", ДатаДок);  Расшифровка.Установить("МестоХранения", Склад);  Партия = 0;  ОткрытьФорму("Справочник.Номенклатура.ДляПодбора",Расшифровка);ИначеЕсли ИдентЭлементаДиалога = "Партия" Тогда  ФлагСтандартнойОбработки = 0;  сз = СоздатьОбъект("СписокЗначений");  сз.ДобавитьЗначение(Товар,"Товар");  сз.ДобавитьЗначение(ДатаДок,"ДатаДок");  сз.ДобавитьЗначение(Склад,"МестоХранения");  ОткрытьФорму("Справочник.ПартииТоваров.остатки",сз);КонецЕсли;КонецПроцедуры ////---------------------Процедура ПроверкаТаб()Перем  ПроверятьТаблЧастьНакладной;ПроверятьТаблЧастьНакладной = ПустоеЗначение(ВосстановитьЗначение("НеПроверятьТаблЧастьНакладной"));Если ПроверятьТаблЧастьНакладной=0 тогда  возврат;КонецЕсли;ТаблицаДокумента = СоздатьОбъект("ТаблицаЗначений");ВыгрузитьТабличнуюЧасть(ТаблицаДокумента);ВыбратьСтроки();Пока ПолучитьСтроку() = 1 Цикл  Если Товар.Выбран() = 0 Тогда   ТекстСообщения = "В строке "+НомерСтроки+" не указан товар.";   глОшибкаПроведения(Контекст, ТекстСообщения);  ИначеЕсли Количество=0 тогда   Сообщить("В строке "+НомерСтроки+" не указано количество "+Товар);  КонецЕсли;  Если ВидОтгрузки >= 3 Тогда // // возврат поставщику товара   Если Товар.ТипНоменклатуры <> Перечисление.ТипыНоменклатуры.Товар Тогда    ТекстСообщения = "В строке "+НомерСтроки+" указан не покупной товар.";    глОшибкаПроведения(Контекст, ТекстСообщения);   КонецЕсли;  КонецЕсли;КонецЦикла; Если ИзТиС=1 тогда  Возврат;КонецЕсли;   ТЗ1 = СоздатьОбъект("ТаблицаЗначений");ТЗ2 = СоздатьОбъект("ТаблицаЗначений");ТаблицаДокумента.Выгрузить(ТЗ1,,,"Товар,КолПродГМ,Количество");ТаблицаДокумента.Выгрузить(ТЗ2,,,"Товар,Цена,Количество"); ТаблицаДокумента.Свернуть("Товар","Количество");ТЗ1.Свернуть("Товар,КолПродГМ","Количество");ТЗ2.Свернуть("Товар,Цена","Количество");Если (ТаблицаДокумента.КоличествоСтрок()=ТЗ1.КоличествоСтрок()) И	  (ТаблицаДокумента.КоличествоСтрок()=ТЗ2.КоличествоСтрок()) тогда // окИначе  Если (ТаблицаДокумента.КоличествоСтрок()<>ТЗ2.КоличествоСтрок()) тогда // есть строки с разными ценами   Сообщить("Н."+НомерДок+"- есть строки с одинак. товаром, но разными ценами реализации! - возможны ошибки расчета НДС доб. при проведения","!");   Если (ТаблицаДокумента.КоличествоСтрок()<>ТЗ1.КоличествоСтрок()) тогда // есть строки с разными упаковками    Сообщить("  Есть строки с одинаковым товаром, но разными упаковками.","I");   КонецЕсли;  КонецЕсли;КонецЕсли;  КонецПроцедуры//----------------------Процедура ВалНакладной()Если (Договор.Валюта.Выбран()=1) и (Договор.Валюта<>Константа.ОсновнаяВалюта) Тогда  Пропись(Договор.Валюта.ИмяФайлаПрописи);  ВалютаНакладной=Договор.Валюта;  сФормат="Ч19.2";  Спропись="ЧПДС";  ЗнОкр=2;Иначе  Пропись(Константа.ОсновнаяВалюта.ИмяФайлаПрописи);  ВалютаНакладной = "руб.";  сФормат="Ч19.0";  Спропись="ЧПД";  ЗнОкр=0;КонецЕсли;сФорматНДС=?(ОтгрЭкспорт=1,"Ч5","Ч05");КонецПроцедуры    //Процедура ПриВыбореФранко()Если ФранкоЦ = Перечисление.ФранкоЦена.Назначения тогда  ФранкоСклад = "назначения";ИначеЕсли ФранкоЦ = Перечисление.ФранкоЦена.Отправления тогда  ФранкоСклад = "отправления";ИначеЕсли (ФранкоЦ = Перечисление.ФранкоЦена.НеЗадана) ИЛИ (ФранкоЦ.Выбран()=0) тогда  ФранкоСклад = "";Иначе  ФранкоСклад = СтрЗаменить(СокрЛП(ФранкоЦ),"Франко-склад ","");КонецЕслиКонецПроцедуры//-----------------------------------------------------------------------------Функция ЧислоПрописью(Чсл,Режим)Дробь=Чсл-ЦЕЛ(Чсл);ЧслНазв=СокрЛП(Формат(Цел(Чсл),"ЧП"));Если Цел(Чсл)=0 Тогда  ЧслПроп="Ноль";Иначе  ЧслПроп=СокрЛП(Формат(Цел(Чсл),"ЧП"));   КонецЕсли;Центы=СокрЛП(Формат(Чсл,"ЧП"));Поз=СтрДлина(ЧслПроп);	  Единицы=Сред(ЧслНазв,Поз+1);Поз=СтрДлина(ЧслНазв);  Центы=?(Поз=0,"",Сред(Центы,Поз+1));Если Режим=0 Тогда  Чсл_=ЧслПроп+" т";  Если Дробь>0 Тогда   Чсл_=Чсл_+", "+Формат(Дробь*1000,"ЧП")+" кг";  КонецЕсли;  КонецЕсли;Чсл_=Чсл_+Единицы;Возврат Чсл_;КонецФункции//-----------------------------------------------------------------------------Процедура Расчет60()БухИт64 = СоздатьОбъект("БухгалтерскиеИтоги");БухИт64.ИспользоватьСубконто(ВидыСубконто.Контрагенты, Получатель, 2);БухИт64.ИспользоватьСубконто(ВидыСубконто.Основание, Договор, 2);Если ((Договор.Выбран()=1) И (Договор.Валютный=1)) Тогда  БухИт64.ВыполнитьЗапрос(,ДатаДок,"60.2",,Договор.Валюта,,,3);  Зачет60 = БухИт64.СКК("В");Иначе  БухИт64.ВыполнитьЗапрос(,ДатаДок,"60.1",,,,,3);  Зачет60 = БухИт64.СКК();КонецЕсли;КонецПроцедуры//-----------------------------------------------------------------------------Процедура Расчет64()БухИт64 = СоздатьОбъект("БухгалтерскиеИтоги");БухИт64.ИспользоватьСубконто(ВидыСубконто.Контрагенты, Получатель, 2);БухИт64.ИспользоватьСубконто(ВидыСубконто.Основание, Договор, 2);Если ((Договор.Выбран()=1) И (Договор.Валютный=1)) Тогда  БухИт64.ВыполнитьЗапрос(,ДатаДок,"62.5",,Договор.Валюта,,,3);  Зачет64 = БухИт64.СКК("В");Иначе  БухИт64.ВыполнитьЗапрос(,ДатаДок,"62.4",,,,,3);  Зачет64 = БухИт64.СКК();КонецЕсли;КонецПроцедуры//-----------------------------------------------------------------------------Процедура ДобРекв(Стр,Рекв,Подск1,Подск2)Если ПустаяСтрока(Стр)=0 Тогда  Подск=Подск1+Подск2;Иначе  Подск=Подск2;КонецЕсли;Если ПустаяСтрока(Рекв)=0 Тогда  Стр=Стр+Подск+СокрП(Рекв);КонецЕсли;КонецПроцедуры//_____________________________________________________________________________Процедура ВводПоУмолчанию()Если РасчетныйСчет.Выбран() = 0 Тогда  РасчетныйСчет = глЗначениеПоУмолчанию("ОсновнойБанковскийСчет");КонецЕсли; ВидОтгрузки = ВосстановитьЗначение("ВидОтгрузки_накладной");ВидОтгрузки = ?(ВидОтгрузки = 0,1,ВидОтгрузки);Если Склад.Выбран() = 0 Тогда  Склад = Константа.ОсновнойСклад;КонецЕсли; Если Константа.ИспользоватьПодчДокДляПечатиТТН_ТН = Нет Тогда // 5.09.1  ПунктПогрузки = ""+Склад.Адрес;  ВладелецТранспорта  = ВосстановитьЗначение("НакладнаяВладелецТр"); //  Если ПустоеЗначение(ВладелецТранспорта)=1 тогда    ВладелецТранспорта = "Грузополучатель"; // Грузоотправитель  КонецЕсли;   ОтпускРазрешил = Константа.ОтпускРазрешил;  ОтпускПроизвел = Константа.ОтпускПроизвел;  ФранкоЦ = Перечисление.ФранкоЦена.НеЗадана;   Если ПустоеЗначение(Константа.ПримечаниеКнакладной.Получить(ДатаДок))=0 тогда   КомментарийДок = СокрЛП(Константа.ПримечаниеКнакладной.Получить(ДатаДок));  КонецЕсли;   НомерБланка = юВосстановитьНомерБланка("ФормаНакладнойНомерБланка");КонецЕсли;  // 5.09.1КонецПроцедуры //ВводПоУмолчанию//-----------------------------------------------------------------------------Процедура ВводНового(Копирование);Новый = 1;Если Копирование = 1 Тогда //копирование документа  ИзТиС = 0;  Возврат;КонецЕсли;Склад    = ВосстановитьЗначение("НакладнаяСклад");ВводПоУмолчанию();КонецПроцедуры//******************************************************************************// УправлениеВидимостьюСлояКомиссия()//// Параметры://  РежимПроверки: 1 - анализировать все строки табличной части;//				 0 - анализировать только текущую строку табличной части.//// Вызывается из формул элементов диалога://  Нет.//// Описание://  Анализиреутся необходимость в слое "Комиссия".//Процедура УправлениеВидимостьюСлояКомиссия(РежимПроверки = 0)СлойНужен = 0;																						 // Этот слой нужен только в случае реализации (отгрузке) товаров, принятых на комиссию.Если ВидОтгрузки >= 3 Тогда // если возврат поставщику.  Форма.ИспользоватьСлой("Комиссия", 0);		  // если слой уже виден, то и аналировать не надоИначеЕсли Форма.ПодписьКомитента.Видимость() = 0 Тогда   Если РежимПроверки = 0 Тогда    Если Товар.Выбран() = 1 Тогда	    Если (Товар.ТипНоменклатуры = Перечисление.ТипыНоменклатуры.Товар)	   и (Товар.ТипТовара = Перечисление.ТипыТоваров.НаКомиссии) Тогда	 СлойНужен = 1;    КонецЕсли;   КонецЕсли;	 Иначе // анализировать все строки табличной части   ВыбратьСтроки();   Пока ПолучитьСтроку() = 1 Цикл    Если (Товар.ТипНоменклатуры = Перечисление.ТипыНоменклатуры.Товар)	   и (Товар.ТипТовара = Перечисление.ТипыТоваров.НаКомиссии) Тогда	    СлойНужен = 1;	 Прервать;    КонецЕсли;   КонецЦикла;  КонецЕсли;  Если СлойНужен = 1 Тогда   Форма.ИспользоватьСлой("Комиссия", 1);  КонецЕсли;КонецЕсли;КонецПроцедуры // УправлениеВидимостьюСлояКомиссия() //_____________________________________________________________________________Процедура ОпределитьГрузМеста()// вид грузоместа по умолчанию выбирается из карточки товараЕсли ВидТары.Выбран()=0 Тогда  ВидТары = Товар.ВидТары;КонецЕсли;// количества единиц в 1-м грузоместе по умолчанию выбирается из карточки товараЕсли (КолПродГМ=0) И (Товар.Выбран()=1) Тогда  КолПродГМ = Товар.КолПродГМ;КонецЕсли;// количество грузовых мест рассчитывается из количества единиц и// количества единиц в 1-м грузоместеЕсли КолПродГМ>0 Тогда    КолГрузМест =  Окр(Количество/КолПродГМ,2);КонецЕсли;КонецПроцедуры //ОпределитьГрузМеста//-----------------------------------------------------------------------------Процедура Пересчет(Подбор=0,ТекКолонка = "")Перем ТоварВыбран;Если ((Договор.Выбран()=1) И (Договор.Валютный=1)) Тогда  ЗнОкр=2;Иначе  ЗнОкр=0;КонецЕсли;ТекКолонка = ?(Подбор = 1,"Товар",?(ТекКолонка="",Форма.ТекущаяКолонка(),ТекКолонка));ТоварВыбран = Товар.Выбран();Если ТоварВыбран = 0 Тогда  Если (ТекКолонка = "Товар") тогда   Возврат;  КонецЕсли;  ЭтоТовар = 0;Иначе  // если товар (а не продукция), то может быть опт. надбавка или скидка  ЭтоТовар =?((Товар.ТипНоменклатуры = Перечисление.ТипыНоменклатуры.Товар),1,0)КонецЕсли;  Если (ТекКолонка = "Товар") Тогда //или (Подбор = 1)  ПерваяЦена  = Товар.ПервыйИмпортер;  ОптНадбавка = Товар.Процент;  УчетнаяЦена = Товар.Себестоимость;    Если Товар.флПервыйИмпортер = 1 Тогда   Цена	    = Товар.ПервыйИмпортер;  Иначе   Цена	    = Товар.Цена;  КонецЕсли;  Если Товар.СтавкаНДС.Выбран() = 1 Тогда   СтавкаНДСспр = Товар.СтавкаНДС; //.Ставка;  Иначе   СтавкаНДСспр = Константа.ОсновнаяСтавкаНДС; //.Ставка;  КонецЕсли;  Если СтавкаНДС<>СтавкаНДСспр.Ставка Тогда   СтавкаНДС = СтавкаНДСспр.Ставка;  КонецЕсли;  НДСдоб = 0;  ПерваяЦена = Товар.ПервыйИмпортер; // в рублях (основной валюте)  Если (Договор.Валюта.Выбран()=1) и (Договор.Валюта<>Константа.ОсновнаяВалюта) И (ПерваяЦена<>0) тогда   // в спр. номенклатура 1-я цена в основной валюте, пересчитываем в валюту накладной   Попытка    ПерваяЦена=ПересчетВалюты(ПерваяЦена,Договор.Валюта,Константа.ОсновнаяВалюта,ДатаДок,	   Константа.НеПересчитыватьЦенуНоменклатуры);   Исключение    ПерваяЦена=ПересчетВалюты(ПерваяЦена,Договор.Валюта,Константа.ОсновнаяВалюта,ДатаДок);   КонецПопытки;  КонецЕсли;  УчетнаяЦена = ?(ИзТиС=0,Товар.Себестоимость,УчетнаяЦена);  Если (ЭтоТовар = 1) И	   (Товар.Валюта.Выбран()=1) и (Товар.Валюта<>Константа.ОсновнаяВалюта) И    (ИзТиС=0)	    Тогда																				    // уч. цена должна быть в основной валюте (может использоваться при проведении)    УчетнаяЦена = ПересчетВалюты(УчетнаяЦена,Константа.ОсновнаяВалюта,Товар.Валюта,ДатаДок);  КонецЕсли;  Если ВидОтгрузки=3 тогда // возврат поставщику   Цена = Товар.Себестоимость;   ВалютаСравнения = Товар.Валюта;  Иначе   Цена=Товар.Цена;   ВалютаСравнения = Константа.ОсновнаяВалюта;  КонецЕсли;  Если (Договор.валюта.Выбран()=1) и (Договор.Валюта<>ВалютаСравнения) тогда   // в спр. номенклатура отпускная цена в основной валюте, пересчитываем в валюту накладной   Попытка    Цена=ПересчетВалюты(Цена,Договор.Валюта,ВалютаСравнения,ДатаДок,	   Константа.НеПересчитыватьЦенуНоменклатуры);   Исключение    Цена=ПересчетВалюты(Цена,Договор.Валюта,ВалютаСравнения,ДатаДок);   КонецПопытки;  КонецЕсли;  ОптНадбавка = 0;   Количество=?(Количество=0,1,Количество);  Если (ЭтоТовар=1) И (ПерваяЦена<>0) Тогда   ОптНадбавка=Товар.Процент;   Если (ПриИзмЦеныРеализацииПересчитыватьТолькоСкидку=0) Тогда // 5.09.1    Цена=Окр(ПерваяЦена*(100+ОптНадбавка)/100,ЗнОкр);   КонецЕсли;  КонецЕсли;  юРассчитатьСуммы(Контекст,?(ПриИзмЦеныРеализацииПересчитыватьТолькоСкидку=1,0,ЭтоТовар),,ЗнОкр); // 5.09.1  Масса=Товар.Масса*Количество;  ОпределитьГрузМеста();   УправлениеВидимостьюСлояКомиссия();ИначеЕсли (ТекКолонка = "Партия") Тогда //или (Подбор = 1)  Если Партия.Выбран() = 0 Тогда   Возврат;  КонецЕсли;   Если Товар.СтавкаНДС.Выбран() = 1 Тогда   СтавкаНДСспр = Товар.СтавкаНДС; //.Ставка;  Иначе   СтавкаНДСспр = Константа.ОсновнаяСтавкаНДС; //.Ставка;  КонецЕсли;  Если СтавкаНДС<>СтавкаНДСспр.Ставка Тогда   СтавкаНДС = СтавкаНДСспр.Ставка;  КонецЕсли;   ПерваяЦена = Партия.ЦенаПост; // в рублях (основной валюте)  Если (Договор.Валюта.Выбран()=1) и (Договор.Валюта<>Константа.ОсновнаяВалюта) И (ПерваяЦена<>0) тогда   // в спр. номенклатура 1-я цена в основной валюте, пересчитываем в валюту накладной   Попытка    ПерваяЦена = ПересчетВалюты(ПерваяЦена,Договор.Валюта,Константа.ОсновнаяВалюта,ДатаДок,    Константа.НеПересчитыватьЦенуНоменклатуры);   Исключение    ПерваяЦена = ПересчетВалюты(ПерваяЦена,Договор.Валюта,Константа.ОсновнаяВалюта,ДатаДок);   КонецПопытки;  КонецЕсли;  //УчетнаяЦена = ?(ИзТиС=0,Партия.Себестоимость,УчетнаяЦена);  УчетнаяЦена = Партия.УчЦена;  //Если (ЭтоТовар = 1) И  //(Товар.Валюта.Выбран()=1) и (Товар.Валюта<>Константа.ОсновнаяВалюта) И  //(ИзТиС=0)  //Тогда																				   // // уч. цена должна быть в основной валюте (может использоваться при проведении)   // УчетнаяЦена = ПересчетВалюты(УчетнаяЦена,Константа.ОсновнаяВалюта,Товар.Валюта,ДатаДок);  //КонецЕсли;  Если ВидОтгрузки=3 тогда // возврат поставщику   Цена = Партия.УчЦена;   ВалютаСравнения = Товар.Валюта;  Иначе	 Если Товар.флПервыйИмпортер = 1 Тогда    Цена = ПерваяЦена;   Иначе    Цена  = Окр((100+Партия.Наценка)/100*Партия.ЦенаПост,ЗнОкр);   КонецЕсли;   ВалютаСравнения = Константа.ОсновнаяВалюта;  КонецЕсли;  Если (Договор.валюта.Выбран()=1) и (Договор.Валюта<>ВалютаСравнения) тогда   // в спр. номенклатура отпускная цена в основной валюте, пересчитываем в валюту накладной   Попытка    Цена = ПересчетВалюты(Цена,Договор.Валюта,ВалютаСравнения,ДатаДок,    Константа.НеПересчитыватьЦенуНоменклатуры);   Исключение    Цена = ПересчетВалюты(Цена,Договор.Валюта,ВалютаСравнения,ДатаДок);   КонецПопытки;  КонецЕсли;  ОптНадбавка = 0;	 Количество  = глОстаткиТовара(Товар,Партия,ДатаДок,Склад);  Если (ЭтоТовар=1) И (ПерваяЦена<>0) Тогда   ОптНадбавка = Партия.Наценка;   Если (ПриИзмЦеныРеализацииПересчитыватьТолькоСкидку = 0) Тогда // 5.09.1    Если Товар.флПервыйИмпортер = 1 Тогда	 Цена = ПерваяЦена;    Иначе	   Цена = Окр(ПерваяЦена*(100+ОптНадбавка)/100,ЗнОкр);    КонецЕсли;   КонецЕсли;  КонецЕсли;   Если (ЭтоТовар=1) И (Цена = 0) И (ПерваяЦена<>0) Тогда   Сумма = Окр(Количество*ПерваяЦена*(100+ОптНадбавка)/100,ЗнОкр);  Иначе //Если ЭтоТовар=0 тогда   Сумма = Окр(Количество*Цена,ЗнОкр); // было только так до 01 июн 05  КонецЕсли;   НДС	   = Окр(Сумма*СтавкаНДС/100,ЗнОкр);  СуммаСНДС = Окр(Сумма + НДС,ЗнОкр);   УправлениеВидимостьюСлояКомиссия(); Иначе // текущая колонка - не товар  Если СтавкаНДСспр.Выбран()=0 Тогда   СтавкаНДСспр = юПолучитьНДСпоСумме(НДС,Сумма);  КонецЕсли;  Если СтавкаНДС<>СтавкаНДСспр.Ставка Тогда   СтавкаНДС = СтавкаНДСспр.Ставка;  КонецЕсли;  //  Если (ТекКолонка = "Количество") Тогда   юРассчитатьСуммы(Контекст,		 ?(ПриИзмЦеныРеализацииПересчитыватьТолькоСкидку=1,0,ЭтоТовар),,ЗнОкр);   Если ТоварВыбран=1 Тогда    Масса = Товар.Масса*Количество;   КонецЕсли;   ОпределитьГрузМеста();  ИначеЕсли (ТекКолонка = "КолГрузМест") Тогда   Если КолПродГМ>0 Тогда // пересчет количества	   Количество =  КолГрузМест*КолПродГМ;    юРассчитатьСуммы(Контекст,	   ?(ПриИзмЦеныРеализацииПересчитыватьТолькоСкидку=1,0,ЭтоТовар),,ЗнОкр);    Если ТоварВыбран=1 Тогда	 Масса = Товар.Масса*Количество;    КонецЕсли;   Иначе // расчет количества в 1-м грузоместе    КолПродГМ=?(КолГрузМест=0,0,Окр(Количество/КолГрузМест,2));   КонецЕсли;  ИначеЕсли (ТекКолонка = "ПерваяЦена") Тогда   РазмерОптНадбавки=?((ПерваяЦена=0),0,((Цена-ПерваяЦена)/ПерваяЦена)*100);   Если РазмерОптНадбавки <> ОптНадбавка Тогда	   ОптНадбавка = РазмерОптНадбавки;   КонецЕсли;   юРассчитатьСуммы(Контекст,ЭтоТовар,,ЗнОкр);  ИначеЕсли (ТекКолонка = "Цена") Тогда   Если (ПерваяЦена<>0)  И (ЭтоТовар=1) Тогда    РазмерОптНадбавки=(Цена-ПерваяЦена)/ПерваяЦена*100;    Если РазмерОптНадбавки <> ОптНадбавка Тогда	    ОптНадбавка = РазмерОптНадбавки;    КонецЕсли;   КонецЕСли;   юРассчитатьСуммы(Контекст,?(ПриИзмЦеныРеализацииПересчитыватьТолькоСкидку=1,0,ЭтоТовар),,ЗнОкр);  ИначеЕсли (ТекКолонка = "Сумма") или (ТекКолонка = "СтавкаНДСспр") Тогда   сум = Окр(Количество*Цена,ЗнОкр);   Если Сумма <> сум Тогда    Цена =  Окр(Сумма/?(Количество=0,1,Количество),ЗнОкр);    Если  Товар.флПервыйИмпортер = 1 Тогда	 ОптНадбавка = 0;									  ПерваяЦена  = Цена;	  КонецЕсли;   КонецЕсли;   НДС = Окр(Сумма*СтавкаНДС/100,ЗнОкр);   СуммаСНДС = Окр(Сумма + НДС,ЗнОкр);		 ИначеЕсли ТекКолонка = "НДС" Тогда   СуммаСНДС = Окр(Сумма + НДС,ЗнОкр);	   ИначеЕсли (ТекКолонка = "СуммаСНДС") и (обр=1) Тогда   Сумма = Окр(100*СуммаСНДС/(100+СтавкаНДС),ЗнОкр);   НДС = Окр(СтавкаНДС*СуммаСНДС/(100+СтавкаНДС),ЗнОкр);   Цена =Окр( Сумма/Количество,ЗнОкр);  ИначеЕсли ТекКолонка = "ОптНадбавка" Тогда   Если ПерваяЦена<>0 Тогда   Цена=Окр(ПерваяЦена*(100+ОптНадбавка)/100,ЗнОкр);   ИначеЕсли (ЭтоТовар=1) И (100+ОптНадбавка<>0) тогда    ПерваяЦена = Окр(Цена*100/(100+ОптНадбавка),ЗнОкр);   КонецЕсли;   юРассчитатьСуммы(Контекст,ЭтоТовар,,ЗнОкр);  КонецЕсли;КонецЕсли;КонецПроцедуры//---------------------Процедура ОбработкаВыбораЗначения(выб,ид,фл)Если ид = "Товар" Тогда  Если Партия.Выбран() = 1 Тогда   Если Товар <> Партия.Владелец Тогда    Партия	 = 0;    Количество = 0;   КонецЕсли;  Иначе   ПерваяЦена  = Товар.ПервыйИмпортер;   ОптНадбавка = Товар.Процент;   УчетнаяЦена = Товар.Себестоимость;   Цена	    = Товар.Цена;   Пересчет(0,"Товар");  КонецЕсли;ИначеЕсли ид = "Партия" Тогда  //Сообщить("вот обработка выбора");  // Пересчет(0,"Товар");КонецЕсли;КонецПроцедуры//-----------------------------------------------------------------------------Процедура ПечатьОбщиеДанные()// ПС 02.05.08// отправительНазвОтправителя = СокрЛП(Константа.НазваниеОрганизации);// получатель	 Если Получатель.Выбран()=1 Тогда  НазвПолучателя  = глПолноеНаименование(Получатель);Иначе // мы же и получатели  НазвПолучателя  = НазвОтправителя;КонецЕсли;  ЛицензияОтправителя = СокрЛП(Константа.НомерЛицензии);НашУНН   = СокрЛП(Константа.УННОрганизации);НашОКПО  = СокрЛП(Константа.КодОКПО);    НашОКЮЛП = юПолучитьОКЮЛП(НашУНН);    // псНашСчет=СокрЛП(РасчетныйСчет.Номер);НашБанк="в "+СокрП(РасчетныйСчет.БанкОрганизации.Наименование) +" "			 +СокрП(РасчетныйСчет.БанкОрганизации.Город) +", код "			 +СокрП(РасчетныйСчет.БанкОрганизации.Код);Грузоотправитель = ""+ СокрЛП(Константа.НазваниеОрганизации) +", "					  + СокрЛП(Константа.АдресОрганизации) + ", р/с "					  + НашСчет + " "+ НашБанк;	  БанкЗак = СокрП(СчетЗаказчика.БанкОрганизации.Наименование) +" "		  +СокрП(СчетЗаказчика.БанкОрганизации.Город) +", код "			 +СокрП(СчетЗаказчика.БанкОрганизации.Код);  БанкПол = СокрП(СчетПолучателя.БанкОрганизации.Наименование) +" "		  +СокрП(СчетПолучателя.БанкОрганизации.Город) +", код "		  +СокрП(СчетПолучателя.БанкОрганизации.Код);// ПС 02.05.08АдресПолучателя = СокрЛП(?(ПустаяСтрока(Получатель.ЮридическийАдрес)=0,										 Получатель.ЮридическийАдрес,Получатель.ПочтовыйАдрес));ГрузоПолучатель = глПолноеНаименование(Получатель) + ", "				 + АдресПолучателя+", р/с "				 + СокрЛП(СчетПолучателя.Номер)+" в "				 + БанкПол;ЛицПолучателя = ?(ПустоеЗначение(Получатель.НомерЛицензии)=1,"",						   СокрЛП(Получатель.НомерЛицензии)+" от "+СокрЛП(Получатель.ДатаЛицензии));ПолучательУНН   = Получатель.УНН;ПолучательОКЮЛП = юПолучитьОКЮЛП(ПолучательУНН,Получатель);// псЕсли Заказчик.Выбран()=0 Тогда  Если (Транспорт.Выбран()=1) И (Транспорт.Свой=0) Тогда   Заказчик = Получатель;  КонецЕсли;КонецЕсли;Если Заказчик.Выбран()=1 Тогда  ЗаказчикПлательщик = глПолноеНаименование(Заказчик) +", "  + СокрЛП(Заказчик.ПочтовыйАдрес)+", р/с "  + СокрЛП(СчетЗаказчика.Номер) +" в "+БанкЗак;  ЗаказчикУНН   = Заказчик.УНН;  ЗаказчикОКЮЛП = юПолучитьОКЮЛП(ЗаказчикУНН,Заказчик); // ПС 02.05.08  ЗаказчикНомерЛицензии = ?(ПустоеЗначение(Заказчик.НомерЛицензии)=1,"",СокрЛП(Заказчик.НомерЛицензии)  +" от "+СокрЛП(Заказчик.ДатаЛицензии));Иначе  ЗаказчикПлательщик = Грузоотправитель;  // ПС 02.05.08  ЗаказчикУНН	    = НашУНН;  ЗаказчикОКЮЛП	  = НашОКЮЛП;  ЗаказчикНомерЛицензии = ЛицензияОтправителя;КонецЕсли;   ЛицЗаказчика = ЗаказчикНомерЛицензии; // псПримечание = СокрЛП(КомментарийДок)+?(ПустоеЗначение(ФранкоСклад)=1,"",?(ПустоеЗначение(КомментарийДок)=1,""," . ")+"Франко-склад "+СокрЛП(ФранкоСклад));ВалНакладной();//ИтогМасса = Итог("Масса");БруттоПрописью = юБруттоПрописью(ИтогМасса);  //ВсегоНДС =Итог("НДС");ВсегоСуммаСНДС=Итог("СуммаСНДС");ИтогСумма =Итог("Сумма");ИтогоКол = СтрЗаменить(СокрЛП(ФорматК(Итог("Количество"))),".000","");//ИтогоНДС =Формат(ВсегоНДС,спропись);ИтогоСНДС=Формат(ВсегоСуммаСНДС,спропись); //КолМест    = Итог("КолГрузМест");КонецПроцедуры  //_____________________________________________________________________________Процедура ПечатьТТН(признак)Перем ИсходнаяТаб;ПечатьОбщиеДанные();// ПС 02.05.08КолонтитулВерхний = ?(ЕстьПриложение=0,"","Приложение к накладной ")	    +СокрЛП(?(ПустаяСтрока(НомерБланка)=0,НомерБланка,НомерДок)) + " от "+ДатаДок;Маршрут = "";Переадресовка = "";ГаражныйНомер = "";КоличествоЕздок = "1";Экспедитор = "";ВодительЭкспедитор = Водитель;ДокументыОтдельнойСтрокой = 0;	    // псТабПрил=СоздатьОбъект("Таблица");Таб    =СоздатьОбъект("Таблица");ориентация=1;Если признак=0 тогда  ИсходнаяТаб ="ТТН"; // свернута - не исп  ИмяВнешнейТаблицы = "ju_ttn1.mxl";ИначеЕсли признак=1 тогда  ЗаголовокТаб = "ТТН гориз.";  ИсходнаяТаб ="ТТНгоризонт";  //ИмяВнешнейТаблицы = "ju_ttn0.mxl";  ИмяВнешнейТаблицы = "ju_ttn.mxl";  // ПС 03.05.08  Ориентация=2;ИначеЕсли (признак=3) ИЛИ (признак=4) тогда  // 4 - без итога  ЗаголовокТаб = "ТТН верт."+?(признак=4," без итога","");  ИсходнаяТаб ="ТТНвертик";		    ИмяВнешнейТаблицы = "ju_ttnp.mxl";  // ПС 03.05.08  //ИмяВнешнейТаблицы = "ju_ttn1.mxl";Иначе  Возврат;КонецЕсли;ИмяФайлаПечатнойФормы = КаталогИБ()+"ExtForms\PrnForms\"+ИмяВнешнейТаблицы;Если ФС.СуществуетФайл(ИмяФайлаПечатнойФормы) = 1 Тогда  ИсходнаяТаб = ИмяФайлаПечатнойФормы;КонецЕсли;Таб.ИсходнаяТаблица(ИсходнаяТаб);//валНакладной();Таб.Опции(0,0,0,0);Таб.ПараметрыСтраницы(ориентация,,,,3,,,,,1);Таб.ТолькоПросмотр(0);Таб.ВывестиСекцию("Шапка");Таб.ВывестиСекцию("ШапкаТаб");Если ЕстьПриложение=1 Тогда  Таб.ВывестиСекцию("СтрПри");	   Таб.ВывестиСекцию("ПодвалТаб");  Если (Признак<>4) И (Признак<>1) тогда   Таб.ВывестиСекцию("Подвал");  КонецЕсли;  ТабПрил.ИсходнаяТаблица(ИсходнаяТаб);  ТабПрил.ПараметрыСтраницы(Ориентация,,,,3,10,,,,1);  ТабПрил.ВывестиСекцию("ШапкаПри");	   ТабПрил.ВывестиСекцию("ШапкаТаб");  ТабПрил.ПовторятьПриПечатиСтроки(ТабПрил.ВысотаСекции("ШапкаПри")+ТабПрил.ВысотаСекции("ШапкаТаб"),		    ТабПрил.ВысотаСекции("ШапкаПри")+ТабПрил.ВысотаСекции("ШапкаТаб"));КонецЕсли;    //Ном=0; сФорматСумм = сФормат;ВыбратьСтроки();Пока ПолучитьСтроку() = 1 Цикл  Ном=Ном+1;  Тов = Товар; // ПС 02.05.08  ТМЦ = глПолноеНаименование(Товар)	  +?(ПустоеЗначение(Товар.СтранаПроисхождения.Наименование)=1,"",", "+СокрЛП(Товар.СтранаПроисхождения.Наименование))   +?(ПустоеЗначение(Товар.Артикул)=1,"",". Артикул "+СокрЛП(Товар.Артикул)+" ");   Если Товар.ТипНоменклатуры=Перечисление.ТипыНоменклатуры.Товар Тогда    Если ПерваяЦена=0 тогда	 Цена1  =Цена;	 Процент=ОптНадбавка;    Иначе	 Процент=ОптНадбавка;	 Цена1  =ПерваяЦена;    КонецЕсли;   Иначе // (Товар.ТипНоменклатуры=Перечисление.ТипыНоменклатуры.Продукция  // 04.10.05    Процент="-";    Цена1=Цена;   КонецЕсли;   ЕдиницаИзмерения = Товар.ЕдиницаИзмерения;   Документы    = Товар.Документы;   Если (ЗнОкр=0) И (Окр(Окр(Цена1,0)*Количество*(100+ОптНадбавка)/100,ЗнОкр)<>Сумма) И		   (ПриИзмЦеныРеализацииПересчитыватьТолькоСкидку=0) Тогда	   сФормат = "Ч019.2"   Иначе    сФормат = сФорматСумм;   КонецЕсли;   стрНДС = Формат(?(ТипЗначения(СтавкаНДС)=11,СтавкаНДС.Ставка,СтавкаНДС),сФорматНДС);   Если (ЕстьПриложение=1) тогда    ТабПрил.ВывестиСекцию("Строка");   Иначе    Таб.ВывестиСекцию("Строка");   КонецЕсли;КонецЦикла; сФормат = сФорматСумм;Если (ЕстьПриложение=1) тогда  // ПС 03.05.08  Таб.ВывестиСекцию("СтрПри");	   Таб.ВывестиСекцию("ПодвалТаб");  Если (Признак<>4) И (Признак<>1) тогда   Таб.ВывестиСекцию("Подвал");  КонецЕсли; // пс  ТабПрил.ВывестиСекцию("ПодвалТаб");  ТабПрил.ВывестиСекцию("Подвал");  ТабПрил.Показать("Приложение к накладной","");ИначеЕсли (Признак<>4) И (Признак<>1) тогда  Таб.ВывестиСекцию("ПодвалТаб");  Таб.ВывестиСекцию("Подвал");Иначе //Если (Признак=4) ИЛИ (Признак=1) тогда  Таб.ВывестиСекцию("ПодвалТаб");КонецЕсли;//  Таб.ПовторятьПриПечатиСтроки(20,22);Таб.Показать("Печать накладной","");КонецПроцедуры //-----------------------------------------------------------------------------Процедура Печать2(признак)ПечатьОбщиеДанные();Экспедитор = "";ВодительЭкспедитор = Водитель;ПогрузкаИсполнитель="Грузополучатель";ПогрузкаСпособ="ручн.";ПогрузкаВремяПрибытия = "";ПогрузкаВремяУбытия = "";ИтогоНДС =Формат(ВсегоНДС,спропись);ИтогоСНДС=Формат(ВсегоСуммаСНДС,спропись);Таб=СоздатьОбъект("Таблица");Если признак=1 тогда  ИсходнаяТаб = "ТТНгоризонт";  ИмяВнешнейТаблицы = "ju_ttn.mxl"; // ПС 03.05.08  //ИмяВнешнейТаблицы = "ju_ttn0.mxl";  ориентация=2;Иначе  ИсходнаяТаб ="ТТНВертикОборот"; // Общие таблицы  ИмяВнешнейТаблицы = "ju_ttn2.mxl";  ориентация=1;КонецЕсли;ИмяФайлаПечатнойФормы = КаталогИБ()+"ExtForms\PrnForms\"+ИмяВнешнейТаблицы;Если ФС.СуществуетФайл(ИмяФайлаПечатнойФормы) = 1 Тогда  ИсходнаяТаб = ИмяФайлаПечатнойФормы;КонецЕсли;Таб.ИсходнаяТаблица(ИсходнаяТаб);//Если признак=0 тогда  Таб.ВывестиСекцию("Графы17_47");ИначеЕсли признак=2 тогда  Таб.ИсходнаяТаблица("ТТНВертикОборот");  ориентация=1;  Таб.ВывестиСекцию("Итог");  Таб.ВывестиСекцию("Графы17_47");Иначе  Таб.ИсходнаяТаблица("ТТНгоризонт");  ориентация=2;  Таб.ВывестиСекцию("Подвал");  Таб.ВывестиСекцию("Шапка1");КонецЕсли;Таб.Опции(0,0,0,0);Таб.ПараметрыСтраницы(ориентация,,,,3);Таб.ТолькоПросмотр(0);Таб.Показать("Печать накладной (2 стр)","");КонецПроцедуры//-----------------------------------------------------------------------------Процедура Печать()ПечатьОбщиеДанные(); // ПС 02.05.08НашАдрес=СокрП(Константа.АдресОрганизации);РС=СчетПолучателя;УНН = "";// ПС 09.07.08, ЗЛК ПСИС_007786 от 26.06.07Если ПустаяСтрока(НашБанк)=0 Тогда	 НашБанк = НашСчет + " " + НашБанк;КонецЕсли;Если ПустаяСтрока(БанкПол)=0 Тогда	 БанкПол = СокрЛП(РС.Номер) + " в " + БанкПол;КонецЕсли;// псТаб=СоздатьОбъект("Таблица");ИсходнаяТаб ="ТН";ИмяВнешнейТаблицы = "ju_tn.mxl";  // ПС 03.05.08//ИмяВнешнейТаблицы = "ju_tn0.mxl";ИмяФайлаПечатнойФормы = КаталогИБ()+"ExtForms\PrnForms\"+ИмяВнешнейТаблицы;Если ФС.СуществуетФайл(ИмяФайлаПечатнойФормы) = 1 Тогда  ИсходнаяТаб = ИмяФайлаПечатнойФормы;КонецЕсли;Таб.ИсходнаяТаблица(ИсходнаяТаб);КомуВыданыТМЦ = СокрЛП(КомуВыданы)+", доверенность № "+СокрЛП(доверенность);Ном=0;сФорматСумм = сФормат;//Таб.ВывестиСекцию("Шапка");Таб.ВывестиСекцию("ШапкаТаб");ВыбратьСтроки();Пока ПолучитьСтроку()=1 Цикл   ЕдиницаИзмерения = Товар.ЕдиницаИзмерения;  КоличествоНадлежитОтпустить = Количество;  Всего = Сумма;  Тов = Товар;  ТМЦ = глПолноеНаименование(Товар)	  +?(ПустоеЗначение(Товар.СтранаПроисхождения.Наименование)=1,"",", "+СокрЛП(Товар.СтранаПроисхождения.Наименование))   +?(ПустоеЗначение(Товар.Артикул)=1,"",". Артикул "+СокрЛП(Товар.Артикул)+" ");  Если товар.ТипНоменклатуры=Перечисление.ТипыНоменклатуры.Продукция Тогда   Процент="-";   Цена1=Цена;  ИначеЕсли Товар.ТипНоменклатуры=Перечисление.ТипыНоменклатуры.Товар Тогда   Если ПерваяЦена=0 тогда    Цена1  =Цена;    Процент=ОптНадбавка;   Иначе    Процент=ОптНадбавка;    Цена1  =ПерваяЦена;   КонецЕсли;  КонецЕсли;  Если (ЗнОкр=0) И (Окр(Окр(Цена1,0)*Количество*(100+ОптНадбавка)/100,ЗнОкр)<>Сумма) И	   (ПриИзмЦеныРеализацииПересчитыватьТолькоСкидку=0) Тогда	  сФормат = "Ч019.2"  Иначе   сФормат = сФорматСумм;  КонецЕсли;  СтрНДС = Формат(?(ТипЗначения(СтавкаНДС)=11,СтавкаНДС.Ставка,СтавкаНДС),сФорматНДС);  Ном=Ном+1;  Таб.ВывестиСекцию("Строка");КонецЦикла;КоличествоСтрокДок = Ном;Если КоличествоСтрокДок=0 Тогда    КоличествоСтрокДок = КоличествоСтрок();КонецЕсли;сФормат = сФорматСумм;ИтогКолГрузМест = Итог("КолГрузМест");ВсегоНДС	    = Итог("НДС");ВсегоСуммасНДС  = Итог("СуммасНДС");ИтогВсего	   = Итог("Сумма");Таб.ВывестиСекцию("ПодвалТаб");Таб.ВывестиСекцию("Подвал");Таб.Опции(0,0,0,0,"ОпцииПечатиНакладной");Таб.ПараметрыСтраницы(1,,,,3,,3);Таб.ТолькоПросмотр(1);Таб.Показать("Печать накладной","");КонецПроцедуры//----------------------Процедура ПриИзмЕстьПриложение()Если (ЕстьПриложение = 1) И	  (Константа.ИспользоватьПодчДокДляПечатиТТН_ТН = Нет) тогда // 5.09.1  Форма.ЛистовПриложения.Видимость(1);  Форма.ТЛистовПриложения.Видимость(1);  ЛистовПриложения = ?(ЛистовПриложения=0,1,ЛистовПриложения);Иначе  Форма.ЛистовПриложения.Видимость(0);  Форма.ТЛистовПриложения.Видимость(0);КонецЕсли; КонецПроцедуры//_____________________________________________________________________________Процедура ЗаписатьНомерБланкаБСО()Перем ДокБСО;  Если Константа.ИспользоватьПодчДокДляПечатиТТН_ТН = Да Тогда  Если юПроверитьТТН(ТекущийДокумент(),ДокБСО) = 1 Тогда	  НомерБланкаБСО = ДокБСО.НомерДок;   Если НомерБланка<>НомерБланкаБСО Тогда	    НомерБланка = НомерБланкаБСО;   КонецЕсли;  КонецЕсли;КонецЕсли;КонецПроцедуры ////******************************************************************************// ПоКнопкеПечать()//// Параметры:// Нет//// Описание://  Вызывается по кнопке "Печать" // Процедура ПоКнопкеПечать(СразуНаПринтер = 0,КолЭкз = 1)Если Проведен()=0 Тогда  Предупреждение("Для печати ТТН документ необходимо провести. ");  СтатусВозврата(0);  Возврат;КонецЕсли;Если Константа.ИспользоватьПодчДокДляПечатиТТН_ТН = Да Тогда  // 5.09.1  СохранитьЗначение("Документ.ТТНПечФорма", ТаблицаПечФорм.ПолучитьЗначение(НомерТекущейФормы, "Название")); // ПС 05.01.10 (ЕЮД)	 юДокументТТН(Контекст);  ЗаписатьНомерБланкаБСО();  Возврат;КонецЕсли;Если  ПустоеЗначение(НомерТекущейФормы) = 1  Тогда  НомерТекущейФормы = 1;  Форма.кнПечать.Заголовок(ТаблицаПечФорм.ПолучитьЗначение(НомерТекущейФормы, "Кнопка"));КонецЕсли;Если НомерТекущейФормы = 1 Тогда // ТТН верт  ПечатьТТН(3);ИначеЕсли НомерТекущейФормы = 2 Тогда // ТТН вертикальная 2 страница  Печать2(0);ИначеЕсли НомерТекущейФормы = 3 Тогда  // ТТН гориз  ПечатьТТН(1);ИначеЕсли НомерТекущейФормы = 4 Тогда  // ТТН горизонтальная 2 страница  Печать2(1);ИначеЕсли НомерТекущейФормы = 5 Тогда  // ТТН вертик без итогового подвала  ПечатьТТН(4);ИначеЕсли НомерТекущейФормы = 6 Тогда  // оборот вертик с итогом  Печать2(2);ИначеЕсли НомерТекущейФормы = 7 Тогда  Печать(); // ТН-2Иначе  Параметры = СоздатьОбъект("СписокЗначений");  Параметры.ДобавитьЗначение(Контекст, "Контекст");  Параметры.ДобавитьЗначение(СразуНаПринтер, "Устройство");  Параметры.ДобавитьЗначение(КолЭкз, "КоличествоКопий");   ОткрытьФорму("Отчет", Параметры, глКаталогПечФорм+ТаблицаПечФорм.ПолучитьЗначение(НомерТекущейФормы,"Файл"));КонецЕсли;КонецПроцедуры // ПоКнопкеПечать()//******************************************************************************// ПоКнопкеВыборПечатнойФормы()//// Параметры://  нет.   //// Возвращаемое значение://  нет.//// Описание://  - открывает список для выбора способа печати.//  - формирует таблицу по выбранному способу.//Процедура ПоКнопкеВыборПечатнойФормы()    ВыбНомер = глВыборПечатнойФормы("Документ." + Вид(), ТаблицаПечФорм);Если ВыбНомер > 0 Тогда  НомерТекущейФормы = ВыбНомер;  Форма.кнПечать.Заголовок(ТаблицаПечФорм.ПолучитьЗначение(НомерТекущейФормы, "Кнопка"));  ПоКнопкеПечать();КонецЕсли;КонецПроцедуры // ПоКнопкеВыборПечатнойФормы()//____________________________________ // 5.09.1Процедура УправлениеСлоемНакладная()			  Форма.ИспользоватьСлой("Основной"); //,2);Если ВидОтгрузки  >= 3 Тогда //возврат поставщику  Форма.ИспользоватьСлой("Возврат", 1);  Форма.ИспользоватьСлой("НеВозврат", 0); Иначе // релизация или отгрузка  Форма.ИспользоватьСлой("НеВозврат", 1);  Форма.ИспользоватьСлой("Возврат", 0);КонецЕсли;УправлениеВидимостьюСлояКомиссия(1);ПриИзмЕстьПриложение();КонецПроцедуры //  УправлениеСлоемНакладная();//---------------------------------------------------- // 5.09.1Процедура ПриВыбореЗакладки(Ном,Значен);Если Значен=1 Тогда  УправлениеСлоемНакладная();КонецЕсли;Если Значен=2 Тогда  Форма.ИспользоватьСлой("Транспорт",2);КонецЕсли;КонецПроцедуры//_____________________________________________________// 5.09.1Процедура УправлениеДиалогом()Если Константа.ИспользоватьПодчДокДляПечатиТТН_ТН = Да Тогда // ТТН  Форма.ИспользоватьЗакладки(0);  Форма.кнПечать.Заголовок("Печать ТТН или ТН");Иначе  Если Форма.ИспользоватьЗакладки()=0 Тогда   Форма.ИспользоватьЗакладки(1);  КонецЕсли;  Если Форма.Закладки.РазмерСписка()=0 Тогда   Форма.Закладки.ДобавитьЗначение(1,"Накладная");   Форма.Закладки.ДобавитьЗначение(2,"Транспорт");  КонецЕсли;  Форма.кнПечать.Заголовок("Печать");КонецЕсли;УправлениеСлоемНакладная();КонецПроцедуры //УправлениеДиалогом//-----------------------------------------------------------------------------// Валюта договора: USD, курс: 8600// Договор "Валютный", надо выбрать валюту!// Выберите валюту договора!Процедура ПриВыбореВидовОтгрузки() Далее // ПС 03.05.08 (прототип - док.ПоступлениеТоваров)Процедура ИнформацияОДоговоре()Стр = "";КурсНаДату  = 1;ДогВалютный = 0;цвКрасный   = 0;Если Договор.Выбран() = 1 Тогда  ДогВалютный   = Договор.Валютный;  Если ДогВалютный=1 Тогда   Если Договор.Валюта.Выбран()=0 Тогда    цвКрасный=1;    Стр = "Выберите валюту договора!";   Иначе    ВалютаДоговора = СокрЛП(Договор.Валюта.Наименование);    КурсНаДату = ПолучитьКурс(Договор.Валюта, ДатаДок);	 КонецЕсли;  КонецЕсли;КонецЕсли;Если КурсНаДату = 1 Тогда  ВалютаДоговора = "руб.";	 сФорм = сФормБел; //"Ч-18.0.'";Иначе	 сФорм = "Ч-18.2.'";  Стр = "Валюта договора: " + ВалютаДоговора+ ", курс: " + СокрЛП(КурсНаДату);КонецЕсли;Если цвКрасный=1 Тогда  Форма.тИнформацияОДоговоре.Цвет(172,0,0); // красныйИначе  Форма.тИнформацияОДоговоре.Цвет(0,0,172); // синийКонецЕсли;Форма.тИнформацияОДоговоре.Заголовок(Стр); // синийКонецПроцедуры // ИнформацияОДоговоре() // пс//Процедура ПриОткрытии()ПриЗаписиПерепроводить(1);глПроверкаРазрешенияРедактирования(Контекст);Если Форма.ТолькоПросмотр() = 1 Тогда  Форма.КнопкаОК.Доступность(0);  Форма.КнУдалить.Доступность(0);  Форма.КнЗаполнить.Доступность(0);  Форма.КнПодбор.Доступность(0);  Форма.КнопкаПоУмолчанию("КнЗакрыть");Иначе  юПроверкаНДСтч(Контекст,1); // Проверка ставок НДС в ТЧ КонецЕсли;НачальнаяДатаДокумента = ДатаДок;СчАванса = СчетПоКоду("62.4");СчДох    = СчетПоКоду("90.1");СчРасх    = СчетПоКоду("90.2");  КодСчРеал = "90"; //		    ном=0; // 5.09.1 (обработка закладок перенесена в процедуру "Управление диалогом")Если ВидОтгрузки = 0 тогда  Если Отгрузка.ПринадлежитГруппе(СчетПоКоду("45")) = 1 Тогда   ВидОтгрузки = 2;  Иначе	   ВидОтгрузки = 1;  КонецЕсли;КонецЕсли;СписокВидовОтгрузки.ДобавитьЗначение(1, "Продажа (счет 90)");СписокВидовОтгрузки.ДобавитьЗначение(2, "Отгрузка (счет 45) или услуги по оплате");СписокВидовОтгрузки.ДобавитьЗначение(3, "Возврат поставщику");СписокВидовОтгрузки.ТекущаяСтрока(ВидОтгрузки);ПриВыбореВидовОтгрузки();Форма.Товар.ВыполнятьФормулуТолькоПриИзменении(1);Форма.Партия.ВыполнятьФормулуТолькоПриИзменении(1);Форма.Количество.ВыполнятьФормулуТолькоПриИзменении(1);Форма.Цена.ВыполнятьФормулуТолькоПриИзменении(1);Форма.Сумма.ВыполнятьФормулуТолькоПриИзменении(1); Форма.СуммаСНДС.ВыполнятьФормулуТолькоПриИзменении(1);ВалНакладной();//ПриИзмЕстьПриложение(); // 5.09.1УправлениеДиалогом();ИнформацияОДоговоре(); // ПС 03.05.08// Заполним таблицу для выбора печатной формыНомерТекущейФормы = глУстановкаКнопкиПечать(Контекст, "Документ." + Вид(),ТаблицаПечФорм);КонецПроцедуры//-----------------------------------------------------------------------------Процедура ПриВыбореЗаказчика()СчетЗаказчика="";КонецПроцедуры////-----------------------------------------------------------------------------Процедура ПриВыбореПолучателя()глПриВыбореСчетаКонтрагента(Получатель, СчетПолучателя);глПриВыбореКонтрагента(Получатель,Договор);ПунктРазгрузки = ?(Получатель.Выбран()=1,СокрЛП(Получатель.ПочтовыйАдрес),""); // ПС 07.04.09ИнформацияОДоговоре();КонецпроцедурыПроцедура ПриВыбореДоговора()глПриВыбореДоговора(Получатель,Договор);Если Договор.Выбран()=1 тогда  ДоговорСтрока = СокрЛП(Договор.Наименование);  НаимДог = ?(Найти(ВРЕГ(ДоговорСтрока),"ДОГ")<>0,"",		    ?(Найти(ВРЕГ(ДоговорСтрока),"СЧЕТ")<>0,"","Договор "));  Основание = НаимДог+юСтрокаДоговор(Договор);  ВалНакладной();			 КонецЕсли;ИнформацияОДоговоре();КонецПроцедуры//-----------------------------------------------------------------------------Процедура ВводНаОсновании(ДокОснование)тз = СоздатьОбъект("ТаблицаЗначений");тз.НоваяКолонка("Товар","Справочник.Номенклатура");тз.НоваяКолонка("Партия","Справочник.ПартииТоваров");тз.НоваяКолонка("Количество","Число",10,4,,,,);Основание1=СокрП(ДокОснование.Вид())+" № "+СокрЛП(ДокОснование.НомерДок)+" от "+ДокОснование.ДатаДок;Если ДокОснование.Вид()="Счет" Тогда  Док = СоздатьОбъект("Документ");  Если Док.ВыбратьПодчиненныеДокументы(,,ДокОснование) = 1 Тогда   Пока Док.ПолучитьДокумент() = 1 Цикл    Если (Док.Вид() = "Накладная") Тогда	 сообщить("Проверка документа "+Док+"...");	 Док.ВыбратьСтроки();	 Пока Док.ПолучитьСтроку() = 1 Цикл	  Если (Док.Товар.Вид() = "Номенклатура") Тогда	   тз.НоваяСтрока();	   тз.Товар	  = Док.Товар;	   тз.Партия	 = Док.Партия;	   тз.Количество = Док.Количество;	  КонецЕсли;	 КонецЦикла;    КонецЕсли;   КонецЦикла;	 тз.Свернуть("Товар,Партия","Количество");	   ДокОснование.ВыбратьСтроки();   Пока ДокОснование.ПолучитьСтроку() = 1 Цикл    фл = 0;    Если ДокОснование.Товар.Вид() = "Номенклатура" Тогда	 тз.ВыбратьСтроки();	 Пока тз.ПолучитьСтроку() = 1 Цикл	  Если (ДокОснование.Товар = тз.Товар)И(ДокОснование.Партия = тз.Партия) Тогда	   фл = 1;	   Если ДокОснование.Количество > тз.Количество Тогда	    НоваяСтрока();	    Товар	   = ДокОснование.Товар;	    Партия	  = ДокОснование.Партия;	    Количество  = ДокОснование.Количество - тз.Количество;	    Цена	    = ДокОснование.Цена;	    ПерваяЦена  = ДокОснование.ПерваяЦена;	    УчетнаяЦена = ДокОснование.УчетнаяЦена;	    ОптНадбавка = ДокОснование.ОптНадбавка;	    СуммасНДС   = ДокОснование.СуммасНДС;	    СтавкаНДС   = ДокОснование.СтавкаНДС;	    СтавкаНДСспр = ?(ДокОснование.СтавкаНДСспр.Выбран()=1,ДокОснование.СтавкаНДСспр,	    юПолучитьНДСпоСтавке(ДокОснование.СтавкаНДС));	    НДС		 = ДокОснование.НДС;	    Сумма	   = ДокОснование.Сумма;	    Масса	   = Товар.Масса*Количество;	    ОпределитьГрузМеста();	   КонецЕсли;	   Прервать;	  КонецЕсли;	 КонецЦикла;	 Если фл = 0 Тогда	  НоваяСтрока();	  Товар	   = ДокОснование.Товар;	  Партия	  = ДокОснование.Партия;	  Количество  = ДокОснование.Количество;	  Цена	    = ДокОснование.Цена;	  ПерваяЦена  = ДокОснование.ПерваяЦена;	  УчетнаяЦена = ДокОснование.УчетнаяЦена;	  ОптНадбавка = ДокОснование.ОптНадбавка;	  СуммасНДС   = ДокОснование.СуммасНДС;	  СтавкаНДС   = ДокОснование.СтавкаНДС;	  СтавкаНДСспр = ?(ДокОснование.СтавкаНДСспр.Выбран()=1,ДокОснование.СтавкаНДСспр,	  юПолучитьНДСпоСтавке(ДокОснование.СтавкаНДС));	  НДС		 = ДокОснование.НДС;	  Сумма	   = ДокОснование.Сумма;	  Масса	   = Товар.Масса*Количество;	  ОпределитьГрузМеста();	 КонецЕсли;    КонецЕсли;   КонецЦикла;    Иначе   ДокОснование.ВыбратьСтроки();   Пока ДокОснование.ПолучитьСтроку() = 1 Цикл    Если ДокОснование.Товар.Вид() = "Номенклатура" Тогда	 НоваяСтрока();	 Товар	   = ДокОснование.Товар;	 Партия	  = ДокОснование.Партия;	 Количество  = ДокОснование.Количество;	 Цена	    = ДокОснование.Цена;	 ПерваяЦена  = ДокОснование.ПерваяЦена;	 УчетнаяЦена = ДокОснование.УчетнаяЦена;	 ОптНадбавка = ДокОснование.ОптНадбавка;	 СуммасНДС   = ДокОснование.СуммасНДС;	 СтавкаНДС   = ДокОснование.СтавкаНДС;	 СтавкаНДСспр = ?(ДокОснование.СтавкаНДСспр.Выбран()=1,ДокОснование.СтавкаНДСспр,	 юПолучитьНДСпоСтавке(ДокОснование.СтавкаНДС));	 НДС		 = ДокОснование.НДС;	 Сумма	   = ДокОснование.Сумма;	 Масса	   = Товар.Масса*Количество;	 ОпределитьГрузМеста();    КонецЕсли;   КонецЦикла;    КонецЕсли;  ВидОтгрузки = 1;  НаОсн = 1;  Получатель = ДокОснование.Плательщик; // ПС 06.04.09 - по замечаниям ЛК  Заказчик   = ДокОснование.Плательщик; // ПС 06.04.09 - по замечаниям ЛК    РасчетныйСчет	 = ДокОснование.РасчетныйСчет;  СчетПолучателя    = ДокОснование.КонтрРасчетныйСчет;  СчетЗаказчика	 = ДокОснование.КонтрРасчетныйСчет;  Договор		   = ДокОСнование.Договор;  ПриВыбореПолучателя();   ПриВыбореДоговора();  Если Метаданные.Документ("Счет").РеквизитШапки("Склад").Выбран()=1 Тогда	  Склад = ДокОснование.Склад;  КонецЕсли;  // ПС 12.02.08  Если Метаданные.Документ("Счет").РеквизитШапки("ЦельПриобретения").Выбран()=1 Тогда   ЦельПриобретения  = ДокОснование.ЦельПриобретения;  КонецЕсли; // пс  ВводПоУмолчанию();  Если (ПустаяСтрока(Основание) = 0) И (Найти(СтрЗаменить(Основание," ", ""), СтрЗаменить(Основание1," ", "")) = 0) Тогда	 Основание = СокрЛП(Основание) + ". " +Основание1;  КонецЕсли;  ДокОснование.ВыбратьСтроки();  Пока ДокОснование.ПолучитьСтроку() = 1 Цикл   Если ДокОснование.Товар.Вид() = "Номенклатура" Тогда    НоваяСтрока();    Товар	   = ДокОснование.Товар;    Количество  = ДокОснование.Количество;    Цена	    = ДокОснование.Цена;    ПерваяЦена  = ДокОснование.ПерваяЦена;    УчетнаяЦена = ДокОснование.УчетнаяЦена;    ОптНадбавка = ДокОснование.ОптНадбавка;    СуммасНДС   = ДокОснование.СуммасНДС;    СтавкаНДС   = ДокОснование.СтавкаНДС;    СтавкаНДСспр = ?(ДокОснование.СтавкаНДСспр.Выбран()=1,ДокОснование.СтавкаНДСспр,	    юПолучитьНДСпоСтавке(ДокОснование.СтавкаНДС));    НДС		 = ДокОснование.НДС;    Сумма	   = ДокОснование.Сумма;    Масса	   = Товар.Масса*Количество;    ОпределитьГрузМеста();	  КонецЕсли;  КонецЦикла;   // ПС 12.02.08  Если КоличествоСтрок()>0 Тогда	 ДокументОснование = ДокОснование;  КонецЕсли;  // псИначеЕсли ДокОснование.Вид() = "ПоступлениеТоваров" Тогда  Склад = ДокОснование.МестоХранения;  ВводПоУмолчанию();  ДокОснование.ВыбратьСтроки();  Пока ДокОснование.ПолучитьСтроку() = 1 Цикл   НоваяСтрока();   Товар	   = ДокОснование.Товар;   Партия	  = ДокОснование.Партия;   Количество  = ДокОснование.Количество;   Пересчет(1);  КонецЦикла;  // ПС 12.02.08  Если КоличествоСтрок()>0 Тогда	 ДокументОснование = ДокОснование;  КонецЕсли; // псКонецЕсли;КонецПроцедуры// Процедура для кнопки "Подбор"// ПС 05.12.07Процедура ПодобратьТМЦ()			    // ПС 12.02.08ПунктМеню = 1;Меню = СоздатьОбъект("СписокЗначений");Меню.ДобавитьЗначение(1,"Подбор товара или продукции из остатков"); // 1Меню.ДобавитьЗначение(2,"Подбор номенклатуры из справочника"); // 2Если Меню.ВыбратьЗначение(ПунктМеню,,,,1) = 0 Тогда  Возврат;КонецЕсли;// псСпПарам = СоздатьОбъект("СписокЗначений");СпПарам.ДобавитьЗначение(Контекст,"Контекст");СпПарам.ДобавитьЗначение(ДатаДок,"ДатаДок");СпПарам.ДобавитьЗначение(Склад,  "МестоХранения");Если ПунктМеню = 1 Тогда  // ПС 12.02.08  СпПарам.ДобавитьЗначение("Номенклатура","ВидТМЦ");  ОткрытьПодбор("Обработка.ПодборНоменклатуры",,СпПарам);ИначеЕсли ПунктМеню = 2 Тогда // ПС 12.02.08  СпПарам.ДобавитьЗначение("Накладная","ВидДокумента");  ОткрытьПодбор("Справочник.Номенклатура", "ДляПодбора", СпПарам);КонецЕсли; // псКонецПроцедуры // ПодобратьТМЦ()//-----------------------------------------------------------------------------// ПС 05.12.07Процедура ОбработкаПодбора(Эл,Кон)Если ТипЗначенияСтр(Эл) = "Справочник" Тогда  // пс  Если ВидОтгрузки >= 3 Тогда // // возврат поставщику товара   Если Эл.ТипНоменклатуры <> Перечисление.ТипыНоменклатуры.Товар Тогда    Предупреждение("Возвращать поставщику возможно только покупные товары!");    Возврат;   КонецЕсли;  КонецЕсли;   Кол=1;  Если ВвестиЧисло(Кол,"Введите количество",10,3)=0 Тогда   Возврат;  КонецЕсли;   НоваяСтрока();  Товар = Эл;  Количество = Кол;  Пересчет(1);   АктивизироватьСтроку(); ИначеЕсли ТипЗначенияСтр(Кон) = "ГрупповойКонтекст" Тогда  // ПС 05.12.07  КолСтрокТЧ = КоличествоСтрок(); // ПС 12.02.08  УдалитьСтроки();  Склад  = Кон.МестоХранения;   ТабДоп = СоздатьОбъект("ТаблицаЗначений");  Кон.ТабВыбора.Выгрузить(ТабДоп);  ТабДоп.Свернуть("ТМЦ,Счет,ЕдИзм,Контрагент,Договор,Цена,ПерваяЦена","Количество"); // ПС 12.02.08   ТабДоп.ВыбратьСтроки();  Пока ТабДоп.ПолучитьСтроку() = 1 Цикл   Номенклатура = ТабДоп.ТМЦ;   Кол		  = ТабДоп.Количество;   Если Кол=0 Тогда    Продолжить;   КонецЕсли;	 НоваяСтрока();   Товар		   = Номенклатура;   Количество	  = Кол;   Комитент	    = ТабДоп.Контрагент;   ДоговорКомиссии = ТабДоп.Договор;   // ПС 12.02.08   ЦенаО		   = ТабДоп.Цена;   Пересчет(1);   Если (ЦенаО<>0) И (Цена<>ЦенаО) И (КолСтрокТЧ<>0) И (ВалютаНакладной = "руб.") Тогда    // возращаем ранее установленные цены (были строки в ТЧ), но только рублёвые    Цена	    = ЦенаО;    ПерваяЦена  = ТабДоп.ПерваяЦена;    Пересчет(0,"Цена");   КонецЕсли; // пс    КонецЦикла;КонецЕсли; // пс		  КонецПроцедуры//Процедура ПроверкаНаличия(Уд = 0)Если (КоличествоСтрок()=0) тогда  Вопрос("Проверять и удалять нечего!");  Возврат;    КонецЕсли;БИ = СоздатьОбъект("БухгалтерскиеИтоги"); БИ.Рассчитать(,ДатаДок);СтрокаОК = "";Удалено = 0;Исправлено = 0;НеХватает = 0;ВыбратьСтроки();Пока ПолучитьСтроку()=1 цикл  Если Товар.ТипТовара = Перечисление.ТипыТоваров.НаКомиссии тогда   КоличествоНаСкладе=БИ.СКД("004","К",,Товар);   ТипТовара = "товар на комиссии ";  Иначе   ТипТовара = "";   СчетУчета = ?(Товар.ТипНоменклатуры = Перечисление.ТипыНоменклатуры.Продукция,"43",	  ?(Товар.ТипТовара = Перечисление.ТипыТоваров.Тара,"41.3",	  ?(Товар.ТипТовара = Перечисление.ТипыТоваров.ПокупныеИзделия,"41.4","41.1")));   КоличествоНаСкладе=БИ.СКД(СчетУчета,"К",,Товар,Склад);  КонецЕсли;  Если КоличествоНаСкладе=0 тогда // нет на складе   Если Уд = 0 тогда    Сообщить("Строка "+НомерСтроки+": "+ТипТовара+Товар+ " - нет на складе","!");   Иначе    Сообщить("Товар "+ТипТовара+": "+Товар+" ("+Количество+ ") - нет на складе. Строка удалена.","!");    УдалитьСтроку();    ВыбратьСтроки();   КонецЕсли;   Удалено = Удалено +1;  ИначеЕсли КоличествоНаСкладе<Количество тогда   Если Уд = 0 тогда    Сообщить("Строка "+НомерСтроки+": "+Товар+ ", в наличии "+КоличествоНаСкладе		   + " из необходимых "+Количество,"!");   Иначе    Сообщить("Строка "+НомерСтроки+": "+Товар+ ", в наличии "+КоличествоНаСкладе		   + " из необходимых "+Количество+". Количество уменьшено.","!");    Количество = КоличествоНаСкладе;    Пересчет(,"Количество");   КонецЕсли;   Исправлено = Исправлено +1;  ИначеЕсли Уд=0 тогда   СтрокаОК = СтрокаОК + " " + НомерСтроки;   //Сообщить("Строка "+НомерСтроки+": "+ТипТовара+Товар+ " - ОК");  КонецЕсли;КонецЦикла;Если Исправлено + Удалено = 0 тогда   Сообщить("ОК");ИначеЕсли ПустоеЗначение(СтрокаОК)=0 тогда   Сообщить("Строки "+СтрокаОК+ " - ОК");Иначе  Если Уд = 0 тогда   Сообщить("На выбранном складе товар отсутствует");  КонецЕсли;КонецЕсли;Если Уд = 1 тогда  Сообщить(""+?(Удалено = 0,"","Удалено "+Удалено)+?(Удалено = 0,"",". ")			 +?(Исправлено = 0,"","Исправлено "+Исправлено));КонецЕсли; КонецПроцедуры //ПроверкаНаличия   //-----------------------------------------------------------------------------Процедура ПриВыбореСклада()Если Склад.Выбран() = 1 Тогда  СохранитьЗначение("НакладнаяСклад",Склад);  Если (КоличествоСтрок()>0) тогда    Если (Вопрос("Проверить наличие товара на выбранном складе?","Да+Нет")="Да") тогда	 ПроверкаНаличия(0); // без удаления    КонецЕсли;  КонецЕсли;Иначе  Склад = ВосстановитьЗначение("НакладнаяСклад");КонецЕсли;ПунктПогрузки = ?(ПустоеЗначение(ПунктПогрузки)=1,""+Склад.Адрес,ПунктПогрузки);юПриВыбореСклада(Склад,ОтпускПроизвел);КонецПроцедуры  //-----------------------------------------------------------------------------Функция ПредставлениеКомитента()Перем Предст;Если Комитент.Выбран() = 1 Тогда  Предст = СокрЛП(Комитент.Наименование);Иначе  Предст = "<Автовыбор>";КонецЕсли;Возврат Предст;КонецФункции //ПредставлениеКомитента//-----------------------------------------------------------------------------Функция ПредставлениеДоговораКомиссии()Перем Предст;Если ДоговорКомиссии.Выбран() = 1 Тогда  Предст = СокрЛП(ДоговорКомиссии.Наименование);Иначе  Предст = "<Автовыбор>";КонецЕсли;Возврат Предст;КонецФункции //ПредставлениеДоговораКомиссии//-----------------------------------------------------------------------------Процедура ВыборКомитента()Если Товар.Выбран() = 0 ТогдаИначеЕсли Товар.ТипНоменклатуры.Выбран() = 0 ТогдаИначеЕсли Товар.ТипНоменклатуры <> Перечисление.ТипыНоменклатуры.Товар ТогдаИначеЕсли Товар.ТипТовара.Выбран() = 0 ТогдаИначеЕсли Товар.ТипТовара = Перечисление.ТипыТоваров.НаКомиссии Тогда  ПунктМеню = 1;  Меню = СоздатьОбъект("СписокЗначений");  Меню.ДобавитьЗначение("Автовыбор при проведении");  Меню.ДобавитьЗначение("Подобрать по бух.итогам");  Меню.ДобавитьЗначение("Выбрать из справочника");  Меню.ВыбратьЗначение(,,ПунктМеню,,1);  Если ПунктМеню = 1 Тогда   Комитент = "";   ДоговорКомиссии = "";    ИначеЕсли ПунктМеню = 2 Тогда   Если Выбран() = 1 Тогда   ИначеЕсли Вопрос("Для подбора комитента по данным бухгалтерского учета   |документ должен быть записан. Записать документ?","Да+Нет") = "Да" Тогда    Записать();   Иначе    Возврат;   КонецЕсли;	 БухИт = СоздатьОбъект("БухгалтерскиеИтоги");   ТаблицаКомитентов = СоздатьОбъект("ТаблицаЗначений");   ТаблицаКомитентов.НоваяКолонка("Комитент",,,,,20);   ТаблицаКомитентов.НоваяКолонка("ДоговорКомиссии",,,,"Договор",20);   ТаблицаКомитентов.НоваяКолонка("Остаток",,,,,10,"Ч10.2.,",2);   ТаблицаКомитентов.НоваяКолонка("Сумма",,,,,15,"Ч15.2-,",2);   ТаблицаКомитентов.НоваяКолонка("Цена",,,,,10,"Ч10.2-,",2);	 БухИт.ИспользоватьСубконто(ВидыСубконто.Номенклатура, Товар, 2);   БухИт.ИспользоватьСубконто(ВидыСубконто.ПартииТовара, Партия, 2);   БухИт.ИспользоватьСубконто(ВидыСубконто.Контрагенты);   БухИт.ИспользоватьСубконто(ВидыСубконто.Основание);   БухИт.ВыполнитьЗапрос(ТекущийДокумент(),,"004");   БухИт.ВыбратьСубконто(2);   Пока БухИт.ПолучитьСубконто(2) = 1 Цикл    ТаблицаКомитентов.НоваяСтрока();    ТаблицаКомитентов.Комитент = БухИт.Субконто(2);    ТаблицаКомитентов.ДоговорКомиссии = "Всего:";    ТаблицаКомитентов.Остаток = БухИт.СНД("К");    ТаблицаКомитентов.Сумма = БухИт.СНД("С");    ТаблицаКомитентов.Цена = ?(ТаблицаКомитентов.Остаток=0,0,ТаблицаКомитентов.Сумма / ТаблицаКомитентов.Остаток);	   БухИт.ВыбратьСубконто(3);    Пока БухИт.ПолучитьСубконто(3) = 1 Цикл	 ТаблицаКомитентов.НоваяСтрока();	 ТаблицаКомитентов.Комитент = БухИт.Субконто(2);	 ТаблицаКомитентов.ДоговорКомиссии = БухИт.Субконто(3);	 ТаблицаКомитентов.Остаток = БухИт.СНД("К");	 ТаблицаКомитентов.Сумма = БухИт.СНД("С");	 ТаблицаКомитентов.Цена = ?(ТаблицаКомитентов.Остаток=0,0,ТаблицаКомитентов.Сумма / ТаблицаКомитентов.Остаток);    КонецЦикла;   КонецЦикла;   Позиция = 1;   Если ТаблицаКомитентов.ВыбратьСтроку(Позиция,"Выберите комитента") = 1 Тогда    Комитент = ТаблицаКомитентов.ПолучитьЗначение(Позиция,"Комитент");    Дог = ТаблицаКомитентов.ПолучитьЗначение(Позиция,"ДоговорКомиссии");    Если ТипЗначенияСтр(Дог) = "Справочник" Тогда	 ДоговорКомиссии = Дог;    Иначе	 ДоговорКомиссии = "";    КонецЕсли;   КонецЕсли;    Иначе //Если ПунктМеню = 3 Тогда   СпрКонтр = СоздатьОбъект("Справочник.Контрагенты");   Если СпрКонтр.Выбрать("Выберите комитента",) = 1 Тогда    Комитент = СпрКонтр.ТекущийЭлемент();    глПриВыбореКонтрагента(Комитент,ДоговорКомиссии);   КонецЕсли;  КонецЕсли;КонецЕсли;КонецПроцедуры //ВыборКомитента//-----------------------------------------------------------------------------Процедура ВыборДоговораКомиссии()Если Товар.Выбран() = 0 ТогдаИначеЕсли Товар.ТипНоменклатуры.Выбран() = 0 ТогдаИначеЕсли Товар.ТипНоменклатуры <> Перечисление.ТипыНоменклатуры.Товар ТогдаИначеЕсли Товар.ТипТовара.Выбран() = 0 ТогдаИначеЕсли Товар.ТипТовара = Перечисление.ТипыТоваров.НаКомиссии Тогда  ПунктМеню = 1;  Меню = СоздатьОбъект("СписокЗначений");  Меню.ДобавитьЗначение("Автовыбор при проведении");  Меню.ДобавитьЗначение("Подобрать по бух.итогам");  Меню.ДобавитьЗначение("Выбрать из справочника");  Меню.ВыбратьЗначение(,,ПунктМеню,,1);  Если ПунктМеню = 1 Тогда   ДоговорКомиссии = "";    ИначеЕсли ПунктМеню = 2 Тогда   Если Выбран() = 1 Тогда   ИначеЕсли Вопрос("Для подбора комитента по данным бухгалтерского учета   |документ должен быть записан. Записать документ?","Да+Нет") = "Да" Тогда    Записать();   Иначе    Возврат;   КонецЕсли;	 БухИт = СоздатьОбъект("БухгалтерскиеИтоги");   ТаблицаКомитентов = СоздатьОбъект("ТаблицаЗначений");   Если Комитент.Выбран() = 0 Тогда    ТаблицаКомитентов.НоваяКолонка("Комитент",,,,,20);   КонецЕсли;   ТаблицаКомитентов.НоваяКолонка("ДоговорКомиссии",,,,"Договор",20);   ТаблицаКомитентов.НоваяКолонка("Остаток",,,,,10,"Ч10.2.,",2);   ТаблицаКомитентов.НоваяКолонка("Сумма",,,,,15,"Ч15.2-,",2);   ТаблицаКомитентов.НоваяКолонка("Цена",,,,,10,"Ч10.2-,",2);	 Если Комитент.Выбран() = 0 Тогда    БухИт.ИспользоватьСубконто(ВидыСубконто.Номенклатура, Товар, 2);    БухИт.ИспользоватьСубконто(ВидыСубконто.ПартииТовара, Партия, 2);    БухИт.ИспользоватьСубконто(ВидыСубконто.Контрагенты);    БухИт.ИспользоватьСубконто(ВидыСубконто.Основание);    БухИт.ВыполнитьЗапрос(ТекущийДокумент(),,"004");    БухИт.ВыбратьСубконто(2);    Пока БухИт.ПолучитьСубконто(2) = 1 Цикл	 ТаблицаКомитентов.НоваяСтрока();	 ТаблицаКомитентов.Комитент = БухИт.Субконто(2);	 ТаблицаКомитентов.ДоговорКомиссии = "Всего:";	 ТаблицаКомитентов.Остаток = БухИт.СНД("К");	 ТаблицаКомитентов.Сумма = БухИт.СНД("С");	 ТаблицаКомитентов.Цена = ТаблицаКомитентов.Сумма / ТаблицаКомитентов.Остаток;		 БухИт.ВыбратьСубконто(3);	 Пока БухИт.ПолучитьСубконто(3) = 1 Цикл	  ТаблицаКомитентов.НоваяСтрока();	  ТаблицаКомитентов.Комитент = БухИт.Субконто(2);	  ТаблицаКомитентов.ДоговорКомиссии = БухИт.Субконто(3);	  ТаблицаКомитентов.Остаток = БухИт.СНД("К");	  ТаблицаКомитентов.Сумма = БухИт.СНД("С");	  ТаблицаКомитентов.Цена = ТаблицаКомитентов.Сумма / ТаблицаКомитентов.Остаток;	 КонецЦикла;    КонецЦикла;	  Иначе    БухИт.ИспользоватьСубконто(ВидыСубконто.Номенклатура, Товар, 2);    БухИт.ИспользоватьСубконто(ВидыСубконто.Контрагенты,Комитент);    БухИт.ИспользоватьСубконто(ВидыСубконто.Основание);    БухИт.ВыполнитьЗапрос(ТекущийДокумент(),,"004");    БухИт.ВыбратьСубконто(3);    Пока БухИт.ПолучитьСубконто(3) = 1 Цикл	 ТаблицаКомитентов.НоваяСтрока();	 ТаблицаКомитентов.ДоговорКомиссии = БухИт.Субконто(3);	 ТаблицаКомитентов.Остаток = БухИт.СНД("К");	 ТаблицаКомитентов.Сумма = БухИт.СНД("С");	 ТаблицаКомитентов.Цена = ТаблицаКомитентов.Сумма / ТаблицаКомитентов.Остаток;    КонецЦикла;   КонецЕсли;   Позиция = 1;   Если ТаблицаКомитентов.ВыбратьСтроку(Позиция,"Выберите комитента") = 1 Тогда    Если Комитент.Выбран() = 0 Тогда	 Комитент = ТаблицаКомитентов.ПолучитьЗначение(Позиция,"Комитент");    КонецЕсли;    Дог = ТаблицаКомитентов.ПолучитьЗначение(Позиция,"ДоговорКомиссии");    Если ТипЗначенияСтр(Дог) = "Справочник" Тогда	 ДоговорКомиссии = Дог;    Иначе	 ДоговорКомиссии = "";    КонецЕсли;   КонецЕсли;    Иначе //Если ПунктМеню = 3 Тогда   Если Комитент.Выбран() = 0 Тогда    СпрКонтр = СоздатьОбъект("Справочник.Контрагенты");    Если СпрКонтр.Выбрать("Выберите комитента",) = 1 Тогда	 Комитент = СпрКонтр.ТекущийЭлемент();	 глПриВыбореКонтрагента(Комитент,ДоговорКомиссии);    КонецЕсли;   КонецЕсли;   Если Комитент.Выбран() = 1 Тогда    СпрДог = СоздатьОбъект("Справочник.Договора");    СпрДог.ИспользоватьВладельца(Комитент);    Если СпрДог.Выбрать("Выберите договор комиссии",) = 1 Тогда	 ДоговорКомиссии = СпрДог.ТекущийЭлемент();	 глПриВыбореДоговора(Комитент,ДоговорКомиссии);    КонецЕсли;   КонецЕсли;  КонецЕсли;КонецЕсли;КонецПроцедуры //ВыборДоговораКомиссии//******************************************************************************// ПриВыбореВидовОтгрузки()//// Параметры://  Нет.//// Вызывается из формул элементов диалога://  Поле со списком - СписокВидовОтгрузки.////Процедура ПриВыбореВидовОтгрузки()Если ВидОтгрузки <> СписокВидовОтгрузки.ТекущаяСтрока() Тогда   ВидОтгрузки = СписокВидовОтгрузки.ТекущаяСтрока();   КонецЕсли;УправлениеСлоемНакладная(); // 5.09.1КонецПроцедуры // ПриВыбореВидовОтгрузки()////Функция ЗаполнитьНаОсновании()Если ПустоеЗначение(ДокументПоступления) = 1 Тогда	 Предупреждение("Выберите документ, которым ранее было				 |отражено поступление товаров от поставщика!");  Возврат 0; ИначеЕсли  Вопрос("Документ будет  заполнен на основании		 |выбранного документа. Продолжить?", "Да+Нет" ) <> "Да" Тогда	  Возврат 0;КонецЕсли;// Заполнение шапки.Склад		 = ДокументПоступления.МестоХранения;   Получатель    = ДокументПоступления.Контрагент;Договор	   = ДокументПоступления.Договор;глПриВыбореСчетаКонтрагента(Получатель, СчетПолучателя);ПриВыбореПолучателя();ПриВыбореДоговора();Основание	 = СокрЛП(Основание) + ". Возврат: "+ СокрЛП(ДокументПоступления);// Заполнение табличной части.УдалитьСтроки();ТаблицаДокумента = СоздатьОбъект("ТаблицаЗначений");ДокументПоступления.ВыгрузитьТабличнуюЧасть(ТаблицаДокумента, "Товар, Количество, Цена, Сумма, СтавкаНДС, Всего");ЗагрузитьТабличнуюЧасть(ТаблицаДокумента);ВыбратьСтроки();Пока ПолучитьСтроку()=1 цикл  СтавкаНДСспр = юПолучитьНДСпоСтавке(СтавкаНДС);  НДС = Окр(Сумма*СтавкаНДС/100,ЗнОкр);  СуммаСНДС = Окр(Сумма + НДС,ЗнОкр);  Масса=Товар.Масса*Количество;  ОпределитьГрузМеста(); КонецЦикла;КонецФункции // ЗаполнитьНаОсновании()//-----------------------------------------------------------------------------Процедура ПриЗакрытии()ПроверкаТаб();глОткрытьЖурнал(Контекст, Новый);КонецПроцедуры // ПриЗакрытии()// Процедура ПриЗаписи()Если глМожноЗаписатьДокумент(Контекст) = 0 Тогда  СтатусВозврата(0);  Возврат;ИначеЕсли глКонтрольДатыДокумента(Контекст, НачальнаяДатаДокумента) = 1 Тогда  СтатусВозврата(0);  Возврат;КонецЕсли;Если (КоличествоСтрок()=0) Тогда  Сообщить("Не введено ни одной строки в табличную часть!");ИначеЕсли (ВидОтгрузки=2) и (Договор.Выбран()=0) Тогда  Сообщить("Для отгруженных товаров не выбран договор");КонецЕсли;Если Выбран()=0 Тогда  Если Константа.ИспользоватьПодчДокДляПечатиТТН_ТН = Нет Тогда   юСохранитьНомерБланка("ФормаНакладнойНомерБланка",НомерБланка);  КонецЕсли;  Если ВидОтгрузки<>3 Тогда	  СохранитьЗначение("ВидОтгрузки_накладной",ВидОтгрузки);  КонецЕсли;  СохранитьЗначение("НакладнаяСклад",Склад);  СохранитьЗначение("НакладнаяВладелецТр",ВладелецТранспорта);Иначе  ЗаписатьНомерБланкаБСО();   КонецЕсли;//Операция.СуммаОперации = Итог("СуммаСндс");Стр = "";		    СписокВидовОтгрузки.ПолучитьЗначение(ВидОтгрузки,Стр);Операция.Содержание = Стр+"/ "+Получатель;КонецПроцедуры//-----------------------------------------------------------------------------Новый = 0;//ЛистовПриложения = 1;ПриИзмЦеныРеализацииПересчитыватьТолькоСкидку = Константа.ПриИзмЦеныРеализацииПересчитыватьТолькоСкидку;ТаблицаПечФорм  = СоздатьОбъект("ТаблицаЗначений");ТаблицаПечФорм.НоваяКолонка("Название","Строка",,,,30);ТаблицаПечФорм.НоваяКолонка("Файл","Строка",,,"Файл",10);ТаблицаПечФорм.НоваяКолонка("Кнопка","Строка",,,,10);ТаблицаПечФорм.НоваяКолонка("ФайлОписания","Строка");// добавим информацию о встроенной формеТаблицаПечФорм.НоваяСтрока();ТаблицаПечФорм.Название	 = "ТТН вертикальная разв.";ТаблицаПечФорм.Кнопка	   = "Печать ТТН верт.";ТаблицаПечФорм.НоваяСтрока();ТаблицаПечФорм.Название	 = "ТТН вертикальная 2 страница";ТаблицаПечФорм.Кнопка	   = "ТТН верт. - стр.2";ТаблицаПечФорм.НоваяСтрока();ТаблицаПечФорм.Название	 = "ТТН горизонтальная";ТаблицаПечФорм.Кнопка	   = "Печать ТТН гориз.";ТаблицаПечФорм.НоваяСтрока();ТаблицаПечФорм.Название	 = "ТТН горизонтальная 2 страница";ТаблицаПечФорм.Кнопка	   = "ТТН гориз. - стр.2";ТаблицаПечФорм.НоваяСтрока();ТаблицаПечФорм.Название	 = "ТТН вертикальная без итоговой части";ТаблицаПечФорм.Кнопка	   = "ТТН верт. без итога";ТаблицаПечФорм.НоваяСтрока();ТаблицаПечФорм.Название	 = "ТТН вертикальная, оборот с итогом";ТаблицаПечФорм.Кнопка	   = "ТТН верт. - с.2 с ит.";ТаблицаПечФорм.НоваяСтрока();ТаблицаПечФорм.Название	 = "Товарная накладная";ТаблицаПечФорм.Кнопка	   = "Печать ТН";сФормБел = "Ч-18.0.'"; // ПС 03.05.08// Изм., релиз 11.12.1 ПС 06.12.11 - подправлена диалоговая форма: расширены поля сумм взаимозачета и номера документа.


    и вот сам модуль


    Код:
    Перем ВсегоПоПродукции,ВсегоПоУслугам;Перем ВсегоПоТоварам,ВыделенныйНДС;Перем ТаблицаДокумента, Курс, ЗнОкр;Перем ТаблицаОтгрузки, ТаблицаКомисии;Перем СчКМС,БухИт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.ИспользоватьСубконто(ВидыСубконто.Контрагенты, ТаблицаДокумента.Комитент, ?(ТаблицаДокумента.Комитент.Выбран()=1,2,1));    БухИт004.ИспользоватьСубконто(ВидыСубконто.Основание, ТаблицаДокумента.ДоговорКомиссии, ?(ТаблицаДокумента.ДоговорКомиссии.Выбран()=1,2,1));    БухИт004.ВыполнитьЗапрос(ТекущийДокумент(),,"004",,,,,5);    КоличествоНаСкладе = БухИт004.СНД("К");    СуммаНаСкладах = БухИт004.СНД("С");   Иначе    БухИт = СоздатьОбъект("БухгалтерскиеИтоги");    БухИт.ИспользоватьСубконто(ВидыСубконто.Номенклатура, Тов,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) - по оплате (товары отгруженные)    Операция.Дебет.Счет = Сч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.523
    Симпатии:
    407
    Баллы:
    104
    А счет 004 какие субсчета содержит? Судя по коду там даже нет партии, т.к. при расчете БИ врубается фильтр только по товару.
  3. TopicStarter Overlay
    AD1986
    Offline

    AD1986 Опытный в 1С

    Регистрация:
    8 фев 2011
    Сообщения:
    138
    Симпатии:
    0
    Баллы:
    26
    Субсчета Номенклатура Места хранения Контрагенты Партиитовара все есть но все равно не отбирает
  4. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Вы перечислили аж 4 вида субсчета. У счета всего их ТРИ
    Похоже вы явно не понимаете суть вопроса
  5. TopicStarter Overlay
    AD1986
    Offline

    AD1986 Опытный в 1С

    Регистрация:
    8 фев 2011
    Сообщения:
    138
    Симпатии:
    0
    Баллы:
    26
    у меня 1с беларусь юкола и там максимально допустимо четыре субконта в счете.... или я что то не правильно поинмаю ???
  6. TopicStarter Overlay
    AD1986
    Offline

    AD1986 Опытный в 1С

    Регистрация:
    8 фев 2011
    Сообщения:
    138
    Симпатии:
    0
    Баллы:
    26
    Я извеняюсь если можете помогите либо удаленнно либо могу выслать md готов даже за возгарождение
  7. Бухгалтерский угодник
    Offline

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

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

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