Корректировка вывода данных в печатной форме
Здравствуйте, коллеги.
Столкнулся с одной загвоздкой.
В системе имеется документ "Реализация продукции".
В ТЧ документа есть колонки : валюта(два значения) и колонка сумма.
Заказчик хочет, чтобы при печати были две колонки суммы.
Если товар продан в валюте $ - сумма заполнялась в колонку СуммаДляДоллара, если не доллар, то в другую колонку.
Если в ТЧ только одна валюта, то вывод печати нормальный, но когда обе валюты, то у меня при печати, получается каша какая-то.
Столкнулся с одной загвоздкой.
В системе имеется документ "Реализация продукции".
В ТЧ документа есть колонки : валюта(два значения) и колонка сумма.
Заказчик хочет, чтобы при печати были две колонки суммы.
Если товар продан в валюте $ - сумма заполнялась в колонку СуммаДляДоллара, если не доллар, то в другую колонку.
Если в ТЧ только одна валюта, то вывод печати нормальный, но когда обе валюты, то у меня при печати, получается каша какая-то.
Процедура Печать(ТабДок, Ссылка) Экспорт
//{{_КОНСТРУКТОР_ПЕЧАТИ(Печать)
Макет = Документы.РеализацияПродукции.ПолучитьМакет("Макет");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РеализацияПродукции.Дата КАК Дата,
| РеализацияПродукции.Клиент КАК Клиент,
| РеализацияПродукции.МестоРеализации КАК МестоРеализации,
| РеализацияПродукции.Номер КАК Номер,
| РеализацияПродукции.Ответственный КАК Ответственный,
| РеализацияПродукции.ПрайсЛист.(
| НомерСтроки КАК НомерСтроки,
| Продукция КАК Продукция,
| ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| Количество КАК Количество,
| Цена КАК Цена,
| Сумма КАК Сумма,
| Фирма КАК Фирма,
| Валюта КАК Валюта
| ) КАК ПрайсЛист
|ИЗ
| Документ.РеализацияПродукции КАК РеализацияПродукции
|ГДЕ
| РеализацияПродукции.Ссылка В(&Ссылка)";
Запрос.Параметры.Вставить("Ссылка", Ссылка);
Выборка = Запрос.Выполнить().Выбрать();
//ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
Шапка = Макет.ПолучитьОбласть("Шапка");
ОбластьПрайсЛистШапка = Макет.ПолучитьОбласть("Строка");
ОбластьПрайсЛист = Макет.ПолучитьОбласть("СтрокаДанных");
Подвал = Макет.ПолучитьОбласть("Подвал");
ТабДок.Очистить();
ВставлятьРазделительСтраниц = Ложь;
Пока Выборка.Следующий() Цикл
Если ВставлятьРазделительСтраниц Тогда
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
//ТабДок.Вывести(ОбластьЗаголовок);
Шапка.Параметры.Заполнить(Выборка);
ТабДок.Вывести(Шапка, Выборка.Уровень());
ТабДок.Вывести(ОбластьПрайсЛистШапка);
ВыборкаПрайсЛист = Выборка.ПрайсЛист.Выбрать();
ИтогСуммаСум = 0;
ИтогСуммаДоллар = 0;
ИтогКол = 0;
Пока ВыборкаПрайсЛист.Следующий() Цикл
Если ВыборкаПрайсЛист.Валюта = ОбщегоНазначения.ПолучитьВалюту(1)Тогда
ИтогСуммаДоллар = ИтогСуммаДоллар + ВыборкаПрайсЛист.Сумма;
ОбластьПрайсЛист.Параметры.СуммаДол = ВыборкаПрайсЛист.Сумма;
КонецЕсли;
Если ВыборкаПрайсЛист.Валюта = ОбщегоНазначения.ПолучитьВалюту(2)Тогда
ИтогСуммаСум = ИтогСуммаСум + ВыборкаПрайсЛист.Сумма;
ОбластьПрайсЛист.Параметры.СуммаСум = ВыборкаПрайсЛист.Сумма;
КонецЕсли;
ИтогКол = ИтогКол + ВыборкаПрайсЛист.Количество;
ОбластьПрайсЛист.Параметры.Заполнить(ВыборкаПрайсЛист);
ТабДок.Вывести(ОбластьПрайсЛист, ВыборкаПрайсЛист.Уровень());
КонецЦикла;
//Подвал.Параметры.Заполнить(Выборка);
Подвал.Параметры.ИтогДоллар = ИтогСуммаДоллар;
Подвал.Параметры.ИтогСум = ИтогСуммаСум;
Подвал.Параметры.ИтогКол = ИтогКол;
Подвал.Параметры.Заполнить(Выборка);
ТабДок.Вывести(Подвал);
ВставлятьРазделительСтраниц = Истина;
КонецЦикла;
//}}
КонецПроцедуры
ПоказатьПрикрепленные файлы:
По теме из базы знаний
- Внешние печатные формы для Управления торговлей 11
- Внешние печатные формы для Комплексной Автоматизации 2
- Печатные формы к документу "Корректировка приобретения" для ERP 2.4, КА 2.4, УТ 11.4
- Универсальная печатная форма для справочника и документа по своему шаблону, сделанному в ms word: Кадровые, Торговые, Делопроизводственные, Бухгалтерские, Управляющие
- Переход с 1С:УПП на 1C:ERP: Задача переноса печатных форм в сжатые сроки. Конструктор печати
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Можно еще этот блок переписать:
на
Незачем делать вторую проверку, если валюты всего две. И не забывайте очищать параметры для следующей строки.
Если ВыборкаПрайсЛист.Валюта = ОбщегоНазначения.ПолучитьВалюту(1)Тогда
ИтогСуммаДоллар = ИтогСуммаДоллар + ВыборкаПрайсЛист.Сумма;
ОбластьПрайсЛист.Параметры.СуммаДол = ВыборкаПрайсЛист.Сумма;
КонецЕсли;
Если ВыборкаПрайсЛист.Валюта = ОбщегоНазначения.ПолучитьВалюту(2)Тогда
ИтогСуммаСум = ИтогСуммаСум + ВыборкаПрайсЛист.Сумма;
ОбластьПрайсЛист.Параметры.СуммаСум = ВыборкаПрайсЛист.Сумма;
КонецЕсли;
Если ВыборкаПрайсЛист.Валюта = ОбщегоНазначения.ПолучитьВалюту(1)Тогда
ИтогСуммаДоллар = ИтогСуммаДоллар + ВыборкаПрайсЛист.Сумма;
ОбластьПрайсЛист.Параметры.СуммаДол = ВыборкаПрайсЛист.Сумма;
ОбластьПрайсЛист.Параметры.СуммаСум = 0;
Иначе
ИтогСуммаСум = ИтогСуммаСум + ВыборкаПрайсЛист.Сумма;
ОбластьПрайсЛист.Параметры.СуммаДол = 0;
ОбластьПрайсЛист.Параметры.СуммаСум = ВыборкаПрайсЛист.Сумма;
КонецЕсли;
ПоказатьНезачем делать вторую проверку, если валюты всего две. И не забывайте очищать параметры для следующей строки.
Первое что можно сделать, это выгруить колонку валюты, и сгруппировать её, если количество строк больше 2, тогда есть несколько разных валют.
ТЗ = ТЗосновная.Скопировать("Валюта");
ТЗ.Свернуть("Валюта");
Если ТЗ.Количество > 0 Тогда
//Есть две валты в документе
КонецЕсли;
Внимание! Тема сдана в архив
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот