Перем ВнКодКлиента; Перем ADO; Перем ADOcmd; Перем RS; Перем ЧислоНеоплОтгрНеПросроч; Перем ЧислоНеоплОтгрПросроч; Перем СуммаНеоплОтгрНеПросроч; Перем СуммаНеоплОтгрПросроч; //---------------------------- Процедура ОбработкаПроведения(Частично=0) // 0 - при групповом и полном проведении // 1 - при частичном проведении (только по остаткам) Перем ТаблИтогов; Перем ТаблСтрок; Перем ТаблСтрокДоп; //------------------------------------- // Для учета продажи товаров, взятых на реализацию Перем СписокИтого; Перем СписокСтоимостей; ЗаписьЖурналаРегистрации("ЧислоНеоплОтгрНеПросроч="+ЧислоНеоплОтгрНеПросроч+ ", ЧислоНеоплОтгрПросроч="+ЧислоНеоплОтгрПросроч+ ", СуммаНеоплОтгрНеПросроч="+СуммаНеоплОтгрНеПросроч+ ", СуммаНеоплОтгрПросроч="+СуммаНеоплОтгрПросроч, "Проведение",?(БылоИсключениеПриПроведенииРНк=0,"Вход в процедуру проведения","Вход в процедуру проведения (ИСКЛЮЧЕНИЕ)"),ТекущийДокумент(),3); Если ДатаДок>РабочаяДата() Тогда глНеПроводить(Контекст,"Нельзя проводить документ будущей датой!"); // для проведения без проверки //Если Константа.ПроводитьБезПроверки = 0 Тогда Если глЕстьПраво("Проводить без проверок") = 0 Тогда ЗаписьЖурналаРегистрации("Статус возврата "+СтатусВозврата()+", Стр. 56, Если ДатаДок>РабочаяДата() Тогда", "Проведение","Выход из процедуры проведения",ТекущийДокумент(),3); Возврат; КонецЕсли; КонецЕсли; Если глПроверкаДублейСтрок(Контекст)=1 Тогда глНеПроводить(Контекст,"В документе строки с одинаковым товаром, но разной ценой!"); // для проведения без проверки //Если Константа.ПроводитьБезПроверки = 0 Тогда Если глЕстьПраво("Проводить без проверок") = 0 Тогда ЗаписьЖурналаРегистрации("Статус возврата "+СтатусВозврата()+", Стр. 66, Если глПроверкаДублейСтрок(Контекст)=1 Тогда", "Проведение","Выход из процедуры проведения",ТекущийДокумент(),3); Возврат; КонецЕсли; КонецЕсли; Если ТипУчета>Упр Тогда Если ПустоеЗначение(Фирма)=1 Тогда глНеПроводить(Контекст,"Не указана Фирма!"); // для проведения без проверки //Если Константа.ПроводитьБезПроверки = 0 Тогда Если глЕстьПраво("Проводить без проверок") = 0 Тогда ЗаписьЖурналаРегистрации("Статус возврата "+СтатусВозврата()+", Стр. 77, Если ПустоеЗначение(Фирма)=1 Тогда", "Проведение","Выход из процедуры проведения",ТекущийДокумент(),3); Возврат; КонецЕсли; КонецЕсли; КонецЕсли; //Если Константа.ПроводитьБезПроверки = 0 Тогда Если глЕстьПраво("Проводить без проверок") = 0 Тогда //2004091_/sh&pa+ /Проверка соответствия Клиент.ВидКредита <=> Рнк.УсловияОплаты Если НеВыполнятьПроверку = 0 Тогда Если (УсловияОплаты=Перечисление.УсловияОплаты.Акция) и (Итог("Сумма")=0) Тогда Иначе Если Клиент.ВидКредита = Перечисление.ВидыКредита.Нал Тогда Если (УсловияОплаты <> Перечисление.УсловияОплаты.Полная) и (УсловияОплаты <> Перечисление.УсловияОплаты.ПоНакладной) Тогда //**&СВЕ&** Исправление запретов проведения Если глРазрешеноИгнорироватьЗапретыПроведения() = 0 Тогда глНеПроводить(Контекст,"Вид кредита клиента """+Клиент.ВидКредита+""". Возможные условия оплаты: """+Перечисление.УсловияОплаты.Полная+""" или """+Перечисление.УсловияОплаты.ПоНакладной+"""!!!"); // для проведения без проверки //Если Константа.ПроводитьБезПроверки = 0 Тогда Если глЕстьПраво("Проводить без проверок") = 0 Тогда ЗаписьЖурналаРегистрации("Статус возврата "+СтатусВозврата()+", Стр. 101, Если глРазрешеноИгнорироватьЗапретыПроведения() = 0 Тогда", "Проведение","Выход из процедуры проведения",ТекущийДокумент(),3); Возврат; КонецЕсли; Иначе глНеПроводитьМягко(Контекст,"Вид кредита клиента """+Клиент.ВидКредита+""". Возможные условия оплаты: """+Перечисление.УсловияОплаты.Полная+""" или """+Перечисление.УсловияОплаты.ПоНакладной+"""!!!"); КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; Иначе //20040924/sh&pa+ /Добавил новое право "ОтменаПроверкиРНК" ОбъяснениеПользователя = ""; Если ВвестиСтроку(ОбъяснениеПользователя, " Введите причину отмены проверки", , 1) > 0 Тогда ОбъяснениеПользователя = ?(ОбъяснениеПользователя="", "Пользователь объяснения не ввел", ОбъяснениеПользователя); ЗаписьЖурналаРегистрации(?(ОбъяснениеПользователя="", "Пользователь объяснения не ввел", ОбъяснениеПользователя), "Документ", "Документ проведен без проверки!", ТекущийДокумент(), 4); Иначе СтатусВозврата(0); ЗаписьЖурналаРегистрации("Статус возврата "+СтатусВозврата()+", Стр. 119, Если ВвестиСтроку(ОбъяснениеПользователя, Введите причину отмены проверки, , 1) > 0 Тогда", "Проведение","Выход из процедуры проведения",ТекущийДокумент(),3); Возврат; КонецЕсли; КонецЕсли; КонецЕсли; ТаблицаДокумента=глПодготовитьТаблицуДокумента(Контекст); //------------------------------------- // по Регистру ОстаткиТоваров и РезервыТоваров Если глДвиженияРегистровНакладных(Контекст,ТаблицаДокумента)=1 Тогда ЗаписьЖурналаРегистрации("Статус возврата "+СтатусВозврата()+", Стр. 131, Если глДвиженияРегистровНакладных(Контекст,ТаблицаДокумента)=1 Тогда", "Проведение","Выход из процедуры проведения",ТекущийДокумент(),3); Возврат; КонецЕсли; //--------------------- ВремРегистры=СоздатьОбъект("Регистры"); РегВзПокуп=ВремРегистры.ВзаиморасчетыПокупателей; РегВзПост=ВремРегистры.ВзаиморасчетыПоставщиков; РегГарОп=ВремРегистры.ГарантииОплат; РегНДС=ВремРегистры.НДСприобретенныхТоваров; РегВзПокуп.УстановитьЗначениеФильтра("Фирма",глПустаяФирма); РегВзПокуп.УстановитьЗначениеФильтра("Клиент",Клиент); РегВзПост.УстановитьЗначениеФильтра("Фирма",глПустаяФирма); РегВзПост.УстановитьЗначениеФильтра("Клиент",Клиент); РегГарОп.УстановитьЗначениеФильтра("Клиент",Клиент); Если ЗачитыватьОплатуПоСлужДоговору=1 Тогда СписокДоговоров=СоздатьОбъект("СписокЗначений"); СписокДоговоров.ДобавитьЗначение(Договор); СписокДоговоров.ДобавитьЗначение(глВернутьСлужебныйДоговор(Клиент)); СписокДоговоров.ДобавитьЗначение(ПолучитьПустоеЗначение("Справочник.Договора")); РегВзПокуп.УстановитьЗначениеФильтра("Договор",СписокДоговоров,2); РегВзПост.УстановитьЗначениеФильтра("Договор",СписокДоговоров,2); РегГарОп.УстановитьЗначениеФильтра("Договор",СписокДоговоров,2); Иначе РегВзПокуп.УстановитьЗначениеФильтра("Договор",Договор); РегВзПост.УстановитьЗначениеФильтра("Договор",Договор); РегГарОп.УстановитьЗначениеФильтра("Договор",Договор); КонецЕсли; Если ИтогиАктуальны()=0 Тогда РегВзПокуп.ВременныйРасчет(); РегВзПост.ВременныйРасчет(); РегГарОп.ВременныйРасчет(); РегНДС.ВременныйРасчет(); ВремРегистры.Актуальность(1); ВремРегистры.РассчитатьРегистрыНа(ТекущийДокумент()); КонецЕсли; //Если накладная ПЕРЕПРОВОДИТСЯ, пропускаем проверку на возможность проведения //Если Константа.ПроводитьБезПроверки=0 Тогда Если глЕстьПраво("Проводить без проверок") = 0 Тогда //------------------------------------- // По Регистру ВзаиморасчетыПокупателей Если ТипУчета<Фин Тогда Если ПризнакНакладной=Перечисление.ПризнРасхНакл.Продажа Тогда ТипОперации="Продажа"; ИначеЕсли ПризнакНакладной=Перечисление.ПризнРасхНакл.ВозвратПоставщику Тогда ТипОперации="ВозвратПоставщику"; КонецЕсли; Если (ТипОперации="Продажа") Тогда Если (УсловияОплаты<>Перечисление.УсловияОплаты.Акция) //Если Акция, то не проверяем И (НЕ(Константа.РазрешитьПревышениеКредита=Да)) И (Константа.МетодРасчетаСебестоимостиУправленческогоУчета.Выбран()=1) Тогда // Проверка на возможность проведения накладной РегВзПокуп.ОбратныйПорядок(1); РегВзПокуп.ВыбратьДвижения(НачГода(ДатаДок), ДатаДок); ПослДок = ПолучитьПустоеЗначение("Документ"); ВидПослДок = ПолучитьПустоеЗначение(); Пока РегВзПокуп.ПолучитьДвижение() > 0 Цикл ПослДок = РегВзПокуп.ТекущийДокумент(); ВидПослДок = ПослДок.Вид(); Если (ВидПослДок = "ПриходныйОрдерТБ") ИЛИ (ВидПослДок = "РасходнаяНакладная") Тогда Прервать; ИначеЕсли (ВидПослДок = "ДвиженияДенежныхСредств") Тогда Если РегВзПокуп.Расход > 0 Тогда Прервать; КонецЕсли; КонецЕсли; КонецЦикла; ТекДолг = РегВзПокуп.СводныйОстаток(глПустаяФирма, Клиент, , , , , , , , "Долг") + РегВзПост.СводныйОстаток(глПустаяФирма, Клиент, , , , "Долг"); СумГО = РегГарОп.СводныйОстаток(Клиент,,,,"Наличность"); // определим текущий курс валюты Кредита ПромВал = Клиент.ВалютаКредита; СуммаКред = Клиент.СуммаКредита.Получить(ДатаДок); Если СуммаКред<>0 Тогда ПромГлубина = Клиент.Глубина.Получить(ДатаДок); Иначе ПромГлубина = 0; КонецЕсли; Если ПромВал.Выбран()=0 Тогда ПромВал = Клиент.ВалютаВзаиморасчетов; КонецЕсли; Если ПромВал.Выбран()=0 Тогда ПромВал = Константа.ВалютаВзаиморасчетов; КонецЕсли; Если ПромВал.Выбран()=0 Тогда глНеПроводить(Контекст,"Не найдена валюта кредита клиента!"); // для проведения без проверки //Если Константа.ПроводитьБезПроверки = 0 Тогда Если глЕстьПраво("Проводить без проверок") = 0 Тогда ЗаписьЖурналаРегистрации("Статус возврата "+СтатусВозврата()+", Стр. 228, Если ПромВал.Выбран()=0 Тогда", "Проведение","Выход из процедуры проведения",ТекущийДокумент(),3); Возврат; КонецЕсли; КонецЕсли; КурсКред = глКурсДляВалюты(ПромВал,ДатаДок); ТекСумма = глПересчет(Итог("Сумма"),Валюта,Курс,ПромВал,КурсКред); ГлубинаКредита = Клиент.Глубина.Получить(ДатаДок); // Проверка на просроченный долг Если Проводить <> 1 Тогда Если (СуммаКред <> 0) И (СуммаНеоплОтгрПросроч > Клиент.РазрешенПросроченныйДолг) Тогда глНеПроводить(Контекст, "У клиента """ + СокрЛП(Клиент.ПолнНаименование) + """ есть просроченные оплаты на сумму: " + глФРМ(СуммаНеоплОтгрПросроч,ПромВал,1)); КонецЕсли; КонецЕсли; // Проверка на сумму Если Проводить <> 1 Тогда Если СуммаКред <> 0 Тогда Если ТекДолг + ТекСумма > СуммаКред + СумГО Тогда глНеПроводить(Контекст,"Превышена сумма кредита. Для """ + СокрЛП(Клиент.ПолнНаименование) + """ разрешен кредит " + глФРМ(СуммаКред,ПромВал,1) + ", а сумма долга вместе с суммой накладной составляет " + глФРМ(ТекДолг + ТекСумма,ПромВал,1) + ", Гарантия оплаты: " + глФРМ(СумГО,ПромВал,1)); ЗаписьЖурналаРегистрации("Статус возврата "+СтатусВозврата()+", Превышение кредита", "Проведение","Выход из процедуры проведения",ТекущийДокумент(),3); Возврат; КонецЕсли; КонецЕсли; КонецЕсли; // Проверка на число неоплаченных отгрузок Если Проводить <> 1 Тогда Если (СуммаКред <> 0) И (ГлубинаКредита <> 0) Тогда Если ЧислоНеоплОтгрНеПросроч + ЧислоНеоплОтгрПросроч + 1 > Клиент.РазрешеноНеоплаченныхОтгрузок Тогда глНеПроводить(Контекст, "Превышено число неоплаченных отгрузок. У клиента """ + СокрЛП(Клиент.ПолнНаименование) + """ уже есть " + (ЧислоНеоплОтгрНеПросроч + ЧислоНеоплОтгрПросроч) + " не оплаченых отгрузок, разрешено " + Строка(Клиент.РазрешеноНеоплаченныхОтгрузок)); КонецЕсли; КонецЕсли; КонецЕсли; // Конец проверки на возможность проведения расходной накладной КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; //--------------------- Если Частично=1 Тогда // делаем частичное проведение, поэтому здесь процесс проведения прекращаем Если РежимПроведения<>1 Тогда РежимПроведения=1; КонецЕсли; ЗаписьЖурналаРегистрации("Статус возврата "+СтатусВозврата()+", Стр. 312, Если Частично=1 Тогда", "Проведение","Выход из процедуры проведения",ТекущийДокумент(),3); Возврат; КонецЕсли; //--------------------- // учет по Кредитам // Выделим отдельно Товары и Услуги ТаблицаДокумента.Выгрузить(ТаблСтрокДоп,,,"Товар,Сумма,СуммаНП,ВидТовара,СтавкаНДС,СтавкаНП"); ТаблСтрокДоп.Свернуть("ВидТовара,СтавкаНДС,СтавкаНП","Сумма,СуммаНП"); ТаблСтрокДоп.Выгрузить(ТаблСтрок); ТаблСтрок.Свернуть("ВидТовара,СтавкаНП","Сумма,СуммаНП"); // по Регистру ПартииТоваров Упр. учет Если ТипУчета<Фин Тогда Если Константа.СпособПогашенияПартийТоваров=1 Тогда //стандартное погашение Если глПогашениеПартииТоваров(Контекст,ТаблицаДокумента,"Упр",,СписокИтого,СписокСтоимостей)=1 Тогда ЗаписьЖурналаРегистрации("Статус возврата "+СтатусВозврата()+", Стр. 330, Если Константа.СпособПогашенияПартийТоваров=1 Тогда", "Проведение","Выход из процедуры проведения",ТекущийДокумент(),3); Возврат; КонецЕсли; Иначе //SQL-версия погашения Если глПогашениеПартий_нов(Контекст, СписокИтого, СписокСтоимостей)=1 Тогда ЗаписьЖурналаРегистрации("Статус возврата "+СтатусВозврата()+", Стр. 336, Если глПогашениеПартий_нов(Контекст, СписокИтого, СписокСтоимостей)=1 Тогда", "Проведение","Выход из процедуры проведения",ТекущийДокумент(),3); Возврат; КонецЕсли; КонецЕсли; ТаблКомиссии=СоздатьОбъект("ТаблицаЗначений"); Если СписокИтого.РазмерСписка()>0 Тогда ТаблКомиссии.НоваяКолонка("ВидТовара"); ТаблКомиссии.НоваяКолонка("Поставщик"); ТаблКомиссии.НоваяКолонка("ДоговорКомм"); ТаблКомиссии.НоваяКолонка("СтавкаНП"); ТаблКомиссии.НоваяКолонка("Сумма"); ТаблКомиссии.НоваяКолонка("СуммаНП"); ТаблКомиссии.НоваяКолонка("Стоимость"); Для Н=1 По СписокИтого.РазмерСписка() Цикл СписокВсего=СписокИтого.ПолучитьЗначение(Н); ОтдавПартия=СписокВсего.Получить("Поставка"); ПромТовар=СписокВсего.Получить("Товар"); ПромПоставщик=СписокВсего.Получить("Поставщик"); ДоговорКомм=СписокВсего.Получить("ДоговорКомм"); ОтдавСумма=СписокВсего.Получить("Сумма"); ОтдавСуммаПоРегНДС=СписокВсего.Получить("СуммаПоРегНДС"); ОтдавСтоимость=СписокВсего.Получить("Стоимость"); ОтдавОборот=СписокВсего.Получить("Оборот"); ОтдавВидТовара=СписокВсего.Получить("ВидТовара"); ОтдавСтавкаНП=СписокВсего.Получить("СтавкаНП"); ОтдавСуммаНП=0; Если УчитыватьНП=1 Тогда СтавкаНПпроц=ОтдавСтавкаНП.Ставка; ОтдавСуммаНП=ОтдавОборот*СтавкаНПпроц/100; КонецЕсли; ОтдавСтавкаНДС=СписокВсего.Получить("СтавкаНДС"); ПривязыватьСтроку(СписокВсего.Получить("НомерСтроки")); // по регистру ВзаиморасчетыПоставщиков Если глПогашениеДолгаПоКредиту(Контекст,ВремРегистры,ОтдавПартия,ОтдавСумма,ОтдавСтавкаНДС,,"Упр",ПромПоставщик,ДоговорКомм,Строка(ОтдавВидТовара))=1 Тогда ЗаписьЖурналаРегистрации("Статус возврата "+СтатусВозврата()+", Стр. 374, Если глПогашениеДолгаПоКредиту(Контекст,ВремРегистры,ОтдавПартия,ОтдавСумма,ОтдавСтавкаНДС,,Упр,ПромПоставщик,ДоговорКомм,Строка(ОтдавВидТовара))=1 Тогда", "Проведение","Выход из процедуры проведения",ТекущийДокумент(),3); Возврат; КонецЕсли; ТаблКомиссии.НоваяСтрока(); ТаблКомиссии.ВидТовара=ОтдавВидТовара; ТаблКомиссии.Поставщик=ПромПоставщик; ТаблКомиссии.ДоговорКомм=ДоговорКомм; ТаблКомиссии.СтавкаНП=ОтдавСтавкаНП; ВалютаПоставки=СписокВсего.Получить("ВалютаПоставки"); КурсВалютыПоставки=СписокВсего.Получить("КурсВалютыПоставки"); //ВалютаПартии=СписокВсего.Получить("ВалютаПартии"); //КурсВалютыПартии=СписокВсего.Получить("КурсВалютыПартии"); ТаблКомиссии.Сумма=глПересчет(ОтдавОборот,ВалютаПоставки,КурсВалютыПоставки,Валюта,Курс); ТаблКомиссии.СуммаНП=глПересчет(ОтдавСуммаНП,ВалютаПоставки,КурсВалютыПоставки,Валюта,Курс); ТаблКомиссии.Стоимость=глПересчет(ОтдавСтоимость,ВалютаПоставки,КурсВалютыПоставки,Валюта,Курс); КонецЦикла; ТаблКомиссии.Свернуть("ВидТовара,Поставщик,ДоговорКомм,СтавкаНП","Сумма,СуммаНП,Стоимость"); КонецЕсли; //------------------------------------- // по Регистру ВзаиморасчетыПокупателей Упр. учет ПривязыватьСтроку(0); // сначала зафиксируем задолженность за комиссионные товары ТаблКомиссии.ВыбратьСтроки(); Пока ТаблКомиссии.ПолучитьСтроку()=1 Цикл Если ПустоеЗначение(ТаблКомиссии.ВидТовара)=0 Тогда Если глПогашениеДолгаПоКредиту(Контекст,ВремРегистры,ТекущийДокумент(),ТаблКомиссии.Сумма+ТаблКомиссии.СуммаНП,"",ТаблКомиссии.СтавкаНП,"Упр",ТаблКомиссии.Поставщик,ТаблКомиссии.ДоговорКомм,ТаблКомиссии.ВидТовара.Идентификатор(),,,,ТаблКомиссии.Стоимость)=1 Тогда ЗаписьЖурналаРегистрации("Статус возврата "+СтатусВозврата()+", Стр. 402, Если глПогашениеДолгаПоКредиту(Контекст,ВремРегистры,ТекущийДокумент(),ТаблКомиссии.Сумма+ТаблКомиссии.СуммаНП,,ТаблКомиссии.СтавкаНП,Упр,ТаблКомиссии.Поставщик,ТаблКомиссии.ДоговорКомм,ТаблКомиссии.ВидТовара.Идентификатор(),,,,ТаблКомиссии.Стоимость)=1 Тогда", "Проведение","Выход из процедуры проведения",ТекущийДокумент(),3); Возврат; КонецЕсли; КонецЕсли; КонецЦикла; ТаблСтоимостей=СоздатьОбъект("ТаблицаЗначений"); Если СписокСтоимостей.РазмерСписка()>0 Тогда ТаблСтоимостей.НоваяКолонка("ВидТовара"); ТаблСтоимостей.НоваяКолонка("СтавкаНП"); ТаблСтоимостей.НоваяКолонка("Стоимость"); Для Н=1 По СписокСтоимостей.РазмерСписка() Цикл СписокВсего=СписокСтоимостей.ПолучитьЗначение(Н); ТаблСтоимостей.НоваяСтрока(); ТаблСтоимостей.ВидТовара=СписокВсего.Получить("ВидТовара"); ТаблСтоимостей.СтавкаНП=СписокВсего.Получить("СтавкаНП"); ВалютаУчета=СписокВсего.Получить("ВалютаУчета"); ДатаКурсаТекДок=СписокВсего.Получить("ДатаКурса"); ТаблСтоимостей.Стоимость=глПересчет(СписокВсего.Получить("Стоимость"),ВалютаУчета,ДатаКурсаТекДок,Валюта,Курс); КонецЦикла; КонецЕсли; ТаблСтрок.НоваяКолонка("Стоимость","Число",18,3); ТаблСтрок.УстановитьПараметрыКолонки("Сумма","Число",18,3); ТаблСтрок.УстановитьПараметрыКолонки("СуммаНП","Число",18,3); ТаблКомиссии.Свернуть("ВидТовара,СтавкаНП","Сумма,СуммаНП,Стоимость"); ТаблКомиссии.ВыбратьСтроки(); Пока ТаблКомиссии.ПолучитьСтроку()=1 Цикл ТаблСтрок.НоваяСтрока(); ТаблСтрок.ВидТовара=ТаблКомиссии.ВидТовара; ТаблСтрок.СтавкаНП=ТаблКомиссии.СтавкаНП; ТаблСтрок.Сумма=-ТаблКомиссии.Сумма; ТаблСтрок.СуммаНП=-ТаблКомиссии.СуммаНП; ТаблСтрок.Стоимость=-ТаблКомиссии.Стоимость; КонецЦикла; ТаблСтоимостей.ВыбратьСтроки(); Пока ТаблСтоимостей.ПолучитьСтроку()=1 Цикл ТаблСтрок.НоваяСтрока(); ТаблСтрок.ВидТовара=ТаблСтоимостей.ВидТовара; ТаблСтрок.СтавкаНП=ТаблСтоимостей.СтавкаНП; ТаблСтрок.Стоимость=ТаблСтоимостей.Стоимость; КонецЦикла; ТаблСтрок.Свернуть("ВидТовара,СтавкаНП","Сумма,СуммаНП,Стоимость"); ТаблСтрок.ВыбратьСтроки(); Пока ТаблСтрок.ПолучитьСтроку()=1 Цикл Если ПустоеЗначение(ТаблСтрок.ВидТовара)=0 Тогда Если глПогашениеДолгаПоКредиту(Контекст,ВремРегистры,ТекущийДокумент(),ТаблСтрок.Сумма+ТаблСтрок.СуммаНП,"",ТаблСтрок.СтавкаНП,"Упр",,,ТаблСтрок.ВидТовара.Идентификатор(),,,,ТаблСтрок.Стоимость)=1 Тогда ЗаписьЖурналаРегистрации("Статус возврата "+СтатусВозврата()+", Стр. 451, Если глПогашениеДолгаПоКредиту(Контекст,ВремРегистры,ТекущийДокумент(),ТаблСтрок.Сумма+ТаблСтрок.СуммаНП,,ТаблСтрок.СтавкаНП,Упр,,,ТаблСтрок.ВидТовара.Идентификатор(),,,,ТаблСтрок.Стоимость)=1 Тогда", "Проведение","Выход из процедуры проведения",ТекущийДокумент(),3); Возврат; КонецЕсли; КонецЕсли; КонецЦикла; // пропишем в регистр ПартииТоваров движенния по оказанным услугам; ТаблицаДокумента.ВыбратьСтроки(); Пока ТаблицаДокумента.ПолучитьСтроку()=1 Цикл Если ТаблицаДокумента.ВидТовара=Перечисление.ВидыТоваров.Услуга Тогда ПривязыватьСтроку(ТаблицаДокумента.НомерСтрокиДокумента); Регистр.ПартииТоваров.Фирма=""; Регистр.ПартииТоваров.Товар=ТаблицаДокумента.Товар; Регистр.ПартииТоваров.Статус=УчетОказанныхУслуг; Регистр.ПартииТоваров.Контрагент=Клиент; Регистр.ПартииТоваров.Поставщик=""; Регистр.ПартииТоваров.КлиентВДок=Клиент; Регистр.ПартииТоваров.Поставка=ТекущийДокумент(); Регистр.ПартииТоваров.ПрихДокумент=ТекущийДокумент(); Регистр.ПартииТоваров.ОстатокТовара=1; Регистр.ПартииТоваров.Стоимость=0; Регистр.ПартииТоваров.ПродСтоимость=0; Регистр.ПартииТоваров.НДС=0; Регистр.ПартииТоваров.Оборот=0; Регистр.ПартииТоваров.НДСприхода=0; Регистр.ПартииТоваров.НДСрасхода=0; Регистр.ПартииТоваров.НП=0; Регистр.ПартииТоваров.КодОперации=ОказаниеУслуг; Регистр.ПартииТоваров.ДвижениеПриходВыполнить(); Регистр.ПартииТоваров.Оборот=глПересчет(ТаблицаДокумента.Сумма,Валюта,ДатаДок,Рубли,ДатаДок); Регистр.ПартииТоваров.ДвижениеРасходВыполнить(); КонецЕсли; КонецЦикла; КонецЕсли; //------------------------------------- // по Регистру ПартииТоваров Фин. учет Если ТипУчета>Упр Тогда СписокИтого=СоздатьОбъект("СписокЗначений"); СписокСтоимостей=СоздатьОбъект("СписокЗначений"); Если глПогашениеПартииТоваров(Контекст,ТаблицаДокумента,"Фин",,СписокИтого,СписокСтоимостей)=1 Тогда ЗаписьЖурналаРегистрации("Статус возврата "+СтатусВозврата()+", Стр. 494, Если глПогашениеПартииТоваров(Контекст,ТаблицаДокумента,Фин,,СписокИтого,СписокСтоимостей)=1 Тогда", "Проведение","Выход из процедуры проведения",ТекущийДокумент(),3); Возврат; КонецЕсли; ТаблКомиссииФин=СоздатьОбъект("ТаблицаЗначений"); ТаблКомиссииНДС=СоздатьОбъект("ТаблицаЗначений"); Если СписокИтого.РазмерСписка()>0 Тогда ТаблКомиссииФин.НоваяКолонка("ВидТовара"); ТаблКомиссииФин.НоваяКолонка("Поставщик"); ТаблКомиссииФин.НоваяКолонка("Поставка"); ТаблКомиссииФин.НоваяКолонка("ДоговорКомм"); ТаблКомиссииФин.НоваяКолонка("СтавкаНДС"); ТаблКомиссииФин.НоваяКолонка("СтавкаНП"); ТаблКомиссииФин.НоваяКолонка("Сумма"); ТаблКомиссииФин.НоваяКолонка("Стоимость"); ТаблКомиссииФин.НоваяКолонка("СтоимостьРуб"); ТаблКомиссииФин.НоваяКолонка("СуммаНП"); Для Н=1 По СписокИтого.РазмерСписка() Цикл СписокВсего=СписокИтого.ПолучитьЗначение(Н); ОтдавПартия=СписокВсего.Получить("Поставка"); ПромТовар=СписокВсего.Получить("Товар"); ПромПоставщик=СписокВсего.Получить("Поставщик"); ДоговорКомм=СписокВсего.Получить("ДоговорКомм"); ОтдавСумма=СписокВсего.Получить("Сумма"); ОтдавСуммаПоРегНДС=СписокВсего.Получить("СуммаПоРегНДС"); ОтдавСтоимость=СписокВсего.Получить("Стоимость"); ОтдавОборот=СписокВсего.Получить("Оборот"); ОтдавВидТовара=СписокВсего.Получить("ВидТовара"); ОтдавСтавкаНП=СписокВсего.Получить("СтавкаНП"); ОтдавСуммаНП=0; Если УчитыватьНП=1 Тогда СтавкаНПпроц=ОтдавСтавкаНП.Ставка; ОтдавСуммаНП=ОтдавОборот*СтавкаНПпроц/100; КонецЕсли; ОтдавСтавкаНДС=СписокВсего.Получить("СтавкаНДС"); ПривязыватьСтроку(СписокВсего.Получить("НомерСтроки")); // по ВзаиморасчетыПоставщиков Если глПогашениеДолгаПоКредиту(Контекст,ВремРегистры,ОтдавПартия,ОтдавСумма,ОтдавСтавкаНДС,,"Фин",ПромПоставщик,ДоговорКомм,Строка(ОтдавВидТовара))=1 Тогда ЗаписьЖурналаРегистрации("Статус возврата "+СтатусВозврата()+", Стр. 534, Если глПогашениеДолгаПоКредиту(Контекст,ВремРегистры,ОтдавПартия,ОтдавСумма,ОтдавСтавкаНДС,,Фин,ПромПоставщик,ДоговорКомм,Строка(ОтдавВидТовара))=1 Тогда", "Проведение","Выход из процедуры проведения",ТекущийДокумент(),3); Возврат; КонецЕсли; ТаблКомиссииФин.НоваяСтрока(); ТаблКомиссииФин.ВидТовара=ОтдавВидТовара; ТаблКомиссииФин.Поставщик=ПромПоставщик; ТаблКомиссииФин.Поставка=ОтдавПартия; ТаблКомиссииФин.ДоговорКомм=ДоговорКомм; ТаблКомиссииФин.СтавкаНДС=ОтдавСтавкаНДС; ТаблКомиссииФин.СтавкаНП=ОтдавСтавкаНП; ВалютаПоставки=СписокВсего.Получить("ВалютаПоставки"); //ВалютаПартии=СписокВсего.Получить("ВалютаПартии"); КурсВалютыПоставки=СписокВсего.Получить("КурсВалютыПоставки"); //КурсВалютыПартии=СписокВсего.Получить("КурсВалютыПартии"); ТаблКомиссииФин.Стоимость=глПересчет(ОтдавСтоимость,ВалютаПоставки,КурсВалютыПоставки,Валюта,Курс); ТаблКомиссииФин.СтоимостьРуб=глПересчет(ОтдавСуммаПоРегНДС,ВалютаПоставки,КурсВалютыПоставки,Рубли,ДатаДок); ТаблКомиссииФин.Сумма=глПересчет(ОтдавОборот,ВалютаПоставки,КурсВалютыПоставки,Валюта,Курс); ТаблКомиссииФин.СуммаНП=глПересчет(ОтдавСуммаНП,ВалютаПоставки,КурсВалютыПоставки,Валюта,Курс); КонецЦикла; ТаблКомиссииФин.Выгрузить(ТаблКомиссииНДС); ТаблКомиссииФин.Свернуть("ВидТовара,Поставщик,ДоговорКомм,СтавкаНДС,СтавкаНП","Сумма,СуммаНП,Стоимость"); ТаблКомиссииНДС.Свернуть("Поставка,СтавкаНДС","СтоимостьРуб"); КонецЕсли; КонецЕсли; //-------------------- // по Регистру ВзаиморасчетыПокупателей Фин. учет ПривязыватьСтроку(0); Если ТипУчета>Упр Тогда // по Фин. учету // сначала зафиксируем задолженность за комиссионные товары ТаблКомиссииФин.ВыбратьСтроки(); Пока ТаблКомиссииФин.ПолучитьСтроку()=1 Цикл Если ПустоеЗначение(ТаблКомиссииФин.ВидТовара)=0 Тогда Если глПогашениеДолгаПоКредиту(Контекст,ВремРегистры,ТекущийДокумент(),ТаблКомиссииФин.Сумма+ТаблКомиссииФин.СуммаНП,ТаблКомиссииФин.СтавкаНДС,ТаблКомиссииФин.СтавкаНП,"Фин",ТаблКомиссииФин.Поставщик,ТаблКомиссииФин.ДоговорКомм,ТаблКомиссииФин.ВидТовара.Идентификатор(),,,,ТаблКомиссииФин.Стоимость)=1 Тогда ЗаписьЖурналаРегистрации("Статус возврата "+СтатусВозврата()+", Стр. 569, Если глПогашениеДолгаПоКредиту(Контекст,ВремРегистры,ТекущийДокумент(),ТаблКомиссииФин.Сумма+ТаблКомиссииФин.СуммаНП,ТаблКомиссииФин.СтавкаНДС,ТаблКомиссииФин.СтавкаНП,Фин,ТаблКомиссииФин.Поставщик,ТаблКомиссииФин.ДоговорКомм,ТаблКомиссииФин.ВидТовара.Идентификатор(),,,,ТаблКомиссииФин.Стоимость)=1 Тогда", "Проведение","Выход из процедуры проведения",ТекущийДокумент(),3); Возврат; КонецЕсли; КонецЕсли; КонецЦикла; ТаблСтоимостей=СоздатьОбъект("ТаблицаЗначений"); Если СписокСтоимостей.РазмерСписка()>0 Тогда ТаблСтоимостей.НоваяКолонка("ВидТовара"); ТаблСтоимостей.НоваяКолонка("СтавкаНП"); ТаблСтоимостей.НоваяКолонка("СтавкаНДС"); ТаблСтоимостей.НоваяКолонка("Стоимость"); Для Н=1 По СписокСтоимостей.РазмерСписка() Цикл СписокВсего=СписокСтоимостей.ПолучитьЗначение(Н); ТаблСтоимостей.НоваяСтрока(); ТаблСтоимостей.ВидТовара=СписокВсего.Получить("ВидТовара"); ТаблСтоимостей.СтавкаНП=СписокВсего.Получить("СтавкаНП"); ТаблСтоимостей.СтавкаНДС=СписокВсего.Получить("СтавкаНДС"); ВалютаУчета=СписокВсего.Получить("ВалютаУчета"); ДатаКурсаТекДок=СписокВсего.Получить("ДатаКурса"); ТаблСтоимостей.Стоимость=глПересчет(СписокВсего.Получить("Стоимость"),ВалютаУчета,ДатаКурсаТекДок,Валюта,Курс); КонецЦикла; КонецЕсли; ТаблСтрокДоп.НоваяКолонка("Стоимость","Число",18,3); ТаблСтрокДоп.УстановитьПараметрыКолонки("Сумма","Число",18,3); ТаблСтрокДоп.УстановитьПараметрыКолонки("СуммаНП","Число",18,3); ТаблКомиссииФин.Свернуть("ВидТовара,СтавкаНДС,СтавкаНП","Сумма,СуммаНП,Стоимость"); ТаблКомиссииФин.ВыбратьСтроки(); Пока ТаблКомиссииФин.ПолучитьСтроку()=1 Цикл ТаблСтрокДоп.НоваяСтрока(); ТаблСтрокДоп.ВидТовара=ТаблКомиссииФин.ВидТовара; ТаблСтрокДоп.СтавкаНДС=ТаблКомиссииФин.СтавкаНДС; ТаблСтрокДоп.СтавкаНП=ТаблКомиссииФин.СтавкаНП; ТаблСтрокДоп.Сумма=-ТаблКомиссииФин.Сумма; ТаблСтрокДоп.СуммаНП=-ТаблКомиссииФин.СуммаНП; ТаблСтрокДоп.Стоимость=-ТаблКомиссииФин.Стоимость; КонецЦикла; ТаблСтоимостей.ВыбратьСтроки(); Пока ТаблСтоимостей.ПолучитьСтроку()=1 Цикл ТаблСтрокДоп.НоваяСтрока(); ТаблСтрокДоп.ВидТовара=ТаблСтоимостей.ВидТовара; ТаблСтрокДоп.СтавкаНП=ТаблСтоимостей.СтавкаНП; ТаблСтрокДоп.СтавкаНДС=ТаблСтоимостей.СтавкаНДС; ТаблСтрокДоп.Стоимость=ТаблСтоимостей.Стоимость; КонецЦикла; ТаблСтрокДоп.Свернуть("ВидТовара,СтавкаНДС,СтавкаНП","Сумма,СуммаНП,Стоимость"); // Выделим отдельно Товары и Услуги по разным ставкам НДС ТаблСтрокДоп.ВыбратьСтроки(); Пока ТаблСтрокДоп.ПолучитьСтроку()=1 Цикл Если ПустоеЗначение(ТаблСтрокДоп.ВидТовара)=0 Тогда Если глПогашениеДолгаПоКредиту(Контекст,ВремРегистры,ТекущийДокумент(),ТаблСтрокДоп.Сумма+ТаблСтрокДоп.СуммаНП,ТаблСтрокДоп.СтавкаНДС,ТаблСтрокДоп.СтавкаНП,"Фин",,,ТаблСтрокДоп.ВидТовара.Идентификатор(),,,,ТаблСтрокДоп.Стоимость)=1 Тогда ЗаписьЖурналаРегистрации("Статус возврата "+СтатусВозврата()+", Стр. 623, Если глПогашениеДолгаПоКредиту(Контекст,ВремРегистры,ТекущийДокумент(),ТаблСтрокДоп.Сумма+ТаблСтрокДоп.СуммаНП,ТаблСтрокДоп.СтавкаНДС,ТаблСтрокДоп.СтавкаНП,Фин,,,ТаблСтрокДоп.ВидТовара.Идентификатор(),,,,ТаблСтрокДоп.Стоимость)=1 Тогда", "Проведение","Выход из процедуры проведения",ТекущийДокумент(),3); Возврат; КонецЕсли; КонецЕсли; КонецЦикла; // пропишем в регистр ПартииТоваров движенния по оказанным услугам; ТаблицаДокумента.ВыбратьСтроки(); Пока ТаблицаДокумента.ПолучитьСтроку()=1 Цикл Если ТаблицаДокумента.ВидТовара=Перечисление.ВидыТоваров.Услуга Тогда ПривязыватьСтроку(ТаблицаДокумента.НомерСтрокиДокумента); Регистр.ПартииТоваров.Фирма=Фирма; Регистр.ПартииТоваров.Товар=ТаблицаДокумента.Товар; Регистр.ПартииТоваров.Статус=УчетОказанныхУслуг; Регистр.ПартииТоваров.Контрагент=Клиент; Регистр.ПартииТоваров.Поставщик=""; Регистр.ПартииТоваров.КлиентВДок=Клиент; Регистр.ПартииТоваров.Поставка=ТекущийДокумент(); Регистр.ПартииТоваров.ПрихДокумент=ТекущийДокумент(); Регистр.ПартииТоваров.ОстатокТовара=1; Регистр.ПартииТоваров.Стоимость=0; Регистр.ПартииТоваров.ПродСтоимость=0; Регистр.ПартииТоваров.НДС=0; Регистр.ПартииТоваров.Оборот=0; Регистр.ПартииТоваров.НДСприхода=0; Регистр.ПартииТоваров.НДСрасхода=0; Регистр.ПартииТоваров.НП=0; Регистр.ПартииТоваров.КодОперации=ОказаниеУслуг; Регистр.ПартииТоваров.ДвижениеПриходВыполнить(); Регистр.ПартииТоваров.Оборот=глПересчет(ТаблицаДокумента.Сумма,Валюта,ДатаДок,Рубли,ДатаДок); Регистр.ПартииТоваров.ДвижениеРасходВыполнить(); КонецЕсли; КонецЦикла; КонецЕсли; //------------------------------------- // по Регистру НДСприобретенныхТоваров Если ТипУчета>Упр Тогда Рег=СоздатьОбъект("Регистр.ВзаиморасчетыПоставщиков"); ТаблСуммКомиссии=СоздатьОбъект("ТаблицаЗначений"); ТаблСуммКомиссии.НоваяКолонка("Поставка"); ТаблСуммКомиссии.НоваяКолонка("СуммаНеоплаченныхТоваров","Число",19,5); СписокСуммОплаты=СоздатьОбъект("СписокЗначений"); СписокКредДок=СоздатьОбъект("СписокЗначений"); СписокКодОперации=СоздатьОбъект("СписокЗначений"); Рег.ВыбратьДвиженияДокумента(ТекущийДокумент()); Пока Рег.ПолучитьДвижение()=1 Цикл Если ПустоеЗначение(Рег.Фирма)=1 Тогда Продолжить; КонецЕсли; Если НЕ( (Рег.КодОперации=ВозвратПоставщикуНеоплаченногоТовара) ИЛИ (Рег.КодОперации=ВозвратПоставщикуОплаченногоТовара) ИЛИ (Рег.КодОперации=НеоплаченнаяОтгрузкаТовараПринятого) ) Тогда Продолжить; КонецЕсли; Если (Рег.КредДокумент.Выбран()=0) ИЛИ (Рег.Долг=0) Тогда Продолжить; КонецЕсли; Если НЕ( (Рег.КредДокумент.Вид()="ПриходнаяНакладная") ИЛИ (Рег.КредДокумент.Вид()="ВводПартийТоваров") ИЛИ (Рег.КредДокумент.Вид()="ПриходнаяРеализатора") ИЛИ (Рег.КредДокумент.Вид()="ВводОстатковРеализации") ) Тогда Продолжить; КонецЕсли; Если (Рег.КодОперации=ВозвратПоставщикуНеоплаченногоТовара) ИЛИ (Рег.КодОперации=ВозвратПоставщикуОплаченногоТовара) Тогда СписокСуммОплаты.ДобавитьЗначение(Рег.Долг); СписокКредДок.ДобавитьЗначение(Рег.КредДокумент); СписокКодОперации.ДобавитьЗначение(Рег.КодОперации); ИначеЕсли (Рег.КодОперации=НеоплаченнаяОтгрузкаТовараПринятого) Тогда ТаблСуммКомиссии.НоваяСтрока(); ТаблСуммКомиссии.Поставка=Рег.КредДокумент; ТаблСуммКомиссии.СуммаНеоплаченныхТоваров=Рег.Долг; КонецЕсли; КонецЦикла; ПривязыватьСтроку(0); Для Н=1 По СписокКредДок.РазмерСписка() Цикл КредДок=СписокКредДок.ПолучитьЗначение(Н); ВидКредДок=КредДок.Вид(); СуммаОплатыЗаТоварыИУслуги=СписокСуммОплаты.ПолучитьЗначение(Н); ТаблСтрок=СоздатьОбъект("ТаблицаЗначений"); Если глСоставДокументаДляПровПоНДСПриобрТоваров(ТекущийДокумент(),КредДок,СуммаОплатыЗаТоварыИУслуги,ТаблСтрок)>0 Тогда Регистр.НДСприобретенныхТоваров.Поставка=КредДок; Если СписокКодОперации.ПолучитьЗначение(Н)=ВозвратПоставщикуНеоплаченногоТовара Тогда Регистр.НДСприобретенныхТоваров.КодОперации=СписанНДСВозвращенногоНеоплаченногоТовара; Иначе // СписокКодОперации.ПолучитьЗначение(Н)=ВозвратПоставщикуОплаченногоТовара Регистр.НДСприобретенныхТоваров.КодОперации=ЗачтенНДСОплаченногоТовара; КонецЕсли; ТаблСтрок.ВыбратьСтроки(); Пока ТаблСтрок.ПолучитьСтроку()=1 Цикл Регистр.НДСприобретенныхТоваров.СтавкаНДС=ТаблСтрок.СтавкаНДС; Регистр.НДСприобретенныхТоваров.ВидУчетаНДС=ТаблСтрок.ВидТовара.Идентификатор(); //Процент=глПроцентНДС(ТаблСтрок.СтавкаНДС); //Если Процент<>0 Тогда МожноСписать=РегНДС.Остаток(КредДок,ТаблСтрок.СтавкаНДС,глДополнитьСтроку(ТаблСтрок.ВидТовара.Идентификатор()," ",10,2),"НДС"); Если (ВидКредДок="ВводПартийТоваров") Тогда НадоСписать=ТаблСтрок.НДС; Иначе НадоСписать=Окр(глПересчет(ТаблСтрок.НДС,КредДок.Валюта,КредДок.Курс,Рубли,ДатаДок),2,1); КонецЕсли; БудемСписывать=Мин(МожноСписать,НадоСписать); Регистр.НДСприобретенныхТоваров.НДС=Окр(БудемСписывать,2,1); //Пропорция=?(НадоСписать=0,0,БудемСписывать/НадоСписать); //Регистр.НДСприобретенныхТоваров.ОблагаемаяБазаНДС=Окр(Пропорция*глПересчет(ТаблСтрок.Сумма,КредДок.Валюта,КредДок.Курс,Рубли,ДатаДок),2,1); Регистр.НДСприобретенныхТоваров.ОблагаемаяБазаНДС=Окр(глПересчет(ТаблСтрок.Сумма,КредДок.Валюта,КредДок.Курс,Рубли,ДатаДок),2,1); Регистр.НДСприобретенныхТоваров.ДвижениеРасходВыполнить(); //КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; ТаблСуммКомиссии.Свернуть("Поставка","СуммаНеоплаченныхТоваров"); ТаблКомиссииДоп=СоздатьОбъект("ТаблицаЗначений"); ТаблКомиссииНДС.Выгрузить(ТаблКомиссииДоп); ТаблКомиссииДоп.Свернуть("Поставка","СтоимостьРуб"); ТаблКомиссииНДС.ВыбратьСтроки(); Пока ТаблКомиссииНДС.ПолучитьСтроку()=1 Цикл Поставка=ТаблКомиссииНДС.Поставка; СуммаПолная=ТаблКомиссииНДС.СтоимостьРуб; Регистр.НДСприобретенныхТоваров.Поставка=Поставка; Регистр.НДСприобретенныхТоваров.СтавкаНДС=ТаблКомиссииНДС.СтавкаНДС; Регистр.НДСприобретенныхТоваров.ВидУчетаНДС=Строка(Перечисление.ВидыТоваров.Товар); БазаНДС=СуммаПолная; Регистр.НДСприобретенныхТоваров.ОблагаемаяБазаНДС=Окр(БазаНДС,2,1); ПроцентНДС=глПроцентНДС(ТаблКомиссииНДС.СтавкаНДС); ВыделенНДС=БазаНДС*ПроцентНДС/(100+ПроцентНДС); Регистр.НДСприобретенныхТоваров.НДС=Окр(ВыделенНДС,2,1); Регистр.НДСприобретенныхТоваров.КодОперации=ВыделенНДСПоступившегоНеоплаченногоТовара; Регистр.НДСприобретенныхТоваров.ДвижениеПриходВыполнить(); НомСтр=0; Рез=ТаблКомиссииДоп.НайтиЗначение(Поставка,НомСтр,"Поставка"); ТаблКомиссииДоп.ПолучитьСтрокуПоНомеру(НомСтр); СуммаПолная=ТаблКомиссииДоп.СтоимостьРуб; НомСтр=0; Рез=ТаблСуммКомиссии.НайтиЗначение(Поставка,НомСтр,"Поставка"); Если Рез=0 Тогда КоэффПересч=1; Иначе ТаблСуммКомиссии.ПолучитьСтрокуПоНомеру(НомСтр); КоэффПересч=(СуммаПолная-ТаблСуммКомиссии.СуммаНеоплаченныхТоваров)/СуммаПолная; КонецЕсли; ОплаченНДС=Окр(КоэффПересч*ВыделенНДС,2,1); Если ОплаченНДС>0 Тогда Регистр.НДСприобретенныхТоваров.НДС=ОплаченНДС; Регистр.НДСприобретенныхТоваров.ОблагаемаяБазаНДС=Окр(КоэффПересч*БазаНДС,2,1); Регистр.НДСприобретенныхТоваров.КодОперации=ЗачтенНДСОплаченногоТовара; Регистр.НДСприобретенныхТоваров.ДвижениеРасходВыполнить(); КонецЕсли; КонецЦикла; КонецЕсли; // сделали полное проведение, поэтому отмечаем Если РежимПроведения<>0 Тогда РежимПроведения=0; КонецЕсли; // По регистру ТараУПокупателей ВыбратьСтроки(); Пока ПолучитьСтроку() > 0 Цикл Если ((Товар.ПринадлежитГруппе(Константа.Кеги) > 0) ИЛИ (Товар.ПринадлежитГруппе(Константа.Баллоны) > 0)) Тогда Регистр.ТараУПокупателей.Клиент = Клиент; Регистр.ТараУПокупателей.Тара = Товар; Регистр.ТараУПокупателей.Количество = Количество; Регистр.ТараУПокупателей.ДвижениеРасходВыполнить(); КонецЕсли; КонецЦикла; //Создание накладной на возврат тары. Если ПризнакНакладной <> Перечисление.ПризнРасхНакл.ВозвратПоставщику Тогда Док = СоздатьОбъект("Документ"); ПНК = СоздатьОбъект("Документ.ПриходнаяНакладная"); Док.ВыбратьПодчиненныеДокументы(ДатаДок, ДатаДок, ТекущийДокумент()); естьПНкТ = 0; Пока Док.ПолучитьДокумент() = 1 Цикл Если Док.Комментарий = "возврат тары" Тогда естьПНкТ = 1; Прервать; КонецЕсли; КонецЦикла; спрКонтрагенты = СоздатьОбъект("Справочник.Контрагенты"); спрКонтрагенты.НайтиЭлемент(Клиент); Пока спрКонтрагенты.Уровень() <> 1 Цикл спрКонтрагенты.НайтиЭлемент(спрКонтрагенты.Родитель); КонецЦикла; Если (естьПНкТ = 0) И (Прав(Лев(спрКонтрагенты.Наименование, 14), 10) = "ПОКУПАТЕЛИ") Тогда ПНК.Новый(); ПНК.Автор = глПользователь; ПНК.Фирма=Фирма; ПНК.Основание=ПредставлениеВида()+" № " + НомерДок + " от " + Шаблон("[ДатаДок]"); ПНК.ТипУчета=0; //Упр ПНК.ФинУчет=?(ПНК.ТипУчета>0,1,0); ПНК.Комментарий = "возврат тары"; //обязательно. используется при поиске этих накладных глУстановитьНомерДок(ПНК); ПНК.ДатаДок = ДатаДок; ПНК.Валюта = Валюта; ПНК.Дата_Курса = Дата_Курса; ПНК.ДокументОснование = ТекущийДокумент(); ПНК.Клиент = Клиент; ПНК.Договор = Договор; ПНК.КатегорияЦен = КатегорияЦен; ПНК.Курс = Курс; ПНК.ПризнакНакладной = Перечисление.ПризнПрихНакл.Закупка; скл = СоздатьОбъект("Справочник.МестаХранения"); Если скл.НайтиПоНаименованию("Склад тары", 0, 1) = 1 Тогда ПНК.Склад = скл.ТекущийЭлемент(); Иначе Сообщить("Ошибка при формировании накладной на возврат тары. Не найден склад тары"); КонецЕсли; ПНК.ВариантРасчетаНалогов = Константа.ОсновнойВариантРасчетаНалогов; ПНК.Записать(); КонецЕсли; КонецЕсли; //****************************************************************************** ЗаписьЖурналаРегистрации("Статус возврата "+СтатусВозврата()+", Нормальное завершение", "Проведение","Выход из процедуры проведения",ТекущийДокумент(),3); КонецПроцедуры //------------------------ Процедура ОбработкаУдаленияПроведения() Если РежимПроведения<>0 Тогда РежимПроведения=0; КонецЕсли; КонецПроцедуры //****************************************************************************** // Тело модуля // БылоИсключениеПриПроведенииРНк=0; Если глЕстьПраво("Проводить без проверок") = 1 Тогда ЧислоНеоплОтгрНеПросроч = 0; ЧислоНеоплОтгрПросроч = 0; СуммаНеоплОтгрНеПросроч = 0; СуммаНеоплОтгрПросроч = 0; Иначе //20050101/sh&pa+ /штрих-коды Если глРнкОтгружена(Контекст) = 1 Тогда глНеПроводить(Контекст, "Документ нельзя редактировать, т.к. по нему уже прошла отгрузка со склада!"); КонецЕсли; Попытка ADO = СоздатьОбъект("ADODB.Connection"); ADO.Open("Provider=SQLOLEDB;Persist Security Info=True;Initial Catalog=" + СокрЛП(Константа.SQLDB) + ";Data Source="+СокрЛП(Константа.SQLDS),"sa", "qazwsx", -1); ВнКодКлиента = _IdToStr(Число(Сред(СтрПолучитьСтроку(СтрЗаменить(ЗначениеВСтрокуВнутр(Клиент),",",РазделительСтрок), 7), 2, 13))); ADOcmd = СоздатьОбъект("ADODB.Command"); ADOcmd.ActiveConnection = ADO; ADOcmd.CommandType = 4; ADOcmd.CommandText = "RestByDocs"; ADOcmd.Parameters.Append(ADOcmd.CreateParameter("Клиент", 129, 1, 9, ВнКодКлиента)); ADOcmd.Parameters.Append(ADOcmd.CreateParameter("ТА", 129, 1, 8, Формат(ДатаГод(ПолучитьТА()), "Ч(0)4") + Формат(ДатаМесяц(ПолучитьТА()), "Ч(0)2") + Формат(ДатаЧисло(ПолучитьТА()), "Ч(0)2"))); RS = СоздатьОбъект("ADODB.Recordset"); ЧислоНеоплОтгрНеПросроч = 0; ЧислоНеоплОтгрПросроч = 0; СуммаНеоплОтгрНеПросроч = 0; СуммаНеоплОтгрПросроч = 0; RS.Open(ADOcmd); Если RS.State <> 0 Тогда Пока RS.EOF() = 0 Цикл Если Число(RS.Fields(0).Value) = 1 Тогда СуммаНеоплОтгрПросроч = Число(RS.Fields(1).Value); ЧислоНеоплОтгрПросроч = Число(RS.Fields(2).Value); Иначе СуммаНеоплОтгрНеПросроч = Число(RS.Fields(1).Value); ЧислоНеоплОтгрНеПросроч = Число(RS.Fields(2).Value); КонецЕсли; RS.MoveNext(); КонецЦикла; RS.Close(); КонецЕсли; //Сообщить("СуммаНеоплОтгрПросроч: "+СуммаНеоплОтгрПросроч); //Сообщить("ЧислоНеоплОтгрПросроч: "+ЧислоНеоплОтгрПросроч); //Сообщить("СуммаНеоплОтгрНеПросроч: "+СуммаНеоплОтгрНеПросроч); //Сообщить("ЧислоНеоплОтгрНеПросроч: "+ЧислоНеоплОтгрНеПросроч); ADO.Close(); Исключение ЧислоНеоплОтгрНеПросроч = 0; ЧислоНеоплОтгрПросроч = 0; СуммаНеоплОтгрНеПросроч = 0; СуммаНеоплОтгрПросроч = 0; БылоИсключениеПриПроведенииРНк=1; Сообщить(ОписаниеОшибки()); ЗаписьЖурналаРегистрации("Ошибка выполнения SQL запроса в расходной накладной","SQL error","Ошибка проверки кредитов",ТекущийДокумент(),5); Предупреждение("Критическая ошибка!!! Обратитесь к разработчикам!",180); КонецПопытки; КонецЕсли;