|
02.04.2012, 09:08
#37734118
Ссылка:
Ссылка на сообщение:
Ссылка с названием темы:
Ссылка на профиль пользователя:
|
|
|
Участник
Откуда: сам не помню
Сообщения: 4 846
Рейтинг:
0
/ 0
|
|
|
|
доброе утро помогите пожалуйсто, люди возникла проблема с формированием Торг16 в документе ТребованиеНакладная, сам процесс идет очень долго, да и выгружает не то, мучаюсь уже три дня помогите чем сможите! заранее спасибо.
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 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. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 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. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 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.
Функция Печать() экспорт
Перем ПодразделениеОтветственныхЛиц;
ДопКолонка = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
Если ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
ТоварКод = "Артикул";
Иначе
ТоварКод = "Код";
КонецЕсли;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект.Ссылка);
Запрос.Текст =
"ВЫБРАТЬ
| Константы.ВалютаРегламентированногоУчета КАК ВалютаДокумента,
| ТребованиеНакладная.Номер КАК НомерДокумента,
| ТребованиеНакладная.Дата КАК ДатаДокумента,
| ТребованиеНакладная.Организация КАК Организация,
| ТребованиеНакладная.Организация КАК Руководители,
| ТребованиеНакладная.Склад КАК Склад,
| ТребованиеНакладная.Склад.Представление КАК ПредставлениеСклада,
| ТребованиеНакладная.Материалы.(
| НомерСтроки,
| Номенклатура,
| Номенклатура.НаименованиеПолное КАК ТоварНаименование,
| Номенклатура.Код КАК ТоварКод,
| Количество,
| КоличествоМест,
| ЕдиницаИзмерения.Наименование КАК ЕдиницаИзмеренияМестНаименование,
| Номенклатура.БазоваяЕдиницаИзмерения.Наименование КАК ЕдиницаИзмеренияНаименование,
| Номенклатура.БазоваяЕдиницаИзмерения.Код КАК ЕдиницаИзмеренияКодПоОКЕИ,
| Себестоимость,
| Ссылка,
| ВложенныйЗапрос.ДатаВходящегоДокумента,
| ВложенныйЗапрос.НомерВходящегоДокумента
| ),
| ТребованиеНакладная.МатериалыЗаказчика.(
| НомерСтроки,
| Номенклатура,
| Номенклатура.НаименованиеПолное КАК ТоварНаименование,
| Номенклатура.Код КАК ТоварКод,
| Количество,
| 1 КАК Поле1,
| Номенклатура.БазоваяЕдиницаИзмерения.Наименование КАК ЕдиницаИзмерения,
| Номенклатура.БазоваяЕдиницаИзмерения.Наименование КАК ЕдиницаХранения,
| 0 КАК Поле2,
| 0 КАК Поле3
| )
|ИЗ
| Константы КАК Константы,
| Документ.ТребованиеНакладная КАК ТребованиеНакладная
| ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка,
| ВложенныйЗапрос.ДатаВходящегоДокумента КАК ДатаВходящегоДокумента,
| ВложенныйЗапрос.НомерВходящегоДокумента КАК НомерВходящегоДокумента
| ИЗ
| (ВЫБРАТЬ
| ПоступлениеТоваровУслуг.ДатаВходящегоДокумента КАК ДатаВходящегоДокумента,
| ПоступлениеТоваровУслуг.НомерВходящегоДокумента КАК НомерВходящегоДокумента,
| ПоступлениеТоваровУслуг.Товары.(
| Ссылка КАК Ссылка
| ) КАК Товары
| ИЗ
| РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто КАК ХозрасчетныйДвиженияССубконто
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
| ПО ХозрасчетныйДвиженияССубконто.Регистратор = ПоступлениеТоваровУслуг.Ссылка
| И ХозрасчетныйДвиженияССубконто.СубконтоДт1 = ПоступлениеТоваровУслуг.Ссылка
| И ХозрасчетныйДвиженияССубконто.СубконтоДт2 = ПоступлениеТоваровУслуг.Ссылка
| И ХозрасчетныйДвиженияССубконто.СубконтоДт3 = ПоступлениеТоваровУслуг.Ссылка
| И ХозрасчетныйДвиженияССубконто.СубконтоКт1 = ПоступлениеТоваровУслуг.Ссылка
| И ХозрасчетныйДвиженияССубконто.СубконтоКт2 = ПоступлениеТоваровУслуг.Ссылка
| И ХозрасчетныйДвиженияССубконто.СубконтоКт3 = ПоступлениеТоваровУслуг.Ссылка) КАК ВложенныйЗапрос
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
| ПО ВложенныйЗапрос.Товары.Ссылка = Номенклатура.Ссылка) КАК ВложенныйЗапрос
| ПО ТребованиеНакладная.Материалы.Ссылка = ВложенныйЗапрос.Ссылка
|ГДЕ
| ТребованиеНакладная.Ссылка = &ТекущийДокумент";
Если Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить() = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, "Номенклатура.Код","Номенклатура.Артикул");
КонецЕсли;
Шапка = Запрос.Выполнить().Выбрать();
Шапка.Следующий();
Сообщить("Запрос выполнен!");
Макет = ПолучитьМакет("Макет");
ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СписаниеТоваров_ТОРГ16";
// Выводим общие реквизиты шапки
ОписаниеОрганизации = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Организация, Шапка.ДатаДокумента);
ОбластьМакета = Макет.ПолучитьОбласть("Шапка");
ОбластьМакета.Параметры.Заполнить(Шапка);
ОбластьМакета.Параметры.ДатаДокумента = Формат(Шапка.ДатаДокумента, "ДЛФ=DD");
ОбластьМакета.Параметры.ПредставлениеОрганизации = ФормированиеПечатныхФорм.ОписаниеОрганизации(ОписаниеОрганизации);
ОбластьМакета.Параметры.ОрганизацияПоОКПО = ОписаниеОрганизации.КодПоОКПО;
Руководители = ОбщегоНазначения.ОтветственныеЛица(Шапка.Руководители, Шапка.ДатаДокумента, ПодразделениеОтветственныхЛиц);
Руководитель = Руководители.РуководительПредставление;
Бухгалтер = Руководители.ГлавныйБухгалтерПредставление;
ОбластьМакета.Параметры.ФИОРуководителя = Руководитель;
ТабДокумент.Вывести(ОбластьМакета);
СтрокНаСтранице = 23;
СтрокШапки = 11;
СтрокПодвала = 0;
НомерСтраницы = 1;
Ном = 0;
ВыборкаСтрокТовары = Шапка.Материалы.Выбрать();
КоличествоСтрок = ВыборкаСтрокТовары.Количество();
Если КоличествоСтрок = 1 Тогда
ПереноситьПоследнююСтроку = 0;
Иначе
ЦелыхСтраницСПодвалом = Цел((СтрокШапки + КоличествоСтрок + СтрокПодвала) / СтрокНаСтранице);
ЦелыхСтраницБезПодвала = Цел((СтрокШапки + КоличествоСтрок - 1) / СтрокНаСтранице);
ПереноситьПоследнююСтроку = ЦелыхСтраницСПодвалом - ЦелыхСтраницБезПодвала;
КонецЕсли;
// Выводим заголовок таблицы
ЗаголовокТаблицы = Макет.ПолучитьОбласть("ЗаголовокТаблицыПервогоЛиста");
ТабДокумент.Вывести(ЗаголовокТаблицы);
ОбластьМакета = Макет.ПолучитьОбласть("СтрокаПервогоЛиста");
// Поиск сумм списания активов для заполнения Цены и Суммы
ТаблицаСуммСписания = БухгалтерскийУчет.ПолучитьСуммуСписанияАктивов(СсылкаНаОбъект);
ТаблицаСуммСписания.Индексы.Добавить("Номенклатура");
Пока ВыборкаСтрокТовары.Следующий() Цикл
Ном = Ном + 1;
//Начинаем новую страницу, если предыдущая строка была последней на странице
//или пора переносить последнюю строку на последнюю страницу с подвалом.
ЦелаяСтраница = (СтрокШапки + Ном - 1) / СтрокНаСтранице;
Если (ЦелаяСтраница = Цел(ЦелаяСтраница))
или ((ПереноситьПоследнююСтроку = 1) и (Ном = КоличествоСтрок)) Тогда
ИтогоСтоимостьПоСтранице = 0;
НомерСтраницы = НомерСтраницы + 1;
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
ТабДокумент.Вывести(ЗаголовокТаблицы);
КонецЕсли;
ОбластьМакета.Параметры.Заполнить(ВыборкаСтрокТовары);
ОбластьМакета.Параметры.ДатаСписанияТовара = Шапка.ДатаДокумента;
ТабДокумент.Вывести(ОбластьМакета);
ОбластьМакета.Параметры.ДатаПоступленияТовара = ВыборкаСтрокТовары.ДатаВходящегоДокумента;
ОбластьМакета.Параметры.ТоварнаяНакладнаяНомер = ВыборкаСтрокТовары.НомерВходящегоДокумента;
ОбластьМакета.Параметры.ТоварнаяНакладнаяДата = ВыборкаСтрокТовары.ДатаВходящегоДокумента;
Сообщить(ном);
КонецЦикла;
Сообщить("первый цикл");
ВыборкаСтрокТара = Шапка.МатериалыЗаказчика.Выбрать();
Пока ВыборкаСтрокТара.Следующий() Цикл
Ном = Ном + 1;
//Начинаем новую страницу, если предыдущая строка была последней на странице
//или пора переносить последнюю строку на последнюю страницу с подвалом.
ЦелаяСтраница = (СтрокШапки + Ном - 1) / СтрокНаСтранице;
Если (ЦелаяСтраница = Цел(ЦелаяСтраница))
или ((ПереноситьПоследнююСтроку = 1) и (Ном = КоличествоСтрок)) Тогда
ИтогоСтоимостьПоСтранице = 0;
НомерСтраницы = НомерСтраницы + 1;
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
ТабДокумент.Вывести(ЗаголовокТаблицы);
КонецЕсли;
ОбластьМакета.Параметры.Заполнить(ВыборкаСтрокТара);
ОбластьМакета.Параметры.ДатаСписанияТовара = Шапка.ДатаДокумента;
ТабДокумент.Вывести(ОбластьМакета);
КонецЦикла;
Сообщить("второй цикл");
СтрокНаСтранице = 27;
СтрокШапки = 5;
СтрокПодвала = 11;
НомерСтраницы = 1;
Ном = 0;
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
НомерСтраницы = НомерСтраницы + 1;
ЗаголовокТаблицы = Макет.ПолучитьОбласть("ЗаголовокТаблицыВторогоЛиста");
ЗаголовокТаблицы.Параметры.НомерСтраницы = "Страница " + НомерСтраницы;
ТабДокумент.Вывести(ЗаголовокТаблицы);
Если КоличествоСтрок = 1 Тогда
ПереноситьПоследнююСтроку = 0;
Иначе
ЦелыхСтраницСПодвалом = Цел((СтрокШапки + КоличествоСтрок + СтрокПодвала) / СтрокНаСтранице);
ЦелыхСтраницБезПодвала = Цел((СтрокШапки + КоличествоСтрок - 1) / СтрокНаСтранице);
ПереноситьПоследнююСтроку = ЦелыхСтраницСПодвалом - ЦелыхСтраницБезПодвала;
КонецЕсли;
ИтогоСтоимость = 0;
// Выводим многострочную часть документа
ВыборкаСтрокТовары = Шапка.Материалы.Выбрать();
ОбластьМакета = Макет.ПолучитьОбласть("СтрокаВторогоЛиста");
Пока ВыборкаСтрокТовары.Следующий() Цикл
Ном = Ном + 1;
//Начинаем новую страницу, если предыдущая строка была последней на странице
//или пора переносить последнюю строку на последнюю страницу с подвалом.
ЦелаяСтраница = (СтрокШапки + Ном - 1) / СтрокНаСтранице;
Если (ЦелаяСтраница = Цел(ЦелаяСтраница))
или ((ПереноситьПоследнююСтроку = 1) и (Ном = КоличествоСтрок)) Тогда
ИтогоСтоимостьПоСтранице = 0;
НомерСтраницы = НомерСтраницы + 1;
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
ЗаголовокТаблицы.Параметры.НомерСтраницы = "Страница " + НомерСтраницы;
ТабДокумент.Вывести(ЗаголовокТаблицы);
КонецЕсли;
ОбластьМакета.Параметры.Заполнить(ВыборкаСтрокТовары);
КоличествоМест = ?(ВыборкаСтрокТовары.КоличествоМест = 0, ВыборкаСтрокТовары.Количество, ВыборкаСтрокТовары.КоличествоМест);
ОбластьМакета.Параметры.КоличествоМест = КоличествоМест;
ОбластьМакета.Параметры.ТоварНаименование = ВыборкаСтрокТовары.ТоварНаименование;
СтрокаСуммСписания = ТаблицаСуммСписания.Найти(ВыборкаСтрокТовары.Номенклатура, "Номенклатура");
Если СтрокаСуммСписания = Неопределено Тогда
ОбластьМакета.Параметры.Цена = 0;
ОбластьМакета.Параметры.Стоимость = 0;
Иначе
Цена = ?(СтрокаСуммСписания.Количество = 0, 0, СтрокаСуммСписания.Сумма / СтрокаСуммСписания.Количество);
ОбластьМакета.Параметры.Цена = Цена;
ОбластьМакета.Параметры.Стоимость = Цена * ВыборкаСтрокТовары.Количество;
КонецЕсли;
ТабДокумент.Вывести(ОбластьМакета);
// Обновим итоги по документу
ИтогоСтоимость = ИтогоСтоимость + ОбластьМакета.Параметры.Стоимость;
КонецЦикла;
Сообщить("третий цикл");
ВыборкаСтрокТара = Шапка.МатериалыЗаказчика.Выбрать();
Пока ВыборкаСтрокТара.Следующий() Цикл
Ном = Ном + 1;
//Начинаем новую страницу, если предыдущая строка была последней на странице
//или пора переносить последнюю строку на последнюю страницу с подвалом.
ЦелаяСтраница = (СтрокШапки + Ном - 1) / СтрокНаСтранице;
Если (ЦелаяСтраница = Цел(ЦелаяСтраница))
или ((ПереноситьПоследнююСтроку = 1) и (Ном = КоличествоСтрок)) Тогда
ИтогоСтоимостьПоСтранице = 0;
НомерСтраницы = НомерСтраницы + 1;
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
ЗаголовокТаблицы.Параметры.НомерСтраницы = "Страница " + НомерСтраницы;
ТабДокумент.Вывести(ЗаголовокТаблицы);
КонецЕсли;
ОбластьМакета.Параметры.Заполнить(ВыборкаСтрокТара);
ОбластьМакета.Параметры.ТоварНаименование = ВыборкаСтрокТара.ТоварНаименование + " (возвратная тара)";
//СтрокаСуммСписания = ТаблицаСуммСписания.Найти(ВыборкаСтрокТара.Номенклатура, "Номенклатура");
Если СтрокаСуммСписания = Неопределено Тогда
ОбластьМакета.Параметры.Цена = 0;
ОбластьМакета.Параметры.Стоимость = 0;
Иначе
Цена = ?(СтрокаСуммСписания.Количество = 0, 0, СтрокаСуммСписания.Сумма / СтрокаСуммСписания.Количество);
ОбластьМакета.Параметры.Цена = Цена;
ОбластьМакета.Параметры.Стоимость = Цена * ВыборкаСтрокТара.Количество;
КонецЕсли;
ТабДокумент.Вывести(ОбластьМакета);
// Обновим итоги по документу
ИтогоСтоимость = ИтогоСтоимость + ОбластьМакета.Параметры.Стоимость;
КонецЦикла;
Сообщить("четвертый цикл");
// Выводим итоги по документу в общем
ОбластьМакета = Макет.ПолучитьОбласть("Итого");
ОбластьМакета.Параметры.Итого = ИтогоСтоимость;
ТабДокумент.Вывести(ОбластьМакета);
// Выводим подвал документа
ОбластьМакета = Макет.ПолучитьОбласть("Подвал");
ОбластьМакета.Параметры.Заполнить(Шапка);
ОбластьМакета.Параметры.СуммаСписанияПрописью = ОбщегоНазначения.СформироватьСуммуПрописью(ИтогоСтоимость, Шапка.ВалютаДокумента);
ТабДокумент.Вывести(ОбластьМакета);
// Зададим параметры макета
ТабДокумент.ПолеСверху = 0;
ТабДокумент.ПолеСлева = 0;
ТабДокумент.ПолеСнизу = 0;
ТабДокумент.ПолеСправа = 0;
ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
Сообщить("конец");
Возврат ТабДокумент;
КонецФункции // ПечатьТОРГ16()
каждый правит свой жизнью сам, и не ной что она у тебя хуже чем у других, она всегда такой будет.!
|
|
|