Advertisement
Guest User

УПД 1с

a guest
Feb 4th, 2015
1,418
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 122.12 KB | None | 0 0
  1. Функция СведенияОВнешнейОбработке() Экспорт
  2.  
  3. ПараметрыРегистрации = Новый Структура;
  4. Массив = Новый Массив;
  5. Массив.Добавить("Документы.РеализацияТоваровУслуг");
  6. ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма"); // Или отчет, обработка,
  7. ПараметрыРегистрации.Вставить("Назначение", Массив);
  8. ПараметрыРегистрации.Вставить("Наименование", "Универс.передаточный док-т");
  9. ПараметрыРегистрации.Вставить("Версия", "1.0");
  10. ПараметрыРегистрации.Вставить("Информация", "УПД(внешняя печатная форма)");
  11. ПараметрыРегистрации.Вставить("БезопасныйРежим", ЛОЖЬ);
  12.  
  13. Команды = ПолучитьТаблицуКоманд();
  14.  
  15. ДобавитьКоманду(Команды, "УПД(внешняя печатная форма)",
  16. "Универс.передаточный док-т",
  17. "ВызовСерверногоМетода",
  18. Ложь,
  19. "ПечатьXML");
  20.  
  21. ПараметрыРегистрации.Вставить("Команды", Команды);
  22.  
  23. Возврат ПараметрыРегистрации;
  24.  
  25.  
  26. КонецФункции
  27. Функция ПолучитьТаблицуКоманд()
  28.  
  29. Команды = Новый ТаблицаЗначений;
  30. Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
  31. Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
  32. Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
  33. Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
  34. Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
  35.  
  36. Возврат Команды
  37.  
  38. КонецФункции
  39. Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
  40.  
  41. НоваяКоманда = ТаблицаКоманд.Добавить();
  42. НоваяКоманда.Представление = Представление;
  43. НоваяКоманда.Идентификатор = Идентификатор;
  44. НоваяКоманда.Использование = Использование;
  45. НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
  46. НоваяКоманда.Модификатор = Модификатор;
  47.  
  48. КонецПроцедуры
  49.  
  50.  
  51.  
  52. Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
  53.  
  54.  
  55. УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "УПДСтатус1", "УПД (статус 1)",
  56. ПечатьУниверсальныхПередаточныхДокументов(МассивОбъектов, ОбъектыПечати,
  57. Документы.СчетФактураВыданный.ТекстЗапросаПечатьСчетовФактур(Истина, Истина)),,
  58. "Обработка.ПечатьУПД.ПФ_MXL_УниверсальныйПередаточныйДокумент");
  59.  
  60.  
  61.  
  62. ОбщегоНазначенияБП.ЗаполнитьДополнительныеПараметрыПечати(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
  63.  
  64. КонецПроцедуры
  65.  
  66. &НаСервере
  67. Функция ПечатьУниверсальныхПередаточныхДокументов(МассивОбъектов, ОбъектыПечати, ТекстЗапросаДокументам, ТолькоПередаточныйДокумент = Ложь) Экспорт
  68.  
  69. УстановитьПривилегированныйРежим(Истина);
  70.  
  71. ТабДокумент = Новый ТабличныйДокумент;
  72. ТабДокумент.АвтоМасштаб = Истина;
  73. ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
  74. ТабДокумент.ЭкземпляровНаСтранице = 1;
  75.  
  76. ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_УниверсальныйПередаточныйДокумент";
  77.  
  78. УстановкаМинимальныхПолейДляПечати(ТабДокумент);
  79.  
  80. Макет = ПолучитьМакет("ПФ_MXL_УниверсальныйПередаточныйДокумент");
  81.  
  82. Если ТолькоПередаточныйДокумент Тогда
  83. ДанныеУниверсальныхПередаточныхДокументов = ПолучитьДанныеДляПечатиУниверсальногоПередаточногоДокумента(
  84. МассивОбъектов, ТекстЗапросаДокументам);
  85. Иначе
  86. ДанныеУниверсальныхПередаточныхДокументов = ПолучитьДанныеДляПечатиСчетаФактуры1137(
  87. МассивОбъектов, ТекстЗапросаДокументам, Истина);
  88. КонецЕсли;
  89.  
  90. ПервыйДокумент = Истина;
  91.  
  92. Для Каждого ВыборкаУПД ИЗ ДанныеУниверсальныхПередаточныхДокументов Цикл
  93.  
  94. Если ВыборкаУПД.Дата < '20130101' Тогда
  95. Продолжить;
  96. КонецЕсли;
  97.  
  98. ТаблицаДокумента = ВыборкаУПД.ТаблицаДокумента;
  99. Если ТаблицаДокумента = Неопределено Тогда
  100. Продолжить;
  101. КонецЕсли;
  102.  
  103. Если НЕ ПервыйДокумент Тогда
  104. ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
  105. КонецЕсли;
  106. ПервыйДокумент = Ложь;
  107.  
  108. // Запомним номер строки, с которой начали выводить текущий документ.
  109. НомерСтрокиНачало = ТабДокумент.ВысотаТаблицы + 1;
  110.  
  111. ВывестиСчетФактуруВТабличныйДокумент(ТабДокумент, Макет, ВыборкаУПД, Истина);
  112.  
  113. // Вывод подвала накладной
  114. ОбластьМакета = Макет.ПолучитьОбласть("ПодвалНакладной");
  115. ОбластьМакета.Параметры.Заполнить(ВыборкаУПД.ДанныеШапки);
  116. ТабДокумент.Вывести(ОбластьМакета);
  117.  
  118. // В табличном документе зададим имя области, в которую был выведен объект.
  119. // Нужно для возможности печати покомплектно.
  120. УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабДокумент,
  121. НомерСтрокиНачало, ОбъектыПечати, ВыборкаУПД.Ссылка);
  122.  
  123. КонецЦикла;
  124.  
  125. Если МассивОбъектов.Количество() = 1 И ПервыйДокумент Тогда
  126. СообщениеОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
  127. НСтр("ru='Для %1 универсальный передаточный документ не применяется'"), Строка(МассивОбъектов[0]));
  128. ОбщегоНазначенияКлиентСервер.СообщитьПользователю(СообщениеОбОшибке);
  129. КонецЕсли;
  130.  
  131. Возврат ТабДокумент;
  132.  
  133. КонецФункции
  134.  
  135. Функция ПолучитьДанныеДляПечатиСчетаФактуры1137(МассивОбъектов, ТекстЗапросаПоСчетамФактурам, ДополнитьДаннымиУПД = Ложь) Экспорт
  136.  
  137. Запрос = Новый Запрос;
  138. Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
  139. Запрос.УстановитьПараметр("НачалоПримененияПостановления1137", УчетНДСБП.ПолучитьДатуНачалаДействияПостановления1137());
  140. Запрос.Текст = ТекстЗапросаПоСчетамФактурам;
  141. Результаты = Запрос.ВыполнитьПакет();
  142.  
  143. ВыборкаСФ = Результаты[0].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "СчетФактура");
  144.  
  145. ПлатежноРасчетныеДокументы = Неопределено;
  146. Если Результаты.Количество() > 1 И НЕ Результаты[1].Пустой() Тогда
  147. ПлатежноРасчетныеДокументы = Результаты[1].Выгрузить();
  148. ПлатежноРасчетныеДокументы.Индексы.Добавить("СчетФактура");
  149. КонецЕсли;
  150.  
  151. ТаблицаСчетовФактур = Новый ТаблицаЗначений();
  152. ТаблицаСчетовФактур.Колонки.Добавить("ДанныеШапки");
  153. ТаблицаСчетовФактур.Колонки.Добавить("ТаблицаДокумента");
  154. ТаблицаСчетовФактур.Колонки.Добавить("ДокументыОснования");
  155. ТаблицаСчетовФактур.Колонки.Добавить("ВидСчетаФактуры");
  156. ТаблицаСчетовФактур.Колонки.Добавить("СчетФактура");
  157. ТаблицаСчетовФактур.Колонки.Добавить("СчетФактураБезНДС");
  158. ТаблицаСчетовФактур.Колонки.Добавить("Дата");
  159. ТаблицаСчетовФактур.Колонки.Добавить("Ссылка");
  160.  
  161. ДанныеСчетаФактуры = Новый Структура(
  162. "СчетФактура,ВидСчетаФактуры,Контрагент,ДоговорКонтрагента,ИспользуетсяПостановлениеНДС1137,НеподтверждениеНулевойСтавки,СводныйКомиссионный");
  163. ДанныеСчетаФактуры.ИспользуетсяПостановлениеНДС1137 = Истина;
  164. ДанныеСчетаФактуры.НеподтверждениеНулевойСтавки = Ложь;
  165.  
  166. Пока ВыборкаСФ.Следующий() Цикл
  167.  
  168. ТаблицаДокумента = Неопределено;
  169. ДокументыОснования = Новый Массив;
  170. ВыборкаПоОснованиям = ВыборкаСФ.Выбрать();
  171. Пока ВыборкаПоОснованиям.Следующий() Цикл
  172. Если НЕ ЗначениеЗаполнено(ВыборкаПоОснованиям.ДокументОснование) Тогда
  173. Продолжить;
  174. КонецЕсли;
  175.  
  176. ДокументыОснования.Добавить(ВыборкаПоОснованиям.ДокументОснование);
  177. ЗаполнитьЗначенияСвойств(ДанныеСчетаФактуры, ВыборкаСФ);
  178. ПараметрыОснования = ПодготовитьДанныеДляПечатиСчетовФактур(ВыборкаПоОснованиям.ДокументОснование, ДанныеСчетаФактуры);
  179.  
  180. Если ПараметрыОснования.Реквизиты = Неопределено ИЛИ ПараметрыОснования.ТаблицаДокумента = Неопределено Тогда
  181. Продолжить;
  182. КонецЕсли;
  183.  
  184. Реквизиты = ПараметрыОснования.Реквизиты[0];
  185.  
  186. Если ТаблицаДокумента = Неопределено Тогда
  187. ТаблицаДокумента = ПараметрыОснования.ТаблицаДокумента;
  188. Иначе
  189. ОбщегоНазначенияБПВызовСервера.ЗагрузитьВТаблицуЗначений(ПараметрыОснования.ТаблицаДокумента, ТаблицаДокумента);
  190. КонецЕсли;
  191. КонецЦикла;
  192. Если ТаблицаДокумента = Неопределено Тогда
  193. Продолжить;
  194. КонецЕсли;
  195.  
  196. ТаблицаДокумента.Колонки.СуммаБезНДС.Имя = "Стоимость";
  197.  
  198. КолонкиГруппировок = ""
  199. +"Товар,"
  200. +"ТоварКод,"
  201. +"ТоварНаименование,"
  202. +"СтранаПроисхождения,"
  203. +"ПредставлениеСтраны,"
  204. +"СтранаПроисхожденияКод,"
  205. +"НомерГТД,"
  206. +"ПредставлениеГТД,"
  207. +"ЕдиницаИзмерения,"
  208. +"ЕдиницаИзмеренияКод,"
  209. +"ЕдиницаИзмеренияНаименование,"
  210. +"Цена,"
  211. +"СтавкаНДС,"
  212. +"КонтрагентСводныйСФ,"
  213. +"Акциз";
  214.  
  215. КолонкиСуммирования = ""
  216. +"Количество,"
  217. +"Всего,"
  218. +"Стоимость,"
  219. +"СуммаНДС,"
  220. +"ВсегоРуб,"
  221. +"НДСРуб,"
  222. +"СуммаБезНДСРуб";
  223.  
  224. ТаблицаДокумента.Свернуть(КолонкиГруппировок, КолонкиСуммирования);
  225. ТаблицаДокумента.Колонки.Добавить("НомерСтроки");
  226.  
  227. ДанныеШапки = ПодготовитьДанныеШапкиСчетаФактуры1137(ВыборкаСФ, Реквизиты, ПлатежноРасчетныеДокументы, ДополнитьДаннымиУПД);
  228.  
  229. СчетФактура = ТаблицаСчетовФактур.Добавить();
  230. СчетФактура.Дата = ВыборкаСФ.Дата;
  231. СчетФактура.СчетФактура = ВыборкаСФ.СчетФактура;
  232. СчетФактура.ВидСчетаФактуры = ВыборкаСФ.ВидСчетаФактуры;
  233. СчетФактура.СчетФактураБезНДС = ВыборкаСФ.СчетФактураБезНДС;
  234. СчетФактура.ДанныеШапки = ДанныеШапки;
  235. СчетФактура.ТаблицаДокумента = ТаблицаДокумента;
  236. СчетФактура.ДокументыОснования = ДокументыОснования;
  237. СчетФактура.Ссылка = ВыборкаСФ.СчетФактура;
  238.  
  239. КонецЦикла;
  240.  
  241. Возврат ТаблицаСчетовФактур;
  242.  
  243. КонецФункции
  244.  
  245. Функция ПодготовитьДанныеШапкиСчетаФактуры1137(ВыборкаСФ, Реквизиты, ПлатежноРасчетныеДокументы, ДополнитьДаннымиУПД)
  246.  
  247. ДанныеШапки = Новый Структура;
  248.  
  249. // Номер и дата
  250. Если ВыборкаСФ.УдалитьПрефиксыИзНомера Тогда
  251. Номер = ПрефиксацияОбъектовКлиентСервер.ПолучитьНомерНаПечать(ВыборкаСФ.Номер, Истина, Ложь);
  252. Иначе
  253. Номер = ВыборкаСФ.Номер;
  254. КонецЕсли;
  255.  
  256. // Дополняем номер индексом обособленного подразделения (при необходимости)
  257. Если ЗначениеЗаполнено(Реквизиты.ЦифровойИндексОбособленногоПодразделения)
  258. И ВыборкаСФ.ЭтоСчетФактураВыданный
  259. И ЗначениеЗаполнено(ВыборкаСФ.ВидСчетаФактуры) Тогда
  260. Номер = Номер + "/" + Реквизиты.ЦифровойИндексОбособленногоПодразделения;
  261. КонецЕсли;
  262.  
  263. ДанныеШапки.Вставить("Номер", СокрЛП(Номер));
  264. ДанныеШапки.Вставить("Дата", ВыборкаСФ.Дата);
  265.  
  266. // Номер и дата исправления
  267. ДанныеШапки.Вставить("Исправление", ВыборкаСФ.Исправление);
  268. Если ВыборкаСФ.Исправление Тогда
  269. ДанныеШапки.Вставить("НомерИсправления", ВыборкаСФ.НомерИсправления);
  270. ДанныеШапки.Вставить("ДатаИсправления", ВыборкаСФ.ДатаИсправления);
  271. Иначе
  272. ДанныеШапки.Вставить("НомерИсправления", "--");
  273. ДанныеШапки.Вставить("ДатаИсправления", "--");
  274. КонецЕсли;
  275.  
  276. ДанныеШапки.Вставить("Поставщик", Реквизиты.Поставщик);
  277.  
  278. Если Реквизиты.СводныйСФКомиссияПоЗакупке Тогда
  279.  
  280. СведенияОПоставщике = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(Реквизиты.Организация, ВыборкаСФ.Дата);
  281.  
  282. ДанныеШапки.Вставить("ПредставлениеПоставщика", Реквизиты.Поставщик);
  283.  
  284. ДанныеШапки.Вставить("АдресПоставщика", Реквизиты.АдресПоставщика);
  285.  
  286. ДанныеШапки.Вставить("ИННКППпоставщика", Реквизиты.ИННКППпоставщика);
  287.  
  288. Иначе
  289.  
  290. СведенияОПоставщике = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(Реквизиты.Поставщик, ВыборкаСФ.Дата);
  291.  
  292. ДанныеШапки.Вставить("ПредставлениеПоставщика", ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОПоставщике, "НаименованиеДляПечатныхФорм,"));
  293.  
  294. // Адрес продавца
  295. ДанныеШапки.Вставить("АдресПоставщика", ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОПоставщике, "ЮридическийАдрес,"));
  296.  
  297. КонецЕсли;
  298.  
  299. КППпоставщика = ?(НЕ ВыборкаСФ.ЭтоСчетФактураВыданный И ЗначениеЗаполнено(ВыборкаСФ.КППСчетаФактуры), ВыборкаСФ.КППСчетаФактуры, Реквизиты.КППпоставщика);
  300.  
  301. ДанныеШапки.Вставить("ИННпоставщика", Реквизиты.ИННпоставщика);
  302.  
  303. ДанныеШапки.Вставить("КППпоставщика", КППпоставщика);
  304.  
  305. // Наименование покупателя
  306. ДанныеШапки.Вставить("Покупатель", Реквизиты.Покупатель);
  307.  
  308. Если Реквизиты.СводныйСФКомиссияПоПродаже Тогда
  309.  
  310. ДанныеШапки.Вставить("ПредставлениеПокупателя", Реквизиты.Покупатель);
  311.  
  312. ДанныеШапки.Вставить("АдресПокупателя", Реквизиты.АдресПокупателя);
  313.  
  314. ДанныеШапки.Вставить("ИННКПППокупателя", Реквизиты.ИННКППпокупателя);
  315.  
  316. Иначе
  317.  
  318. СведенияОПокупателе = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(Реквизиты.Покупатель, ВыборкаСФ.Дата);
  319.  
  320. ДанныеШапки.Вставить("ПредставлениеПокупателя", ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОПокупателе, "НаименованиеДляПечатныхФорм,"));
  321.  
  322. // Адрес покупателя
  323. ДанныеШапки.Вставить("АдресПокупателя", ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОПокупателе, "ЮридическийАдрес,"));
  324.  
  325. КонецЕсли;
  326.  
  327. КППпокупателя = ?(ВыборкаСФ.ЭтоСчетФактураВыданный И ЗначениеЗаполнено(ВыборкаСФ.КППСчетаФактуры), ВыборкаСФ.КППСчетаФактуры, Реквизиты.КППпокупателя);
  328.  
  329. ДанныеШапки.Вставить("ИННпокупателя", Реквизиты.ИННпокупателя);
  330.  
  331. ДанныеШапки.Вставить("КППпокупателя", КППпокупателя);
  332.  
  333. // Грузоотправитель
  334. Если ВыборкаСФ.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаАванс
  335. ИЛИ ВыборкаСФ.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаАвансКомитента
  336. ИЛИ ВыборкаСФ.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаАвансКомитентаНаЗакупку Тогда
  337. Грузоотправитель = Неопределено;
  338. ПредставлениеГрузоотправителя = "--";
  339. ИначеЕсли Реквизиты.ЕстьТовары
  340. И ЗначениеЗаполнено(Реквизиты.Грузоотправитель) Тогда
  341. Если ТипЗнч(Реквизиты.Грузоотправитель) = Тип("Строка") Тогда
  342. ПредставлениеГрузоотправителя = Реквизиты.Грузоотправитель;
  343. Иначе
  344. СведенияОГрузоотправителе = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(Реквизиты.Грузоотправитель, ВыборкаСФ.Дата);
  345. ПредставлениеГрузоотправителя = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(
  346. СведенияОГрузоотправителе, "НаименованиеДляПечатныхФорм,ФактическийАдрес,");
  347. КонецЕсли;
  348. Грузоотправитель = Реквизиты.Грузоотправитель;
  349. Иначе
  350. Грузоотправитель = Неопределено;
  351. ПредставлениеГрузоотправителя = "--";
  352. КонецЕсли;
  353. ДанныеШапки.Вставить("Грузоотправитель", Грузоотправитель);
  354. ДанныеШапки.Вставить("ПредставлениеГрузоотправителя", ПредставлениеГрузоотправителя);
  355.  
  356. // Грузополучатель
  357. Если ВыборкаСФ.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаАванс
  358. ИЛИ ВыборкаСФ.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаАвансКомитента Тогда
  359. Грузополучатель = Неопределено;
  360. ПредставлениеГрузополучателя = "--";
  361. ИначеЕсли Реквизиты.ЕстьТовары
  362. И ЗначениеЗаполнено(Реквизиты.Грузополучатель) Тогда
  363. Если ТипЗнч(Реквизиты.Грузополучатель) = Тип("Строка") Тогда
  364. ПредставлениеГрузополучателя = Реквизиты.Грузополучатель;
  365. Иначе
  366. СведенияОГрузополучателе = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(Реквизиты.Грузополучатель, ВыборкаСФ.Дата);
  367. Если Реквизиты.АдресДоставки <> "" Тогда
  368. СведенияОГрузополучателе.ФактическийАдрес = Реквизиты.АдресДоставки;
  369. КонецЕсли;
  370. ПредставлениеГрузополучателя = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(
  371. СведенияОГрузополучателе, "НаименованиеДляПечатныхФорм,ФактическийАдрес,");
  372. КонецЕсли;
  373. Грузополучатель = Реквизиты.Грузополучатель;
  374. Иначе
  375. Грузополучатель = Неопределено;
  376. ПредставлениеГрузополучателя = "--";
  377. КонецЕсли;
  378. ДанныеШапки.Вставить("Грузополучатель", Грузополучатель);
  379. ДанныеШапки.Вставить("ПредставлениеГрузополучателя", ПредставлениеГрузополучателя);
  380.  
  381. // Платежно-расчетный документ
  382. ПоДокументу = "";
  383. Если ПлатежноРасчетныеДокументы <> Неопределено Тогда
  384. ТаблицаПлатежныхДокументов = ПлатежноРасчетныеДокументы.СкопироватьКолонки();
  385. Если ТипЗнч(ПлатежноРасчетныеДокументы) = Тип("ТаблицаЗначений") Тогда
  386. Отбор = Новый Структура("СчетФактура", ВыборкаСФ.СчетФактура);
  387. НайденныеСтроки = ПлатежноРасчетныеДокументы.НайтиСтроки(Отбор);
  388. РазделятьПоКонтрагентам = ТаблицаПлатежныхДокументов.Колонки.Найти("Контрагент") <> Неопределено;
  389. ПредыдущийКонтрагент = Справочники.Контрагенты.ПустаяСсылка();
  390. Для каждого ДокументОплаты Из НайденныеСтроки Цикл
  391. Контрагент = ?(РазделятьПоКонтрагентам, ДокументОплаты.Контрагент, Справочники.Контрагенты.ПустаяСсылка());
  392. Если ЗначениеЗаполнено(ДокументОплаты.НомерДокумента)
  393. И ЗначениеЗаполнено(ДокументОплаты.ДатаДокумента) Тогда
  394. ЗаполнитьЗначенияСвойств(ТаблицаПлатежныхДокументов.Добавить(), ДокументОплаты);
  395. ПоДокументу = ПоДокументу + ?(Не ДокументОплаты.НомерСтроки = 1 И Контрагент <> ПредыдущийКонтрагент, ";", ?(ПустаяСтрока(ПоДокументу), "",", ")) +
  396. ДокументОплаты.НомерДокумента + " от " + Формат(ДокументОплаты.ДатаДокумента, "ДЛФ='Д'") + " г.";
  397. КонецЕсли;
  398. ПредыдущийКонтрагент = Контрагент;
  399. КонецЦикла;
  400. КонецЕсли;
  401. КонецЕсли;
  402.  
  403. Если ПустаяСтрока(ПоДокументу) Тогда
  404. Если ВыборкаСФ.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаАванс
  405. ИЛИ ВыборкаСФ.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаАвансКомитента Тогда
  406. ПоДокументу = "-- от --";
  407. Иначе
  408. ПоДокументу = " от ";
  409. КонецЕсли;
  410. КонецЕсли;
  411. ДанныеШапки.Вставить("ТаблицаПлатежныхДокументов", ТаблицаПлатежныхДокументов);
  412. ДанныеШапки.Вставить("ПоДокументу", ПоДокументу);
  413.  
  414. // Валюта
  415. Если ЗначениеЗаполнено(Реквизиты.Валюта) Тогда
  416. Валюта = Реквизиты.Валюта.НаименованиеПолное + ", " + Реквизиты.Валюта.Код;
  417. Иначе
  418. Валюта = "";
  419. КонецЕсли;
  420.  
  421. ДанныеШапки.Вставить("Валюта", Реквизиты.Валюта);
  422. ДанныеШапки.Вставить("ВалютаНаименование", Валюта);
  423.  
  424. // Сведения о комиссионере
  425. Если ВыборкаСФ.ЭтоСчетФактураВыданный
  426. И (ТипЗнч(Реквизиты.Поставщик) = Тип("СправочникСсылка.Контрагенты")
  427. ИЛИ ТипЗнч(Реквизиты.Поставщик) = Тип("Строка"))
  428. И ТипЗнч(Реквизиты.Покупатель) = Тип("СправочникСсылка.Контрагенты") Тогда
  429. Комиссионер = Реквизиты.Организация;
  430. ИначеЕсли НЕ ВыборкаСФ.ЭтоСчетФактураВыданный
  431. И ВыборкаСФ.Контрагент <> Реквизиты.Поставщик
  432. И ВыборкаСФ.ДоговорКонтрагента = Перечисления.ВидыДоговоровКонтрагентов.СКомиссионеромНаЗакупку Тогда
  433. Комиссионер = ВыборкаСФ.Контрагент;
  434. Иначе
  435. Комиссионер = Неопределено;
  436. КонецЕсли;
  437.  
  438. СведенияОКомиссионере = Неопределено;
  439. Если ЗначениеЗаполнено(Комиссионер) Тогда
  440.  
  441. СведенияОКомиссионере = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(Комиссионер, ВыборкаСФ.Дата);
  442. КППКомиссионера = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОКомиссионере, "КПП,", Ложь);
  443. ДанныеШапки.Вставить("ПредставлениеКомиссионера", "Составлен комиссионером (агентом): "
  444. + ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОКомиссионере, "НаименованиеДляПечатныхФорм,")
  445. + ", " + ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОКомиссионере, "ЮридическийАдрес,")
  446. + ", ИНН/КПП: " + ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОКомиссионере, "ИНН,", Ложь)
  447. + ?(ЗначениеЗаполнено(КППКомиссионера), "/" + КППКомиссионера, ""));
  448.  
  449. Иначе
  450.  
  451. ДанныеШапки.Вставить("ПредставлениеКомиссионера", "");
  452.  
  453. КонецЕсли;
  454.  
  455. // Данные для подвала
  456. Если ВыборкаСФ.ЭтоСчетФактураВыданный Тогда
  457.  
  458. Если ТипЗнч(Реквизиты.Поставщик) = Тип("Строка") Тогда
  459. ОрганизацияДляРеквизитовПодвала = Реквизиты.Организация;
  460. Иначе
  461. ОрганизацияДляРеквизитовПодвала = Реквизиты.Поставщик;
  462. КонецЕсли;
  463.  
  464. Если ОбщегоНазначенияБПВызовСервераПовтИсп.ЭтоЮрЛицо(ОрганизацияДляРеквизитовПодвала)Тогда
  465.  
  466. Руководители = ОтветственныеЛицаБП.ОтветственныеЛица(ОрганизацияДляРеквизитовПодвала, ВыборкаСФ.Дата, Реквизиты.Подразделение);
  467.  
  468. Если ЗначениеЗаполнено(ВыборкаСФ.Руководитель) Тогда
  469. ДанныеФизЛица = УчетЗарплаты.ДанныеФизическихЛиц(Реквизиты.Организация, ВыборкаСФ.Руководитель, ВыборкаСФ.Дата, Истина);
  470. ДанныеШапки.Вставить("ДолжностьРуководителя", Руководители.РуководительДолжностьПредставление);
  471. ДанныеШапки.Вставить("ФИОРуководителя", ДанныеФизЛица.Представление);
  472. ДанныеШапки.Вставить("Руководитель", ДанныеФизЛица.Представление);
  473. Иначе
  474. ДанныеШапки.Вставить("ДолжностьРуководителя", Руководители.РуководительДолжностьПредставление);
  475. ДанныеШапки.Вставить("ФИОРуководителя", Руководители.РуководительПредставление);
  476. ДанныеШапки.Вставить("Руководитель", Руководители.Руководитель);
  477. КонецЕсли;
  478. Если ЗначениеЗаполнено(ВыборкаСФ.ГлавныйБухгалтер) Тогда
  479. ДанныеФизЛица = УчетЗарплаты.ДанныеФизическихЛиц(Реквизиты.Организация, ВыборкаСФ.ГлавныйБухгалтер, ВыборкаСФ.Дата, Истина);
  480. ДанныеШапки.Вставить("ФИОГлавногоБухгалтера", ДанныеФизЛица.Представление);
  481. ДанныеШапки.Вставить("ГлавныйБухгалтер", ДанныеФизЛица.Представление);
  482. Иначе
  483. ДанныеШапки.Вставить("ФИОГлавногоБухгалтера", Руководители.ГлавныйБухгалтерПредставление);
  484. ДанныеШапки.Вставить("ГлавныйБухгалтер", Руководители.ГлавныйБухгалтер);
  485. КонецЕсли;
  486.  
  487. Иначе
  488. ДанныеШапки.Вставить("ДолжностьРуководителя", НСтр("ru = 'Индивидуальный предприниматель'"));
  489. ДанныеШапки.Вставить("Свидетельство", ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОПоставщике, "Свидетельство,"));
  490.  
  491. Если ВедетсяУчетНДСПоФЗ81(ВыборкаСФ.Дата)
  492. И ЗначениеЗаполнено(ВыборкаСФ.Руководитель) Тогда
  493. ДанныеФизЛица = УчетЗарплаты.ДанныеФизическихЛиц(Реквизиты.Организация, ВыборкаСФ.Руководитель, ВыборкаСФ.Дата, Истина);
  494. ДанныеШапки.Вставить("ФИОПБОЮЛ", ДанныеФизЛица.Представление);
  495. Иначе
  496. ДанныеШапки.Вставить("ФИОПБОЮЛ", ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОПоставщике, "ФамилияИнициалыФизлица,"));
  497. КонецЕсли;
  498.  
  499. КонецЕсли;
  500. Иначе
  501. Если НЕ ТипЗнч(Реквизиты.Поставщик) = Тип("Строка")
  502. И НЕ ОбщегоНазначенияБПВызовСервераПовтИсп.ЭтоЮрЛицо(Реквизиты.Поставщик) Тогда
  503. ДанныеШапки.Вставить("Свидетельство", ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОПоставщике, "Свидетельство,"));
  504. КонецЕсли;
  505. КонецЕсли;
  506.  
  507. // Данные для универсального передаточного документа
  508. Если ДополнитьДаннымиУПД Тогда
  509.  
  510. // Наименование экономического субъекта - составителя документа
  511. Если ЗначениеЗаполнено(Комиссионер) И СведенияОКомиссионере <> Неопределено Тогда
  512. ПредставлениеПоставщика = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОКомиссионере, "НаименованиеДляПечатныхФорм,");
  513. ИННПоставщика = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОКомиссионере, "ИНН,", Ложь);
  514. КПППоставщика = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОКомиссионере, "КПП,", Ложь);
  515. Иначе
  516. ПредставлениеПоставщика = ДанныеШапки.ПредставлениеПоставщика;
  517. ИННПоставщика = ДанныеШапки.ИННПоставщика;
  518. КПППоставщика = ДанныеШапки.КПППоставщика;
  519. КонецЕсли;
  520.  
  521. Если ЗначениеЗаполнено(КПППоставщика) Тогда
  522. ПредставлениеОрганизации = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1, ИНН/КПП %2/%3'"),
  523. ПредставлениеПоставщика, ИННПоставщика, КПППоставщика);
  524. ИначеЕсли ЗначениеЗаполнено(ИННПоставщика) Тогда
  525. ПредставлениеОрганизации = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1, ИНН %2'"),
  526. ПредставлениеПоставщика, ИННПоставщика);
  527. Иначе
  528. ПредставлениеОрганизации = ПредставлениеПоставщика;
  529. КонецЕсли;
  530. ДанныеШапки.Вставить("ПредставлениеОрганизации", ПредставлениеОрганизации);
  531.  
  532. Если ЗначениеЗаполнено(ДанныеШапки.КППпокупателя) Тогда
  533. ПредставлениеКонтрагента = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1, ИНН/КПП %2/%3'"),
  534. ДанныеШапки.ПредставлениеПокупателя, ДанныеШапки.ИННпокупателя, ДанныеШапки.КППпокупателя);
  535. ИначеЕсли ЗначениеЗаполнено(ДанныеШапки.ИННпокупателя) Тогда
  536. ПредставлениеКонтрагента = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1, ИНН %2'"),
  537. ДанныеШапки.ПредставлениеПокупателя, ДанныеШапки.ИННпокупателя);
  538. Иначе
  539. ПредставлениеКонтрагента = ДанныеШапки.ПредставлениеПокупателя;
  540. КонецЕсли;
  541.  
  542. ДанныеШапки.Вставить("ПредставлениеКонтрагента", ПредставлениеКонтрагента);
  543.  
  544. // Статус
  545. Если НЕ ЗначениеЗаполнено(ВыборкаСФ.ВидСчетаФактуры) Тогда
  546. СтатусУПД = 2;
  547. ДанныеШапки.Вставить("ПоДокументу", "-- от --");
  548. Иначе
  549. СтатусУПД = 1;
  550. КонецЕсли;
  551.  
  552. ДанныеШапки.Вставить("СтатусУПД", СтатусУПД);
  553.  
  554. // Номер
  555. Если СтатусУПД = 2 Тогда
  556. Если ТипЗнч(ВыборкаСФ.ДокументОснование) = Тип("ДокументСсылка.ОказаниеУслуг") Тогда
  557. ДанныеШапки.Номер = ДанныеШапки.Номер + "/" + ВыборкаСФ.НомерСтроки;
  558. КонецЕсли;
  559. КонецЕсли;
  560.  
  561. БезПереходаПраваСобственности = (Реквизиты.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СКомиссионером)
  562. ИЛИ ТипЗнч(Реквизиты.ДокументОснование) = Тип("ДокументСсылка.ПередачаТоваров");
  563.  
  564. // Поставщик и Грузоотправитель
  565. Если БезПереходаПраваСобственности И СтатусУПД = 2 Тогда
  566. ДанныеШапки.Грузоотправитель = ДанныеШапки.Поставщик;
  567. ДанныеШапки.ПредставлениеГрузоотправителя = ДанныеШапки.ПредставлениеПоставщика
  568. + ?(ПустаяСтрока(ДанныеШапки.АдресПоставщика), "", ", ") + ДанныеШапки.АдресПоставщика;
  569.  
  570. ДанныеШапки.Поставщик = Неопределено;
  571. ДанныеШапки.ПредставлениеПоставщика = "--";
  572. ДанныеШапки.АдресПоставщика = "--";
  573. ДанныеШапки.ИННПоставщика = "--";
  574. ДанныеШапки.КПППоставщика = "";
  575. КонецЕсли;
  576.  
  577. // Покупатель и Грузополучатель
  578. Если БезПереходаПраваСобственности И СтатусУПД = 2 Тогда
  579. ДанныеШапки.Грузополучатель = ДанныеШапки.Покупатель;
  580. ДанныеШапки.ПредставлениеГрузополучателя = ДанныеШапки.ПредставлениеПокупателя
  581. + ?(ПустаяСтрока(ДанныеШапки.АдресПокупателя), "", ", ") + ДанныеШапки.АдресПокупателя;
  582.  
  583. ДанныеШапки.Покупатель = Неопределено;
  584. ДанныеШапки.ПредставлениеПокупателя = "--";
  585. ДанныеШапки.АдресПокупателя = "--";
  586. ДанныеШапки.ИННПокупателя = "--";
  587. ДанныеШапки.КПППокупателя = "";
  588. КонецЕсли;
  589.  
  590. // Основание передачи (сдачи)
  591. Основание = СокрП(Реквизиты.Основание);
  592.  
  593. ФИОТоварПолучил = "";
  594.  
  595. Если ЗначениеЗаполнено(Реквизиты.ДоверенностьНомер)
  596. ИЛИ ЗначениеЗаполнено(Реквизиты.ДоверенностьДата)
  597. ИЛИ ЗначениеЗаполнено(Реквизиты.ДоверенностьВыдана)
  598. Тогда
  599.  
  600. Доверенность = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
  601. НСтр("ru = 'по доверенности №%1 от %2 выданной %3'"),
  602. Реквизиты.ДоверенностьНомер, Формат(Реквизиты.ДоверенностьДата, "ДЛФ=ДД"),
  603. Реквизиты.ДоверенностьВыдана);
  604.  
  605. Основание = Основание + ?(ПустаяСтрока(Основание), "", "; ") + Доверенность;
  606.  
  607. ФИОТоварПолучил = Реквизиты.ДоверенностьЧерезКого;
  608.  
  609. ИначеЕсли ЗначениеЗаполнено(Реквизиты.ДоверенностьЧерезКого) Тогда
  610.  
  611. ФИОТоварПолучил = Реквизиты.ДоверенностьЧерезКого+?(ЗначениеЗаполнено(Реквизиты.ЗаЗаказчикаНаОсновании),", "+Реквизиты.ЗаЗаказчикаНаОсновании,"");
  612.  
  613. КонецЕсли;
  614.  
  615. ДанныеШапки.Вставить ("Основание", Основание);
  616. ДанныеШапки.Вставить ("ФИОТоварПолучил", ФИОТоварПолучил);
  617.  
  618. Если ВыборкаСФ.ЭтоСчетФактураВыданный Тогда
  619.  
  620. // Товар (груз) передал / услуги, результаты работ, права сдал
  621.  
  622. Если Реквизиты.ЕстьТовары Тогда
  623.  
  624. Кладовщик = ?(ЗначениеЗаполнено(Реквизиты.ОтпускПроизвел), Реквизиты.ОтпускПроизвел,
  625. ОтветственныеЛицаБП.ОтветственноеЛицоНаСкладе(Реквизиты.Склад, Реквизиты.ДатаОснования));
  626.  
  627. ДанныеКладовщика = ОбщегоНазначенияБПВызовСервера.ДанныеФизЛица(
  628. Реквизиты.Организация, Кладовщик, Реквизиты.ДатаОснования);
  629.  
  630. ДанныеШапки.Вставить ("ДолжностьКладовщика", ДанныеКладовщика.Должность);
  631. ДанныеШапки.Вставить ("ФИОКладовщика", ДанныеКладовщика.Представление);
  632.  
  633. Иначе
  634.  
  635. Если ЗначениеЗаполнено(Реквизиты.Исполнитель) Тогда
  636.  
  637. ДанныеИсполнителя = ОбщегоНазначенияБПВызовСервера.ДанныеФизЛица(
  638. Реквизиты.Организация, Реквизиты.Исполнитель, Реквизиты.ДатаОснования);
  639.  
  640. ДанныеШапки.Вставить ("ДолжностьКладовщика", ДанныеИсполнителя.Должность);
  641. ДанныеШапки.Вставить ("ФИОКладовщика", ?(ЗначениеЗаполнено(ДанныеИсполнителя.Представление), ДанныеИсполнителя.Представление, "")
  642. + ?(ЗначениеЗаполнено(Реквизиты.ИсполнительПоПриказу), " ", "") + Реквизиты.ИсполнительПоПриказу);
  643.  
  644. ИначеЕсли ОбщегоНазначенияБПВызовСервераПовтИсп.ЭтоЮрЛицо(Реквизиты.Поставщик) Тогда
  645.  
  646. ДанныеШапки.Вставить ("ДолжностьКладовщика", ДанныеШапки.ДолжностьРуководителя);
  647. ДанныеШапки.Вставить ("ФИОКладовщика", ДанныеШапки.ФИОРуководителя);
  648.  
  649. Иначе
  650.  
  651. ДанныеШапки.Вставить ("ДолжностьКладовщика", ДанныеШапки.ДолжностьРуководителя);
  652. ДанныеШапки.Вставить ("ФИОКладовщика", ДанныеШапки.ФИОПБОЮЛ);
  653.  
  654. КонецЕсли;
  655.  
  656. КонецЕсли;
  657.  
  658. // Дата отгрузки, передачи (сдачи)
  659. ШаблонДатыОтгрузкиПередачи = Формат(ВыборкаСФ.Дата, "ДФ='« дд » %1 ММММ %2 гггг %3'");
  660.  
  661. ДлинаДаты = 30;
  662. ДобавитьСимволовСлева = Окр((ДлинаДаты - СтрДлина(ШаблонДатыОтгрузкиПередачи))/2, 0);
  663. ДобавитьСимволовСправа = ДлинаДаты - СтрДлина(ШаблонДатыОтгрузкиПередачи) - ДобавитьСимволовСлева;
  664.  
  665. ДатаОтгрузкиПередачи = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонДатыОтгрузкиПередачи,
  666. СтроковыеФункцииКлиентСервер.СформироватьСтрокуСимволов(" ", ДобавитьСимволовСлева),
  667. СтроковыеФункцииКлиентСервер.СформироватьСтрокуСимволов(" ", ДобавитьСимволовСправа),
  668. НСтр("ru = 'года'"));
  669.  
  670. ДанныеШапки.Вставить ("ДатаОтгрузкиПередачи", ДатаОтгрузкиПередачи);
  671.  
  672. КонецЕсли;
  673.  
  674. КонецЕсли;
  675.  
  676. Возврат ДанныеШапки;
  677.  
  678. КонецФункции
  679.  
  680. Функция ВедетсяУчетНДСПоФЗ81(Дата) Экспорт
  681.  
  682. НачалоПримененияФЗ81 = '20140701';
  683.  
  684. Если Дата < НачалоПримененияФЗ81 Тогда
  685. Возврат Ложь;
  686. Иначе
  687. Возврат Истина;
  688. КонецЕсли;
  689.  
  690. КонецФункции // ВедетсяУчетНДСПоФЗ81()
  691.  
  692. Функция ПодготовитьДанныеДляПечатиСчетовФактур(ДокументОснование, ДанныеСчетаФактуры) Экспорт
  693.  
  694. ДанныеДляПечати = Новый Структура;
  695.  
  696. СчетФактураПолученныйИзСтранТаможенногоСоюза =
  697. УчетНДС.КонтрагентРезидентТаможенногоСоюза(ДанныеСчетаФактуры.Контрагент)
  698. И ТипЗнч(ДанныеСчетаФактуры.СчетФактура) = Тип("ДокументСсылка.СчетФактураПолученный");
  699.  
  700. Если ТипЗнч(ДокументОснование) = Тип("ДокументСсылка.ПринятиеКУчетуОС")
  701. ИЛИ СчетФактураПолученныйИзСтранТаможенногоСоюза Тогда
  702. ДанныеДляПечати.Вставить("Реквизиты", Неопределено);
  703. ДанныеДляПечати.Вставить("ТаблицаДокумента", Неопределено);
  704. Возврат ДанныеДляПечати;
  705. КонецЕсли;
  706.  
  707. ВалютаРеглУчета = ОбщегоНазначенияБПВызовСервераПовтИсп.ПолучитьВалютуРегламентированногоУчета();
  708.  
  709. ДополнительнаяКолонкаПечатныхФормДокументов = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
  710. Если НЕ ЗначениеЗаполнено(ДополнительнаяКолонкаПечатныхФормДокументов) Тогда
  711. ДополнительнаяКолонкаПечатныхФормДокументов = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.НеВыводить;
  712. КонецЕсли;
  713.  
  714. Если НЕ ДанныеСчетаФактуры.Свойство("НеподтверждениеНулевойСтавки") Тогда
  715. ДанныеСчетаФактуры.Вставить("НеподтверждениеНулевойСтавки", Ложь);
  716. КонецЕсли;
  717.  
  718. Если НЕ ДанныеСчетаФактуры.Свойство("СводныйКомиссионный") Тогда
  719. ДанныеСчетаФактуры.Вставить("СводныйКомиссионный", Ложь);
  720. КонецЕсли;
  721.  
  722. Запрос = Новый Запрос;
  723. Запрос.УстановитьПараметр("ВалютаРеглУчета", ВалютаРеглУчета);
  724. Запрос.УстановитьПараметр("ДокументОснование", ДокументОснование);
  725.  
  726. СводныйСФКомиссияПоЗакупке = Ложь;
  727. СводныйСФКомиссияПоПродаже = Ложь;
  728.  
  729. ПредставлениеПоставщика = "";
  730. АдресПоставщика = "";
  731. Грузоотправитель = "";
  732. ИННКПППоставщика = "";
  733.  
  734. ПредставлениеПокупателя = "";
  735. АдресПокупателя = "";
  736. Грузополучатель = "";
  737. ИННКПППокупателя = "";
  738.  
  739. Если ДанныеСчетаФактуры.СводныйКомиссионный Тогда
  740. Если ТипЗнч(ДокументОснование) = Тип("ДокументСсылка.СчетФактураВыданный") Тогда
  741. //значит авансовый, нужно определить по закупке или по продаже
  742. Если ДанныеСчетаФактуры.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаАвансКомитентаНаЗакупку Тогда
  743. //Значит авансовый выданный комиссионером (комиссия по закупке)
  744. СводныйСФКомиссияПоЗакупке = Истина;
  745.  
  746. ПараметрыСводногоСФПоКомиссии = ПолучитьПараметрыСводногоСчетаФактурыКомиссияПоЗакупке(ДанныеСчетаФактуры.СчетФактура, ДанныеСчетаФактуры.ВидСчетаФактуры);
  747.  
  748. ПредставлениеПоставщика = ПараметрыСводногоСФПоКомиссии.ПредставлениеПоставщика;
  749. АдресПоставщика = ПараметрыСводногоСФПоКомиссии.АдресПоставщика;
  750. Грузоотправитель = ПараметрыСводногоСФПоКомиссии.Грузоотправитель;
  751. ИННКПППоставщика = ПараметрыСводногоСФПоКомиссии.ИННКПППоставщика;
  752. Иначе
  753. //Значит авансовый выданный комитентом (комиссия по продаже)
  754. СводныйСФКомиссияПоПродаже = Истина;
  755.  
  756. ПараметрыСводногоСФПоКомиссии = ПолучитьПараметрыСводногоСчетаФактурыКомиссияПоПродаже(ДанныеСчетаФактуры.СчетФактура, ДанныеСчетаФактуры.ВидСчетаФактуры);
  757.  
  758. ПредставлениеПокупателя = ПараметрыСводногоСФПоКомиссии.ПредставлениеПокупателя;
  759. АдресПокупателя = ПараметрыСводногоСФПоКомиссии.АдресПокупателя;
  760. Грузополучатель = ПараметрыСводногоСФПоКомиссии.Грузополучатель;
  761. ИННКПППокупателя = ПараметрыСводногоСФПоКомиссии.ИННКПППокупателя;
  762. КонецЕсли;
  763. ИначеЕсли ТипЗнч(ДокументОснование) = Тип("ДокументСсылка.ОтчетКомитентуОПродажах")
  764. И ЗначениеЗаполнено(ДанныеСчетаФактуры.СчетФактура.Продавец) Тогда
  765. //Значит комиссия по закупке СФ выданный комиссионером
  766. СводныйСФКомиссияПоЗакупке = Истина;
  767.  
  768. ПараметрыСводногоСФПоКомиссии = ПолучитьПараметрыСводногоСчетаФактурыКомиссияПоЗакупке(ДанныеСчетаФактуры.СчетФактура, ДанныеСчетаФактуры.ВидСчетаФактуры);
  769.  
  770. ПредставлениеПоставщика = ПараметрыСводногоСФПоКомиссии.ПредставлениеПоставщика;
  771. АдресПоставщика = ПараметрыСводногоСФПоКомиссии.АдресПоставщика;
  772. Грузоотправитель = ПараметрыСводногоСФПоКомиссии.Грузоотправитель;
  773. ИННКПППоставщика = ПараметрыСводногоСФПоКомиссии.ИННКПППоставщика;
  774.  
  775. ИначеЕсли ТипЗнч(ДокументОснование) = Тип("ДокументСсылка.ОтчетКомиссионераОПродажах") Тогда
  776. //Значит комиссия по продаже СФ выданный комитентом
  777. СводныйСФКомиссияПоПродаже = Истина;
  778.  
  779. ПараметрыСводногоСФПоКомиссии = ПолучитьПараметрыСводногоСчетаФактурыКомиссияПоПродаже(ДанныеСчетаФактуры.СчетФактура, ДанныеСчетаФактуры.ВидСчетаФактуры);
  780.  
  781. ПредставлениеПокупателя = ПараметрыСводногоСФПоКомиссии.ПредставлениеПокупателя;
  782. АдресПокупателя = ПараметрыСводногоСФПоКомиссии.АдресПокупателя;
  783. Грузополучатель = ПараметрыСводногоСФПоКомиссии.Грузополучатель;
  784. ИННКПППокупателя = ПараметрыСводногоСФПоКомиссии.ИННКПППокупателя;
  785. ИначеЕсли ТипЗнч(ДокументОснование) = Тип("ДокументСсылка.ПоступлениеТоваровУслуг") Тогда
  786. //Значит комиссия по закупке СФ полученный от комиссионера
  787. СводныйСФКомиссияПоЗакупке = Истина;
  788.  
  789. ПараметрыСводногоСФПоКомиссии = ПолучитьПараметрыСводногоСчетаФактурыКомиссияПоЗакупке(ДанныеСчетаФактуры.СчетФактура, ДанныеСчетаФактуры.ВидСчетаФактуры);
  790.  
  791. ПредставлениеПоставщика = ПараметрыСводногоСФПоКомиссии.ПредставлениеПоставщика;
  792. АдресПоставщика = ПараметрыСводногоСФПоКомиссии.АдресПоставщика;
  793. Грузоотправитель = ПараметрыСводногоСФПоКомиссии.Грузоотправитель;
  794. ИННКПППоставщика = ПараметрыСводногоСФПоКомиссии.ИННКПППоставщика;
  795.  
  796. КонецЕсли;
  797. КонецЕсли;
  798.  
  799. Запрос.УстановитьПараметр("СводныйСФКомиссияПоЗакупке", СводныйСФКомиссияПоЗакупке);
  800. Запрос.УстановитьПараметр("СводныйСФКомиссияПоПродаже", СводныйСФКомиссияПоПродаже);
  801. Запрос.УстановитьПараметр("ПредставлениеПоставщика", ПредставлениеПоставщика);
  802. Запрос.УстановитьПараметр("АдресПоставщика", АдресПоставщика);
  803. Запрос.УстановитьПараметр("Грузоотправитель", Грузоотправитель);
  804. Запрос.УстановитьПараметр("ИННКПППоставщика", ИННКПППоставщика);
  805. Запрос.УстановитьПараметр("ПредставлениеПокупателя", ПредставлениеПокупателя);
  806. Запрос.УстановитьПараметр("АдресПокупателя", АдресПокупателя);
  807. Запрос.УстановитьПараметр("Грузополучатель", Грузополучатель);
  808. Запрос.УстановитьПараметр("ИННКПППокупателя", ИННКПППокупателя);
  809. Запрос.УстановитьПараметр("СчетФактура", ДанныеСчетаФактуры.СчетФактура);
  810. Запрос.УстановитьПараметр("ВидСчетаФактуры", ДанныеСчетаФактуры.ВидСчетаФактуры);
  811. Запрос.УстановитьПараметр("Контрагент", ДанныеСчетаФактуры.Контрагент);
  812. Запрос.УстановитьПараметр("ДоговорКонтрагента", ДанныеСчетаФактуры.ДоговорКонтрагента);
  813. Запрос.УстановитьПараметр("ИспользуетсяПостановлениеНДС1137", ДанныеСчетаФактуры.ИспользуетсяПостановлениеНДС1137);
  814. Запрос.УстановитьПараметр("НеподтверждениеНулевойСтавки", ДанныеСчетаФактуры.НеподтверждениеНулевойСтавки);
  815. Запрос.УстановитьПараметр("ПустоеПодразделение", БухгалтерскийУчетПереопределяемый.ПустоеПодразделение());
  816. Запрос.УстановитьПараметр("ТекстБезАкциза", ?(ДанныеСчетаФактуры.ИспользуетсяПостановлениеНДС1137, НСтр("ru = 'без акциза'"), ""));
  817. Запрос.УстановитьПараметр("ТекстКомиссионноеВознаграждение", НСтр("ru = 'Комиссионное вознаграждение'"));
  818. Запрос.УстановитьПараметр("ДополнительнаяКолонкаПечатныхФормДокументов",
  819. ДополнительнаяКолонкаПечатныхФормДокументов);
  820.  
  821. НомераТаблиц = Новый Структура;
  822.  
  823. Запрос.Текст = Документы[ДокументОснование.Метаданные().Имя].ТекстЗапросаДанныеДляПечатиСчетовФактур(НомераТаблиц)
  824. + ТекстЗапросаДанныеДляПечатиСчетовФактур(НомераТаблиц);
  825.  
  826. Результат = Запрос.ВыполнитьПакет();
  827.  
  828. Если Результат[НомераТаблиц.Реквизиты].Пустой()
  829. ИЛИ Результат[НомераТаблиц.ТаблицаДокумента].Пустой() Тогда
  830.  
  831. ДанныеДляПечати.Вставить("Реквизиты", Неопределено);
  832. ДанныеДляПечати.Вставить("ТаблицаДокумента", Неопределено);
  833.  
  834. Возврат ДанныеДляПечати;
  835.  
  836. КонецЕсли;
  837.  
  838. ТаблицаРеквизиты = Результат[НомераТаблиц.Реквизиты].Выгрузить();
  839. ТаблицаДокумента = Результат[НомераТаблиц.ТаблицаДокумента].Выгрузить();
  840. Реквизиты = ТаблицаРеквизиты[0];
  841.  
  842. РасчетыВУсловныхЕдиницах = ?(ТипЗнч(Реквизиты.РасчетыВУсловныхЕдиницах) = Тип("Булево"), Реквизиты.РасчетыВУсловныхЕдиницах, Ложь);
  843.  
  844. НуженПересчетВРубли = (РасчетыВУсловныхЕдиницах ИЛИ ДанныеСчетаФактуры.НеподтверждениеНулевойСтавки)
  845. И Реквизиты.Валюта <> ВалютаРеглУчета
  846. И (ДанныеСчетаФактуры.ИспользуетсяПостановлениеНДС1137
  847. ИЛИ УчетнаяПолитика.ФормироватьСчетФактуруПоУЕвРублях(Реквизиты.Организация, Реквизиты.ДатаОснования));
  848.  
  849. Если НуженПересчетВРубли Тогда
  850. ТаблицаРеквизиты.ЗаполнитьЗначения(ВалютаРеглУчета, "Валюта");
  851. КонецЕсли;
  852.  
  853. СчетФактураНаРеализацию = ДанныеСчетаФактуры.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаРеализацию;
  854.  
  855. Для каждого СтрокаДокумента Из ТаблицаДокумента Цикл
  856.  
  857. Если НуженПересчетВРубли Тогда
  858.  
  859. СтрокаДокумента.Всего = СтрокаДокумента.ВсегоРуб;
  860. СтрокаДокумента.СуммаНДС = СтрокаДокумента.НДСРуб;
  861. СтрокаДокумента.Цена = 0;
  862.  
  863. КонецЕсли;
  864.  
  865. // Определяем окончательную сумму без НДС с учетом всех корректировок и цену
  866. СтрокаДокумента.СуммаБезНДС = СтрокаДокумента.Всего - СтрокаДокумента.СуммаНДС;
  867.  
  868. Если СчетФактураНаРеализацию
  869. И (СтрокаДокумента.СтавкаНДС = Перечисления.СтавкиНДС.НДС20_120
  870. ИЛИ СтрокаДокумента.СтавкаНДС = Перечисления.СтавкиНДС.НДС18_118
  871. ИЛИ СтрокаДокумента.СтавкаНДС = Перечисления.СтавкиНДС.НДС10_110) Тогда
  872.  
  873. // В счетах-фактурах, составляемых по товарам (работам, услугам),
  874. // реализуемым по государственным регулируемым ценам,
  875. // в графе 7 следует указывать ставку налога в размере 18 (10) процентов,
  876. // а в графе 5 – стоимость поставляемых по счету-фактуре товаров
  877. // (выполненных работ, оказанных услуг) без налога на добавленную стоимость
  878.  
  879. Если СтрокаДокумента.Количество <> 0 Тогда
  880. СтрокаДокумента.Цена = Окр(СтрокаДокумента.Всего / СтрокаДокумента.Количество, 2);
  881. КонецЕсли;
  882.  
  883. КонецЕсли;
  884.  
  885. Если НЕ ЗначениеЗаполнено(СтрокаДокумента.ЕдиницаИзмерения) Тогда
  886. СтрокаДокумента.Количество = 0;
  887. СтрокаДокумента.Цена = 0;
  888. ИначеЕсли СтрокаДокумента.Количество = 0 Тогда
  889. СтрокаДокумента.ЕдиницаИзмерения = "";
  890. СтрокаДокумента.Цена = 0;
  891. ИначеЕсли СтрокаДокумента.Цена = 0 Тогда
  892. СтрокаДокумента.Цена = Окр(СтрокаДокумента.СуммаБезНДС / СтрокаДокумента.Количество, 2);
  893. КонецЕсли;
  894.  
  895. КонецЦикла;
  896.  
  897. ТаблицаРеквизиты.Колонки.Добавить("ДокументОснование", Документы.ТипВсеСсылки());
  898. ТаблицаРеквизиты.ЗаполнитьЗначения(ДокументОснование, "ДокументОснование");
  899.  
  900. Если ТаблицаРеквизиты.Колонки.Найти("СводныйСФКомиссияПоЗакупке") = Неопределено Тогда
  901. ТаблицаРеквизиты.Колонки.Добавить("СводныйСФКомиссияПоЗакупке", Новый ОписаниеТипов("Булево"));
  902. ТаблицаРеквизиты.ЗаполнитьЗначения(Ложь, "СводныйСФКомиссияПоЗакупке");
  903. КонецЕсли;
  904.  
  905. Если ТаблицаРеквизиты.Колонки.Найти("СводныйСФКомиссияПоПродаже") = Неопределено Тогда
  906. ТаблицаРеквизиты.Колонки.Добавить("СводныйСФКомиссияПоПродаже", Новый ОписаниеТипов("Булево"));
  907. ТаблицаРеквизиты.ЗаполнитьЗначения(Ложь, "СводныйСФКомиссияПоПродаже");
  908. КонецЕсли;
  909.  
  910. ДанныеДляПечати.Вставить("Реквизиты", ТаблицаРеквизиты);
  911. ДанныеДляПечати.Вставить("ТаблицаДокумента", ТаблицаДокумента);
  912.  
  913. Возврат ДанныеДляПечати;
  914.  
  915. КонецФункции
  916.  
  917. Функция ТекстЗапросаДанныеДляПечатиСчетовФактур(НомераТаблиц)
  918.  
  919. НомераТаблиц.Вставить("ТаблицаДокумента", НомераТаблиц.Количество());
  920.  
  921. ТекстЗапроса =
  922. "ВЫБРАТЬ
  923. | ТаблицаДокумента.НомерТабЧасти КАК НомерТабЧасти,
  924. | ТаблицаДокумента.НомерСтроки КАК НомерСтроки,
  925. | ВЫБОР
  926. | КОГДА ТаблицаДокумента.Товар = ""СуммоваяРазница""
  927. | ТОГДА НЕОПРЕДЕЛЕНО
  928. | ИНАЧЕ ТаблицаДокумента.Товар
  929. | КОНЕЦ КАК Товар,
  930. | ВЫБОР
  931. | КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.Код)
  932. | ТОГДА ТаблицаДокумента.ТоварКод
  933. | КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул)
  934. | ТОГДА ТаблицаДокумента.ТоварАртикул
  935. | ИНАЧЕ """"
  936. | КОНЕЦ КАК ТоварКод,
  937. | ТаблицаДокумента.ТоварНаименование КАК ТоварНаименование,
  938. | ТаблицаДокумента.СтранаПроисхождения КАК СтранаПроисхождения,
  939. | ВЫБОР
  940. | КОГДА ТаблицаДокумента.СтранаПроисхождения = ЗНАЧЕНИЕ(Справочник.СтраныМира.РОССИЯ)
  941. | ТОГДА """"
  942. | ИНАЧЕ ЕСТЬNULL(СтраныМира.Наименование, """")
  943. | КОНЕЦ КАК ПредставлениеСтраны,
  944. | ВЫБОР
  945. | КОГДА ТаблицаДокумента.СтранаПроисхождения = ЗНАЧЕНИЕ(Справочник.СтраныМира.РОССИЯ)
  946. | ТОГДА """"
  947. | ИНАЧЕ ЕСТЬNULL(СтраныМира.Код, """")
  948. | КОНЕЦ КАК СтранаПроисхожденияКод,
  949. | ТаблицаДокумента.НомерГТД КАК НомерГТД,
  950. | ВЫБОР
  951. | КОГДА ТаблицаДокумента.СтранаПроисхождения = ЗНАЧЕНИЕ(Справочник.СтраныМира.РОССИЯ)
  952. | ТОГДА """"
  953. | ИНАЧЕ ТаблицаДокумента.ПредставлениеГТД
  954. | КОНЕЦ КАК ПредставлениеГТД,
  955. | ТаблицаДокумента.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
  956. | ЕСТЬNULL(КлассификаторЕдиницИзмерения.Код, """") КАК ЕдиницаИзмеренияКод,
  957. | ЕСТЬNULL(КлассификаторЕдиницИзмерения.Наименование, """") КАК ЕдиницаИзмеренияНаименование,
  958. | ТаблицаДокумента.Количество КАК Количество,
  959. | ВЫБОР
  960. | КОГДА ТаблицаДокумента.СуммаВключаетНДС
  961. | И НЕ &НеподтверждениеНулевойСтавки
  962. | ТОГДА ВЫБОР
  963. | КОГДА ТаблицаДокумента.Количество = 0
  964. | ТОГДА 0
  965. | КОГДА ТаблицаДокумента.СуммаНДС = 0
  966. | ТОГДА ТаблицаДокумента.Цена
  967. | ИНАЧЕ ВЫРАЗИТЬ((ТаблицаДокумента.Сумма - ТаблицаДокумента.СуммаНДС) / ТаблицаДокумента.Количество КАК ЧИСЛО(15, 2))
  968. | КОНЕЦ
  969. | ИНАЧЕ ТаблицаДокумента.Цена
  970. | КОНЕЦ КАК Цена,
  971. | ВЫБОР
  972. | КОГДА ТаблицаДокумента.СуммаВключаетНДС
  973. | И НЕ &НеподтверждениеНулевойСтавки
  974. | ТОГДА ТаблицаДокумента.Сумма
  975. | ИНАЧЕ ТаблицаДокумента.Сумма + ВЫБОР
  976. | КОГДА &НеподтверждениеНулевойСтавки
  977. | ТОГДА ТаблицаДокумента.Сумма * ВЫБОР
  978. | КОГДА СтавкиНДСНоменклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС10)
  979. | ИЛИ СтавкиНДСНоменклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС10_110)
  980. | ТОГДА 0.1
  981. | ИНАЧЕ 0.18
  982. | КОНЕЦ
  983. | ИНАЧЕ ТаблицаДокумента.СуммаНДС
  984. | КОНЕЦ
  985. | КОНЕЦ КАК Всего,
  986. | ВЫБОР
  987. | КОГДА ТаблицаДокумента.Товар = ""СуммоваяРазница""
  988. | ТОГДА 0
  989. | ИНАЧЕ ВЫБОР
  990. | КОГДА ТаблицаДокумента.СуммаВключаетНДС
  991. | ТОГДА ТаблицаДокумента.Сумма - ТаблицаДокумента.СуммаНДС
  992. | ИНАЧЕ ТаблицаДокумента.Сумма
  993. | КОНЕЦ
  994. | КОНЕЦ КАК СуммаБезНДС,
  995. | ВЫБОР
  996. | КОГДА &НеподтверждениеНулевойСтавки
  997. | ТОГДА ТаблицаДокумента.Сумма * ВЫБОР
  998. | КОГДА СтавкиНДСНоменклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС10)
  999. | ИЛИ СтавкиНДСНоменклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС10_110)
  1000. | ТОГДА 0.1
  1001. | ИНАЧЕ 0.18
  1002. | КОНЕЦ
  1003. | ИНАЧЕ ТаблицаДокумента.СуммаНДС
  1004. | КОНЕЦ КАК СуммаНДС,
  1005. | ВЫБОР
  1006. | КОГДА &НеподтверждениеНулевойСтавки
  1007. | ТОГДА ВЫБОР
  1008. | КОГДА СтавкиНДСНоменклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС10)
  1009. | ИЛИ СтавкиНДСНоменклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС10_110)
  1010. | ТОГДА ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС10)
  1011. | ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС18)
  1012. | КОНЕЦ
  1013. | ИНАЧЕ ТаблицаДокумента.СтавкаНДС
  1014. | КОНЕЦ КАК СтавкаНДС,
  1015. | &ТекстБезАкциза КАК Акциз,
  1016. | ТаблицаДокумента.Ссылка КАК Ссылка,
  1017. | ТаблицаДокумента.ЭтоКомиссия,
  1018. | ВЫБОР
  1019. | КОГДА &НеподтверждениеНулевойСтавки
  1020. | ТОГДА ТаблицаДокумента.СуммаБезНДСРуб + ТаблицаДокумента.СуммаБезНДСРуб * ВЫБОР
  1021. | КОГДА СтавкиНДСНоменклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС10)
  1022. | ИЛИ СтавкиНДСНоменклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС10_110)
  1023. | ТОГДА 0.1
  1024. | ИНАЧЕ 0.18
  1025. | КОНЕЦ
  1026. | ИНАЧЕ ТаблицаДокумента.ВсегоРуб
  1027. | КОНЕЦ КАК ВсегоРуб,
  1028. | ВЫБОР
  1029. | КОГДА &НеподтверждениеНулевойСтавки
  1030. | ТОГДА ТаблицаДокумента.СуммаБезНДСРуб * ВЫБОР
  1031. | КОГДА СтавкиНДСНоменклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС10)
  1032. | ИЛИ СтавкиНДСНоменклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС10_110)
  1033. | ТОГДА 0.1
  1034. | ИНАЧЕ 0.18
  1035. | КОНЕЦ
  1036. | ИНАЧЕ ТаблицаДокумента.НДСРуб
  1037. | КОНЕЦ КАК НДСРуб,
  1038. | ТаблицаДокумента.СуммаБезНДСРуб,
  1039. | ТаблицаДокумента.КонтрагентСводныйСФ
  1040. |ИЗ
  1041. | ТаблицаДокумента КАК ТаблицаДокумента
  1042. | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СтраныМира КАК СтраныМира
  1043. | ПО (СтраныМира.Ссылка = ТаблицаДокумента.СтранаПроисхождения)
  1044. | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КлассификаторЕдиницИзмерения КАК КлассификаторЕдиницИзмерения
  1045. | ПО (КлассификаторЕдиницИзмерения.Ссылка = ТаблицаДокумента.ЕдиницаИзмерения)
  1046. | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СтавкиНДСНоменклатура
  1047. | ПО (СтавкиНДСНоменклатура.Ссылка = ТаблицаДокумента.Товар)
  1048. |
  1049. |УПОРЯДОЧИТЬ ПО
  1050. | НомерТабЧасти,
  1051. | НомерСтроки";
  1052.  
  1053. Возврат ТекстЗапроса + ОбщегоНазначенияБПВызовСервера.ТекстРазделителяЗапросовПакета();
  1054.  
  1055. КонецФункции
  1056.  
  1057. Функция ПолучитьПараметрыСводногоСчетаФактурыКомиссияПоЗакупке(СчетФактура, ВидСчетаФактуры)
  1058.  
  1059. ПараметрыДляСводногоСФПоКомиссии = Новый Структура;
  1060.  
  1061. ПредставлениеПоставщика = "";
  1062. АдресПоставщика = "";
  1063. Грузоотправитель = "";
  1064. ИННКПППоставщика = "";
  1065.  
  1066. Запрос = Новый Запрос;
  1067. Запрос.УстановитьПараметр("СчетФактура", СчетФактура);
  1068.  
  1069. Если ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаРеализацию Тогда
  1070. ТекстЗапроса =
  1071. "ВЫБРАТЬ
  1072. | ОтчетКомитентуОПродажахПоставщики.Поставщик КАК Поставщик,
  1073. | ВЫБОР
  1074. | КОГДА ЕСТЬNULL(ОтчетКомитентуОПродажахПоставщики.Партия.Грузоотправитель, ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)) = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
  1075. | ИЛИ ЕСТЬNULL(ОтчетКомитентуОПродажахПоставщики.Партия.Грузоотправитель, ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)) = ОтчетКомитентуОПродажахПоставщики.Поставщик
  1076. | ТОГДА ""он же""
  1077. | ИНАЧЕ ОтчетКомитентуОПродажахПоставщики.Партия.Грузоотправитель
  1078. | КОНЕЦ КАК Грузоотправитель,
  1079. | ОтчетКомитентуОПродажахПоставщики.Поставщик.ИНН КАК ИННПоставщика,
  1080. | ОтчетКомитентуОПродажахПоставщики.Поставщик.КПП КАК КПППоставщика,
  1081. | ОтчетКомитентуОПродажахПоставщики.Ссылка.Дата
  1082. |ИЗ
  1083. | Документ.ОтчетКомитентуОПродажах.Поставщики КАК ОтчетКомитентуОПродажахПоставщики
  1084. |ГДЕ
  1085. | ОтчетКомитентуОПродажахПоставщики.Ссылка.ПометкаУдаления = ЛОЖЬ
  1086. | И ОтчетКомитентуОПродажахПоставщики.СчетФактура = &СчетФактура
  1087. | И ОтчетКомитентуОПродажахПоставщики.Ссылка.ВыписыватьСчетаФактурыСводно";
  1088.  
  1089. ИначеЕсли ВидСчетаФактуры = Перечисления.ВидСчетаФактурыПолученного.НаПоступление Тогда
  1090. ТекстЗапроса =
  1091. "ВЫБРАТЬ
  1092. | СчетФактураПолученныйПродавцы.Продавец КАК Поставщик,
  1093. | СчетФактураПолученныйПродавцы.Продавец.ИНН КАК ИННПоставщика,
  1094. | СчетФактураПолученныйПродавцы.Продавец.КПП КАК КПППоставщика,
  1095. | ""он же"" КАК Грузоотправитель,
  1096. | СчетФактураПолученныйПродавцы.Ссылка.Дата
  1097. |ИЗ
  1098. | Документ.СчетФактураПолученный.Продавцы КАК СчетФактураПолученныйПродавцы
  1099. |ГДЕ
  1100. | СчетФактураПолученныйПродавцы.Ссылка = &СчетФактура";
  1101.  
  1102. ИначеЕсли ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаАвансКомитентаНаЗакупку Тогда
  1103. ТекстЗапроса =
  1104. "ВЫБРАТЬ
  1105. | СчетФактураВыданныйАвансы.Контрагент КАК Поставщик,
  1106. | СчетФактураВыданныйАвансы.Контрагент.ИНН КАК ИННПоставщика,
  1107. | СчетФактураВыданныйАвансы.Контрагент.КПП КАК КПППоставщика,
  1108. | СчетФактураВыданныйАвансы.Ссылка.Дата
  1109. |ИЗ
  1110. | Документ.СчетФактураВыданный.Авансы КАК СчетФактураВыданныйАвансы
  1111. |ГДЕ
  1112. | СчетФактураВыданныйАвансы.Ссылка = &СчетФактура";
  1113.  
  1114. Иначе
  1115.  
  1116. ПараметрыДляСводногоСФПоКомиссии.Вставить("ПредставлениеПоставщика", ПредставлениеПоставщика);
  1117. ПараметрыДляСводногоСФПоКомиссии.Вставить("АдресПоставщика", АдресПоставщика);
  1118. ПараметрыДляСводногоСФПоКомиссии.Вставить("Грузоотправитель", Грузоотправитель);
  1119. ПараметрыДляСводногоСФПоКомиссии.Вставить("ИННКПППоставщика", ИННКПППоставщика);
  1120.  
  1121. Возврат ПараметрыДляСводногоСФПоКомиссии;
  1122.  
  1123. КонецЕсли;
  1124.  
  1125. Запрос.Текст = ТекстЗапроса;
  1126.  
  1127. Выборка = Запрос.Выполнить().Выбрать();
  1128.  
  1129. Пока Выборка.Следующий() Цикл
  1130.  
  1131. СведенияОПоставщике = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(Выборка.Поставщик, Выборка.Дата);
  1132.  
  1133. ПредставлениеПоставщика = ?(ПустаяСтрока(ПредставлениеПоставщика), "", ПредставлениеПоставщика + ";") +
  1134. ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОПоставщике, "НаименованиеДляПечатныхФорм,");
  1135.  
  1136. АдресПоставщика = ?(ПустаяСтрока(АдресПоставщика), "", АдресПоставщика + ";") +
  1137. ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОПоставщике, "ЮридическийАдрес,");
  1138.  
  1139. Если ВидСчетаФактуры <> Перечисления.ВидСчетаФактурыВыставленного.НаАвансКомитентаНаЗакупку Тогда
  1140. Если ТипЗнч(Выборка.Грузоотправитель) = Тип("Строка") Тогда
  1141. ПредставлениеГрузоотправителя = Выборка.Грузоотправитель;
  1142. Иначе
  1143. СведенияОГрузоотправителе = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(Выборка.Грузоотправитель, Выборка.Дата);
  1144. ПредставлениеГрузоотправителя = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(
  1145. СведенияОГрузоотправителе, "НаименованиеДляПечатныхФорм,ФактическийАдрес,");
  1146. КонецЕсли;
  1147.  
  1148. Грузоотправитель = ?(ПустаяСтрока(Грузоотправитель), "", Грузоотправитель + ";") + ПредставлениеГрузоотправителя;
  1149. КонецЕсли;
  1150.  
  1151. ИННКПППоставщика = ?(ПустаяСтрока(ИННКПППоставщика), "", ИННКПППоставщика + ";") +
  1152. Выборка.ИННПоставщика + ?(ПустаяСтрока(Выборка.КПППоставщика), "", "/" + Выборка.КПППоставщика);
  1153.  
  1154. КонецЦикла;
  1155.  
  1156. ПараметрыДляСводногоСФПоКомиссии.Вставить("ПредставлениеПоставщика", ПредставлениеПоставщика);
  1157. ПараметрыДляСводногоСФПоКомиссии.Вставить("АдресПоставщика", АдресПоставщика);
  1158. ПараметрыДляСводногоСФПоКомиссии.Вставить("Грузоотправитель", Грузоотправитель);
  1159. ПараметрыДляСводногоСФПоКомиссии.Вставить("ИННКПППоставщика", ИННКПППоставщика);
  1160.  
  1161. Возврат ПараметрыДляСводногоСФПоКомиссии;
  1162.  
  1163. КонецФункции
  1164.  
  1165. Процедура ВывестиСчетФактуруВТабличныйДокумент(ТабДокумент, Макет, ВыборкаСФ, ЭтоУниверсальныйПередаточныйДокумент = Ложь)
  1166.  
  1167. ТаблицаДокумента = ВыборкаСФ.ТаблицаДокумента;
  1168.  
  1169. // Вывод шапки
  1170.  
  1171. ДанныеШапки = ВыборкаСФ.ДанныеШапки;
  1172.  
  1173. ОбластьМакета = Макет.ПолучитьОбласть("Шапка");
  1174. ОбластьМакета.Параметры.Заполнить(ДанныеШапки);
  1175.  
  1176. Если ЭтоУниверсальныйПередаточныйДокумент Тогда
  1177.  
  1178. НомерСчетаФактуры = "Универсальный передаточный документ № " + ДанныеШапки.Номер + " от " + Формат(ДанныеШапки.Дата, "ДЛФ='ДД'");
  1179.  
  1180. ОбластьМакета.Параметры.Номер = ДанныеШапки.Номер;
  1181. ОбластьМакета.Параметры.Дата = Формат(ДанныеШапки.Дата, "ДЛФ='ДД'");
  1182.  
  1183. ОбластьМакета.Параметры.НомерИсправления = ДанныеШапки.НомерИсправления;
  1184. ОбластьМакета.Параметры.ДатаИсправления = Формат(ДанныеШапки.ДатаИсправления, "ДЛФ='ДД'");
  1185.  
  1186. ОбластьМакета.Параметры.ПоДокументу = ДанныеШапки.ПоДокументу;
  1187. ОбластьМакета.Параметры.Валюта = ДанныеШапки.ВалютаНаименование;
  1188.  
  1189. ОбластьМакета.Параметры.ПредставлениеПоставщика = ДанныеШапки.ПредставлениеПоставщика;
  1190. ОбластьМакета.Параметры.ИННПоставщика = ?(ДанныеШапки.Свойство("ИННКПППоставщика"),
  1191. ДанныеШапки.ИННКПППоставщика,
  1192. "" + ДанныеШапки.ИННПоставщика + ?(ЗначениеЗаполнено(ДанныеШапки.КПППоставщика), "/" + ДанныеШапки.КПППоставщика, ""));
  1193. ОбластьМакета.Параметры.АдресПоставщика = ДанныеШапки.АдресПоставщика;
  1194. ОбластьМакета.Параметры.ПредставлениеГрузоотправителя = ДанныеШапки.ПредставлениеГрузоотправителя;
  1195.  
  1196. ОбластьМакета.Параметры.ПредставлениеПокупателя = ДанныеШапки.ПредставлениеПокупателя;
  1197. ОбластьМакета.Параметры.ИННПокупателя = ?(ДанныеШапки.Свойство("ИННКПППокупателя"),
  1198. ДанныеШапки.ИННКПППокупателя,
  1199. "" + ДанныеШапки.ИННПокупателя + ?(ЗначениеЗаполнено(ДанныеШапки.КПППокупателя), "/" + ДанныеШапки.КПППокупателя, ""));
  1200. ОбластьМакета.Параметры.АдресПокупателя = ДанныеШапки.АдресПокупателя;
  1201. ОбластьМакета.Параметры.ПредставлениеГрузополучателя = ДанныеШапки.ПредставлениеГрузополучателя;
  1202.  
  1203. Иначе
  1204.  
  1205. НомерСчетаФактуры = "Счет-фактура № " + ДанныеШапки.Номер + " от " + Формат(ДанныеШапки.Дата, "ДЛФ='ДД'");
  1206.  
  1207. ОбластьМакета.Параметры.Номер = НомерСчетаФактуры;
  1208. ОбластьМакета.Параметры.НомерИсправления = "Исправление № " + ДанныеШапки.НомерИсправления + " от " + Формат(ДанныеШапки.ДатаИсправления, "ДЛФ='ДД'");
  1209. ОбластьМакета.Параметры.ПредставлениеПоставщика = "Продавец: " + ДанныеШапки.ПредставлениеПоставщика;
  1210. ОбластьМакета.Параметры.АдресПоставщика = "Адрес: " + ДанныеШапки.АдресПоставщика;
  1211. ОбластьМакета.Параметры.ИННПоставщика = "ИНН/КПП продавца: " + ?(ДанныеШапки.Свойство("ИННКПППоставщика"),
  1212. ДанныеШапки.ИННКПППоставщика,
  1213. "" + ДанныеШапки.ИННПоставщика + ?(ЗначениеЗаполнено(ДанныеШапки.КПППоставщика), "/" + ДанныеШапки.КПППоставщика, ""));
  1214. ОбластьМакета.Параметры.ПредставлениеГрузоотправителя = "Грузоотправитель и его адрес: " + ДанныеШапки.ПредставлениеГрузоотправителя;
  1215. ОбластьМакета.Параметры.ПредставлениеГрузополучателя = "Грузополучатель и его адрес: " + ДанныеШапки.ПредставлениеГрузополучателя;
  1216. ОбластьМакета.Параметры.ПоДокументу = "К платежно-расчетному документу № " + ДанныеШапки.ПоДокументу;
  1217. ОбластьМакета.Параметры.ПредставлениеПокупателя = "Покупатель: " + ДанныеШапки.ПредставлениеПокупателя;
  1218. ОбластьМакета.Параметры.АдресПокупателя = "Адрес: " + ДанныеШапки.АдресПокупателя;
  1219. ОбластьМакета.Параметры.ИННПокупателя = "ИНН/КПП покупателя: " + ?(ДанныеШапки.Свойство("ИННКПППокупателя"),
  1220. ДанныеШапки.ИННКПППокупателя,
  1221. "" + ДанныеШапки.ИННПокупателя + ?(ЗначениеЗаполнено(ДанныеШапки.КПППокупателя), "/" + ДанныеШапки.КПППокупателя, ""));
  1222. ОбластьМакета.Параметры.Валюта = "Валюта: наименование, код " + ДанныеШапки.ВалютаНаименование;
  1223.  
  1224. КонецЕсли;
  1225.  
  1226. ТабДокумент.Вывести(ОбластьМакета);
  1227.  
  1228. // Вывод информации о комиссионере по договорам комиссии на закупку
  1229.  
  1230. Если НЕ ЭтоУниверсальныйПередаточныйДокумент И ЗначениеЗаполнено(ДанныеШапки.ПредставлениеКомиссионера) Тогда
  1231.  
  1232. ОбластьМакета = Макет.ПолучитьОбласть("РеквизитыКомиссионера");
  1233. ОбластьМакета.Параметры.ПредставлениеКомиссионера = ДанныеШапки.ПредставлениеКомиссионера;
  1234. ТабДокумент.Вывести(ОбластьМакета);
  1235.  
  1236. КонецЕсли;
  1237.  
  1238. // Вывод заголовка таблицы
  1239.  
  1240. ОбластьМакета = Макет.ПолучитьОбласть("ЗаголовокТаблицы");
  1241. ТабДокумент.Вывести(ОбластьМакета);
  1242.  
  1243. // Вывод табличной части
  1244.  
  1245. ОбластьМакета = Макет.ПолучитьОбласть("Строка");
  1246.  
  1247. КоличествоСтраниц = 1;
  1248.  
  1249. СчетФактураБезНДС = Истина;
  1250. НДСНеВыставляетя = Истина;
  1251.  
  1252. НомерСтроки = 0;
  1253. НомерЛиста = 1;
  1254. КоличествоСтрок = ТаблицаДокумента.Количество();
  1255. Для каждого СтрокаДокумента Из ТаблицаДокумента Цикл
  1256.  
  1257. НомерСтроки = НомерСтроки + 1;
  1258. СтрокаДокумента.НомерСтроки = НомерСтроки;
  1259.  
  1260. ОбластьМакета.Параметры.Заполнить(СтрокаДокумента);
  1261.  
  1262. Если НЕ ЗначениеЗаполнено(СтрокаДокумента.СтавкаНДС) Тогда
  1263. ОбластьМакета.Параметры.СтавкаНДС = "--";
  1264. Если СтрокаДокумента.СуммаНДС = 0 Тогда
  1265. ОбластьМакета.Параметры.СуммаНДС = "--";
  1266. КонецЕсли;
  1267. КонецЕсли;
  1268.  
  1269. ДозаполнитьСтрокуСчетаФактуры1137(ОбластьМакета, ВыборкаСФ.ВидСчетаФактуры);
  1270.  
  1271. Если НЕ ПроверитьВыводСчетаФактурыНаСтраницу(ТабДокумент, ОбластьМакета, (НомерСтроки = КоличествоСтрок), Макет, НомерЛиста, НомерСчетаФактуры, ЭтоУниверсальныйПередаточныйДокумент) Тогда
  1272. КоличествоСтраниц = КоличествоСтраниц + 1;
  1273. КонецЕсли;
  1274.  
  1275. ТабДокумент.Вывести(ОбластьМакета);
  1276.  
  1277. СчетФактураБезНДС = СчетФактураБезНДС И СтрокаДокумента.СуммаНДС = 0
  1278. И СтрокаДокумента.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
  1279.  
  1280. НДСНеВыставляетя = НДСНеВыставляетя И СтрокаДокумента.СуммаНДС = 0
  1281. И НЕ ЗначениеЗаполнено(СтрокаДокумента.СтавкаНДС);
  1282.  
  1283. КонецЦикла;
  1284.  
  1285. ТабДокумент.Область(ТабДокумент.ВысотаТаблицы,,ТабДокумент.ВысотаТаблицы,).ВместеСоСледующим = Истина;
  1286.  
  1287. // Вывод итоговых сумм
  1288.  
  1289. ОбластьМакета = Макет.ПолучитьОбласть("Итого");
  1290. Если ВыборкаСФ.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаАванс
  1291. ИЛИ ВыборкаСФ.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаАвансКомитента Тогда
  1292. ОбластьМакета.Параметры.ИтогоСтоимость = "--";
  1293. Иначе
  1294. ОбластьМакета.Параметры.ИтогоСтоимость = ТаблицаДокумента.Итог("Стоимость");
  1295. КонецЕсли;
  1296.  
  1297. Если НДСНеВыставляетя Тогда
  1298. ОбластьМакета.Параметры.ИтогоСуммаНДС = "--";
  1299. ИначеЕсли СчетФактураБезНДС Тогда
  1300. ОбластьМакета.Параметры.ИтогоСуммаНДС = "без НДС";
  1301. Иначе
  1302. ОбластьМакета.Параметры.ИтогоСуммаНДС = ТаблицаДокумента.Итог("СуммаНДС");
  1303. КонецЕсли;
  1304.  
  1305. ОбластьМакета.Параметры.ИтогоВсего = ТаблицаДокумента.Итог("Всего");
  1306. ТабДокумент.Вывести(ОбластьМакета);
  1307.  
  1308. // Вывод подвала
  1309. КоличествоЛистов = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
  1310. НСтр("ru = 'Документ составлен на%1%2 %3'"), Символы.ПС, КоличествоСтраниц,
  1311. ОбщегоНазначенияБПКлиентСервер.ФормаМножественногоЧисла(
  1312. НСтр("ru = 'листе'"), НСтр("ru = 'листах'"), НСтр("ru = 'листах'"), КоличествоСтраниц));
  1313.  
  1314. ДанныеШапки.Вставить("КоличествоЛистов", КоличествоЛистов);
  1315.  
  1316. ОбластьМакета = Макет.ПолучитьОбласть("Подвал");
  1317. ОбластьМакета.Параметры.Заполнить(ДанныеШапки);
  1318. ТабДокумент.Вывести(ОбластьМакета);
  1319.  
  1320. КонецПроцедуры
  1321.  
  1322. Функция ПроверитьВыводСчетаФактурыНаСтраницу(ТабДокумент, ОбластьТекСтроки, ЭтоПоследняяСтрока, Макет, НомерЛиста, НомерСчетаФактуры, ЭтоУниверсальныйПередаточныйДокумент = Ложь)
  1323.  
  1324. // Проверим возможность вывода табличного документа
  1325. СтрокаСПодвалом = Новый Массив;
  1326. СтрокаСПодвалом.Добавить(ОбластьТекСтроки);
  1327. Если ЭтоПоследняяСтрока Тогда
  1328. // Если последняя строка, то должен поместиться еще итог и подвал
  1329. СтрокаСПодвалом.Добавить(Макет.ПолучитьОбласть("Итого"));
  1330. СтрокаСПодвалом.Добавить(Макет.ПолучитьОбласть("Подвал"));
  1331. Если ЭтоУниверсальныйПередаточныйДокумент Тогда
  1332. СтрокаСПодвалом.Добавить(Макет.ПолучитьОбласть("ПодвалНакладной"));
  1333. КонецЕсли;
  1334. КонецЕсли;
  1335.  
  1336. РезультатПроверки = ОбщегоНазначенияБПВызовСервера.ПроверитьВыводТабличногоДокумента(ТабДокумент, СтрокаСПодвалом);
  1337.  
  1338. Если НЕ РезультатПроверки Тогда
  1339. // Вывод разделителя и заголовка таблицы на новой странице
  1340.  
  1341. НомерЛиста = НомерЛиста + 1;
  1342.  
  1343. ОбластьНумерацияЛистов = Макет.ПолучитьОбласть("НумерацияЛистов");
  1344. ОбластьНумерацияЛистов.Параметры.Номер = НомерСчетаФактуры;
  1345. ОбластьНумерацияЛистов.Параметры.НомерЛиста = НомерЛиста;
  1346.  
  1347. ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
  1348.  
  1349. ТабДокумент.Вывести(ОбластьНумерацияЛистов);
  1350. ТабДокумент.Вывести(Макет.ПолучитьОбласть("ЗаголовокТаблицы"));
  1351.  
  1352. КонецЕсли;
  1353.  
  1354. Возврат РезультатПроверки;
  1355.  
  1356. КонецФункции
  1357.  
  1358. Процедура ДозаполнитьСтрокуСчетаФактуры1137(ОбластьМакета, ВидСчетаФактуры)
  1359.  
  1360. Если ОбластьМакета.Параметры.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС Тогда
  1361. ОбластьМакета.Параметры.СтавкаНДС = "без НДС";
  1362. ОбластьМакета.Параметры.СуммаНДС = "без НДС";
  1363. КонецЕсли;
  1364.  
  1365. // Проставляем прочерки в незаполненные графы в соответствии с Постановлением 1137
  1366. Если ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаАванс
  1367. ИЛИ ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаАвансКомитента Тогда
  1368.  
  1369. ОбластьМакета.Параметры.ЕдиницаИзмерения = "--";
  1370. ОбластьМакета.Параметры.ЕдиницаИзмеренияКод = "--";
  1371.  
  1372. ОбластьМакета.Параметры.Количество = "--";
  1373. ОбластьМакета.Параметры.Цена = "--";
  1374. ОбластьМакета.Параметры.Стоимость = "--";
  1375. ОбластьМакета.Параметры.Акциз = "--";
  1376.  
  1377. ОбластьМакета.Параметры.СтранаПроисхожденияКод = "--";
  1378. ОбластьМакета.Параметры.ПредставлениеСтраны = "--";
  1379. ОбластьМакета.Параметры.ПредставлениеГТД = "--";
  1380.  
  1381. Иначе
  1382.  
  1383. Если НЕ ЗначениеЗаполнено(ОбластьМакета.Параметры.ЕдиницаИзмерения) Тогда
  1384. ОбластьМакета.Параметры.ЕдиницаИзмерения = "--";
  1385. ОбластьМакета.Параметры.ЕдиницаИзмеренияКод = "--";
  1386. КонецЕсли;
  1387. Если НЕ ЗначениеЗаполнено(ОбластьМакета.Параметры.ЕдиницаИзмеренияКод) Тогда
  1388. ОбластьМакета.Параметры.ЕдиницаИзмеренияКод = "--";
  1389. КонецЕсли;
  1390. Если НЕ ЗначениеЗаполнено(ОбластьМакета.Параметры.Количество) Тогда
  1391. ОбластьМакета.Параметры.Количество = "--";
  1392. КонецЕсли;
  1393. Если НЕ ЗначениеЗаполнено(ОбластьМакета.Параметры.Цена) Тогда
  1394. ОбластьМакета.Параметры.Цена = "--";
  1395. КонецЕсли;
  1396. Если НЕ ЗначениеЗаполнено(ОбластьМакета.Параметры.ПредставлениеСтраны) Тогда
  1397. ОбластьМакета.Параметры.СтранаПроисхожденияКод = "--";
  1398. ОбластьМакета.Параметры.ПредставлениеСтраны = "--";
  1399. ОбластьМакета.Параметры.ПредставлениеГТД = "--";
  1400. КонецЕсли;
  1401.  
  1402. КонецЕсли;
  1403.  
  1404. КонецПроцедуры
  1405.  
  1406. Функция ПолучитьДанныеДляПечатиУниверсальногоПередаточногоДокумента(МассивОбъектов, ТекстЗапросаДокументам)
  1407.  
  1408. Запрос = Новый Запрос;
  1409. Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
  1410. Запрос.Текст = ТекстЗапросаДокументам;
  1411.  
  1412. ТаблицаСчетовФактур = Новый ТаблицаЗначений();
  1413. ТаблицаСчетовФактур.Колонки.Добавить("ДанныеШапки");
  1414. ТаблицаСчетовФактур.Колонки.Добавить("ТаблицаДокумента");
  1415. ТаблицаСчетовФактур.Колонки.Добавить("ДокументыОснования");
  1416. ТаблицаСчетовФактур.Колонки.Добавить("ВидСчетаФактуры");
  1417. ТаблицаСчетовФактур.Колонки.Добавить("СчетФактура");
  1418. ТаблицаСчетовФактур.Колонки.Добавить("СчетФактураБезНДС");
  1419. ТаблицаСчетовФактур.Колонки.Добавить("Дата");
  1420. ТаблицаСчетовФактур.Колонки.Добавить("Ссылка");
  1421.  
  1422. ДанныеСчетаФактуры = Новый Структура("СчетФактура, ВидСчетаФактуры, Контрагент, ДоговорКонтрагента, ИспользуетсяПостановлениеНДС1137");
  1423. ДанныеСчетаФактуры.ИспользуетсяПостановлениеНДС1137 = Истина;
  1424.  
  1425. ВыборкаПоОснованиям = Запрос.Выполнить().Выбрать();
  1426. Пока ВыборкаПоОснованиям.Следующий() Цикл
  1427.  
  1428. Если НЕ ЗначениеЗаполнено(ВыборкаПоОснованиям.ДокументОснование) Тогда
  1429. Продолжить;
  1430. КонецЕсли;
  1431.  
  1432. ДокументыОснования = Новый Массив;
  1433. ДокументыОснования.Добавить(ВыборкаПоОснованиям.ДокументОснование);
  1434.  
  1435. ЗаполнитьЗначенияСвойств(ДанныеСчетаФактуры, ВыборкаПоОснованиям);
  1436. ПараметрыОснования = ПодготовитьДанныеДляПечатиУниверсальныхПередаточныхДокументов(ВыборкаПоОснованиям.ДокументОснование, ДанныеСчетаФактуры);
  1437.  
  1438. Если ПараметрыОснования.Реквизиты = Неопределено ИЛИ ПараметрыОснования.ТаблицаДокумента = Неопределено Тогда
  1439. Продолжить;
  1440. КонецЕсли;
  1441.  
  1442. ТаблицаДокумента = ПараметрыОснования.ТаблицаДокумента;
  1443.  
  1444. ТаблицаДокумента.Колонки.СуммаБезНДС.Имя = "Стоимость";
  1445.  
  1446. ДанныеШапки = ПодготовитьДанныеШапкиУниверсальногоПередаточногоДокумента(ВыборкаПоОснованиям, ПараметрыОснования.Реквизиты[0]);
  1447.  
  1448. СчетФактура = ТаблицаСчетовФактур.Добавить();
  1449. СчетФактура.Дата = ВыборкаПоОснованиям.Дата;
  1450. СчетФактура.СчетФактура = ВыборкаПоОснованиям.СчетФактура;
  1451. СчетФактура.ВидСчетаФактуры = ВыборкаПоОснованиям.ВидСчетаФактуры;
  1452. СчетФактура.СчетФактураБезНДС = ВыборкаПоОснованиям.СчетФактураБезНДС;
  1453. СчетФактура.ДанныеШапки = ДанныеШапки;
  1454. СчетФактура.ТаблицаДокумента = ТаблицаДокумента;
  1455. СчетФактура.ДокументыОснования = ДокументыОснования;
  1456. СчетФактура.Ссылка = ВыборкаПоОснованиям.ДокументОснование;
  1457.  
  1458. КонецЦикла;
  1459.  
  1460. Возврат ТаблицаСчетовФактур;
  1461.  
  1462. КонецФункции
  1463.  
  1464. Функция ПодготовитьДанныеДляПечатиУниверсальныхПередаточныхДокументов(ДокументОснование, ДанныеСчетаФактуры)
  1465.  
  1466. ТекстПустойПоказатель = "--";
  1467.  
  1468. Если ТипЗнч(ДокументОснование) = Тип("ДокументСсылка.ПередачаТоваров") Тогда
  1469. ДанныеДляПечати = Документы.ПередачаТоваров.ПодготовитьДанныеДляПечатиУниверсальныхПередаточныхДокументов(ДокументОснование);
  1470. Иначе
  1471. ДанныеДляПечати = ПодготовитьДанныеДляПечатиСчетовФактур(ДокументОснование, ДанныеСчетаФактуры);
  1472. КонецЕсли;
  1473.  
  1474. // Поля, которые в УПД со статусом 2 должны быть пустыми
  1475. ПустыеПоляУПД = Новый Структура;
  1476. ПустыеПоляУПД.Вставить("Акциз", ТекстПустойПоказатель);
  1477. ПустыеПоляУПД.Вставить("СтавкаНДС", Перечисления.СтавкиНДС.ПустаяСсылка());
  1478. ПустыеПоляУПД.Вставить("НомерГТД", Справочники.НомераГТД.ПустаяСсылка());
  1479. ПустыеПоляУПД.Вставить("ПредставлениеГТД", ТекстПустойПоказатель);
  1480. ПустыеПоляУПД.Вставить("СтранаПроисхождения", Справочники.СтраныМира.ПустаяСсылка());
  1481. ПустыеПоляУПД.Вставить("СтранаПроисхожденияКод", ТекстПустойПоказатель);
  1482. ПустыеПоляУПД.Вставить("ПредставлениеСтраны", ТекстПустойПоказатель);
  1483.  
  1484. Если ДанныеДляПечати.ТаблицаДокумента <> Неопределено Тогда
  1485. Для Каждого СтрокаДокумента Из ДанныеДляПечати.ТаблицаДокумента Цикл
  1486. ЗаполнитьЗначенияСвойств(СтрокаДокумента, ПустыеПоляУПД);
  1487. КонецЦикла;
  1488. КонецЕсли;
  1489.  
  1490. Возврат ДанныеДляПечати;
  1491.  
  1492. КонецФункции
  1493.  
  1494. Функция ПодготовитьДанныеШапкиУниверсальногоПередаточногоДокумента(ВыборкаСФ, Реквизиты)
  1495.  
  1496. Возврат ПодготовитьДанныеШапкиСчетаФактуры1137(ВыборкаСФ, Реквизиты, Неопределено, Истина);
  1497.  
  1498. КонецФункции
  1499.  
  1500. Функция ПолучитьПараметрыСводногоСчетаФактурыКомиссияПоПродаже(СчетФактура, ВидСчетаФактуры)
  1501.  
  1502. ПараметрыДляСводногоСФПоКомиссии = Новый Структура;
  1503.  
  1504. Запрос = Новый Запрос;
  1505. Запрос.УстановитьПараметр("СчетФактура", СчетФактура);
  1506.  
  1507. Если ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаРеализацию Тогда
  1508. Запрос.Текст =
  1509. "ВЫБРАТЬ
  1510. | ОтчетКомиссионераОПродажахПокупатели.Покупатель КАК Покупатель,
  1511. | ОтчетКомиссионераОПродажахПокупатели.Покупатель.ИНН КАК ИННПокупателя,
  1512. | ОтчетКомиссионераОПродажахПокупатели.Покупатель.КПП КАК КПППокупателя,
  1513. | ОтчетКомиссионераОПродажахПокупатели.Ссылка.Дата КАК Дата,
  1514. | ВЫБОР
  1515. | КОГДА ОтчетКомиссионераОПродажахПокупатели.Ссылка.Грузополучатель <> ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
  1516. | ТОГДА ОтчетКомиссионераОПродажахПокупатели.Ссылка.Грузополучатель
  1517. | ИНАЧЕ ОтчетКомиссионераОПродажахПокупатели.Покупатель
  1518. | КОНЕЦ КАК Грузополучатель
  1519. |ИЗ
  1520. | Документ.ОтчетКомиссионераОПродажах.Покупатели КАК ОтчетКомиссионераОПродажахПокупатели
  1521. |ГДЕ
  1522. | ОтчетКомиссионераОПродажахПокупатели.Ссылка.ПометкаУдаления = ЛОЖЬ
  1523. | И ОтчетКомиссионераОПродажахПокупатели.СчетФактура = &СчетФактура
  1524. | И ОтчетКомиссионераОПродажахПокупатели.Ссылка.ВыписыватьСчетаФактурыСводно";
  1525. Иначе
  1526. //авансовый
  1527. Запрос.Текст =
  1528. "ВЫБРАТЬ
  1529. | СчетФактураВыданныйАвансы.Контрагент КАК Покупатель,
  1530. | СчетФактураВыданныйАвансы.Контрагент.ИНН КАК ИННПокупателя,
  1531. | СчетФактураВыданныйАвансы.Контрагент.КПП КАК КПППокупателя,
  1532. | СчетФактураВыданныйАвансы.Ссылка.Дата
  1533. |ИЗ
  1534. | Документ.СчетФактураВыданный.Авансы КАК СчетФактураВыданныйАвансы
  1535. |ГДЕ
  1536. | СчетФактураВыданныйАвансы.Ссылка = &СчетФактура";
  1537. КонецЕсли;
  1538.  
  1539. Выборка = Запрос.Выполнить().Выбрать();
  1540.  
  1541. ПредставлениеПокупателя = "";
  1542. АдресПокупателя = "";
  1543. Грузополучатель = "";
  1544. ИННКПППокупателя = "";
  1545.  
  1546. Пока Выборка.Следующий() Цикл
  1547.  
  1548. СведенияОПокупателе = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(Выборка.Покупатель, Выборка.Дата);
  1549.  
  1550. ПредставлениеПокупателя = ?(ПустаяСтрока(ПредставлениеПокупателя), "", ПредставлениеПокупателя + ";") +
  1551. ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОПокупателе, "НаименованиеДляПечатныхФорм,");
  1552.  
  1553. АдресПокупателя = ?(ПустаяСтрока(АдресПокупателя), "", АдресПокупателя + ";") +
  1554. ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОПокупателе, "ЮридическийАдрес,");
  1555.  
  1556. Если ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаРеализацию Тогда
  1557. СведенияОГрузополучателе = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(Выборка.Грузополучатель, Выборка.Дата);
  1558. ПредставлениеГрузополучателя = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(
  1559. СведенияОГрузополучателе, "НаименованиеДляПечатныхФорм,ФактическийАдрес,");
  1560.  
  1561. Грузополучатель = ?(ПустаяСтрока(Грузополучатель), "", Грузополучатель + ";") + ПредставлениеГрузополучателя;
  1562. КонецЕсли;
  1563.  
  1564. ИННКПППокупателя = ?(ПустаяСтрока(ИННКПППокупателя), "", ИННКПППокупателя + ";") +
  1565. Выборка.ИННПокупателя + ?(ПустаяСтрока(Выборка.КПППокупателя), "", "/" + Выборка.КПППокупателя);
  1566.  
  1567. КонецЦикла;
  1568.  
  1569. ПараметрыДляСводногоСФПоКомиссии.Вставить("ПредставлениеПокупателя", ПредставлениеПокупателя);
  1570. ПараметрыДляСводногоСФПоКомиссии.Вставить("АдресПокупателя", АдресПокупателя);
  1571. ПараметрыДляСводногоСФПоКомиссии.Вставить("Грузополучатель", Грузополучатель);
  1572. ПараметрыДляСводногоСФПоКомиссии.Вставить("ИННКПППокупателя", ИННКПППокупателя);
  1573.  
  1574. Возврат ПараметрыДляСводногоСФПоКомиссии;
  1575.  
  1576. КонецФункции
  1577.  
  1578. Процедура УстановкаМинимальныхПолейДляПечати(ТабличныйДокумент)
  1579.  
  1580. // Принудительная установка минимальных полей
  1581. Если ТабличныйДокумент.ПолеСлева < 10 Тогда
  1582. ТабличныйДокумент.ПолеСлева = 10;
  1583. КонецЕсли;
  1584.  
  1585. // Проверка на веб-клиент
  1586. СисИнфо = Новый СистемнаяИнформация;
  1587. ЗначениеПоляСправа = ?(ПустаяСтрока(СисИнфо.ИнформацияПрограммыПросмотра), 5, 10);
  1588.  
  1589. Если ТабличныйДокумент.ПолеСправа < ЗначениеПоляСправа Тогда
  1590. ТабличныйДокумент.ПолеСправа = ЗначениеПоляСправа;
  1591. КонецЕсли;
  1592.  
  1593. Если ТабличныйДокумент.ПолеСверху < 5 Тогда
  1594. ТабличныйДокумент.ПолеСверху = 5;
  1595. КонецЕсли;
  1596.  
  1597. Если ТабличныйДокумент.ПолеСнизу < 5 Тогда
  1598. ТабличныйДокумент.ПолеСнизу = 5;
  1599. КонецЕсли;
  1600.  
  1601. КонецПроцедуры
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement