Перейти к содержимому


Вывод из макета


Сообщений в теме: 26

#1 PavelA

    Частый гость


  • 52 сообщений

Отправлено 19 февраля 2012 - 10:43

Добрый всем день! задача состоит в следующем.
Нужно чтобы при условии если есть номер "Доп соглашения" , тогда выводился некий текст (например: НекийТекст <Доп Соглашение>) Как записать это условие, зависяще от того есть номер Доп соглашения или нет и как в макете переменную обозначить с текстом( как задать саму переменную понятно) Спасибо

#2 nbIpKuH_BaH9I

    Одинесина


  • 527 сообщений

Отправлено 19 февраля 2012 - 11:58

Когда-то писал отчет. Вот кусок. Надеюсь понятен смысл.
  
 Если ТипЗнч(Выборка.Документ) = Тип("СправочникСсылка.ДопСоглашения") Тогда
   Если ЗначениеЗаполнено(Выборка.ДатаДокумента) Тогда
	ДатаДокумента = "от " + Формат(Выборка.ДатаДокумента, "ДФ=dd.MM.yyyy");
   Иначе
	ДатаДокумента = "";
   КонецЕсли;
   Если ЗначениеЗаполнено(Выборка.Документ.Владелец.Дата) Тогда
	ДатаДокументаВладельца = "от " + Формат(Выборка.Документ.Владелец.Дата, "ДФ=dd.MM.yyyy")
   Иначе
	ДатаДокументаВладельца = "";
   КонецЕсли;
   Если ЗначениеЗаполнено(Выборка.Документ.Владелец.ВидДокумента) Тогда
	ВидДокумента = СокрЛП(Выборка.Документ.Владелец.ВидДокумента);
   Иначе
	ВидДокумента = "Договор";
   КонецЕсли;
   ОбластьДетали.Параметры.Документ = СокрЛП(Выборка.ВидДокумента) + " " + СокрЛП(Выборка.НомерДокумента) + " " + ДатаДокумента + " " + ""
   "" + "Основной договор: " + ВидДокумента + " " + СокрЛП(Выборка.Документ.Владелец.Номер) + " " + ДатаДокументаВладельца;
  КонецЕсли;


Сообщение отредактировал nbIpKuH_BaH9I: 19 февраля 2012 - 11:59

Изображение
Помог мой ответ, нажми Изображение.

#3 PavelA

    Частый гость


  • 52 сообщений

Отправлено 19 февраля 2012 - 13:59

Спасибо, не моли бы рассказать подробнее немного(((

#4 nbIpKuH_BaH9I

    Одинесина


  • 527 сообщений

Отправлено 19 февраля 2012 - 14:16

А что именно вам объяснить? Кидайте сюда ваш отчет или что там у вас. Говорите что надо сделать. Я посмотрю.
Изображение
Помог мой ответ, нажми Изображение.

#5 PavelA

    Частый гость


  • 52 сообщений

Отправлено 19 февраля 2012 - 15:08

отчет к сожалению кинуть не могу. есть некий документ, при нажатии на кнопку печать открывается печатная форма. (мой макет) ! У этого документа есть реквизит ДопСоглашение, мне надо если в документе указано доп соглашение чтобы выводилась фраза "В связи с доп соглашением <ДопСоглашение>", где доп соглашение реквизит из документа. Задача очень не сложная на словах, но для новичка кажется тяжелой((( Как я понял надо задать переменную ей присвоить текст и проверку на истину заполнения...

#6 nbIpKuH_BaH9I

    Одинесина


  • 527 сообщений

Отправлено 19 февраля 2012 - 21:27

К примеру у вас в макете есть параметр под названием "Заголовок". Код будет приблизительно следующим.
  Если ЗначениеЗаполнено(ДопСоглашение) Тогда

   ВашаОбласть.Параметры.Заголовок = "В связи с доп соглашением " +  ДопСоглашение;
   Иначе
   ВашаОбласть.Параметры.Заголовок = "Доп. соглашение не заполнено";
   КонецЕсли;

Так понятнее?

Сообщение отредактировал nbIpKuH_BaH9I: 19 февраля 2012 - 21:28

Изображение
Помог мой ответ, нажми Изображение.

#7 PavelA

    Частый гость


  • 52 сообщений

Отправлено 20 февраля 2012 - 06:36

Да спасибр а на истину ложь не проверяем значение? и не через параметр сообщить выводим?

#8 nbIpKuH_BaH9I

    Одинесина


  • 527 сообщений

Отправлено 20 февраля 2012 - 07:48

Просмотр сообщенияPavelA (20 февраля 2012 - 06:36) писал:

Да спасибр а на истину ложь не проверяем значение? и не через параметр сообщить выводим?
Чего? ЗначениеЗаполнено - это стандартная функция. Применяется для проверки заполненности значения. Возвращает истину или ложь. Все дословно.
Попытаюсь перефразировать. Если значение Доп. соглашение заполнено, тогда в параметр необходимо записать "В связи с доп. соглашением и т.д.". Если значение Доп. соглашение не заполнено, тогда в параметр необходимо записать "Значение не заполнено". Я понять никак не могу, что именно вам не понятно.
Изображение
Помог мой ответ, нажми Изображение.

#9 PavelA

    Частый гость


  • 52 сообщений

Отправлено 20 февраля 2012 - 18:21

пишет не определена переменна ДопСоглашение во второй строке где +

#10 alexburn

    Suum cuique


  • 4 654 сообщений

Отправлено 20 февраля 2012 - 21:04

nbIpKuH_BaH9I привел вам пример использования алгоритма, в котором, в зависимости от того, заполнен ли реквизит ДопСоглашение, выводятся разные значения в параметр Заголовок в область - ВашаОбласть.
Что конкретно не понятно?

Сообщение отредактировал alexburn: 20 февраля 2012 - 21:05

Героем можешь ты не быть,
Но человеком быть обязан!

Изображение
Если вам помог мой ответ, просьба сказать спасибо вот такой Изображение кнопкой рядом с сообщением.

#11 PavelA

    Частый гость


  • 52 сообщений

Отправлено 20 февраля 2012 - 22:07

где переменную объявили допсоглашение? у меня ругается что переменная не определена

#12 nbIpKuH_BaH9I

    Одинесина


  • 527 сообщений

Отправлено 20 февраля 2012 - 22:11

Просмотр сообщенияPavelA (19 февраля 2012 - 10:43) писал:

Нужно чтобы при условии если есть номер "Доп соглашения"
Из вашего первого поста.

Просмотр сообщенияPavelA (20 февраля 2012 - 22:07) писал:

где переменную объявили допсоглашение? у меня ругается что переменная не определена
Это естественно. В моем примере Переменная ДопСоглашение это и есть ваш номер "Доп соглашения" . Я же не знаю как она у вас называется.

Сообщение отредактировал nbIpKuH_BaH9I: 20 февраля 2012 - 22:11

Изображение
Помог мой ответ, нажми Изображение.

#13 PavelA

    Частый гость


  • 52 сообщений

Отправлено 20 февраля 2012 - 23:56

Наверно я не понятно объяснил, переменная на макете , когда я ее пишу в макете, мне выводит данные! Суть в том чтобы выводило если есть данные. То есть допустим номер ДопСоглашения 2, на макете появится просто цифра 2 а мне надо чтобы выводил Некийтекст 2. В случаее если ДопСоглашение не указано, то есть нет записи в реквизите, то ничего не выодило.

#14 n.s.gnedash

    Завсегдатай


  • 509 сообщений

Отправлено 21 февраля 2012 - 00:09

тебе Ваня Пыркин написал уже и Алекберн
что тут не понятного то
Если ЗначениеЗаполнено(ДопСоглашение) Тогда
   ВашаОбласть.Параметры.Заголовок = "В связи с доп соглашением " +  ДопСоглашение;
   Иначе
   ВашаОбласть.Параметры.Заголовок = "";
КонецЕсли;

Сообщение отредактировал alexburn: 21 февраля 2012 - 10:02


#15 nbIpKuH_BaH9I

    Одинесина


  • 527 сообщений

Отправлено 21 февраля 2012 - 05:35

Он наверное просто не знает как это применить. Вы что пишите то хоть? Если отчет, то давайте его сюда. Или базу. Наглядно тогда покажу.
Изображение
Помог мой ответ, нажми Изображение.

#16 PavelA

    Частый гость


  • 52 сообщений

Отправлено 21 февраля 2012 - 06:58

Выгрузить не могу( просто надо объявить реквизит документа. Документы.ПодрядныйДоговор а дальше как? =(

#17 nbIpKuH_BaH9I

    Одинесина


  • 527 сообщений

Отправлено 21 февраля 2012 - 07:58

Мы с вами на разных языках похоже разговариваем. Кидайте сюда базу.
Изображение
Помог мой ответ, нажми Изображение.

#18 PavelA

    Частый гость


  • 52 сообщений

Отправлено 21 февраля 2012 - 17:56

база больше 200мб( вот скрины может так яснее

Прикрепленные изображения

  • Прикрепленное изображение: 1.jpg
  • Прикрепленное изображение: 2.jpg


#19 alexburn

    Suum cuique


  • 4 654 сообщений

Отправлено 21 февраля 2012 - 19:56

Запрос кидайте.
Героем можешь ты не быть,
Но человеком быть обязан!

Изображение
Если вам помог мой ответ, просьба сказать спасибо вот такой Изображение кнопкой рядом с сообщением.

#20 PavelA

    Частый гость


  • 52 сообщений

Отправлено 21 февраля 2012 - 23:31

&НаСервере
Функция ПечатьАкта(Док, Парам)
ТабДок = Новый ТабличныйДокумент;
Макет = Документы.СписокОбъектовПодрядныйДоговор.ПолучитьМакет("МакетНов");
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ЗаполнитьЗначенияСвойств(ОбластьШапка.Параметры, Док);
ОбластьШапка.Параметры.Год = Год(Док.Дата);
ТабДок.Вывести(ОбластьШапка);
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
Запрос = Новый Запрос(
"ВЫБРАТЬ
| СписокОбъектовПодрядныйДоговорОбъектыСтротельства.Объект.Регион КАК Регион,
| СписокОбъектовПодрядныйДоговорОбъектыСтротельства.НомерСтроки,
| СписокОбъектовПодрядныйДоговорОбъектыСтротельства.ДлинаПр КАК ДлинаПр,
| СписокОбъектовПодрядныйДоговорОбъектыСтротельства.Стоимость КАК Стоимость,
| СписокОбъектовПодрядныйДоговорОбъектыСтротельства.ЦенаДог КАК ценадог,
| СписокОбъектовПодрядныйДоговорОбъектыСтротельства.СрокНач,
| СписокОбъектовПодрядныйДоговорОбъектыСтротельства.СрокКон,
| 18 * СписокОбъектовПодрядныйДоговорОбъектыСтротельства.ЦенаДог / 118 КАК СуммаНДСдог,
| 18 * СписокОбъектовПодрядныйДоговорОбъектыСтротельства.Стоимость / 118 КАК СуммаНДС,
| СписокОбъектовПодрядныйДоговорОбъектыСтротельства.КодСтройки,
| СписокОбъектовПодрядныйДоговорОбъектыСтротельства.Объект.ПолноеНаименование КАК Объект
|ИЗ
| Документ.СписокОбъектовПодрядныйДоговор.ОбъектыСтроительства КАК СписокОбъектовПодрядныйДоговорОбъектыСтротельства
|ГДЕ
| СписокОбъектовПодрядныйДоговорОбъектыСтротельства.Ссылка = &Ссылка
| И (СписокОбъектовПодрядныйДоговорОбъектыСтротельства.Стоимость <> 0
| ИЛИ СписокОбъектовПодрядныйДоговорОбъектыСтротельства.Стоимость = 0
| И НАЧАЛОПЕРИОДА(СписокОбъектовПодрядныйДоговорОбъектыСтротельства.СрокКон, ГОД) >= НАЧАЛОПЕРИОДА(СписокОбъектовПодрядныйДоговорОбъектыСтротельства.Ссылка.Дата, ГОД))
|ИТОГИ
| СУММА(ДлинаПр),
| СУММА(Стоимость),
| СУММА(ценадог),
| СУММА(СуммаНДСдог),
| СУММА(СуммаНДС)
|ПО
| ОБЩИЕ,
| Регион
|АВТОУПОРЯДОЧИВАНИЕ");
Запрос.УстановитьПараметр("Ссылка", Док.Ссылка);
ВыборкаОбщ = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Если не ВыборкаОбщ.Следующий() Тогда
Возврат ТабДок;
КонецЕсли;
ОбластьИтого = Макет.ПолучитьОбласть("Итого");
ЗаполнитьЗначенияСвойств(ОбластьИтого.Параметры,ВыборкаОбщ);
ОбластьИтогоНДС = Макет.ПолучитьОбласть("ИтогоНДС");
ЗаполнитьЗначенияСвойств(ОбластьИтогоНДС.Параметры,ВыборкаОбщ);
ТабДок.Вывести(ОбластьИтого);
Если Парам.НДС Тогда
ТабДок.Вывести(ОбластьИтогоНДС);
КонецЕсли;
ВыборкаРегион = ВыборкаОбщ.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Сч=1;
Пока ВыборкаРегион.Следующий() Цикл
ОбластьРегион = Макет.ПолучитьОбласть("Регион");
ЗаполнитьЗначенияСвойств(ОбластьРегион.Параметры,ВыборкаРегион);
ТабДок.Вывести(ОбластьРегион);
ВыборкаДетали = ВыборкаРегион.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаДетали.Следующий() Цикл
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
ЗаполнитьЗначенияСвойств(ОбластьСтрока.Параметры,ВыборкаДетали);
Если Парам.ЭлДС Тогда
ОбластьСтрока.Параметры.Объект = ВыборкаДетали.ЭлементДС;
КонецЕсли;
ОбластьСтрока.Параметры.СрокНач = ?(Парам.Сроки, Формат(ВыборкаДетали.СрокНач, "ДФ=dd.MM.yyyy"), Формат(ВыборкаДетали.СрокНач, "ДФ=MM.yyyy"));
ОбластьСтрока.Параметры.СрокКон = ?(Парам.Сроки, Формат(ВыборкаДетали.СрокКон, "ДФ=dd.MM.yyyy"), Формат(ВыборкаДетали.СрокКон, "ДФ=MM.yyyy"));
ОбластьСтрока.Параметры.НомерСтроки = Сч;
Сч=Сч+1;
ТабДок.Вывести(ОбластьСтрока);
КонецЦикла;
КонецЦикла;
ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
ОбластьПодвал.Параметры.Организация = Справочники.Организации.НайтиПоКоду("000000001");
ОбластьПодвал.Параметры.Руководитель = Док.Генподрядчик.Руководитель;
ОбластьПодвал.Параметры.Генподрядчик = Док.Генподрядчик.ПолноеНаименование;
ОбластьПодвал.Параметры.ДолжностьРуководителя = Док.Генподрядчик.ДолжностьРуководителя;
ТабДок.Вывести(ОбластьПодвал);
Возврат ТабДок;
КонецФункции

Сообщение отредактировал alexburn: 22 февраля 2012 - 09:05


#21 nbIpKuH_BaH9I

    Одинесина


  • 527 сообщений

Отправлено 22 февраля 2012 - 05:40

И в каком месте условие надо поставить?
Изображение
Помог мой ответ, нажми Изображение.

#22 alexburn

    Suum cuique


  • 4 654 сообщений

Отправлено 22 февраля 2012 - 09:17

Павел, у вас в запросе вообще нет поля ДопСоглашение, это первое.
Второе. Поле ДопСоглашение вы выводите в Шапке, а реквизиты ДопСоглашение выводятся у вас в ДетальныхЗаписях, таким образом, чтобы выводить то что вы хотите, сначала вам нужно обработать детальные записи, проверить на ваше условие, потом выводить Шапку, и только потом уже детальные записи.
Как вариант, предлагаю вам создать временную ТЗ, в которую вы выгрузите ваши данные из таблицы "Перечень объектов....", потом проверить на выполнение вашего условия, и записать этот результат(условия) в переменную, например ВремДопСоглашение. Потом в коде уже проверять:
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ЗаполнитьЗначенияСвойств(ОбластьШапка.Параметры, Док);
ОбластьШапка.Параметры.Год = Год(Док.Дата);
Если ВремДопСоглашение Тогда
ОбластьШапка.Параметры.ДопСоглашение = "ВАШ ТЕКСТ, КОТОРЫЙ НУЖНО ВЫВОДИТЬ";
КонецЕсли;
ТабДок.Вывести(ОбластьШапка);
Хочу заметить, что переменная ВремДопСоглашение имеет булевый тип (потому как зависит от результата условия).
Ну вроде как-то так.
Героем можешь ты не быть,
Но человеком быть обязан!

Изображение
Если вам помог мой ответ, просьба сказать спасибо вот такой Изображение кнопкой рядом с сообщением.

#23 Speaker1982

    Частый гость


  • 136 сообщений

Отправлено 22 февраля 2012 - 09:24

разговор слепого с глухим))

#24 PavelA

    Частый гость


  • 52 сообщений

Отправлено 22 февраля 2012 - 16:09

не совсем понял вопрос???! я выложил мает где ДопСоглашение, а на втором скрине показывается Допсоглашение которое заполнено цифрами, надо чтобы где заполнено цифрами выводило фразу и эту цифру где не заполнено ничего не выводило. Выводит по кнопке печать.

#25 alexburn

    Suum cuique


  • 4 654 сообщений

Отправлено 22 февраля 2012 - 19:22

У вас ДопСоглашение забито в ШАПКЕ макета, а само ДопСоглашение хранится в табличной части. Т.о. как вы хотите сделать чтоб у вас только один раз вывелось ДопСоглашение ??? Правильно, нужно проанализировать табличную часть, где это ДопСоглашение указывается , и в зависимости от результата (есть в строках или нет это ДопСоглашение), уже в шапке выводить ДопСоглашение.
Или я чего-то не понимаю???
Героем можешь ты не быть,
Но человеком быть обязан!

Изображение
Если вам помог мой ответ, просьба сказать спасибо вот такой Изображение кнопкой рядом с сообщением.

#26 PavelA

    Частый гость


  • 52 сообщений

Отправлено 23 февраля 2012 - 11:40

да все верно

#27 alexburn

    Suum cuique


  • 4 654 сообщений

Отправлено 23 февраля 2012 - 17:43

Ну вот, я вам объяснил алгоритм вашего кода, дело осталось за малым, написать.
Героем можешь ты не быть,
Но человеком быть обязан!

Изображение
Если вам помог мой ответ, просьба сказать спасибо вот такой Изображение кнопкой рядом с сообщением.





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных