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

Вывод печатной формы

Автор gliokker, 07 окт 2013, 14:06

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

gliokker

Вот текст модуля
Функция ПечатьДокумента(ФизЛицо)
   
   

   Запрос = Новый Запрос;
   Запрос.Текст =
   "ВЫБРАТЬ
   |   СотрудникиОрганизаций.НомерДоговора,
   |   СотрудникиОрганизаций.ДатаДоговора,
   |   СотрудникиОрганизаций.Организация.Наименование КАК ПолноеНазваниеОрганизации,
   |   ОтветственныеЛицаОрганизацийСрезПоследних.ФизическоеЛицо КАК ФИОРуководителя,
   |   ОтветственныеЛицаОрганизацийСрезПоследних.Должность КАК ДолжностьРуководителя,
   |   ГражданствоФизЛиц.Страна,
   |   ГражданствоФизЛиц.ФизЛицо,
   |   ПаспортныеДанныеФизЛиц.ДокументВид.Ссылка КАК ДокументВид,
   |   СотрудникиОрганизаций.Наименование,
   |   ПаспортныеДанныеФизЛиц.ДокументСерия,
   |   ПаспортныеДанныеФизЛиц.ДокументНомер,
   |   ПаспортныеДанныеФизЛиц.ДокументКемВыдан,
   |   КонтактнаяИнформация.Представление КАК АдресРегистрации,
   |   КонтактнаяИнформация.Объект,
   |   КонтактнаяИнформация.Тип,
   |   КонтактнаяИнформация.Вид,
   |   КонтактнаяИнформация.Представление,
   |   КонтактнаяИнформация.Поле1,
   |   КонтактнаяИнформация.Поле2,
   |   КонтактнаяИнформация.Поле3,
   |   КонтактнаяИнформация.Поле4,
   |   КонтактнаяИнформация.Поле5,
   |   КонтактнаяИнформация.Поле6,
   |   КонтактнаяИнформация.Поле7,
   |   КонтактнаяИнформация.Поле8,
   |   КонтактнаяИнформация.Поле9,
   |   КонтактнаяИнформация.Поле10,
   |   КонтактнаяИнформация.Комментарий,
   |   КонтактнаяИнформация.ЗначениеПоУмолчанию,
   |   КонтактнаяИнформация.ТипДома,
   |   КонтактнаяИнформация.ТипКорпуса,
   |   КонтактнаяИнформация.ТипКвартиры,
   |   КадровоеПеремещениеОрганизацийОсновныеНачисления.ВидРасчета
   |ИЗ
   |   РегистрСведений.ОтветственныеЛицаОрганизаций.СрезПоследних(, ОтветственноеЛицо = ЗНАЧЕНИЕ(Перечисление.ОтветственныеЛицаОрганизаций.РуководительКадровойСлужбы)) КАК ОтветственныеЛицаОрганизацийСрезПоследних,
   |   Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
   |      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ГражданствоФизЛиц КАК ГражданствоФизЛиц
   |      ПО СотрудникиОрганизаций.Физлицо = ГражданствоФизЛиц.ФизЛицо
   |      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПаспортныеДанныеФизЛиц КАК ПаспортныеДанныеФизЛиц
   |      ПО СотрудникиОрганизаций.Физлицо = ПаспортныеДанныеФизЛиц.ФизЛицо
   |      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
   |      ПО (КонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ЮрАдресФизЛица))
   |         И СотрудникиОрганизаций.Физлицо = КонтактнаяИнформация.Объект
   |      ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.КадровоеПеремещениеОрганизаций.ОсновныеНачисления КАК КадровоеПеремещениеОрганизацийОсновныеНачисления
   |      ПО СотрудникиОрганизаций.Физлицо = КадровоеПеремещениеОрганизацийОсновныеНачисления.ФизЛицо";
   
   Запрос.УстановитьПараметр("ФизЛицо", СсылкаНаОбъект.Ссылка);
   Выборка = Запрос.Выполнить().Выбрать();
   Выборка.Следующий();   
   ТабДокумент = Новый ТабличныйДокумент;
   Макет = ПолучитьМакет("Макет");
   ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
      Для Каждого ОсновноеНачисление Из СсылкаНаОбъект.ОсновныеНачисления Цикл
      Если ОсновноеНачисление.ВидРасчета.Наименование = "1234" Тогда
         СуммаКомпенсацииКвартиры = ОсновноеНачисление.Показатель1;
         ФормСтрока = "Л = ru_RU; ДП = Истина";
         ПарПредмета="рубль ,рубля ,рублей ,м,копейка,копейки,копеек,ж,2";//ПрописьЧисла
         СуммаКомпенсацииКвартирыПрописью = ЧислоПрописью(СуммаКомпенсацииКвартиры,ФормСтрока, ПарПредмета);
         Прервать;
      КонецЕсли;
   КонецЦикла;   
   ОбластьМакета.Параметры.Заполнить(Выборка);
   ОбластьМакета.Параметры.СуммаКомпенсацииКвартиры = СуммаКомпенсацииКвартирыПрописью;
   
   ТабДокумент.Вывести(ОбластьМакета);
   
   Областьмакета = Макет.ПолучитьОбласть("Сотрудник");
   ОбластьМакета.Параметры.Заполнить(Выборка);
   ТабДокумент.Вывести(ОбластьМакета);
