Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
01 авг 2021, 14:20

параметры печати

Автор Pororun, 25 дек 2020, 08:12

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

Pororun

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

Это код модуля:

функция ПечатьОпринятииОС(МассивОбъектов)

табдок = новый табличныйдокумент;

запрос = новый запрос ();

запрос.текст = "ВЫБРАТЬ
| ПринятиеКУчетуОС.Номер КАК Номер,
| ПринятиеКУчетуОС.Дата КАК Дата,
| ПринятиеКУчетуОС.МОЛБУ КАК МОЛБУ,
| ПринятиеКУчетуОС.СрокПолезногоИспользованияБУ КАК СрокПолезногоИспользованияБУ,
| ПринятиеКУчетуОС.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
| ПринятиеКУчетуОСОС.ОсновноеСредство КАК ОсновноеСредство,
| ПринятиеКУчетуОСОС.ИнвентарныйНомер КАК ИнвентарныйНомер,
| ПринятиеКУчетуОСОС.Ссылка.ДоговорКонтрагента КАК ДоговорКонтрагента1,
| ПринятиеКУчетуОСОС.ОсновноеСредство.ГруппаОС КАК ОсновноеСредствоГруппаОС,
| ПринятиеКУчетуОСОС.ОсновноеСредство.КодПоОКОФ КАК ОсновноеСредствоКодПоОКОФ,
| ПринятиеКУчетуОС.МестонахождениеОС КАК МестонахождениеОС
|ИЗ
| Документ.ПринятиеКУчетуОС.ОС КАК ПринятиеКУчетуОСОС
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПринятиеКУчетуОС КАК ПринятиеКУчетуОС
| ПО ПринятиеКУчетуОСОС.Ссылка = ПринятиеКУчетуОС.Ссылка
|ГДЕ
| ПринятиеКУчетуОС.Ссылка В(&МассивОбъектов)" ;

Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);

запрос = запрос.Выполнить();
выборка = запрос.Выбрать();
выборка.Следующий();

макет = получитьмакет("Макет");

Секцияшапка = макет.ПолучитьОбласть("Шапка");
Секциятело = макет.ПолучитьОбласть("тело");
Секцияподвал = макет.ПолучитьОбласть("подвал");

Секцияшапка.Параметры.датадок = формат(выборка.дата,"ДФ=dd.MM.yyyy") ;
секцияшапка.Параметры.номердог = прав(выборка.номер, 6);
секцияшапка.параметры.основныесредства = выборка.ОсновноеСредство;
секцияшапка.параметры.инвномер = Прав(выборка.ИнвентарныйНомер, 6);
секцияшапка.Параметры.номердоговор = выборка.ДоговорКонтрагента1;
табдок.Вывести(Секцияшапка);

Секциятело.Параметры.оснсредства = выборка.ОсновноеСредство;
Секциятело.параметры.датадок = формат(выборка.дата,"ДФ=dd.MM.yyyy");
секциятело.параметры.группаос = выборка.ОсновноеСредствоГруппаОС;
Секциятело.параметры.кодокоф = выборка.ОсновноеСредствоКодПоОКОФ;
Секциятело.Параметры.срокос = выборка.срокполезногоиспользованиябу;
Секциятело.Параметры.оснсредства = выборка.ОсновноеСредство;
Секциятело.параметры.инвномер = прав(выборка.ИнвентарныйНомер,6);
Секциятело.Параметры.матответственный = выборка.молбу;
Секциятело.параметры.местоэксплуатации = выборка.подразделениеорганизации;
Секциятело.Параметры.местонахожденияос = выборка.МестонахождениеОС;
табдок.Вывести(секциятело);

Секцияподвал.Параметры.Сотрудник1 = Сотрудник1;
Секцияподвал.Параметры.сотрудник2 = Сотрудник2;
Секцияподвал.Параметры.сотрудник3 = Сотрудник3;
Секцияподвал.Параметры.Должность1 = должность1;
Секцияподвал.Параметры.Должность2 = должность2;
Секцияподвал.Параметры.Должность3 = должность3;
Табдок.Вывести(Секцияподвал);
возврат табдок;

конецфункции

Функция СведенияОВнешнейОбработке() Экспорт

Назначение = Новый Массив;
Назначение.Добавить("Документ.ПринятиеКУчетуОС");

ТаблицаКоманд = Новый ТаблицаЗначений;
ТаблицаКоманд.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
ТаблицаКоманд.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
ТаблицаКоманд.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
ТаблицаКоманд.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
ТаблицаКоманд.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));

НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = "Договор о приобретении ОС";
НоваяКоманда.Идентификатор = "Договор о приобретении ОС";
НоваяКоманда.Использование = "ОткрытиеФормы";
НоваяКоманда.ПоказыватьОповещение = Истина;
НоваяКоманда.Модификатор = "ПечатьMXL";


ПараметрыРегистрации = Новый Структура;

ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
ПараметрыРегистрации.Вставить("Назначение", Назначение);
ПараметрыРегистрации.Вставить("Наименование", НСтр("Договор о приобретении ОС"));
ПараметрыРегистрации.Вставить("Версия", "1.0");
ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);
ПараметрыРегистрации.Вставить("Информация", "Печатная форма приобретения ОС ");
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);

Возврат ПараметрыРегистрации;

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


Функция ПолучитьТаблицуКоманд()
Команды = Новый ТаблицаЗначений;
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));//как будет выглядеть описание печ.формы для пользователя
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка")); //имя макета печ.формы
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка")); //ВызовСерверногоМетода
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
Возврат Команды;
КонецФункции

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")

НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление;
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;

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


Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "макет", "Печатная форма приобретения ОС ", ПечатьОпринятииОС(МассивОбъектов));

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


Это код в самой форме



&НаКлиенте
Процедура Печать(Команда)

КоллекцияПечатныхФорм = ПечатьНаСервере("макет");

Для Каждого Стр из КоллекцияПечатныхФорм Цикл
Стр.ТабличныйДокумент.Показать();
КонецЦикла;
КонецПроцедуры

&НаСервере
Функция ПечатьНаСервере(КомандаПечати)

МассивОбъектов = Новый Массив();
МассивОбъектов.Добавить(Объект.СсылканаОбъект);

КоллекцияПечатныхФорм = УправлениеПечатью.ПодготовитьКоллекциюПечатныхФорм(КомандаПечати);
ПараметрыВывода = УправлениеПечатью.ПодготовитьСтруктуруПараметровВывода();

ОбъектыПечати = Новый СписокЗначений;

ОбъектВЗначении = РеквизитФормыВЗначение("Объект");
ОбъектВЗначении.Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);

Возврат ОбщегоНазначения.ТаблицаЗначенийВМассив(КоллекцияПечатныхФорм);

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

LexaK

попробуйте вставить проверку

//выборка.Следующий(); // замените на это
Если Не выборка.Следующий() Тогда
Сообщить("Нет данных по ОС!");
КонецЕсли;
ответ Понравился? (в смысле пригодился?)

Теги:

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

Рейтинг@Mail.ru Rambler's Top100

Поиск