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

Печатная форма 1с8

Автор satankl, 12 дек 2017, 12:09

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

satankl

Добрый день, столкнулся с проблемой вывода в ПФ, суть проблемы:
Имеется область в макете(Должность), есть условие - если стоит галка (перевести в другое подразделение), тогда данная область выводится в ПФ, соответственно если нету галки то ничего не выводится.
Суть проблемы в том то что область (должность) выводится всегда.

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



Norfolk

Доброго вечера. Что-то нагородили кода много...
Должность=Макет.ПолучитьОбласть("Должность");
Если СсылкаНаОбъект.ИзменитьПодразделениеИДолжность Тогда
Должность.Параметры.УсловиеВременного = СсылкаНаОбъект.ОснованиеСрочногоДоговора;
Должность.Параметры.НоваяДолжность = СсылкаНаОбъект.Должность;
Должность.Параметры.НовоеПодразделение = НП;
ТабДок.Вывести(Должность); 
КонецЕсли;

что такой кусок кода будет выводить?

satankl

Цитата: Norfolk от 12 дек 2017, 17:45
Доброго вечера. Что-то нагородили кода много...
Должность=Макет.ПолучитьОбласть("Должность");
Если СсылкаНаОбъект.ИзменитьПодразделениеИДолжность Тогда
Должность.Параметры.УсловиеВременного = СсылкаНаОбъект.ОснованиеСрочногоДоговора;
Должность.Параметры.НоваяДолжность = СсылкаНаОбъект.Должность;
Должность.Параметры.НовоеПодразделение = НП;
ТабДок.Вывести(Должность); 
КонецЕсли;

что такой кусок кода будет выводить?
Все так же осталось, Должность выводится всегда

Norfolk

Приведите всю процедуру печати. Где-то что-то не так делаете. Отладчик что говорит когда встает на условие? Если истина, то естественно у вас объект имеет флажок Истина. Если не заходит в условие, тогда вы в другом месте выводите данную область в табдок.

satankl

Цитата: Norfolk от 13 дек 2017, 16:15
Приведите всю процедуру печати. Где-то что-то не так делаете. Отладчик что говорит когда встает на условие? Если истина, то естественно у вас объект имеет флажок Истина. Если не заходит в условие, тогда вы в другом месте выводите данную область в табдок.

Процедура Печать(МассивОбъектовНазначения, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
//Сообщить(""+МассивОбъектовНазначения.Количество());
ПараметрыВывода.ДоступнаПечатьПоКомплектно = Истина;
//Получаем переданные из формы параметры для печати документа
//Из формы МассивОбъектовНазначения передаётся как списокзначений, поэтому преобразуем его в массив
    Если ТипЗнч(МассивОбъектовНазначения) = Тип("СписокЗначений") Тогда
    МассивОбъектовНазначения = МассивОбъектовНазначения.ВыгрузитьЗначения();
    КонецЕсли;
//Смотрим, что содержится в первом элементе массива МассивОбъектовНазначени
//Если это структура, значит есть дополнительные параметры, почти как в прежних конфигурациях
    Если ТипЗнч(МассивОбъектовНазначения[0]) = Тип("Структура") Тогда
        ДополнительныеПараметры = МассивОбъектовНазначения[0];
      //Теперь структуру из массива объектов можно удалить, больше не н.
    МассивОбъектовНазначения.Удалить(0);
    КонецЕсли;
ТабДок = Новый ТабличныйДокумент;//---
Для сч=0 по МассивОбъектовНазначения.Количество()-1 Цикл
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "Макет", "Доп соглашение_DHL", СформироватьПечатнуюФорму(МассивОбъектовНазначения[сч], ОбъектыПечати,ТабДок,Сч));
//КоллекцияПечатныхФорм.Получить(0).Имя="ПФ_MXL_ТрудовойДоговор";
//КоллекцияПечатныхФорм.Получить(0).ИмяВРЕГ="ПФ_MXL_ТРУДОВОЙДОГОВОР";
//Обработки.ПечатьКадровыхПриказовРасширенная.Печать(МассивОбъектовНазначения[сч],,КоллекцияПечатныхФорм,ОбъектыПечати,ПараметрыВывода);
КонецЦикла;//===
КонецПроцедуры


Функция СформироватьПечатнуюФорму(СсылкаНаОбъект,СамОбъект,ТабДок,Сч)
// СсылкаНаОбъект – Сотрудник, Документ, ...
Если НЕ ЗначениеЗаполнено(СсылкаНаОбъект)
И ТипЗнч(СсылкаНаОбъект) <> Тип("ДокументСсылка.КадровыйПеревод") Тогда
Возврат Неопределено;
КонецЕсли;
ТабИнд=Новый ТабличныйДокумент;
Макет = ПолучитьМакет("Макет");
Подр=СсылкаНаОбъект.Подразделение;
ПВХ=ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Location");
Массив=Подр.ДополнительныеРеквизиты.НайтиСтроки(Новый Структура("Свойство",ПВХ));
Попытка
ПВХПолное=Массив[0].Значение.ПолноеНаименование;
Исключение
ПВХПолное="г. Москва";
КонецПопытки;
ПВХ=ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Департамент");
Массив=Подр.ДополнительныеРеквизиты.НайтиСтроки(Новый Структура("Свойство",ПВХ));
Попытка
Департамент=Массив[0].Значение;
Исключение
Департамент="";                                   
КонецПопытки;
Должность=Макет.ПолучитьОбласть("Должность");
Если СсылкаНаОбъект.ИзменитьПодразделениеИДолжность Тогда
    Должность.Параметры.УсловиеВременного = СсылкаНаОбъект.ОснованиеСрочногоДоговора;
    Должность.Параметры.НоваяДолжность = СсылкаНаОбъект.Должность;
    Должность.Параметры.НовоеПодразделение = НП;
    ТабДок.Вывести(Должность); 
КонецЕсли;

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


Возврат ТабДок;
  КонецЕсли;
КонецФункции

Kironten

Т.е. если у вас стоит флаг изменения должности/подразделения то у вас выводится сначала область с должностью, а затем за нею еще и весь макет целиком? Жуткое зрелище...

satankl

Цитата: Kironten от 13 дек 2017, 17:26
Т.е. если у вас стоит флаг изменения должности/подразделения то у вас выводится сначала область с должностью, а затем за нею еще и весь макет целиком? Жуткое зрелище...
Тоесть переделывать ПФ полностью, т.к у меня есть и области и макеты?
И приводить все к одному виду (область), правильно я вас понял?

Kironten

Цитата: satankl от 13 дек 2017, 17:44
Цитата: Kironten от 13 дек 2017, 17:26
Т.е. если у вас стоит флаг изменения должности/подразделения то у вас выводится сначала область с должностью, а затем за нею еще и весь макет целиком? Жуткое зрелище...
Тоесть переделывать ПФ полностью, т.к у меня есть и области и макеты?
И приводить все к одному виду (область), правильно я вас понял?
Вы то меня может и правильно поняли, а вот то что вы написали не понятно ни разу.
В общем случае все выводы печатных форм сводятся к одному порядку:
1. Создается новый табличный документ
2. Получается макет
3. Получаются области из макетов.
4. Берется первая область, заполняется параметрами, выводится в табличный документ.
5. Берется вторая область, заполняется параметрами, выводится(или не выводится, в вашем случае) в табличный документ.
(повторить n количество раз в зависимости от количества областей)

На выходе получают табличный документ составленный из заполненных областей.

satankl

Цитата: Kironten от 13 дек 2017, 17:59
Цитата: satankl от 13 дек 2017, 17:44
Цитата: Kironten от 13 дек 2017, 17:26
Т.е. если у вас стоит флаг изменения должности/подразделения то у вас выводится сначала область с должностью, а затем за нею еще и весь макет целиком? Жуткое зрелище...
Тоесть переделывать ПФ полностью, т.к у меня есть и области и макеты?
И приводить все к одному виду (область), правильно я вас понял?
Вы то меня может и правильно поняли, а вот то что вы написали не понятно ни разу.
В общем случае все выводы печатных форм сводятся к одному порядку:
1. Создается новый табличный документ
2. Получается макет
3. Получаются области из макетов.
4. Берется первая область, заполняется параметрами, выводится в табличный документ.
5. Берется вторая область, заполняется параметрами, выводится(или не выводится, в вашем случае) в табличный документ.
(повторить n количество раз в зависимости от количества областей)

На выходе получают табличный документ составленный из заполненных областей.
Спасибо!
Все переделал, всё получилось!

Теги:

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

Рейтинг@Mail.ru

Поиск