ТабДокумент.показать();
   
   Возврат ТабДокумент;

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


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

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

Тут как всё готово кроме одной загвостки. Если вдруг в документе добавили 2-ух людей и нужно распечатать 2 договора. Что только не перепробывал всё равно не выводит. Может кто нибудь подскажет? Должно ыходить 2 договора у которых есть вид начисления "1234"

Yura063

Так в у вас ОсновныеНачисление это табличная часть где есль физ.лица?

Добавлено: 07 окт 2013, 17:43


Если вы в запросе получаете два и более результата! то нужно цикл по результату поставить:
Пока Выборка.Следующий() Цикл
Помогли, отблагодари!

gliokker

Цитата: Yura063 от 07 окт 2013, 17:39
Так в у вас ОсновныеНачисление это табличная часть где есль физ.лица?

Добавлено: 07 окт 2013, 17:43


Если вы в запросе получаете два и более результата! то нужно цикл по результату поставить:
Пока Выборка.Следующий() Цикл
Да это табличная часть где есть физ лицо

Yura063

Я в запросе не нашел условия по сотруднику "ФизЛицо", для которого вы передаете параметр:
Цитата: gliokker от 07 окт 2013, 14:06Запрос.УстановитьПараметр("ФизЛицо", СсылкаНаОбъект.Ссылка);
параметру вы присваиваете ссылку на документ, тогда не понятно зачем вообще функции передавать ФизЛицо?   


Помогли, отблагодари!

gliokker

