8.х Вывести ТабличныйДокумент в ПолеТабличногоДокумента

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Berezin, 29 ноя 2010.

  1. TopicStarter Overlay
    Berezin
    Offline

    Berezin Опытный в 1С

    Регистрация:
    27 сен 2010
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте. Проблемма: есть готовый Табличный Документ, не могу вывести его в ПолеТабличногоДокумента, синтаксис использую следующий:


    Код:
     ЭлементыФормы.Результат.Вывести(ТабДокумент);
    
    В чем может быть проблема?. Смотрел в С.П вроде все должно работать, в рез - те ничего пусто, ошибку не выдает.
  2. UnNone
    Offline

    UnNone Опытный в 1С

    Регистрация:
    21 мар 2007
    Сообщения:
    148
    Симпатии:
    0
    Баллы:
    26
    А вы уверены, что в переменной ТабДокумент есть что выводить, может он пустой?
  3. has
    Offline

    has Опытный в 1С

    Регистрация:
    18 июн 2009
    Сообщения:
    708
    Симпатии:
    0
    Баллы:
    26
    хм...откуда это у элемента формы ПолеТабличногоДокумента появился метод Вывести()?

    есть метод...признаю, был не прав....значит ТабДокумент пустой
  4. TopicStarter Overlay
    Berezin
    Offline

    Berezin Опытный в 1С

    Регистрация:
    27 сен 2010
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    Как нет?, не пустой я сам его заполнял, на основании макета. Если я его просто "Показать" делаю, то все отлично выводиться, что мне нужно.


    Код:
    ТабДокумент.Показать("ОТЧЕТ ПО ОСТАТКАМ:");
    



    Вот я то же думал, по поводу вывода, через ЭлементыФормы, не верно, но в модуле, кроме как через ЭлементыФормы, нет возможности сослаться на ТабДокумент, на прямую или через реквизит, не видит он. Я решил, отчет сформировать не через Компоновщик, а так, мне необходимо, что бы в поле формы выводился результат. Может подскажите как это сделать?
  5. has
    Offline

    has Опытный в 1С

    Регистрация:
    18 июн 2009
    Сообщения:
    708
    Симпатии:
    0
    Баллы:
    26
    Ниче не понял, в каком модуле? Что значит сослаться?
  6. TopicStarter Overlay
    Berezin
    Offline

    Berezin Опытный в 1С

    Регистрация:
    27 сен 2010
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    т.е создал внешнюю обработку, в форме есть поле результат, мне необходимо туда вывести табличный документ., если использую код:

    Код:
    ЭлементыФормы.Результат.Вывести(ТабДокумент);
    
    
    ставил точку останова, смотрел значение переменной ТабДокумент, не пустое и имеет тип ТабличныйДокумент., но поле формы пустое, и возник вопрос почему?
  7. has
    Offline

    has Опытный в 1С

    Регистрация:
    18 июн 2009
    Сообщения:
    708
    Симпатии:
    0
    Баллы:
    26
    покажи код
  8. TopicStarter Overlay
    Berezin
    Offline

    Berezin Опытный в 1С

    Регистрация:
    27 сен 2010
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    ВОТ

    Код:
    //Создадим Массив для Групп и Номенклатуры.
    МассивГруппЗапроса = Новый Массив;
    МассивНоменклатуры = Новый Массив;
    ИтоговаяНоменклатура = Новый Массив;
    МассивОрганизацй = Новый Массив; //нужен для разделения организаций
    //	МассивНаименований.Очистить();
    
    //Записываем номенклатуры из ТФ в перем.
    Если ВыбраннаяНоменклатура.Количество()> 0 <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/тогда')">тогда		</span>
    МассивНоменклатуры.Очистить();
    
    Для Каждого ЭлементаВыбраннаяНоменклатура из ВыбраннаяНоменклатура цикл
    МассивНоменклатуры.Добавить(ЭлементаВыбраннаяНоменклатура.Значение);
    КонецЦикла;
    
    <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/иначе')">	Иначе			</span>
    МассивНоменклатуры = ПНаименованиеПоиска;
    
    КонецЕсли;
    
    
    //Проходимся по группам из ТФ, пока не выбирем все вложенные элементы групп их записываем в перем.
    Если ВыбраннаяГруппа.Количество()>0 тогда
    
    Для Каждого  ЭлементаВыбраннаяГруппа из ВыбраннаяГруппа цикл
    ЗапросГруппы(ЭлементаВыбраннаяГруппа.Значение);
    КонецЦикла;
    
    Если ВыбраннаяНоменклатура.Количество()= 0 тогда;
    МассивНоменклатуры = МассивНаименований;
    КонецЕсли;
    
    КонецЕсли;
    
    
    //Если в ТФ не пустые Элементы и Группы тогда.
    
    Если ВыбраннаяГруппа.Количество()>0 и ВыбраннаяНоменклатура.Количество()> 0 тогда
    
    Для Каждого ЭлементаМассивНоменклатуры из МассивНоменклатуры цикл
    Поиск =  МассивНаименований.Найти(ЭлементаМассивНоменклатуры);                                 
    Если Поиск <> Неопределено тогда
    ИтоговаяНоменклатура.Добавить(ЭлементаМассивНоменклатуры);		 
    КонецЕсли;
    КонецЦикла;
    
    МассивНоменклатуры = ИтоговаяНоменклатура;
    КонецЕсли; 
    
    
    
    НужнаяДата = ТекущаяДата();
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |	спрНоменклатура.Наименование КАК спрНаименование,
    |	спрНоменклатура.БазоваяЕдиницаИзмерения КАК спрЕдИзм,
    |	ЕСТЬNULL(ХозрасчетныйОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток,
    |	ХозрасчетныйОстатки.Организация,
    |	ХозрасчетныйОстатки.Субконто2 КАК Склад
    |ИЗ
    |	Справочник.Номенклатура КАК спрНоменклатура
    |		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки(
    |				&Дата,
    |				Счет В (&Счет),
    |				,
    |				Субконто1.Наименование В (&НаименованиеПоиска)
    |					И Организация.Наименование В (&ПоискОрганизации)
    |					И Субконто2.Наименование В (&ПоискСклада)) КАК ХозрасчетныйОстатки
    |		ПО спрНоменклатура.Ссылка = ХозрасчетныйОстатки.Субконто1
    |ГДЕ
    |	спрНоменклатура.ЭтоГруппа = &ЭтоГруппа
    |
    |УПОРЯДОЧИТЬ ПО
    |	спрНаименование";	
    
    Запрос.УстановитьПараметр("Дата",НужнаяДата);	
    Запрос.УстановитьПараметр("Счет",ПСчет);	
    Запрос.УстановитьПараметр("НаименованиеПоиска",МассивНоменклатуры);	
    Запрос.УстановитьПараметр("ПоискОрганизации",ППоискОрганизации);	
    Запрос.УстановитьПараметр("ПоискСклада",ППоискСклада);	
    Запрос.УстановитьПараметр("ЭтоГруппа",ПЭтоГруппа);	
    
    
    ТЗШапка = Запрос.Выполнить().Выгрузить();
    НоваяСтрока = ТЗШапка.Добавить();
    НоваяСтрока.спрНаименование = "ПоследницЭлемент";
    
    
    // Это вся хрень для описание типа колонки
    КЧ = Новый КвалификаторыЧисла(15,2);
    КС = Новый КвалификаторыСтроки(100);
    
    Массив = Новый Массив;
    Массив.Добавить(Тип("Строка"));
    ОписаниеС = Новый ОписаниеТипов(Массив,,КС);
    
    Массив.Добавить(Тип("Число"));
    
    ОписаниеЧ = Новый ОписаниеТипов(Массив,,КЧ);
    
    
    
    
    ТаблицаДляПоказа = Новый ТаблицаЗначений;
    ТаблицаДляПоказа.Колонки.Добавить("КоличествоОстаток1",ОписаниеЧ,"КоличествоОстаток1");
    ТаблицаДляПоказа.Колонки.Добавить("КоличествоОстаток2",ОписаниеЧ,"КоличествоОстаток2");
    ТаблицаДляПоказа.Колонки.Добавить("КоличествоОстаток3",ОписаниеЧ,"КоличествоОстаток3");
    ТаблицаДляПоказа.Колонки.Добавить("Склад",ОписаниеС,"Склад");
    ТаблицаДляПоказа.Колонки.Добавить("спрЕдИзм",ОписаниеС,"спрЕдИзм");
    ТаблицаДляПоказа.Колонки.Добавить("спрНаименование",ОписаниеС,"спрНаименование");
    ТаблицаДляПоказа.Колонки.Добавить("Организация1",ОписаниеС,"Организация1");
    ТаблицаДляПоказа.Колонки.Добавить("Организация2",ОписаниеС,"Организация2");
    ТаблицаДляПоказа.Колонки.Добавить("Организация3",ОписаниеС,"Организация3");
    
    
    ОрганизацияТекущая =ТЗШапка[0].Организация;
    ТекущееНаименование = ТЗШапка[0].спрНаименование;
    
    Счет = 0;
    
    
    Для Каждого ЭлементТЗШапка из ТЗШапка цикл
    
    ПоискОр = МассивОрганизацй.Найти(ЭлементТЗШапка.Организация);//Ищем организации
    
    Если ПоискОр = Неопределено   тогда
    МассивОрганизацй.Добавить(ЭлементТЗШапка.Организация);
    КонецЕсли;
    
    ~ВНачало:
    Если ТекущееНаименование = ЭлементТЗШапка.спрНаименование тогда
    Счет = Счет + 1;
    Склад = ЭлементТЗШапка.Склад;
    ЕдИзм = ЭлементТЗШапка.спрЕдИзм; 
    
    
    Если Счет = 1 тогда
    Количество1 = ЭлементТЗШапка.КоличествоОстаток;
    Организация1 = ЭлементТЗШапка.Организация;
    НаименованиеНачальное = ЭлементТЗШапка.спрНаименование;	  
    
    ИначеЕсли Счет = 2 тогда
    Количество2 = ЭлементТЗШапка.КоличествоОстаток;
    Организация2 = ЭлементТЗШапка.Организация;
    ИначеЕсли Счет = 3 тогда
    Количество3 = ЭлементТЗШапка.КоличествоОстаток;
    Организация3 = ЭлементТЗШапка.Организация;
    КонецЕсли;
    
    
    
    <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/иначе')">		Иначе	</span>  
    
    
    ДобавлениеВТаблицу =  ТаблицаДляПоказа.Добавить();
    ДобавлениеВТаблицу.КоличествоОстаток1  =  Количество1;
    ДобавлениеВТаблицу.КоличествоОстаток2  =  Количество2;
    ДобавлениеВТаблицу.КоличествоОстаток3  =  Количество3;
    ДобавлениеВТаблицу.Организация1        =  Организация1;
    ДобавлениеВТаблицу.Организация2        =  Организация2;
    ДобавлениеВТаблицу.Организация3        =  Организация3;
    ДобавлениеВТаблицу.Склад              =  Склад;
    ДобавлениеВТаблицу.спрЕдИзм           =  ЕдИзм;
    
    
    
    Если Счет > 0 тогда
    ДобавлениеВТаблицу.спрНаименование	  =  НаименованиеНачальное;
    <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/иначе')">	Иначе	</span>
    ДобавлениеВТаблицу.спрНаименование    =  ЭлементТЗШапка.спрНаименование;
    КонецЕсли;
    
    ТекущееНаименование = ЭлементТЗШапка.спрНаименование;
    Счет = 0;
    
    Перейти ~ВНачало;
    
    КонецЕсли;
    КонецЦикла;
    
    МассивОрганизацй.Удалить(МассивОрганизацй.Количество()-1);			
    
    
    
    ТабДокумент = Новый ТабличныйДокумент;
    Макет = ПолучитьМакет("ТаблицаИтог");
    //Макет = ПолучитьМакет("ВнешняяОбработка.РассылкаПисем.Макет.Мэйлы");
    
    ОбластьМакета = Макет.ПолучитьОбласть("ШапкаТаблицы|Основная");
    ТабДокумент.Вывести(ОбластьМакета);
    
    
    
    
    
    ОбластьМакета = Макет.ПолучитьОбласть("ШапкаТаблицы|ВыборОрганизация");
    
    Для Каждого ЭлементаМассиОрганизаций из МассивОрганизацй <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/цикл')">цикл	</span>
    ОбластьМакета.Параметры.Организация = ЭлементаМассиОрганизаций;
    ТабДокумент.Присоединить(ОбластьМакета);
    КонецЦикла;
    
    
    
    
    
    Для Каждого ЭлеметаТаблицаДляПоказа из ТаблицаДляПоказа цикл
    
    ОбластьМакета = Макет.ПолучитьОбласть("Строка|Основная");
    ОбластьМакета.Параметры.Номенклатура = ЭлеметаТаблицаДляПоказа.спрНаименование;
    ОбластьМакета.Параметры.ЕдИзм =        ЭлеметаТаблицаДляПоказа.спрЕдИзм;
    ОбластьМакета.Параметры.Склад =        ЭлеметаТаблицаДляПоказа.Склад;
    ТабДокумент.Вывести(ОбластьМакета);
    
    
    //Здесь мы разбивали по организациям 
    
    
    
    
    
    Если   МассивОрганизацй.Количество() = 1 тогда
    
    ОбластьМакета = Макет.ПолучитьОбласть("Строка|ВыборОрганизация");
    
    Если ЭлеметаТаблицаДляПоказа.КоличествоОстаток1 <> Неопределено  тогда
    ОбластьМакета.Параметры.КолОстаток = ЭлеметаТаблицаДляПоказа.КоличествоОстаток1;
    Иначе 
    ОбластьМакета.Параметры.КолОстаток = "-";	  		 
    КонецЕсли;
    ТабДокумент.Присоединить(ОбластьМакета);
    
    
    ИначеЕсли  МассивОрганизацй.Количество() = 2 тогда
    
    ОбластьМакета = Макет.ПолучитьОбласть("Строка|ВыборОрганизация");
    
    Если ЭлеметаТаблицаДляПоказа.КоличествоОстаток1 <> Неопределено  тогда
    ОбластьМакета.Параметры.КолОстаток = ЭлеметаТаблицаДляПоказа.КоличествоОстаток1;
    Иначе 
    ОбластьМакета.Параметры.КолОстаток = "-";
    КонецЕсли;
    ТабДокумент.Присоединить(ОбластьМакета);
    
    
    
    
    Если ЭлеметаТаблицаДляПоказа.КоличествоОстаток2 <> Неопределено тогда
    ОбластьМакета.Параметры.КолОстаток = ЭлеметаТаблицаДляПоказа.КоличествоОстаток2;
    Иначе 
    ОбластьМакета.Параметры.КолОстаток = "-";	  		 
    КонецЕсли;
    ТабДокумент.Присоединить(ОбластьМакета);
    
    
    ИначеЕсли  МассивОрганизацй.Количество() = 3 тогда
    
    Если ЭлеметаТаблицаДляПоказа.КоличествоОстаток1 <> Неопределено тогда
    ОбластьМакета.Параметры.КолОстаток = ЭлеметаТаблицаДляПоказа.КоличествоОстаток1;
    Иначе 
    ОбластьМакета.Параметры.КолОстаток = "-";
    КонецЕсли;
    ТабДокумент.Присоединить(ОбластьМакета);
    
    Если ЭлеметаТаблицаДляПоказа.КоличествоОстаток2 <> Неопределено тогда
    ОбластьМакета.Параметры.КолОстаток = ЭлеметаТаблицаДляПоказа.КоличествоОстаток2;
    Иначе 
    ОбластьМакета.Параметры.КолОстаток = "-";
    КонецЕсли;
    ТабДокумент.Присоединить(ОбластьМакета);
    
    Если ЭлеметаТаблицаДляПоказа.КоличествоОстаток3 <> Неопределено тогда
    ОбластьМакета.Параметры.КолОстаток = ЭлеметаТаблицаДляПоказа.КоличествоОстаток3;
    Иначе 
    ОбластьМакета.Параметры.КолОстаток = "-";	 
    КонецЕсли;
    ТабДокумент.Присоединить(ОбластьМакета);			
    
    
    КонецЕсли;			
    
    
    
    КонецЦикла;
    ДлинаДокумента = ("R"+(ТаблицаДляПоказа.Количество()+1));
    ТабДокумент.Область("R2C1:"+ДлинаДокумента+"C1").ШиринаКолонки = 85;
    
    
    
    ТабДокумент.Область("R2C4:"+ДлинаДокумента+"C6").ВыделятьОтрицательные = Истина;
    ТабДокумент.Область("R2C4:"+ДлинаДокумента+"C6").ГоризонтальноеПоложение = ГоризонтальноеПоложение.Право;
    //ТабДокумент.Показать("ОТЧЕТ ПО ОСТАТКАМ:");
    ЭлементыФормы.Результат.Вывести(ТабДокумент.Область("R1C1:R40C40")); 
    
  9. has
    Offline

    has Опытный в 1С

    Регистрация:
    18 июн 2009
    Сообщения:
    708
    Симпатии:
    0
    Баллы:
    26
    А че в конце?
    Код:
    ЭлементыФормы.Результат.Вывести(ТабДокумент.Область("R1C1:R40C40"));
    
    
    Так пробовал?
    Код:
    ЭлементыФормы.Результат.Вывести(ТабДокумент);
    
    Выложи тогда сам отчет, посмотрю. Так сложно что-то сказать
  10. TopicStarter Overlay
    Berezin
    Offline

    Berezin Опытный в 1С

    Регистрация:
    27 сен 2010
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    Код:
     ЭлементыФормы.Результат.Вывести(ТабДокумент);
    
    - сперва так и пробовал, не могу понят в чем дело?
  11. has
    Offline

    has Опытный в 1С

    Регистрация:
    18 июн 2009
    Сообщения:
    708
    Симпатии:
    0
    Баллы:
    26
    Хм. У себя попробовал, все норм. Выложи отчет тогда
  12. UnNone
    Offline

    UnNone Опытный в 1С

    Регистрация:
    21 мар 2007
    Сообщения:
    148
    Симпатии:
    0
    Баллы:
    26
    Может что-то в настройках самого поля табличного документа накрутил.
    Попробуй удалить поле табличного документа и заново создать.
  13. TopicStarter Overlay
    Berezin
    Offline

    Berezin Опытный в 1С

    Регистрация:
    27 сен 2010
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    Помогло пересоздание на форма, "ПоляТабличного документа" , бред какой - то. Всем спасибо. (Допер сам.)

Поделиться этой страницей