|
Печатная форма/пустые реквизиты | ☑ | ||
---|---|---|---|---|
0
ildarian
29.04.13
✎
12:50
|
Доброго времени суток!
Такая проблема. Есть справочник "контрагенты" и есть макет печатной формы элемента справочника. На печатную форму выводятся реквизиты справочника в столбик, но есть реквизиты которые не заполнены. Задача: не выводить на печатную форму пустые реквизиты. Форма создавалась конструктором печатных форм. Вот код. Процедура Печать() Экспорт ТабДок = Новый ТабличныйДокумент; Макет = Справочники.КонтрагентыСчета.ПолучитьМакет("Печать"); Шапка = Макет.ПолучитьОбласть("Шапка"); Шапка.Параметры.Заполнить(ЭтотОбъект); шапка.ТекущаяОбласть.пус ТабДок.Вывести(Шапка); ТабДок.ОтображатьСетку = Ложь; ТабДок.Защита = Ложь; ТабДок.ТолькоПросмотр = Ложь; ТабДок.ОтображатьЗаголовки = Ложь; ТабДок.Показать(); КонецПроцедуры |
|||
1
ildarian
29.04.13
✎
12:53
|
Опечатка. Такой вот код!
Процедура Печать() Экспорт ТабДок = Новый ТабличныйДокумент; Макет = Справочники.КонтрагентыСчета.ПолучитьМакет("Печать"); Шапка = Макет.ПолучитьОбласть("Шапка"); Шапка.Параметры.Заполнить(ЭтотОбъект); ТабДок.Вывести(Шапка); ТабДок.ОтображатьСетку = Ложь; ТабДок.Защита = Ложь; ТабДок.ТолькоПросмотр = Ложь; ТабДок.ОтображатьЗаголовки = Ложь; ТабДок.Показать(); КонецПроцедуры |
|||
2
Wobland
29.04.13
✎
12:54
|
задача ясна
|
|||
3
ildarian
29.04.13
✎
12:59
|
как сделать так чтобы пустые реквизиты не выводились ?
|
|||
4
Wobland
29.04.13
✎
13:02
|
(3) пробежаться по параметрам, при заполненности выводить
|
|||
5
Wobland
29.04.13
✎
13:03
|
что-то типа Если ЗначениеЗаполнено(ЭтотОбъект[ТекПараметр])
|
|||
6
1Сергей
29.04.13
✎
13:03
|
использовать больше областей
|
|||
7
Aprobator
29.04.13
✎
13:11
|
создать в макете ОбластьРеквизиты, там 2 параметра: Имя реквизита и значение реквизита. И при обходе реквизитов справчоника, по условию использоватье ПрисоединитьОбласть.
|
|||
8
ildarian
29.04.13
✎
13:20
|
(7) А можете расписать подробнее? Я просто новичок совсем в программировании. Область я создал, а как привязать к ним реквизиты справочника ?
|
|||
9
Wobland
29.04.13
✎
13:31
|
(8) а тебе из всех подряд незаполненные выводить надо или из какого-то подмножества?
|
|||
10
Wobland
29.04.13
✎
13:32
|
(9) *не выводить
|
|||
11
Wobland
29.04.13
✎
13:37
|
спр=Справочники.Контрагенты.НайтиПоКоду();
Для Каждого ТекРеквизит Из спр.Метаданные().Реквизиты Цикл ЗначениеРеквизита=спр[ТекРеквизит.Имя]; Если ЗначениеЗаполнено(ЗначениеРеквизита) Тогда КонецЕсли; КонецЦикла; |
|||
12
Aprobator
29.04.13
✎
13:44
|
(8) у области в свойствах есть тип заполнения. Надо выбрать Параметр. Чуть ниже задать его имя и потом в коде .... Область.Параметры.ИмяПараметра = ЗначениеПараметра.
|
|||
13
ildarian
29.04.13
✎
13:45
|
из всех
|
|||
14
Wobland
29.04.13
✎
13:45
|
(13) на здоровье
|
|||
15
ildarian
29.04.13
✎
13:47
|
в общим я сделал вот так
ТабДок = Новый ТабличныйДокумент; Макет = Справочники.КонтрагентыСчета.ПолучитьМакет("Печать"); // Заголовок //Область = Макет.ПолучитьОбласть("Заголовок"); //ТабДок.Вывести(Область); // Шапка Шапка = Макет.ПолучитьОбласть("Шапка"); Шапка.Параметры.Заполнить(ЭтотОбъект); Шапка.Параметры.Наименование = "" + ЭтотОбъект.Наименование + Символы.ПС + "ФИО" + ЭтотОбъект.Фамилия + Символы.ПС + "г." + ЭтотОбъект.Город + Символы.ПС + "с." + ЭтотОбъект.Село + Символы.ПС + "обл." + ЭтотОбъект.Область + Символы.ПС + "Р-н" + ЭтотОбъект.Район + Символы.ПС + "ул." + ЭтотОбъект.Улица + Символы.ПС ; ТабДок.Вывести(Шапка); ТабДок.ОтображатьСетку = Ложь; ТабДок.Защита = Ложь; ТабДок.ТолькоПросмотр = Ложь; ТабДок.ОтображатьЗаголовки = Ложь; ТабДок.Показать(); Теперь где-то тут нужно поставить проверку заполнения. |
|||
16
Wobland
29.04.13
✎
13:59
|
зачем наврал в (13)?
|
|||
17
cw014
29.04.13
✎
14:00
|
(15) Какой бюджет?
|
|||
18
Wobland
29.04.13
✎
14:00
|
+(11) Шапка.Параметры.ИмяРеквизита=ТекРеквизит.Имя;
Шапка.Параметры.ЗначениеРеквизита=ЭтотОбъект[ЗначениеРеквизита]; ТабДок.Вывести(Шапка); |
|||
19
Wobland
29.04.13
✎
14:01
|
даже Шапка.Параметры.ИмяРеквизита=ТекРеквизит.Синоним
|
|||
20
ildarian
29.04.13
✎
14:52
|
(17) не понял вопрос
Сделал так : Процедура Печать() Экспорт ТабДок = Новый ТабличныйДокумент; Макет = Справочники.КонтрагентыСчета.ПолучитьМакет("Печать"); Шапка = Макет.ПолучитьОбласть("Шапка"); Шапка.Параметры.Заполнить(ЭтотОбъект); Шапка.Параметры.Наименование = "" + ?(ЗначениеЗаполнено(ЭтотОбъект.Наименование),ЭтотОбъект.Наименование + Символы.ПС,"") + ?(ЗначениеЗаполнено(ЭтотОбъект.Фамилия),"ФИО: " + ЭтотОбъект.Фамилия,"")+ Символы.ПС + ?(ЗначениеЗаполнено(ЭтотОбъект.Город),"г. " + ЭтотОбъект.Город + Символы.ПС,"") + ?(ЗначениеЗаполнено(ЭтотОбъект.Село),"с. " + ЭтотОбъект.Село + Символы.ПС,"") + ?(ЗначениеЗаполнено(ЭтотОбъект.Область),"обл. " + ЭтотОбъект.Область + Символы.ПС,"") + ?(ЗначениеЗаполнено(ЭтотОбъект.Район),"Р-н. " + ЭтотОбъект.Район + Символы.ПС,"") + ?(ЗначениеЗаполнено(ЭтотОбъект.Улица),"ул. " + ЭтотОбъект.Улица + Символы.ПС,"") + ?(ЗначениеЗаполнено(ЭтотОбъект.Дом),"Дом. " + ЭтотОбъект.Дом + Символы.ПС,"") + ?(ЗначениеЗаполнено(ЭтотОбъект.Корпус),"Корп. " + ЭтотОбъект.Корпус + Символы.ПС,"") + ?(ЗначениеЗаполнено(ЭтотОбъект.Офис),"офис: " + ЭтотОбъект.Офис + Символы.ПС,"") ; ТабДок.Вывести(Шапка); ТабДок.ОтображатьСетку = Ложь; ТабДок.Защита = Ложь; ТабДок.ТолькоПросмотр = Ложь; ТабДок.ОтображатьЗаголовки = Ложь; ТабДок.Показать(); КонецПроцедуры Может кому-то это поможет. |
|||
21
mikecool
29.04.13
✎
14:55
|
(20) кому это может помочь?
|
|||
22
ildarian
29.04.13
✎
14:57
|
(21) например тому у кого возникнет такая же проблема
|
|||
23
Wobland
29.04.13
✎
15:01
|
(22) тому мы посоветуем делать заполнение и вывод области пореквизитно
|
|||
24
Tedman
29.04.13
✎
15:03
|
(20) Боже мой... Тебе же написали в (11) как это делается.
спр=Справочники.Контрагенты.НайтиПоКоду(); // Берешь твой объект Для Каждого ТекРеквизит Из спр.Метаданные().Реквизиты Цикл // Начинаешь перебирать все его реквизиты ЗначениеРеквизита=спр[ТекРеквизит.Имя]; // Берешь значение какого-то реквизита Если ЗначениеЗаполнено(ЗначениеРеквизита) Тогда // если оно заполнено делаешь Область = ПолучитьОбласть("ИменнованнаяОбласть"); Область.Параметр.ЗначениеПараметра = "Значение твоего параметра"; ТабДок.Присоединить(Область); // Почитай разницу в синтаксис-помошнике для табличного документа между Присоединить и Вывести. КонецЕсли; КонецЦикла; Я всё понимаю, и все мы были новичками и когда-то даже ходить не умели, но я соглашусь с (21), и очень надеюсь, что это никому и никогда не поможет. Потому что когда я встречаю такой код, то становится как-то не по себе (мягко говоря). И ещё. Открой УТ 10.3 типовую (например) и посмотри формирование печатной формы, например, у счета. Там есть колонка, которая добавляется в зависимости от того, какую ты в настройка программы выбрал доп. колонку печати (Артикул или код). Там очень простой и понятный код формирования печатных форм с присоединяемой колонкой в шапке и строках. |
|||
25
Aprobator
29.04.13
✎
15:04
|
эх, и я когда то был в 1С полным лопухом. Как меня тут пинали *по щеке стекает слеза ностальгии*
|
|||
26
Wobland
29.04.13
✎
15:06
|
(24) получать одну и ту же область в цикле нехорошо
|
|||
27
Tedman
29.04.13
✎
15:07
|
(25) + 1. Да все такие были)))
(1) Так что не ленись, открой формирование любой печ. формы и почитай, как это делается. Времени потратишь - час - два максимум, а пользы от этого будет много, особенно если ты собираешься заниматься 1сом серьёздно. |
|||
28
Tedman
29.04.13
✎
15:08
|
(24) Согласен. Это всё понедельник. Я особо и не думал.
|
|||
29
Aprobator
29.04.13
✎
15:13
|
(28) такие вещи на уровне рефлексов должны быть )
|
|||
30
ildarian
29.04.13
✎
15:26
|
Всем спасибо за помощь.
честно говоря мне тот код посоветовали на другом форуме мне он показался проще, а конфигурация у меня сильно маленькая чтобы заметить изменения в производительности. Но всё же переделаю по Вашему примеру По поводу печатных форм в УТ, почитаю спасибо! |
|||
31
Aprobator
29.04.13
✎
15:28
|
дело не в конфе, пока учишься - формируется общий подход. Этот как почерк. Одно дело его поставить сразу, а другое после его исправлять.
|
|||
32
1Сергей
29.04.13
✎
15:32
|
пелядь, какие все вумные... типа, уже не новички, да? пороху понюхали?
|
|||
33
Aprobator
29.04.13
✎
15:33
|
(32) завидно?
|
|||
34
Wobland
29.04.13
✎
16:30
|
(32) а у тебя даже полоска на 2 см длиннее моей
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |