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

Как посчитать значение в макете

Автор Элен62, 26 фев 2011, 15:05

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

Элен62

Добрый день). Сегодня встал такой вопрос. Есть справочник сотрудники, и мне нужно, чтобы при изменении даты окончания трудового договора (при вводе ее вообще), менялись данные по нажатию невидимой кнопки (в конфигураторе ее не нашла, используется при деревеЗначений) открывался макет (привинченый к справочнику сотрудники) и в графе (к примеру 2) был написан текст "на определенный срок". Как я это вижу....
Процедура ДатаОкончанияПриИзменении(Элемент)
   Если ДатаОкончания<>0 Тогда
      УниверсальныеМеханизмы.Кнопка.Текст.Макет.Х="на определенный срок";
Иначе Х="бессрочно";
      КонецЕсли;
      //Форма.ЭлементыФормы.ДеревоМакетовПечати
КонецПроцедуры

Вот и не знаю как к этому значению переменной Х там обратиться.
В макете "где надо" поставила <Х>- как переменная со стандартными св-ми.
В общем при нажатии кнопки этой -появляется рабочий макет и чтобы Х было заполнено. Можете подсказать, как правильно обратиться к этому.

cska-fanat-kz

Текст, отображаемый в макете, надо задавать не в событии ПриИзменении поля ДатыОкончания,
а в процедуре печати требуемого макета. Саму процедуру печати необходимо найти, обычно в модуле объекта расположена.

А вот там уже

Если ДатаОкончания <> Дата("00010101") Тогда
<<Область>>.Параметры.<<Параметр>> = "на определенный срок";
Иначе
<<Область>>.Параметры.<<Параметр>> = "бессрочно";
КонецЕсли;
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Элен62

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


Посмотрите пожалуйста, может сможете помочь. Я же не могу Макет обозначить как. Справочник.СотрудникиОрганизаций.Макет.Параметр.Х .....((

Klyacksa

Приведенный Вами код - это не совсем то, что Вам нужно.
Сама печать идет в одной из этих функций:
      ТабДокумент = НапечататьВнешнююФорму(Объект.Ссылка, Расшифровка);
      НапечататьДокумент(ТабДокумент, , , ?(ЭтоДокумент, ОбщегоНазначения.СформироватьЗаголовокДокумента(Объект), Строка(Объект)), ,ТабДокумент);


Вызывается процедура печати внешней формы, вот эту процедуру и смотрите. И скорее всего, передавать в нее ничего лишнего не надо, а просто добавить Вашу проверку на "бессрочность" в процедуру печати данной конкретной печатной формы. То есть, в ней будет в зависимости от реквизита ДатаОкончания печатаемого документа, изменяться текст определенной ячейки.
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

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

cska-fanat-kz

Определите макет, который вам нужен. Имя макета.

Потом надо найти процедуру где он начинает использоваться.

Идет что нибудь вроде

Макет = ПолучитьМакет(<<Имя вашего макета>>);

Дальше находите нужную область где находится ваша ячейка и у области задаете нужный параметр в зависимости от Даты окончания.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Элен62

А знаете аж где нашла?). Общий Модуль-сотрудникиОрганизаций Переопределяемый модуль.
Функция Печать(ИмяМакета, КоличествоЭкземпляров = 1, НаПринтер = Ложь, ЭтотОбъект) Экспорт
   
   // Получить экземпляр документа на печать
   Если ИмяМакета = "Печать" Тогда
      
      ТабДокумент = Новый ТабличныйДокумент;
      ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ТрудовойДоговор_Печать";
      
      // получаем данные для печати
      Выборка = ЭтотОбъект.СформироватьЗапросДляПечатиТрудовогоДоговора().Выбрать();
      
      // получаем макет
      Макет = ЭтотОбъект.ПолучитьМакет("Макет");
         Если Выборка.Следующий() Тогда
         Макет.Параметры.Заполнить(Выборка);
         Макет.Параметры.ИспытательныйСрокСтрокой = ?(НЕ ЗначениеЗаполнено(Выборка.ИспытательныйСрок),"             месяцев", "" + Выборка.ИспытательныйСрок + " месяца(ев)" );
         Макет.Параметры.РежимРаботы = "" + Выборка.ВидГрафика + "; " + Выборка.ДлительностьРабочейНедели + " - часовая рабочая неделя";
         Макет.Параметры.ФормаОплаты = "Форма оплаты: " + Выборка.ВидРасчета + "; Оклад (тариф) = " + Выборка.ТарифнаяСтавка + " ("+Выборка.ВалютаТарифнойСтавки+")"; 
         Макет.Параметры.ПолноеНазваниеОрганизации = СокрЛП(Макет.Параметры.ПолноеНазваниеОрганизации);
         Макет.Параметры.ДокументКемВыдан = СокрЛП(Макет.Параметры.ДокументКемВыдан);
      Если Макет.Параметры.ДатаУвольнения='00010101' Тогда
         Макет.Параметры.Х="не определенный срок"
      Иначе
   Макет.Параметры.Х="определенный срок";
      КонецЕсли;
         ВыборкаПерсональныхНадбавок = Выборка.ПерсональныеНадбавки.Выбрать();
         Если ВыборкаПерсональныхНадбавок.Количество()>0 Тогда
            СтрокаНадбавки = "Персональные надбавки: ";
            Пока ВыборкаПерсональныхНадбавок.Следующий() Цикл
               СтрокаНадбавки = СтрокаНадбавки + ВыборкаПерсональныхНадбавок.Надбавка + "- " + ВыборкаПерсональныхНадбавок.Показатель1 + "; ";
            КонецЦикла;
            Макет.Параметры.Надбавки = СтрокаНадбавки;
         КонецЕсли;
      КонецЕсли;
      
      // выводим готовый документ
      ТабДокумент.Вывести(Макет);
      
      Возврат УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, КоличествоЭкземпляров, НаПринтер, "Трудовой договор");
   
   ИначеЕсли ИмяМакета = "РегламентированныйОтпуск" Тогда
      ФормированиеПечатныхФормЗК.ПечатьСправкиПоРегламентированнымОтпускамСотрудника(ЭтотОбъект.Ссылка);
      
   ИначеЕсли ИмяМакета = "УправленческийОтпуск" Тогда
      ФормированиеПечатныхФормДополнительный.ПечатьСправкиПоУправленческимОтпускамСотрудника(ЭтотОбъект.Физлицо, ЭтотОбъект.Ссылка);
      
   КонецЕсли;
   
КонецФункции

cska-fanat-kz

Ну вот видите как все удачно ;)
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Элен62

Всех Приветствую, и из-этой же тематики с макетом...созрел вопрос. Почему я не могу в коде внешнего отчета сослаться на Справочник, т.е. мне надо присвоить значение Ячейке допустим А в макете из Справочника Договоры Контрагентов.ВидВзаиморасчетов?
ВидВзаиморасчетов он вообще не видит это поле.
но Справочник Договоры контрагентов видит.
А вообще может мне запрос сделать дополнительный? Вытащить из ДоговоровКонтрагентов - ВидВзаиморасчетов и Номер Договора?
Только потом как обыграть?

cska-fanat-kz

Не знаю, не знаю...
Внешней обработке доступны все объекты конфигурации.
И справочники в том числе.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

progmikon

Вы код свой запостите, как вы обращаетесь.

Теги:

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

Рейтинг@Mail.ru

Поиск