Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
15 дек 2024, 23:56

Внешняя печатная форма нетиповой конфигурации

Автор despol1ment, 21 авг 2012, 12:35

0 Пользователей и 1 гость просматривают эту тему.

despol1ment

Используется следующего вида внешняя печатная форма /
Задача такая : как присвоить значениям из колонки Ориентация Л, В, П, Н другие значения - для "Л" и "П" значение "вертикаль" ,
для "В" и "Н" значение "горизонталь". Плюс ко всему хотелось бы отсортировать значения в табличной части по следующему принципу -
Рамы с одинаковой ориентацией и одинаковым размером + общее количество , затем створки, импосты и т.д. Хотелось бы все вышеперечисленные манипуляции произвести во внешней печатной форме не трогая конфигурацию. Подскажите , пожалуйста , в каком направлении копать.

mixqn

вы форму свою вложите, или хотя бы запрос. структуру данных надо представить, чтобы что-то советовать, так ничего не понятно.

despol1ment

   Процедура ВывестиИзделиеВТабДок (ТабДок, Изделие, ВыБКомплФ )

Макет = ПолучитьМакет("ПечатьТекущегоЭлемента");

ТЗПрофиль = Новый ТаблицаЗначений;
ТЗПрофиль.Колонки.Добавить("Элемент",, "Элемент");
ТЗПрофиль.Колонки.Добавить("Артикул",, "Артикул");
ТЗПрофиль.Колонки.Добавить("Длина",, "Длина");
ТЗПрофиль.Колонки.Добавить("Угол1",, "Угол1");
ТЗПрофиль.Колонки.Добавить("Угол2",, "Угол2");
ТЗПрофиль.Колонки.Добавить("Количество",, "Количество");
ТЗПрофиль.Колонки.Добавить("Сторона",, "Сторона");
ТЗПрофиль.Колонки.Добавить("Подъем",, "Подъем");
ТЗПрофиль.Колонки.Добавить("Радиус",, "Радиус");


Если Изделие.Профили.Количество() > 0 Тогда
Для Каждого ТекСтрокаПрофили Из Изделие.Профили Цикл
НовыйПрофиль = ТЗПрофиль.Добавить();
НовыйПрофиль.Элемент = ТекСтрокаПрофили.Профиль.Наименование;
НовыйПрофиль.Артикул = Строка(ТекСтрокаПрофили.Профиль.Артикул);
НовыйПрофиль.Длина = ТекСтрокаПрофили.Длина;
Если (ТекСтрокаПрофили.Угол1 = 90) и  (ТекСтрокаПрофили.Угол2 = 90) Тогда
НовыйПрофиль.Угол1 = 90;
НовыйПрофиль.Угол2 = 90;
Иначе
НовыйПрофиль.Угол1 = ТекСтрокаПрофили.Угол1;
НовыйПрофиль.Угол2 = ТекСтрокаПрофили.Угол2;
КонецЕсли;
НовыйПрофиль.Количество = Число(ТекСтрокаПрофили.Количество);
НовыйПрофиль.Сторона = ТекСтрокаПрофили.Сторона;
НовыйПрофиль.Радиус = ТекСтрокаПрофили.РадиусДуги;
НовыйПрофиль.Подъем = ТекСтрокаПрофили.ПодъемДуги;
КонецЦикла;
КонецЕсли;

КомплектующиеВТаблицу(ТЗПрофиль, Изделие.Комплектующие, Перечисления.ГруппыОтчетности.Профили, Изделие.Цвет);

ТЗПрофиль.Сортировать("Артикул Возр");

ТЗПрофиль.Свернуть("Элемент, Артикул, Сторона, Длина, Угол1, Угол2, Подъем, Радиус", "Количество");

// Заголовок

Область = Макет.ПолучитьОбласть("Заголовок");
Область.Параметры.НомерЗаказа = СокрЛП(СсылкаНаОбъект.Номер);
Область.Параметры.Дата = СсылкаНаОбъект.Дата;

ТабДок.Вывести(Область);

// Шапка