Цитата: Yura063 от 08 окт 2013, 08:55
Я в запросе не нашел условия по сотруднику "ФизЛицо", для которого вы передаете параметр:
Цитата: gliokker от 07 окт 2013, 14:06Запрос.УстановитьПараметр("ФизЛицо", СсылкаНаОбъект.Ссылка);
параметру вы присваиваете ссылку на документ, тогда не понятно зачем вообще функции передавать ФизЛицо?   
Вот условие
КадровоеПеремещениеОрганизацийОсновныеНачисления.Ссылка = &ФизЛицо";
на печать выводит 2 формы только вот одинаковые ((((((
Может условие не то я не очень понимаю по этим условиям

Yura063

Цитата: gliokker от 07 окт 2013, 14:06"ВЫБРАТЬ
   |   СотрудникиОрганизаций.НомерДоговора,
   |   СотрудникиОрганизаций.ДатаДоговора,
   |   СотрудникиОрганизаций.Организация.Наименование КАК ПолноеНазваниеОрганизации,
   |   ОтветственныеЛицаОрганизацийСрезПоследних.ФизическоеЛицо КАК ФИОРуководителя,
   |   ОтветственныеЛицаОрганизацийСрезПоследних.Должность КАК ДолжностьРуководителя,
   |   ГражданствоФизЛиц.Страна,
   |   ГражданствоФизЛиц.ФизЛицо,
   |   ПаспортныеДанныеФизЛиц.ДокументВид.Ссылка КАК ДокументВид,
   |   СотрудникиОрганизаций.Наименование,
   |   ПаспортныеДанныеФизЛиц.ДокументСерия,
   |   ПаспортныеДанныеФизЛиц.ДокументНомер,
   |   ПаспортныеДанныеФизЛиц.ДокументКемВыдан,
   |   КонтактнаяИнформация.Представление КАК АдресРегистрации,
   |   КонтактнаяИнформация.Объект,
   |   КонтактнаяИнформация.Тип,
   |   КонтактнаяИнформация.Вид,
   |   КонтактнаяИнформация.Представление,
   |   КонтактнаяИнформация.Поле1,
   |   КонтактнаяИнформация.Поле2,
   |   КонтактнаяИнформация.Поле3,
   |   КонтактнаяИнформация.Поле4,
   |   КонтактнаяИнформация.Поле5,
   |   КонтактнаяИнформация.Поле6,
   |   КонтактнаяИнформация.Поле7,
   |   КонтактнаяИнформация.Поле8,
   |   КонтактнаяИнформация.Поле9,
   |   КонтактнаяИнформация.Поле10,
   |   КонтактнаяИнформация.Комментарий,
   |   КонтактнаяИнформация.ЗначениеПоУмолчанию,
   |   КонтактнаяИнформация.ТипДома,
   |   КонтактнаяИнформация.ТипКорпуса,
   |   КонтактнаяИнформация.ТипКвартиры,
   |   КадровоеПеремещениеОрганизацийОсновныеНачисления.ВидРасчета
   |ИЗ
   |   РегистрСведений.ОтветственныеЛицаОрганизаций.СрезПоследних(, ОтветственноеЛицо = ЗНАЧЕНИЕ(Перечисление.ОтветственныеЛицаОрганизаций.РуководительКадровойСлужбы)) КАК ОтветственныеЛицаОрганизацийСрезПоследних,
   |   Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
   |      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ГражданствоФизЛиц КАК ГражданствоФизЛиц
   |      ПО СотрудникиОрганизаций.Физлицо = ГражданствоФизЛиц.ФизЛицо
   |      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПаспортныеДанныеФизЛиц КАК ПаспортныеДанныеФизЛиц
   |      ПО СотрудникиОрганизаций.Физлицо = ПаспортныеДанныеФизЛиц.ФизЛицо
   |      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
   |      ПО (КонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ЮрАдресФизЛица))
   |         И СотрудникиОрганизаций.Физлицо = КонтактнаяИнформация.Объект
   |      ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.КадровоеПеремещениеОрганизаций.ОсновныеНачисления КАК КадровоеПеремещениеОрганизацийОсновныеНачисления
   |      ПО СотрудникиОрганизаций.Физлицо = КадровоеПеремещениеОрганизацийОсновныеНачисления.ФизЛицо";
Где здесь условие?



Добавлено: 08 окт 2013, 09:23


А дальше по циклу вы передаете один и тот же параметр.
Цитата: gliokker от 07 окт 2013, 14:06Запрос.УстановитьПараметр("ФизЛицо", СсылкаНаОбъект.Ссылка);
Вопрос зачем вам передавать в функцию значение ФизЛицо, если вы его не используете?
Цитата: gliokker от 07 окт 2013, 14:06
ТабДокумент = ПечатьДокумента(основноеНачисление.ФизЛицо);

Помогли, отблагодари!

gliokker

Ещё раз
вот текст модуля
Функция ПечатьДокумента()
   
   

   Запрос = Новый Запрос;
   Запрос.Текст =
   "ВЫБРАТЬ
   |   СотрудникиОрганизаций.НомерДоговора,
   |   СотрудникиОрганизаций.ДатаДоговора,
   |   СотрудникиОрганизаций.Организация.Наименование КАК ПолноеНазваниеОрганизации,
   |   ОтветственныеЛицаОрганизацийСрезПоследних.ФизическоеЛицо КАК ФИОРуководителя,
   |   ОтветственныеЛицаОрганизацийСрезПоследних.Должность КАК ДолжностьРуководителя,
   |   ГражданствоФизЛиц.Страна,
   |   ГражданствоФизЛиц.ФизЛицо,
   |   ПаспортныеДанныеФизЛиц.ДокументВид.Ссылка КАК ДокументВид,
   |   СотрудникиОрганизаций.Наименование,
   |   ПаспортныеДанныеФизЛиц.ДокументСерия,
   |   ПаспортныеДанныеФизЛиц.ДокументНомер,
   |   ПаспортныеДанныеФизЛиц.ДокументКемВыдан,
   |   КонтактнаяИнформация.Представление КАК АдресРегистрации,
   |   КонтактнаяИнформация.Объект,
   |   КонтактнаяИнформация.Тип,
   |   КонтактнаяИнформация.Вид,
   |   КонтактнаяИнформация.Представление,
   |   КонтактнаяИнформация.Поле1,
   |   КонтактнаяИнформация.Поле2,
   |   КонтактнаяИнформация.Поле3,
   |   КонтактнаяИнформация.Поле4,
   |   КонтактнаяИнформация.Поле5,
   |   КонтактнаяИнформация.Поле6,
   |   КонтактнаяИнформация.Поле7,
   |   КонтактнаяИнформация.Поле8,
   |   КонтактнаяИнформация.Поле9,
   |   КонтактнаяИнформация.Поле10,
   |   КонтактнаяИнформация.Комментарий,
   |   КонтактнаяИнформация.ЗначениеПоУмолчанию,
   |   КонтактнаяИнформация.ТипДома,
   |   КонтактнаяИнформация.ТипКорпуса,
   |   КонтактнаяИнформация.ТипКвартиры,
   |   КадровоеПеремещениеОрганизацийОсновныеНачисления.ВидРасчета
   |ИЗ
   |   РегистрСведений.ОтветственныеЛицаОрганизаций.СрезПоследних(, ОтветственноеЛицо = ЗНАЧЕНИЕ(Перечисление.ОтветственныеЛицаОрганизаций.РуководительКадровойСлужбы)) КАК ОтветственныеЛицаОрганизацийСрезПоследних,
   |   Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
   |      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ГражданствоФизЛиц КАК ГражданствоФизЛиц
   |      ПО СотрудникиОрганизаций.Физлицо = ГражданствоФизЛиц.ФизЛицо
   |      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПаспортныеДанныеФизЛиц КАК ПаспортныеДанныеФизЛиц
   |      ПО СотрудникиОрганизаций.Физлицо = ПаспортныеДанныеФизЛиц.ФизЛицо
   |      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
   |      ПО (КонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ЮрАдресФизЛица))
   |         И СотрудникиОрганизаций.Физлицо = КонтактнаяИнформация.Объект
   |      ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.КадровоеПеремещениеОрганизаций.ОсновныеНачисления КАК КадровоеПеремещениеОрганизацийОсновныеНачисления
   |      ПО СотрудникиОрганизаций.Физлицо = КадровоеПеремещениеОрганизацийОсновныеНачисления.ФизЛицо
   |ГДЕ
   |   КадровоеПеремещениеОрганизацийОсновныеНачисления.Ссылка = &ФизЛицо";
   
   Запрос.УстановитьПараметр("ФизЛицо", СсылкаНаОбъект.Ссылка);
   Выборка = Запрос.Выполнить().Выбрать();
   Выборка.Следующий();   
   ТабДокумент = Новый ТабличныйДокумент;
   Макет = ПолучитьМакет("Макет");
   ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
      Для Каждого ОсновноеНачисление Из СсылкаНаОбъект.ОсновныеНачисления Цикл
      Если ОсновноеНачисление.ВидРасчета.Наименование = "1234" Тогда
         СуммаКомпенсацииКвартиры = ОсновноеНачисление.Показатель1;
         ФормСтрока = "Л = ru_RU; ДП = Истина";
         ПарПредмета="рубль ,рубля ,рублей ,м,копейка,копейки,копеек,ж,2";//ПрописьЧисла
         СуммаКомпенсацииКвартирыПрописью = ЧислоПрописью(СуммаКомпенсацииКвартиры,ФормСтрока, ПарПредмета);
         Прервать;
      КонецЕсли;
   КонецЦикла;   
   ОбластьМакета.Параметры.Заполнить(Выборка);
   ОбластьМакета.Параметры.СуммаКомпенсацииКвартиры = СуммаКомпенсацииКвартирыПрописью;
   
   ТабДокумент.Вывести(ОбластьМакета);
   
   Областьмакета = Макет.ПолучитьОбласть("Сотрудник");
   ОбластьМакета.Параметры.Заполнить(Выборка);
   ТабДокумент.Вывести(ОбластьМакета);

   
   Возврат ТабДокумент;

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


Функция Печать() Экспорт
   
   ТабДокумент = ПечатьДокумента();
   Возврат ТабДокумент;
      
КонецФункции
В документе 2 сотрудника с видом начисления (1234), при нажатии на кнопку печать выводит только первый сотрудник. Как сделать чтоб выводились все сотрудники из документа у которых стоит вид начисления (1234)?


Yura063

Объясняю еще раз. Здесь:
Цитата: gliokker от 08 окт 2013, 09:36|ГДЕ
   |   КадровоеПеремещениеОрганизацийОсновныеНачисления.Ссылка = &ФизЛицо";
   
   Запрос.УстановитьПараметр("ФизЛицо", СсылкаНаОбъект.Ссылка);

Вы передаете параметр Ссылку на документ! Хорошо! Зачем вам тогда передавать параметр ФизЛицо в функцию? Здесь:
Цитата: gliokker от 07 окт 2013, 14:06ТабДокумент = ПечатьДокумента(основноеНачисление.ФизЛицо);



Добавлено: 08 окт 2013, 17:16


Теперь объясняю почему у вас выходит 2 одинаковых шаблона:
1. У вас стоит цикл по таб.части. Здесь:
Цитата: gliokker от 07 окт 2013, 14:06Функция Печать() Экспорт
   
   //ТабДокумент = ПечатьДокумента();
   //Возврат ТабДокумент;
   Для Каждого ОсновноеНачисление из СсылкаНаОбъект.ОсновныеНачисления Цикл
      Если    ОсновноеНачисление.ВидРасчета.Наименование =  "1234" Тогда
      ТабДокумент = ПечатьДокумента(основноеНачисление.ФизЛицо);
      КонецЕсли;
    КонецЦикла ;

КонецФункции
2. При выполнении запроса вы получаете массив результатов!В вашем документе это данные по 2 сотрудникам.
3. выводите на печать вы только по первому сотруднику! Здесь:
Цитата: gliokker от 07 окт 2013, 14:06Выборка.Следующий();


Добавлено: 08 окт 2013, 17:21


Устранить это можно очень просто!
В функции Печать() уберите условие и цикл. Функции ПечатьДокумента() не надо передавать Значение ФизЛицо. И последнее Поставьте Цикл по результату запроса! Я уже не знаю как вам разжевать...
Помогли, отблагодари!

gliokker

Цитата: Yura063 от 08 окт 2013, 17:12
Объясняю еще раз. Здесь:
Цитата: gliokker от 08 окт 2013, 09:36|ГДЕ
   |   КадровоеПеремещениеОрганизацийОсновныеНачисления.Ссылка = &ФизЛицо";
   
   Запрос.УстановитьПараметр("ФизЛицо", СсылкаНаОбъект.Ссылка);

Вы передаете параметр Ссылку на документ! Хорошо! Зачем вам тогда передавать параметр ФизЛицо в функцию? Здесь:
Цитата: gliokker от 07 окт 2013, 14:06ТабДокумент = ПечатьДокумента(основноеНачисление.ФизЛицо);



Добавлено: 08 окт 2013, 17:16


Теперь объясняю почему у вас выходит 2 одинаковых шаблона:
1. У вас стоит цикл по таб.части. Здесь:
Цитата: gliokker от 07 окт 2013, 14:06Функция Печать() Экспорт
   
   //ТабДокумент = ПечатьДокумента();
   //Возврат ТабДокумент;
   Для Каждого ОсновноеНачисление из СсылкаНаОбъект.ОсновныеНачисления Цикл
      Если    ОсновноеНачисление.ВидРасчета.Наименование =  "1234" Тогда
      ТабДокумент = ПечатьДокумента(основноеНачисление.ФизЛицо);
      КонецЕсли;
    КонецЦикла ;

КонецФункции
2. При выполнении запроса вы получаете массив результатов!В вашем документе это данные по 2 сотрудникам.
3. выводите на печать вы только по первому сотруднику! Здесь:
Цитата: gliokker от 07 окт 2013, 14:06Выборка.Следующий();


Добавлено: 08 окт 2013, 17:21


Устранить это можно очень просто!
В функции Печать() уберите условие и цикл. Функции ПечатьДокумента() не надо передавать Значение ФизЛицо. И последнее Поставьте Цикл по результату запроса! Я уже не знаю как вам разжевать...
Спасибо

Теги:

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

Рейтинг@Mail.ru

Поиск