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

Печатная форма

Автор gliokker, 05 ноя 2013, 11:35

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

gliokker

Всем привет вот кусочек кода
   Запрос.УстановитьПараметр("Физлицо", СсылкаНаОбъект.Ссылка);


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

   
   Областьмакета = Макет.ПолучитьОбласть("Сотрудник");
   ФормСтрока = "Л = ru_RU; ДП = Истина";
    ПарПредмета="рубль ,рубля ,рублей ,м,копейка,копейки,копеек,ж,2";//ПрописьЧисла
    ТарифнаяСтавка = ЧислоПрописью(Выборка.ТарифнаяСтавка,ФормСтрока, ПарПредмета); 
   
   Если Выборка.ВидРасчета =  ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоНаименованию("Тариф") ТОгда
      ТарифнаяСтавка = ТарифнаяСтавка + " в час";
      КонецЕсли;
    Если Выборка.ВидРасчета = ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоНаименованию("Оклад") ТОгда
        ТарифнаяСтавка = ТарифнаяСтавка + " в месяц";
       КонецЕсли;
         Если Выборка.ДатаОкончания= Дата(1,1,1)ТОгда
      Результат = "на неопределённый срок" ;
   Иначе
      Результат = Выборка.ДатаОкончания;
   КонецЕсли;
   
   
   
   ОбластьМакета.Параметры.Заполнить(Выборка);
   ОбластьМакета.Параметры.Результат = Результат;

   ОбластьМакета.Параметры.ТарифнаяСтавка = ТарифнаяСтавка;

   
   
   ТабДокумент.Вывести(ОбластьМакета);
   
   ОбластьМакета = Макет.ПолучитьОбласть("Итог");
   ОбластьМакета.Параметры.Заполнить(Выборка);
   ТабДокумент.Вывести(ОбластьМакета);
   Возврат ТабДокумент;
При формировании выходит ошибка
Не удалось сформировать внешнюю печатную форму!
Поле объекта не обнаружено (Сообщение)
Сообщение это параметр в макете. Подскажите в чём ошибка не могу понять.

gliokker

нету не каких вариантов?

demn

а НаименованиеОтпуска точно есть?

gliokker

Цитата: demn от 07 ноя 2013, 09:14
а НаименованиеОтпуска точно есть?
Да есть. Всё переделал вот только не могу разобраться с прописью числа.Я делал пропись числа на сумму ну например 2 это два рубля
а как мне вывести чтоб число 2 писалось
как два календарных дня ну или 10 календарных дней?
Добавлено: 07 ноя 2013, 12:46


Вот переделанный код
Запрос.УстановитьПараметр("Физлицо", СсылкаНаОбъект.Ссылка);


   Выборка = Запрос.Выполнить().Выбрать();
   Выборка.Следующий();   
   ТабДокумент = Новый ТабличныйДокумент;
   Макет = ПолучитьМакет("ТрудовойДоговор");
   ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
   ОбластьМакета.Параметры.Заполнить(Выборка);
   ТабДокумент.Вывести(ОбластьМакета);
   

   
   Областьмакета = Макет.ПолучитьОбласть("Сотрудник");
   ФормСтрока = "Л = ru_RU; ДП = Истина";
    ПарПредмета="рубль ,рубля ,рублей ,м,копейка,копейки,копеек,ж,2";//ПрописьЧисла
    ТарифнаяСтавка = ЧислоПрописью(Выборка.ТарифнаяСтавка,ФормСтрока, ПарПредмета); 
   
   Если Выборка.ВидРасчета =  ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоНаименованию("Тариф") ТОгда
      ТарифнаяСтавка = ТарифнаяСтавка + " в час";
      КонецЕсли;
    Если Выборка.ВидРасчета = ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоНаименованию("Оклад") ТОгда
        ТарифнаяСтавка = ТарифнаяСтавка + " в месяц";
       КонецЕсли;
         Если Выборка.ДатаОкончания= Дата(1,1,1)ТОгда
      Результат = "на неопределённый срок" ;
   Иначе
      Результат = Выборка.ДатаОкончания;
   КонецЕсли;
   ОбластьМакета.Параметры.Заполнить(Выборка);
   ОбластьМакета.Параметры.Результат = Результат;
   ОбластьМакета.Параметры.ТарифнаяСтавка = ТарифнаяСтавка;
   ТабДокумент.Вывести(ОбластьМакета);
   
   Выборка = Запрос.Выполнить().Выбрать();
   Заменить = 0;
   Пока Выборка.Следующий() Цикл
      Если  Выборка.НаименованиеОтпуска = "Доп. отпуск (ненормированный)" Тогда
         Заменить = 1;
      КонецЕсли;
   КонецЦикла;
   Если Заменить = 0 Тогда
      ОбластьМакета = Макет.ПолучитьОбласть("СотрудникЗаменяемая");
   Иначе
      ОбластьМакета = Макет.ПолучитьОбласть("Заменяемая");
      ФормСтрока = "Л = ru_RU; ДП = Истина";
        ПарПредмета="";//ПрописьЧисла
        КоличествоДнейОтпуска = ЧислоПрописью(Выборка.КоличествоДнейОтпуска,ФормСтрока, ПарПредмета);
      
      ОбластьМакета.Параметры.Заполнить(Выборка);
      ОбластьМакета.Параметры.КоличествоДнейОтпуска = КоличествоДнейОтпуска;
   КонецЕсли;
    ТабДокумент.Вывести(ОбластьМакета);

   ОбластьМакета = Макет.ПолучитьОбласть("Сотрудник1");
    ОбластьМакета.Параметры.Заполнить(Выборка);   
   ТабДокумент.Вывести(ОбластьМакета);
   
   ОбластьМакета = Макет.ПолучитьОбласть("Итог");
   ОбластьМакета.Параметры.Заполнить(Выборка);   
   ТабДокумент.Вывести(ОбластьМакета);
   Возврат ТабДокумент;
меня интересует как написать чтоб не рубли писались,может что то типа
       ПарПредмета="день,дня,дней";//ПрописьЧисла
да и нужно чтоб именно выводилось 2 календарных дня
Подскажите кто может ну или направьте на путь истинный)))
Добавлено: 07 ноя 2013, 13:26


ОбластьМакета = Макет.ПолучитьОбласть("Заменяемая");
      ФормСтрока = "Л = ru_RU; ДП = Истина";
        ПарПредмета="календарный,календарного,календарных,м,день,дня,дней,м,";//ПрописьЧисла
        КоличествоДнейОтпуска = ЧислоПрописью(Выборка.КоличествоДнейОтпуска,ФормСтрока, ПарПредмета);
вот что получилось выводит
пять календарных ноль дней
как ноль убрать?

Теги:

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

Рейтинг@Mail.ru

Поиск