|
Изменение стандартного макета для док-та СчетНаОплату | ☑ | ||
---|---|---|---|---|
0
Иванов Иван Иваныч
19.06.19
✎
08:47
|
Доброго всем дня! Добавил колонки в ТЧ док-та СчетНаОплату Скидка и СуммаБезСкидки, добавил эти колонки в макет, добавил в запрос, но что-то сам запрос не фурычит, валится с различными еррором "Разное количество полей в объединяемых запросах", до вывода данных даже не дошел еще, где не так написал? И куда смотреть, чтоб вывести данные в макет? Добавил новые поля в первый запрос, во вложенный запрос из Док-т.СчетНаОплату.Товары. Скрин макета по ссылке https://ibb.co/47YRh4K
Функция ПечатьСчетаЗаказа(МассивОбъектов, ОбъектыПечати) Экспорт УстановитьПривилегированныйРежим(Истина); ДопКолонка = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить(); Если ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда ВыводитьКоды = Истина; Колонка = "Артикул"; ТекстКодАртикул = "Артикул"; ИначеЕсли ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Код Тогда ВыводитьКоды = Истина; Колонка = "Код"; ТекстКодАртикул = "Код"; Иначе ВыводитьКоды = Ложь; Колонка = ""; ТекстКодАртикул = "Код"; КонецЕсли; Если ВыводитьКоды Тогда ОбластьШапки = "ШапкаТаблицыСКодом"; ОбластьСтроки = "СтрокаСКодом"; Иначе ОбластьШапки = "ШапкаТаблицы"; ОбластьСтроки = "Строка"; КонецЕсли; Запрос = Новый Запрос; Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов); Запрос.Текст ="ВЫБРАТЬ РАЗРЕШЕННЫЕ | ЗаказПокупателя.Ссылка КАК Ссылка, | ЗаказПокупателя.Номер КАК Номер, | ЗаказПокупателя.Дата КАК Дата, | ЗаказПокупателя.ДоговорКонтрагента КАК ДоговорКонтрагента, | ЗаказПокупателя.Организация КАК Организация, | ЗаказПокупателя.Организация.ФайлЛоготипа КАК ЛоготипОрганизации, | ЗаказПокупателя.СтруктурноеПодразделение КАК СтруктурноеПодразделение, | ЗаказПокупателя.Контрагент КАК Получатель, | ЗаказПокупателя.Организация КАК Руководители, | ЗаказПокупателя.Организация КАК Поставщик, | ЗаказПокупателя.СтруктурнаяЕдиница КАК СтруктурнаяЕдиница, | ЗаказПокупателя.СуммаДокумента КАК СуммаДокумента, | ЗаказПокупателя.ВалютаДокумента КАК ВалютаДокумента, | ЗаказПокупателя.УчитыватьНДС КАК УчитыватьНДС, | ЗаказПокупателя.СуммаВключаетНДС КАК СуммаВключаетНДС, | ЗаказПокупателя.КодНазначенияПлатежа КАК КодНазначенияПлатежа, | ЗаказПокупателя.Ответственный КАК Ответственный, | ЗаказПокупателя.Товары.( | _Скидка КАК _Скидка, | _СуммаБезСкидки КАК _СуммаБезСкидки, | Сумма КАК СуммаСоСкидкой | ) КАК Товары, | _ТекстВСчетеНаОплату.Значение КАК Значение |ИЗ | Документ.СчетНаОплатуПокупателю КАК ЗаказПокупателя, | Константа._ТекстВСчетеНаОплату КАК _ТекстВСчетеНаОплату |ГДЕ | ЗаказПокупателя.Ссылка В(&МассивОбъектов)"; Шапка = Запрос.Выполнить().Выбрать(); ТабДокумент = Новый ТабличныйДокумент; ТабДокумент.КлючПараметровПечати = "СчетНаОплатуПокупателю_СчетЗаказ"; Запрос = Новый Запрос; Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов); Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | ВложенныйЗапрос.Ссылка КАК Ссылка, | ВложенныйЗапрос.Номенклатура, | ВложенныйЗапрос.Товар, | ВложенныйЗапрос.КодАртикул, | ВложенныйЗапрос.Количество, | ВложенныйЗапрос.ЕдиницаИзмерения, | ВложенныйЗапрос.Цена, | ВложенныйЗапрос.Сумма, | ВложенныйЗапрос.Скидка, | ВложенныйЗапрос.СуммаБезСкидки, | ВложенныйЗапрос.СуммаНДС, | ВложенныйЗапрос.НомерСтроки, | ВложенныйЗапрос.ID |ИЗ | (ВЫБРАТЬ | ВложенныйЗапрос.Ссылка КАК Ссылка, | ВложенныйЗапрос.Номенклатура, | ВЫРАЗИТЬ(ВложенныйЗапрос.Номенклатура.НаименованиеПолное КАК СТРОКА(1000)) КАК Товар, | ВложенныйЗапрос.Номенклатура." + ТекстКодАртикул + " КАК КодАртикул, | ВложенныйЗапрос.Количество, | ВложенныйЗапрос.ЕдиницаИзмерения, | ВложенныйЗапрос.Цена, | ВложенныйЗапрос.Сумма, | ВложенныйЗапрос.Скидка, | ВложенныйЗапрос.СуммаБезСкидки, | ВложенныйЗапрос.СуммаНДС, | ВложенныйЗапрос.НомерСтроки КАК НомерСтроки, | 1 КАК ID |ИЗ | (ВЫБРАТЬ | ЗаказПокупателя.Ссылка КАК Ссылка, | ЗаказПокупателя.Номенклатура КАК Номенклатура, | ЗаказПокупателя.Номенклатура.БазоваяЕдиницаИзмерения.Наименование КАК ЕдиницаИзмерения, | ЗаказПокупателя.Цена КАК Цена, | СУММА(ЗаказПокупателя.Количество) КАК Количество, | СУММА(ЗаказПокупателя.Сумма) КАК Сумма, | СУММА(ЗаказПокупателя._Скидка) КАК Скидка, | СУММА(ЗаказПокупателя._СуммаБезСкидки) КАК СуммаБезСкидки, | СУММА(ЗаказПокупателя.СуммаНДС) КАК СуммаНДС, | МИНИМУМ(ЗаказПокупателя.НомерСтроки) КАК НомерСтроки | ИЗ | Документ.СчетНаОплатуПокупателю.Товары КАК ЗаказПокупателя | ГДЕ | ЗаказПокупателя.Ссылка В (&МассивОбъектов) | | СГРУППИРОВАТЬ ПО | ЗаказПокупателя.Ссылка, | ЗаказПокупателя.Номенклатура, | ЗаказПокупателя.Номенклатура.БазоваяЕдиницаИзмерения.Наименование, | ЗаказПокупателя.Цена) КАК ВложенныйЗапрос | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | ЗаказПокупателя.Ссылка, | ЗаказПокупателя.Содержание, | ЗаказПокупателя.Содержание, | ЗаказПокупателя.Номенклатура." + ТекстКодАртикул + " КАК КодАртикул, | ЗаказПокупателя.Количество, | ЕСТЬNULL(ЗаказПокупателя.Номенклатура.БазоваяЕдиницаИзмерения.Наименование, ""--""), | ЗаказПокупателя.Цена, | ЗаказПокупателя.Сумма, | ЗаказПокупателя.СуммаНДС, | ЗаказПокупателя.НомерСтроки, | 2 |ИЗ | Документ.СчетНаОплатуПокупателю.Услуги КАК ЗаказПокупателя |ГДЕ | ЗаказПокупателя.Ссылка В (&МассивОбъектов) | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | ЗаказПокупателя.Ссылка, | ЗаказПокупателя.ОсновноеСредство, | ВЫРАЗИТЬ(ЗаказПокупателя.ОсновноеСредство.НаименованиеПолное КАК СТРОКА(1000)), | NULL, | 1, | ""шт"", | ЗаказПокупателя.Сумма, | ЗаказПокупателя.Сумма, | ЗаказПокупателя.СуммаНДС, | ЗаказПокупателя.НомерСтроки, | 3 |ИЗ | Документ.СчетНаОплатуПокупателю.ОС КАК ЗаказПокупателя |ГДЕ | ЗаказПокупателя.Ссылка В (&МассивОбъектов)) КАК ВложенныйЗапрос | |УПОРЯДОЧИТЬ ПО | ID, | НомерСтроки | |ИТОГИ ПО | Ссылка"; ВыборкаДанныхПоДокументам = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.СчетНаОплатуПокупателю.ПФ_MXL_СчетЗаказ"); Пока Шапка.Следующий() Цикл Если ТабДокумент.ВысотаТаблицы > 0 Тогда ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли; НомерСтрокиНачало = ТабДокумент.ВысотаТаблицы + 1; // Выводим шапку накладной СтруктурнаяЕдиницаОрганизация = ОбщегоНазначенияБК.ПолучитьСтруктурнуюЕдиницу(Шапка.Поставщик, Шапка.СтруктурноеПодразделение); СведенияОПоставщике = ОбщегоНазначенияБКВызовСервера.СведенияОЮрФизЛице(СтруктурнаяЕдиницаОрганизация, Шапка.Дата); ОбластьМакетаЗаголовокСчета = Макет.ПолучитьОбласть("ЗаголовокСчета"); ОбластьМакетаЗаголовокСчета.Параметры.Заполнить(Шапка); ОбластьМакетаЗаголовокСчета.Параметры.ПоставщикРНН_БИН = ОбщегоНазначенияБК.ПолучитьРегистрационныйНомерОрганизацииКонтрагентаВПечатнуюФорму(СведенияОПоставщике, Шапка.Дата); ОбластьМакетаЗаголовокСчета.Параметры.ПоставщикКБЕ = СведенияОПоставщике.КБЕ; Если ТипЗнч(Шапка.СтруктурнаяЕдиница) = Тип("СправочникСсылка.БанковскиеСчета") Тогда Банк = Шапка.СтруктурнаяЕдиница.Банк; РеквизитыБанка = Справочники.Банки.ПолучитьРеквизитыБанка(Банк); БИК = Справочники.Банки.ПолучитьБИКБанка(Шапка.Дата, РеквизитыБанка); ГородБанка = РеквизитыБанка.Город; СтрокаГородБанка = ?(ПустаяСтрока(ГородБанка), "", НСтр("ru = ' г.'") + " " + ГородБанка); НомерСчета = Шапка.СтруктурнаяЕдиница.НомерСчета; ОбластьМакетаЗаголовокСчета.Параметры.БИКБанкаПолучателя = БИК; ОбластьМакетаЗаголовокСчета.Параметры.БанкПолучателя = СокрЛП(Банк) + СтрокаГородБанка; ОбластьМакетаЗаголовокСчета.Параметры.НомерСчетаПолучателя = НомерСчета; КонецЕсли; ОбластьМакетаЗаголовокСчета.Параметры.ПредставлениеПоставщика = ОбщегоНазначенияБКВызовСервера.ОписаниеОрганизации(СведенияОПоставщике, "ПолноеНаименование,",, Шапка.Дата); ТабДокумент.Вывести(ОбластьМакетаЗаголовокСчета); Если ЗначениеЗаполнено(Шапка.ЛоготипОрганизации) Тогда СсылкаНаДвоичныеДанныеФайла = РаботаСФайлами.ДанныеФайла(Шапка.ЛоготипОрганизации).СсылкаНаДвоичныеДанныеФайла; Если ЗначениеЗаполнено(СсылкаНаДвоичныеДанныеФайла) Тогда ТабДокумент.Область("Логотип").Картинка = Новый Картинка(ПолучитьИзВременногоХранилища(СсылкаНаДвоичныеДанныеФайла)); КонецЕсли; КонецЕсли; ОбластьМакетаЗаголовок = Макет.ПолучитьОбласть("Заголовок"); ОбластьМакетаЗаголовок.Параметры.ТекстЗаголовка = РаботаСДиалогами.СформироватьЗаголовокДокумента(Шапка.Ссылка, НСтр("ru = 'Счет на оплату'")); ТабДокумент.Вывести(ОбластьМакетаЗаголовок); ОбластьМакетаПоставщик = Макет.ПолучитьОбласть("Поставщик"); ОбластьМакетаПоставщик.Параметры.Заполнить(Шапка); ОбластьМакетаПоставщик.Параметры.ПредставлениеПоставщика = ОбщегоНазначенияБКВызовСервера.ОписаниеОрганизации(СведенияОПоставщике, "ИдентификационныйНомер,ПолноеНаименование,ЮридическийАдрес,Телефоны,",,Шапка.Дата); ТабДокумент.Вывести(ОбластьМакетаПоставщик); СведенияОПолучателе = ОбщегоНазначенияБКВызовСервера.СведенияОЮрФизЛице(Шапка.Получатель, Шапка.Дата); ОбластьМакетаПокупатель = Макет.ПолучитьОбласть("Покупатель"); ОбластьМакетаПокупатель.Параметры.Заполнить(Шапка); ОбластьМакетаПокупатель.Параметры.ПредставлениеПолучателя = ОбщегоНазначенияБКВызовСервера.ОписаниеОрганизации(ОбщегоНазначенияБКВызовСервера.СведенияОЮрФизЛице(Шапка.Получатель, Шапка.Дата), "ИдентификационныйНомер,ПолноеНаименование,ЮридическийАдрес,Телефоны,",,Шапка.Дата); ТабДокумент.Вывести(ОбластьМакетаПокупатель); ОбластьМакетаДоговор = Макет.ПолучитьОбласть("Договор"); ОбластьМакетаДоговор.Параметры.Заполнить(Шапка); ТабДокумент.Вывести(ОбластьМакетаДоговор); ОбластьНомера = Макет.ПолучитьОбласть(ОбластьШапки + "|НомерСтроки"); ОбластьДанных = Макет.ПолучитьОбласть(ОбластьШапки + "|Данные"); ОбластьСуммы = Макет.ПолучитьОбласть(ОбластьШапки + "|Сумма"); ТабДокумент.Вывести(ОбластьНомера); Если ВыводитьКоды Тогда ОбластьДанных.Параметры.Колонка = Колонка; КонецЕсли; ТабДокумент.Присоединить(ОбластьДанных); ТабДокумент.Присоединить(ОбластьСуммы); ОбластьКолонкаТовар = Макет.Область("Товар"); ОбластьНомера = Макет.ПолучитьОбласть(ОбластьСтроки + "|НомерСтроки"); ОбластьДанных = Макет.ПолучитьОбласть(ОбластьСтроки + "|Данные"); ОбластьСуммы = Макет.ПолучитьОбласть(ОбластьСтроки + "|Сумма"); Сумма = 0; СуммаНДС = 0; ВсегоСкидок = 0; ВсегоБезСкидок = 0; СчетчикСтрок = 0; ВыборкаДанныхПоДокументам.Сбросить(); ВыборкаДанныхПоДокументам.НайтиСледующий(Новый Структура("Ссылка", Шапка.Ссылка)); ДанныеПоДокументу = ВыборкаДанныхПоДокументам.Выбрать(); Пока ДанныеПоДокументу.Следующий() Цикл СчетчикСтрок = СчетчикСтрок + 1; ОбластьНомера.Параметры.НомерСтроки = СчетчикСтрок; ТабДокумент.Вывести(ОбластьНомера); ОбластьДанных.Параметры.Заполнить(ДанныеПоДокументу); ОбластьДанных.Параметры.Товар = СокрЛП(ДанныеПоДокументу.Товар); ОбластьДанных.Параметры.Количество = Формат(ДанныеПоДокументу.Количество, "ЧДЦ=3"); Если ВыводитьКоды Тогда ОбластьДанных.Параметры.КодАртикул = ?(ДанныеПоДокументу.ID = 3, ДанныеПоДокументу.Номенклатура.Код, ДанныеПоДокументу.КодАртикул); КонецЕсли; ТабДокумент.Присоединить(ОбластьДанных); ОбластьСуммы.Параметры.Заполнить(ДанныеПоДокументу); ТабДокумент.Присоединить(ОбластьСуммы); Сумма = Сумма + ДанныеПоДокументу.Сумма; СуммаНДС = СуммаНДС + ДанныеПоДокументу.СуммаНДС; КонецЦикла; // Вывести Итого ОбластьНомера = Макет.ПолучитьОбласть("Итого|НомерСтроки"); ОбластьДанных = Макет.ПолучитьОбласть("Итого|Данные"); ОбластьСуммы = Макет.ПолучитьОбласть("Итого|Сумма"); ТабДокумент.Вывести(ОбластьНомера); ТабДокумент.Присоединить(ОбластьДанных); ОбластьСуммы.Параметры.Всего = ОбщегоНазначенияБКВызовСервера.ФорматСумм(Сумма); ТабДокумент.Присоединить(ОбластьСуммы); // Вывести ИтогоНДС ОбластьНомера = Макет.ПолучитьОбласть("ИтогоНДС|НомерСтроки"); ОбластьДанных = Макет.ПолучитьОбласть("ИтогоНДС|Данные"); ОбластьСуммы = Макет.ПолучитьОбласть("ИтогоНДС|Сумма"); ТабДокумент.Вывести(ОбластьНомера); Если Шапка.УчитыватьНДС Тогда ОбластьСуммы.Параметры.НДС = ?(Шапка.СуммаВключаетНДС, НСтр("ru = 'В том числе НДС:'"), НСтр("ru = 'Сумма НДС:'")); ОбластьСуммы.Параметры.ВсегоНДС = ОбщегоНазначенияБКВызовСервера.ФорматСумм(СуммаНДС,, "-"); КонецЕсли; ТабДокумент.Присоединить(ОбластьДанных); ТабДокумент.Присоединить(ОбластьСуммы); // Вывести Сумму прописью ОбластьМакетаСуммаПрописью = Макет.ПолучитьОбласть("СуммаПрописью"); СуммаКПрописи = Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС); ОбластьМакетаСуммаПрописью.Параметры.ИтоговаяСтрока = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Всего наименований %1, на сумму %2'"), ДанныеПоДокументу.Количество(), ОбщегоНазначенияБКВызовСервера.ФорматСумм(СуммаКПрописи, Шапка.ВалютаДокумента)); ОбластьМакетаСуммаПрописью.Параметры.СуммаПрописью = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Всего к оплате: %1'"), ОбщегоНазначенияБКВызовСервера.СформироватьСуммуПрописью(СуммаКПрописи, Шапка.ВалютаДокумента)); ТабДокумент.Вывести(ОбластьМакетаСуммаПрописью); // Вывести подписи ОбластьМакетаПодвалЗаказа = Макет.ПолучитьОбласть("ПодвалЗаказа"); ОбластьМакетаПодвалЗаказа.Параметры.ФИОИсполнителя = "/" + Шапка.Ответственный.Наименование + "/"; ОбластьМакетаПодвалЗаказа.Параметры.Заполнить(Шапка); ТабДокумент.Вывести(ОбластьМакетаПодвалЗаказа); УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабДокумент, НомерСтрокиНачало, ОбъектыПечати, Шапка.Ссылка); КонецЦикла; Возврат ТабДокумент; КонецФункции |
|||
1
vip03
19.06.19
✎
08:57
|
и?
в первом запросе 13 полей, в остальных 11 в остальные запросы добавь по 2 поля |
|||
2
catena
19.06.19
✎
09:02
|
Если проблема в запросе, зачем вываливать всю простынь?
|
|||
3
Иванов Иван Иваныч
19.06.19
✎
09:04
|
(1) ситуация такая: поля Скидка и СуммаБезСкидки есть только в ТЧ "Товары" в остальных ТЧ их нету. Как быть тогда? не могу же я добавить то, чего нет
|
|||
4
Иванов Иван Иваныч
19.06.19
✎
09:05
|
(2) еще такой вопрос: И куда смотреть, чтоб вывести данные в макет? (в самом начале писал)
|
|||
5
Масянька
19.06.19
✎
09:07
|
(3) На их месте ставите 0 (во второй ТЧ).
Посмотрите в типовых. |
|||
6
catena
19.06.19
✎
09:08
|
(3)Выбрать Скидка как скидка
ОБъединить все Выбрать 0 как скидка (4)В макете есть области. Смотришь, в какую область добавил свой параметр, ищешь эту область в коде, выводишь по аналогии с окружающим кодом. |
|||
7
Иванов Иван Иваныч
19.06.19
✎
09:26
|
(5) я просто добавил в запросы еще по одному разу
| ЗаказПокупателя.Сумма, | ЗаказПокупателя.СуммаНДС, прям чувствую что не кошерно, но запрос отработал |
|||
8
Иванов Иван Иваныч
19.06.19
✎
11:32
|
(6) не понимаю как вывести, вот прям никак не дойду, можете меня в кусок кода тыкнуть куда смотреть?
|
|||
9
catena
19.06.19
✎
11:40
|
(8)Не могу. Я ж макета не вижу.
|
|||
10
Иванов Иван Иваныч
19.06.19
✎
11:44
|
||||
11
catena
19.06.19
✎
11:53
|
(10)Ну и на пересейчении каких секций находятся твои добавленные реквизиты?
|
|||
12
Иванов Иван Иваныч
19.06.19
✎
12:02
|
(11) Сумма
|
|||
13
Иванов Иван Иваныч
19.06.19
✎
12:10
|
(11) и Строка и СтрокаСКодом
|
|||
14
catena
19.06.19
✎
13:21
|
(13)Как в коде определяется эта секция?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |