Имя: Пароль:
1C
1C 7.7
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) Как в теме поставить [решено]?