Область = Макет.ПолучитьОбласть("Шапка");
Область.Параметры.ВидИзделия = Изделие.ВидИзделия;
Область.Параметры.КолИзделия = СокрЛП(мКолИзделие);
Область.Параметры.Цвет = Изделие.Цвет;
Область.Параметры.ОбщПлощ = Формат((Изделие.H/1000)*(Изделие.W/1000),"ЧДЦ=2");
Область.Параметры.СистемаПрофиля = Изделие.СистемаПрофиля;
Область.Параметры.СистемаФурнитуры = Изделие.СистемаФурнитуры;
Область.Параметры.НомерЗаказа = СокрЛП(СсылкаНаОбъект.Номер);
Область.Параметры.Наименование = Изделие.Наименование;
Область.Параметры.Контрагент = СсылкаНаОбъект.Контрагент;
Область.Параметры.ВсяПлощ = Формат(Число(Область.Параметры.ОбщПлощ)*мКолИзделие,"ЧДЦ=2");

Попытка
Область.Рисунки.Изображение.Картинка = Изделие.ИзображениеИзделия.Получить();
Исключение
Область.Рисунки.Изображение.Картинка = Новый Картинка;
КонецПопытки;

ТабДок.Вывести(Область);

Если (ТЗПрофиль.Количество()) > 0 и (ВыбКомплФ.НайтиПоЗначению("Профиль").Пометка) Тогда // выводим профили
Область = Макет.ПолучитьОбласть("ПрофилиШапка");
ТабДок.Вывести(Область);
Для Каждого ТекСтрокаПрофили Из ТЗПрофиль Цикл
Область = Макет.ПолучитьОбласть("Профили");
Область.Параметры.Элемент = ТекСтрокаПрофили.Элемент;
Область.Параметры.Артикул = ТекСтрокаПрофили.Артикул;
Область.Параметры.Сторона = ТекСтрокаПрофили.Сторона;
Область.Параметры.Длина = ТекСтрокаПрофили.Длина;
Область.Параметры.Угол11 = ТекСтрокаПрофили.Угол1;
Область.Параметры.Угол21 = ТекСтрокаПрофили.Угол2;
Область.Параметры.Количество = ТекСтрокаПрофили.Количество * мКолИзделие;

ТабДок.Вывести(Область);

КонецЦикла;

Область = Макет.ПолучитьОбласть("ПрофилиПодвал");
ТабДок.Вывести(Область);
Область = Макет.ПолучитьОбласть("Уплотнение");
ТабДок.Вывести(Область);
Область = Макет.ПолучитьОбласть("Штапики");
ТабДок.Вывести(Область);

КонецЕсли;
КонецПроцедуры

Процедура ПечатьТекущегоИзделия(ТабДок)

ФормаПечКом = ЭтотОбъект.ПолучитьФорму("ФормаПечИзделия");
ВыБКомплФ = ФормаПечКом.ОткрытьМодально();
Если ВыБКомплФ = Неопределено Тогда
Возврат;
КонецЕсли;

Если (ВыбКомплФ.НайтиПоЗначению("ВсеИзделия").Пометка) Тогда
Для Каждого СтрокаТЧ Из СсылкаНаОбъект.ГотовыеИзделия Цикл
мКолИзделие = СтрокаТЧ.Количество;
ВывестиИзделиеВТабДок (ТабДок, СтрокаТЧ.Номенклатура.Ссылка, ВыБКомплФ);
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
КонецЦикла;
Иначе
ФормаЭлемента = СсылкаНаОбъект.ПолучитьФорму("ФормаДокумента");
Изделие = ФормаЭлемента.ЭлементыФормы.ГотовыеИзделия.ТекущиеДанные.Номенклатура.Ссылка;
мКолИзделие = ФормаЭлемента.ЭлементыФормы.ГотовыеИзделия.ТекущиеДанные.Количество;
ВывестиИзделиеВТабДок (ТабДок, Изделие, ВыБКомплФ);
КонецЕсли;

КонецПроцедуры

Функция Печать() Экспорт

ТабДок = Новый ТабличныйДокумент;
ТабДок.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Спецификация_ВЦех_Крупно";

    Если (СсылкаНаОбъект.ГотовыеИзделия.Количество() > 0)  Тогда
ПечатьТекущегоИзделия(ТабДок);
КонецЕсли;

Возврат ТабДок;

КонецФункции


Модуль ВПФ.

despol1ment

Разобрался и с заменой значений и с сортировкой. Всем спасибо.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск