|
v7: В цепочке Документ->СправочникТовары->Отчет - не выводится Таблица Отчета [решено] | ☑ | ||
---|---|---|---|---|
0
aka AMIGO
01.10.14
✎
12:28
|
Отчет сам по себе работает, проверено.. Но работает он, если его вызвать из Справочника (по кнопке), т.е. цепочка короче: Справочник->Отчет
вот она, таблица Отчета: http://gyazo.com/d1b7f61de87061fa4549cac17283b05e Однако, если вызов Справочника идет из документа: http://gyazo.com/9308dd44cd5e7f5f8d6e76ec756ce7a5 то вместо таблицы появляется диалог отчета (!), хотя я проследил по отладчику, в Отчете процесс доходит до последнего оператора "Таблица.Показать(..)"! ЗЫ. на форме документа - кнопка выбора товара из Справочника, сам Отчет вызывается нажатием кнопки на форме списка Справочника.. и вот такая неприятность.. http://gyazo.com/11e2c1561111ebc40986a38324f9e967 в чем может быть причина? в "глубине" вызовов? |
|||
1
пипец
01.10.14
✎
12:45
|
в приоткрытии отчета смотри чего в отчет передается
|
|||
2
aka AMIGO
01.10.14
✎
12:53
|
(1) да посмотрел уже.. товар передаю, ..ТекущийЭлемент()
|
|||
3
aka AMIGO
01.10.14
✎
12:56
|
+2 Справочник/ФормаСписка/КнопкаИнфоТовар - это ведь совпадает полностью, как при вызове отчета "чисто" из формы списка Справочника, так и при вызове формы спискаСправочника из документа..
никакого различия-то нет.. |
|||
4
Chum
01.10.14
✎
12:58
|
(1) Смотри или покажи процедуру ПриОткрытии() в модуле отчета.
|
|||
5
aka AMIGO
01.10.14
✎
12:59
|
переданный товар "торчит" в строке диалога..
|
|||
6
Chum
01.10.14
✎
13:01
|
Кстати, по кнопке вызова отчета что вызывается?
Я к тому, что может быть имеет смысл вызывать уникальную форму? Использовать #, например при вызове формы отчета? |
|||
7
aka AMIGO
01.10.14
✎
13:03
|
(4) вот вызов Отчета из Справочника (по нажатию кнопки "ИнфоТовар"):
Процедура ИнфоТовар() Парам = СоздатьОбъект("СписокЗначений"); Парам.Установить("Отчет","ИнфоТовар"); Парам.Установить("Товар", ТекущийЭлемент()); ОткрытьФорму("Отчет.ИнфаПоТовару",Парам); КонецПроцедуры а это - в самом Отчете: Процедура ПриОткрытии() Если ТипЗначенияСтр(Форма.Параметр)="СписокЗначений" Тогда Пар = Форма.Параметр; Если Пар.Получить("Отчет")="ИнфоТовар" Тогда ВыбТовар = Пар.Получить("Товар"); Сформировать(); КонецЕсли; КонецЕсли; КонецПроцедуры |
|||
8
Chum
01.10.14
✎
13:05
|
(7)
Процедура ПриОткрытии() Если ТипЗначенияСтр(Форма.Параметр)="СписокЗначений" Тогда СтатусВозврата(0); // предотвратит открытие формы Пар = Форма.Параметр; Если Пар.Получить("Отчет")="ИнфоТовар" Тогда ВыбТовар = Пар.Получить("Товар"); Сформировать(); КонецЕсли; КонецЕсли; КонецПроцедуры |
|||
9
aka AMIGO
01.10.14
✎
13:05
|
(8) ммм.. пробую..
|
|||
10
aka AMIGO
01.10.14
✎
13:08
|
(8) форма не появляется, но и Таблицы тоже нет
|
|||
11
aka AMIGO
01.10.14
✎
13:09
|
Ладушки, ребята..
пусть наши логисты смотрят ИнфоТовар, вызывая справочник.. это, конечно, неудобно (левой ногой правое ухо), но 7-ка - она есть 7-ка.. Спасибо! |
|||
12
пипец
01.10.14
✎
13:19
|
хмм посмотри как реализована кнопка - взаиморасчеты в типовой ТИС на документах например
|
|||
13
пипец
01.10.14
✎
13:21
|
(8) СтатусВозврата(0); // предотвратит открытие формы не туда засунул
(11) сначала приоткрытии потом сформировать - потом Форма.Закрыть() и радуйся жизни |
|||
14
aka AMIGO
01.10.14
✎
13:23
|
щас попробую порадоваться :)
минутку.. |
|||
15
aka AMIGO
01.10.14
✎
13:28
|
нет, пусто на экране..
хотя все запросы выполняются, наполнение Таблицы идет, как положено.. да ладно, отбой, расскажу, как сведения по товару получить, пусть не очень логично, но .. получат.. |
|||
16
пипец
01.10.14
✎
13:29
|
статусвозврата - убрать не забудь , он тут нафинг не нужен
|
|||
17
aka AMIGO
01.10.14
✎
13:29
|
(16) убрал сразу :)
|
|||
18
Злопчинский
01.10.14
✎
13:30
|
мдя...
|
|||
19
aka AMIGO
01.10.14
✎
13:31
|
(18) чё? есть идеи? :)
|
|||
20
пипец
01.10.14
✎
13:32
|
+ ты уверен что нужные галочки стоят, на форме ? , все ? у мну все отрабатывает , четко , при открытии все параметры в форму- заполняются , потом сформировать (там четко надо понимать какие параметры , мож она сразу на печать пытается) , потом в самом приоткрыти внизу , Форма.Закрыть();
- Если ф приоткрытии сформировать не отрабатывает то дело в чем то жжжж (с) не спроста, может там не сформировать а другая процедура |
|||
21
Масянька
01.10.14
✎
13:34
|
Извините, что вмешиваюсь, но - а что в Сформировать()?
|
|||
22
пипец
01.10.14
✎
13:34
|
угу ТекущийЭлемент()
|
|||
23
пипец
01.10.14
✎
13:34
|
это в справочнике , в документе у тя как ?
|
|||
24
aka AMIGO
01.10.14
✎
13:46
|
(23) так в документе - неважно, важно одно - я в Отчет передаю элемент справочника.
(21) - что в Сформировать()? - СоздатьОбъект("Таблица"); далее идут запросы к регистрам (6 штук), в циклах обработки запросов стоят выводы секций Таблицы, по условию, по необходимости.. в конце Таблица.ТолькоПросмотр(1); Таблица.Показать("ИнфоТовар"); ну и, наконец, Форма.Закрыть(0); вот и всё, собственно.. |
|||
25
пипец
01.10.14
✎
13:51
|
Таблица.ТолькоПросмотр(1);
Таблица.Показать("ИнфоТовар"); чую тут дето порылось ------------ Форма.Закрыть(); в процедуре - приоткрытии - последней строкой ;)) |
|||
26
Масянька
01.10.14
✎
13:52
|
(24) Я так просто спрашиваю: а Форма.Закрыть() зачем?
|
|||
27
пипец
01.10.14
✎
13:53
|
(26) соль хорошо - хлеб соли , чай соли (с) народная поговорка ;))
|
|||
28
Ёпрст
01.10.14
✎
13:54
|
(0) всё не читал..
С модальной формы отчет вызывается, не ? Если да, то Таблицы на просмотр не будет, её только на печать можно отправить |
|||
29
aka AMIGO
01.10.14
✎
13:55
|
(28) нет, не с модальной
|
|||
30
пипец
01.10.14
✎
13:55
|
вопщим сначала сделай чтобы у тя отчет СО всеми параметрами отрабатывал через приоткрытии , потом уже далее
Зы ну если еще и док-т модально открывается ;))) |
|||
31
пипец
01.10.14
✎
13:56
|
даты точно те ? в отчете
|
|||
32
Масянька
01.10.14
✎
13:56
|
(27) 2 раза Форма.Закрыть()...
|
|||
33
Ёпрст
01.10.14
✎
14:01
|
Форма.Закрыть - выкинуть везде, в ПриОткрытии воткнуть СтатусВозврата(0)
далее смотреть, что выводится в Таблицу отладчиком |
|||
34
пипец
01.10.14
✎
14:02
|
(32) не уверен , возможно в приоткрыти форма закрыть отсутствует ...
ЗЫ подмывает сделать шаблон и выложить ;)) ЗЫЫ (29) все таки сначала нужно вывести отчет просто на экран - с параметрами как в приоткрытии , и смотреть сформируется или нет (33) смысл ? |
|||
35
aka AMIGO
01.10.14
✎
14:02
|
(30) все параметры ПриОткрытии правильные, ни док, ни справочник модально не открываются, я вообще не применяю этот метод нигде
|
|||
36
Масянька
01.10.14
✎
14:04
|
У меня в ТОРГ-12 (из документа выводится печ. форма)
Процедура ПриОткрытии() Если ПустоеЗначение(Форма.Параметр) = 0 Тогда Докум = Форма.Параметр.Получить("Контекст"); ДатаДок = Докум.ДатаДок; Устройство = Форма.Параметр.Получить("Устройство"); КолвоКопий = Форма.Параметр.Получить("КоличествоКопий"); ТабЧасть = Форма.Параметр.Получить("Закладка"); // будем считать, что высота 1 строки у нас есть - в миллиметрах ВысотаОднойСтроки = 4.1; // инициализация нужных переменных ИнициализацияПеременныхДляПечати(Докум); // опредение таб. части для выборки товаров ОпределениеМнЧ(Докум, ТабЧасть); Если (КоличествоСтрок = 0) Тогда Предупреждение("В документе нет товаров."); СтатусВозврата(0); Иначе Печать(Докум, Устройство, КолвоКопий); КонецЕсли; Статусвозврата(0); Возврат; КонецЕсли; КонецПроцедуры // ПриОткрытии() Процедура Печать(ПечДокумент, СразуНаПринтер = 0, КолЭкз = 1) НомерДок = глУдалениеВедущихНулей(ПечДокумент.НомерДок); КурсРублей = глКурсДляВалюты(глРубли, ДатаДок); ПечТабл = СоздатьОбъект("Таблица"); ПечТабл.ИсходнаяТаблица("Таблица"); Валюта = ПечДокумент.Валюта; Курс = ПечДокумент.Курс; СуммаВклНП = ПечДокумент.СуммаВклНП; СуммаВклНДС = ПечДокумент.СуммаВклНДС; УчитыватьНДС = ПечДокумент.УчитыватьНДС; Скидка = ПечДокумент.Скидка; Фирма = ПечДокумент.Фирма; //Страницы = РазбитьНаСтраницы(ПечДокумент); Страницы = РазбитьНаСтраницы(МнЧ); Инициализация(); Страницы.ВыбратьСтроки(); Пока Страницы.ПолучитьСтроку() = 1 Цикл ВывестиСтраницу(Страницы, ПечТабл, ПечДокумент); КонецЦикла; ПечТабл.Опции(0, 1, 0, 0, "ОпцииПечатиТОРГ12", "ОпцииПечатиТОРГ12"); ПечТабл.ПараметрыСтраницы(2, 100, , 5, 5, 5, 4, , , , , ); ПечТабл.ТолькоПросмотр(0); ПечТабл.Показать("Реализация" + глНомерНаПечать(ПечДокумент)); Форма.Закрыть(); КонецПроцедуры // Печать Вызывается не модально. Повторю - открывается заполненная печ. форма. |
|||
37
Ёпрст
01.10.14
✎
14:05
|
(34) Лишнее мелькание формы отчета вообще не красиво, особенно, если он формируется долго, зачем её вообще показывать, если нужен только моксель.
А так, если Таблица не показывается на экране, 100% - её открытие идёт из модальной формы, что бы там аутор не утверждал. ИЛи, переданы не верные параметры в отчет и Сформировать просто не вызывается вообще. Чудес это... не бывает, тем более, в клюшках. |
|||
38
aka AMIGO
01.10.14
✎
14:06
|
(33) в отладчике (правда, я уже писал) отчет отрабатывает,
как положено, в Сформировать() попадаю, вывод во все секции нормальный.. ну, в общем - всё, как у людей.. а вот оператор "Таблица.Показать()" не работает. |
|||
39
Масянька
01.10.14
✎
14:07
|
(37) А почему из док-а работает?
Процедура ПоКнопкеПечать(СразуНаПринтер = 0,КолЭкз = 1) Перем ИмяПечФормы; ИмяПечФормы = Строка(СокрЛП(Форма.кнПечать.Заголовок())); .... Параметры.ДобавитьЗначение(ТекЗакладка, "Закладка"); ОткрытьФорму("Отчет", Параметры, глКаталогПечФорм + ТаблицаПечФорм.ПолучитьЗначение(НомерТекущейФормы, "Файл")); КонецПроцедуры // ПоКнопкеПечать() |
|||
40
Ёпрст
01.10.14
✎
14:09
|
Тест на вшивость:
в отчете: Процедура ПриОткрытии() // Если ТипЗначенияСтр(Форма.Параметр)="СписокЗначений" //Тогда // Пар = Форма.Параметр; // Если Пар.Получить("Отчет")="ИнфоТовар" Тогда // ВыбТовар = Пар.Получить("Товар"); // Сформировать(); //КонецЕсли; //КонецЕсли; Сообщить(Форма.МодальныйРежим()); Таб = СоздатьОбъект("Таблица"); Таб.Вывести(); Таб.Показать(); СтатусВозврата(0); КонецПроцедуры |
|||
41
Ёпрст
01.10.14
✎
14:10
|
Ждём ответ, что пишет и что показывает
|
|||
42
aka AMIGO
01.10.14
✎
14:12
|
(41) ты прав.. форма списка Справочника вызывается модально..
http://gyazo.com/73856b1e184afc5b7c44a2c5e6dc6367 вот код: Процедура УстКомплекта() Твр=СоздатьОбъект("Справочник.Товары"); Твр.ИспользоватьДату(ДатаДок); //Предупреждение("Из каталога товаров следует выбирать только комплекты !!!"); Если Твр.Выбрать("Выберите комплект для сборки","")>0 Тогда Комп=Твр.ТекущийЭлемент(); модальность неявная, но она есть.. |
|||
43
aka AMIGO
01.10.14
✎
14:22
|
(40)
код переделал: http://gyazo.com/1456eae8baa46f0ebb4e9e5d9f53a7f8 результат - вывелась таблица.. хоть и суперпуперкриво.. http://gyazo.com/3f3ed1e8429755b59f50349e2d577728 |
|||
44
Масянька
01.10.14
✎
14:24
|
(43) Заполнять Ёпрст будет? :)
|
|||
45
Масянька
01.10.14
✎
14:24
|
А мне все-таки интересно - почему из док-а работает?
|
|||
46
aka AMIGO
01.10.14
✎
14:26
|
(43)+ возвращает "1"
(44) щас заполню. (45) - вот из дока-то и не работает.. а из справочника - работает |
|||
47
пипец
01.10.14
✎
14:26
|
:))) а чо , пусть заполняет ;))
(37) ну мну мелькание как раз для проверки нужно, у меня там в процессе - реквизиты меняются сто раз и создается на основе одной формы фигова туча отчетов с различными параметрами, да еще и роботом , который сеанс потом закрывает ;)) |
|||
48
Масянька
01.10.14
✎
14:27
|
(46) А про Модальный режим (см. (39) ).
Опять не работает? :( |
|||
49
Масянька
01.10.14
✎
14:28
|
(46) В док-е не работает - не фиг везде тыкать Форма.Закрыть() :)
|
|||
50
Ёпрст
01.10.14
✎
14:34
|
Если возвращает 1.. алес, таблицы на экране не будет..никогда :)
Максимум, если лень избавляться от модальности - через вк кинуть элемент управления на форму и показывать форму с внедренной таблицей, через йоксель, например |
|||
51
aka AMIGO
01.10.14
✎
14:49
|
(50) да, не получается Таблица.Показать()..
а Таблица.Вывести() выводит шаблон.. от модальности избавиться несложно.. Достаточно заменить кнопку выбора товара на реквизит.. только если шеф даст отмашку. Спасибо, кажется, всё ясно.. |
|||
52
aka AMIGO
01.10.14
✎
15:08
|
+51 заработало! :)
|
|||
53
Злопчинский
01.10.14
✎
18:08
|
кто бы сомневался..
|
|||
54
lavalit
01.10.14
✎
19:12
|
(0) Как в теме поставить [решено]?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |