Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
15 Дек 2017, 17:02
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Как посчитать значение в макете  (Прочитано 6894 раз)

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

Оффлайн Элен62

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

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


Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1099
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
Текст, отображаемый в макете, надо задавать не в событии ПриИзменении поля ДатыОкончания,
а в процедуре печати требуемого макета. Саму процедуру печати необходимо найти, обычно в модуле объекта расположена.

А вот там уже

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

Оффлайн Элен62

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


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

Оффлайн Klyacksa

  • Фрилансер. Милости прошу с задачами в личку.
  • Глобальный модератор
  • *****
  • Сообщений: 1325
  • РЕПУТАЦИЯ: 430
  • КПД: 32%
  • Регистрация: 2010-08-20
  • Сайт: 
  • Профессия: Программист 1С
Приведенный Вами код - это не совсем то, что Вам нужно.
Сама печать идет в одной из этих функций:
      ТабДокумент = НапечататьВнешнююФорму(Объект.Ссылка, Расшифровка);
      НапечататьДокумент(ТабДокумент, , , ?(ЭтоДокумент, ОбщегоНазначения.СформироватьЗаголовокДокумента(Объект), Строка(Объект)), ,ТабДокумент);

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

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

Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1099
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
Определите макет, который вам нужен. Имя макета.

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

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

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

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

Оффлайн Элен62

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

Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1099
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
Ну вот видите как все удачно ;)
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн Элен62

  • **
  • Сообщений: 60
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-01-21
  • Сайт: 
  • Профессия: Программист 1С
Всех Приветствую, и из-этой же тематики с макетом...созрел вопрос. Почему я не могу в коде внешнего отчета сослаться на Справочник, т.е. мне надо присвоить значение Ячейке допустим А в макете из Справочника Договоры Контрагентов.ВидВзаиморасчетов?
ВидВзаиморасчетов он вообще не видит это поле.
но Справочник Договоры контрагентов видит.
А вообще может мне запрос сделать дополнительный? Вытащить из ДоговоровКонтрагентов - ВидВзаиморасчетов и Номер Договора?
Только потом как обыграть?

Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1099
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
Не знаю, не знаю...
Внешней обработке доступны все объекты конфигурации.
И справочники в том числе.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн progmikon

  • *****
  • Сообщений: 2090
  • РЕПУТАЦИЯ: 371
  • КПД: 18%
  • Регистрация: 2010-10-09
  • Компания: http://progmikon.blogspot.com/
  • Профессия: Программист 1С
Вы код свой запостите, как вы обращаетесь.


Теги:
 

Значение "00000000001" поля "Код" не уникально

Автор gigsonРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 4
Просмотров: 6865
Последний ответ 24 Ноя 2014, 12:21
от gigson
Значение поля "Владелец" не заполнено или заполнено неверно

Автор ReclaimРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 3236
Последний ответ 16 Ноя 2015, 09:36
от cska-fanat-kz
Как в СКД вычислить значение ресурса для группировки по значениям ресурса нижестоящей группировки

Автор ОтцовскийРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 967
Последний ответ 23 Ноя 2016, 12:53
от sertak
как получить значение реквизита "Код" в обработке "ПодборНоменклатуры" в УТ10.3

Автор JalibРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 1086
Последний ответ 02 Дек 2016, 12:58
от Jalib
При создании нового документа "Заявка на кассовый расход" Ошибка "Значение 9 поля "номер" не уникально

Автор ppkmliteРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 14
Просмотров: 8520
Последний ответ 22 Ноя 2014, 04:50
от cska-fanat-kz

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
179 Сообщений
ilyay ilyay
69 Сообщений
alex0402
54 Сообщений
oleg-x
48 Сообщений
AIFrame
46 Сообщений
andron81_81
44 Сообщений
MuI_I_Ika MuI_I_Ika
33 Сообщений
Golickoff Golickoff
31 Сообщений
BuhRust
30 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

  • Точка Гостей: 604
  • Точка Скрытых: 1
  • Точка Пользователей: 12
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal