|
Не выводит результат запроса в печатную форму | ☑ | ||
---|---|---|---|---|
0
Natalia_28
03.09.15
✎
15:16
|
Натолкните на мысль, если не сложно: в печатной форме не выводит часть макета, в котором должны отображаться ФИО, если данных нет мне нужно вывести пустые строки
|
|||
1
vicof
03.09.15
✎
15:18
|
хороший вопрос содержит половину ответа
|
|||
2
Natalia_28
03.09.15
✎
16:23
|
(1) а чем вопрос не угодил?
|
|||
3
Живой Ископаемый
03.09.15
✎
16:24
|
в в8 есть отладчик.
|
|||
4
ДенисЧ
03.09.15
✎
16:24
|
Если ЕстьДанные Тогда
ВывестиЗаполненныеСтроки Иначе ВывестиПустыеСтроки КонецЕсли; |
|||
5
Natalia_28
03.09.15
✎
16:25
|
(4)знаю, что задам глупый вопрос, но все же.Куда этот кусок кода вставлять?До заполнения и присвоения значений параметрам или как?
|
|||
6
Живой Ископаемый
03.09.15
✎
16:27
|
если это параметры, и ФИО незаполненно, то просто не заполняй параметры, и строки выведутся пустыми
|
|||
7
Natalia_28
03.09.15
✎
16:30
|
ФИО у меня структура и заполняется оно так:
ОбластьОсновныеВедомости.Параметры.Заполнить(ФормированиеПечатныхФорм.ФамилияИмяОтчество(Работник.Физлицо,ДатаОтчета)); После есть запрос на выборку остальных данных по работнику: табномер, должность, дата прийома на работу и дата смены должности. Если в ФИО есть не заполненое значение, то оно выводит строки, а если в запросе есть хоть что-то без данных, то вся область макета исчезает |
|||
8
salvator
03.09.15
✎
16:36
|
Код есть чё?
|
|||
9
Natalia_28
03.09.15
✎
16:37
|
Процедура ПечатьФормаСторона1(ТабДокумент, ДатаОтчета,Сотрудник, Организация, РаботникОтчета, ПустойБланк=Ложь) Экспорт
Если ТабДокумент.ВысотаТаблицы>0 Тогда ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли; // запоминаем области макета Макет = ПолучитьМакет("Типовая_Форма_МШ_6_Сторона1"); ОбластьШапка = Макет.ПолучитьОбласть("Шапка"); ОбластьОсновныеВедомости = Макет.ПолучитьОбласть("ОсновныеВедомости"); ОбластьСтрока = Макет.ПолучитьОбласть("Строка"); ОбластьВедомостьПоОрганизации = Макет.ПолучитьОбласть("ВедомостьПоОрганизации"); ОбластьПробел = Макет.ПолучитьОбласть("Пробел"); ОбластьНадпись = Макет.ПолучитьОбласть("Надпись"); ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы"); ОбластьШапка.Параметры.Организация = Организация.НаименованиеПолное; ОбластьШапка.Параметры.ЕДРПОУ = УправлениеКонтактнойИнформацией.ПолучитьКодОрганизации(УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Организация, ДатаОтчета)); ОбластьОсновныеВедомости.Параметры.Заполнить(ФормированиеПечатныхФорм.ФамилияИмяОтчество(Работник.Физлицо,ДатаОтчета)); ТабДокумент.Вывести(ОбластьШапка); Запрос = Новый Запрос; Запрос.УстановитьПараметр("Дата", ЭтотОбъект.ДатаАктуальности); Запрос.УстановитьПараметр("Работник", ЭтотОбъект.Работник); Запрос.УстановитьПараметр("Организация", ЭтотОбъект.Организация); Запрос.Текст = "ВЫБРАТЬ | РаботникиОрганизацийСрезПоследних.Организация КАК Организация, | РаботникиОрганизацийСрезПоследних.Сотрудник КАК Работник, | РаботникиОрганизацийСрезПоследних.Сотрудник.Код КАК ТабНомер, | РаботникиОрганизацийСрезПоследних.Сотрудник.Должность КАК Должность, | РаботникиОрганизацийСрезПоследних.Сотрудник.ДатаНачала КАК ДатаПрийома, | РаботникиОрганизацийСрезПоследних.Регистратор.Дата КАК ДатаИзм, | СотрудникиОрганизаций.Физлицо.Пол КАК Пол |ИЗ | РегистрСведений.РаботникиОрганизаций.СрезПоследних(&Дата, Сотрудник = &Работник) КАК РаботникиОрганизацийСрезПоследних | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций | ПО РаботникиОрганизацийСрезПоследних.Сотрудник = СотрудникиОрганизаций.Ссылка"; Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл ОбластьОсновныеВедомости.Параметры.Заполнить(Выборка); ТабДокумент.Вывести(ОбластьОсновныеВедомости); КонецЦикла; //выводим области макета ТабДокумент.Вывести(ОбластьПробел); ТабДокумент.Вывести(ОбластьНадпись); ТабДокумент.Вывести(ОбластьПробел); ТабДокумент.Вывести(ОбластьШапкаТаблицы); ТабДокумент.Вывести(ОбластьСтрока); ТабДокумент.Вывести(ОбластьПробел); ТабДокумент.Вывести(ОбластьВедомостьПоОрганизации); КонецПроцедуры // Печать() |
|||
10
salvator
03.09.15
✎
16:42
|
Если запрос пустой, то ОбластьОсновныеВедомости не выведется, что логично.
Если надо выводить ФИО, то добавь их в другую область и выводи. |
|||
11
Natalia_28
03.09.15
✎
16:44
|
(10) а можно как-то сделать чтобы ОбластьОсновныеВедомости все таки выводилась, если запрос пустой
|
|||
12
Natalia_28
03.09.15
✎
16:45
|
(10) а можно как-то все таки вывести эту область, если параметры пустые?
|
|||
13
salvator
03.09.15
✎
16:45
|
ТабДокумент.Вывести(ОбластьОсновныеВедомости)
так, наверное, да? Ну подумать-то надо хоть чуточку. |
|||
14
Natalia_28
03.09.15
✎
16:47
|
(13) я так и вывожу в цикле
|
|||
15
salvator
03.09.15
✎
16:52
|
Фамилию, имя, отчество откуда получается? Можно попробовать в одном запросе вывести их + левым соединением РС
|
|||
16
Natalia_28
03.09.15
✎
16:55
|
(15) вот откуда
ОбластьОсновныеВедомости.Параметры.Заполнить(ФормированиеПечатныхФорм.ФамилияИмяОтчество(Работник.Физлицо,ДатаОтчета)); |
|||
17
Natalia_28
03.09.15
✎
16:59
|
Общий модуль ФормированиеПечатныхФорм, функция ФамилияИмяОтчество
|
|||
18
salvator
03.09.15
✎
17:01
|
Так, стоп. Формируется же по одному сотруднику всегда?
Тогда после ОбластьОсновныеВедомости.Параметры.Заполнить(ФормированиеПечатныхФорм.ФамилияИмяОтчество(Работник.Физлицо,ДатаОтчета)); Напиши ТабДокумент.Вывести(ОбластьОсновныеВедомости); Затем после запроса Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Количество()>0 Тогда Выборка.Следующий(); ОбластьОсновныеВедомости.Параметры.Заполнить(Выборка); КонецЕсли; |
|||
19
salvator
03.09.15
✎
17:01
|
А цикл убрать.
|
|||
20
Natalia_28
03.09.15
✎
17:02
|
(18) а это удалить:
Пока Выборка.Следующий() Цикл ОбластьОсновныеВедомости.Параметры.Заполнить(Выборка); ТабДокумент.Вывести(ОбластьОсновныеВедомости); КонецЦикла; |
|||
21
Natalia_28
03.09.15
✎
17:08
|
а еще такой вопрос, если нужно так же вывести просто пустую строку таблицы если параметры пустые?
|
|||
22
User_Agronom
03.09.15
✎
17:17
|
(7) После.
|
|||
23
Natalia_28
03.09.15
✎
17:20
|
(22) ???
|
|||
24
salvator
03.09.15
✎
17:23
|
Не, все не так :) По (18) отбой.
Короче, оставляй как было. Только после запроса вместо цикла напиши Выборка = Запрос.Выполнить().Выбрать(); Выборка.Следующий(); ОбластьОсновныеВедомости.Параметры.Заполнить(Выборка); ТабДокумент.Вывести(ОбластьОсновныеВедомости); |
|||
25
User_Agronom
03.09.15
✎
17:26
|
(23) После штатного переопредели параметры и всё.
|
|||
26
Natalia_28
03.09.15
✎
17:29
|
(24), спасибо
у меня еще вопрос возник: как вывести пустую строку таблицы, если параметры пустые.А то как-то одна шапка без строчки не эстетически смотрится |
|||
27
salvator
03.09.15
✎
17:35
|
Выводи шапку если количество элементов в выборке больше 0
|
|||
28
Natalia_28
03.09.15
✎
17:40
|
(27) так:
Если Выборка.Количество()>0 Тогда |
|||
29
ibreiter
03.09.15
✎
17:43
|
Если Выборка.Количество() > 0 Тогда
Пока Выборка.Следующий() Цикл ОбластьОсновныеВедомости.Параметры.Заполнить(Выборка); ТабДокумент.Вывести(ОбластьОсновныеВедомости); КонецЦикла; Иначе ТабДокумент.Вывести(ОбластьОсновныеВедомости); КонецЕсли; |
|||
30
Natalia_28
03.09.15
✎
17:46
|
Выборка = Запрос.Выполнить().Выбрать();
//выводим области макета ТабДокумент.Вывести(ОбластьНадпись); ТабДокумент.Вывести(ОбластьПробел); Если Выборка.Количество() > 0 Тогда Пока Выборка.Следующий() Цикл ОбластьСтрока.Параметры.Заполнить(Выборка); // Сформировать структуру отбора СтруктураПоиска = Новый Структура("Наименование, Партия", Выборка.Наименование, Выборка.Партия); // Найти строки МассивНайденныхСтрок = ТаблицаЗначений.НайтиСтроки(СтруктураПоиска); Если МассивНайденныхСтрок.Количество() > 0 Тогда ТекСтрока = МассивНайденныхСтрок[0]; ОбластьСтрока.Параметры.Заполнить(ТекСтрока); КонецЕсли; ТабДокумент.Вывести(ОбластьСтрока); Для Инд = 1 по МассивНайденныхСтрок.Количество() - 1 Цикл ТекСтрока = МассивНайденныхСтрок[Инд]; ОбластьСтрока.Параметры.Заполнить(ТекСтрока); ТабДокумент.Присоединить(ОбластьСтрока); КонецЦикла; КонецЦикла; Иначе ТабДокумент.Вывести(ОбластьШапка); КонецЕсли; Добавила Выборка.Количество: шапку выводит, а пустую строку таблицы нет |
|||
31
Брегорьян
03.09.15
✎
17:53
|
>ТаблицаЗначений.НайтиСтроки(СтруктураПоиска)
и это всё в цикле в 21м веке, когда давным-давно изобрели запросы? |
|||
32
ibreiter
03.09.15
✎
17:53
|
Вы ОбластьСтрока точно получаете перед циклом?
|
|||
33
ibreiter
03.09.15
✎
17:54
|
После "Иначе" должно быть ОбластьСтрока
|
|||
34
Natalia_28
03.09.15
✎
17:58
|
все запросом получаю и перед циклом
|
|||
35
Natalia_28
03.09.15
✎
18:01
|
(33) да, увидела.На автомате написала
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |