Имя: Пароль:
1C
1С v8
Вывести результат запроса в Табличный документ
0 fanatic1
 
22.08.13
09:56
Ребята всем доброго дня!!!
прошу помогите.... почему результат не выводит в табличный документ???
&НаСервере
Процедура СформироватьТабДокумент()
    
    
     Запрос = Новый Запрос;
     Запрос.Текст =
     "ВЫБРАТЬ
     |    РеализацияТоваровУслугТовары.Ссылка,
     |    РеализацияТоваровУслугТовары.Номенклатура,
     |    РеализацияТоваровУслугТовары.Количество,
     |    РеализацияТоваровУслугТовары.хлысты,
     |    РеализацияТоваровУслугТовары.Коэффициент,
     |    РеализацияТоваровУслугТовары.Характеристика
     |ИЗ
     |    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
     |ГДЕ
     |    РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &Дата1 И &Дата2";
     Дата1 = НачалоДня('20130505');;
     Дата2 = ТекущаяДата();
    
    
     Запрос.УстановитьПараметр("Дата1", Дата1);
     Запрос.УстановитьПараметр("Дата2", дата2);
     табРезультат = Запрос.Выполнить().Выгрузить();
     табРезультат.Колонки.Добавить("Разница");
     Для Каждого СтрокаТаб Из табРезультат Цикл
         Если Не СтрокаТаб.Количество = ВернутьДлинуПоСтроке(СтрокаТаб.Характеристика)*СтрокаТаб.Коэффициент*СтрокаТаб.хлысты Тогда
             // СтрокаТаб.Разница =  СтрокаТаб.Количество -  ВернутьДлинуПоСтроке(СтрокаТаб.Характеристика)*СтрокаТаб.Коэффициент*СтрокаТаб.хлысты;
            Сообщить(СтрокаТаб.Ссылка);
            
         КонецЕсли;
     КонецЦикла;
       ТабДокумент = Новый ТабличныйДокумент;

          
           ТабДокумент.Показать();
1 Wobland
 
22.08.13
09:59
потому что ты его об этом не попросил
2 fanatic1
 
22.08.13
10:15
А как попросить???
3 Wobland
 
22.08.13
10:16
Процедура КнопкаВыполнитьНажатие(Кнопка)
    ТабДок=ЭлементыФормы.Вывод;
    Макет=ПолучитьМакет("Печать");
    Область=Макет.ПолучитьОбласть("Заголовок");
    ТабДок.Вывести(Область);
    
    Область=Макет.ПолучитьОбласть("Строка");
    Выборка=Справочники.Номенклатура.Выбрать();
    Номер=0;
    Пока Выборка.Следующий() Цикл
        Номер=Номер+1;
        Область.Параметры.Номер=Номер;
        Область.Параметры.Заполнить(Выборка);
        ТабДок.Вывести(Область);
    КонецЦикла;
    ТабДок.Показать();
КонецПроцедуры
4 fanatic1
 
22.08.13
10:19
Это нужно рисовать макет??? а можно что бы не рисовать его?? что бы он мне сразу показал все что есть в запросе??
&НаСервере
Процедура СформироватьТабДокумент()
      ТабДокумент = Новый ТабличныйДокумент;
    
     Запрос = Новый Запрос;
     Запрос.Текст =
     "ВЫБРАТЬ
     |    РеализацияТоваровУслугТовары.Ссылка,
     |    РеализацияТоваровУслугТовары.Номенклатура,
     |    РеализацияТоваровУслугТовары.Количество,
     |    РеализацияТоваровУслугТовары.хлысты,
     |    РеализацияТоваровУслугТовары.Коэффициент,
     |    РеализацияТоваровУслугТовары.Характеристика
     |ИЗ
     |    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
     |ГДЕ
     |    РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &Дата1 И &Дата2";
     Дата1 = НачалоДня('20130505');;
     Дата2 = ТекущаяДата();
    
    
     Запрос.УстановитьПараметр("Дата1", Дата1);
     Запрос.УстановитьПараметр("Дата2", дата2);
     табРезультат = Запрос.Выполнить().Выгрузить();
     табРезультат.Колонки.Добавить("Разница");
     Для Каждого СтрокаТаб Из табРезультат Цикл
         Если Не СтрокаТаб.Количество = ВернутьДлинуПоСтроке(СтрокаТаб.Характеристика)*СтрокаТаб.Коэффициент*СтрокаТаб.хлысты Тогда
             // СтрокаТаб.Разница =  СтрокаТаб.Количество -  ВернутьДлинуПоСтроке(СтрокаТаб.Характеристика)*СтрокаТаб.Коэффициент*СтрокаТаб.хлысты;
            Сообщить(СтрокаТаб.Ссылка);
            
         КонецЕсли;
     КонецЦикла;
      

          
           ТабДокумент.Вывести(табРезультат);
            

    
    
    
    
    
КонецПроцедуры    


&НаКлиенте
Процедура Сформировать(Команда)
    
     СформироватьТабДокумент();
    
    
КонецПроцедуры
5 Wobland
 
22.08.13
10:20
(4) возьми консоль запросов
6 fanatic1
 
22.08.13
10:20
Сообщить(СтрокаТаб.Ссылка); поставил что бы видеть что запрос работает, он мне сообщает,  он не выводит ((((((((((((
7 Wobland
 
22.08.13
10:21
ТабДок=Новый ТабличныйДокумент;
    Результат=Запрос.Выполнить().Выгрузить();
    
    Построитель=Новый ПостроительОтчета;
    Построитель.ИсточникДанных=Новый ОписаниеИсточникаДанных(Результат);
    Построитель.Вывести(ТабДок);
    Возврат ТабДок;
8 fanatic1
 
22.08.13
10:22
Консоль запросов не могу, т.к. у меня есть Функция ВернутьДлинуПоСтроке....
у меня характеристика как 6 м., или 12 м и т.д. а мне надо ее получить просто как 6, 12 и т.д.
9 Euguln
 
22.08.13
10:22
Показать() надо на клиенте выполнять
10 fanatic1
 
22.08.13
10:22
ТабДок=Новый ТабличныйДокумент;
    Результат=Запрос.Выполнить().Выгрузить();
    
    Построитель=Новый ПостроительОтчета;
    Построитель.ИсточникДанных=Новый ОписаниеИсточникаДанных(Результат);
    Построитель.Вывести(ТабДок);
    Возврат ТабДок;

не пойдет, у меня ведь это процедура... а не функция..
11 mzelensky
 
22.08.13
10:23
(0)(2) в конце нужно написать:

ТабДок=новый ТабличныйДокумент;
Документик_НУ_СФОРМИРУЙСЯ_ПОЖАЛУЙСТА(ТабДок);
12 Euguln
 
22.08.13
10:24
(10) А должна быть функция
13 fanatic1
 
22.08.13
10:25
ДЕлаю вот так, функция

&НаСервере
Функция ВернутьДлинуПоСтроке(ХарактеристикаНаименование)
    
     Если ЗначениеЗаполнено(ХарактеристикаНаименование) = 1 тогда
         ИмяХарактеристики= сокрлп(ХарактеристикаНаименование);
         //считаем что в характеристике указана именно длина
         ИмяХарактеристики = СтрЗаменить(Имяхарактеристики," ",Символы.ПС);
         Попытка
             Длина = Число(СтрПолучитьСтроку(ИмяХарактеристики,1));
         исключение
             Длина = 0;
         КонецПопытки;
         Возврат Длина;
     Иначе
         Возврат 0;
     конецесли;
    
КонецФункции

&НаСервере
Функция СформироватьТабДокумент()
//Процедура СформироватьТабДокумент()
    
    
     Запрос = Новый Запрос;
     Запрос.Текст =
     "ВЫБРАТЬ
     |    РеализацияТоваровУслугТовары.Ссылка,
     |    РеализацияТоваровУслугТовары.Номенклатура,
     |    РеализацияТоваровУслугТовары.Количество,
     |    РеализацияТоваровУслугТовары.хлысты,
     |    РеализацияТоваровУслугТовары.Коэффициент,
     |    РеализацияТоваровУслугТовары.Характеристика
     |ИЗ
     |    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
     |ГДЕ
     |    РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &Дата1 И &Дата2";
     Дата1 = НачалоДня('20130505');;
     Дата2 = ТекущаяДата();
    
    
     Запрос.УстановитьПараметр("Дата1", Дата1);
     Запрос.УстановитьПараметр("Дата2", дата2);
     табРезультат = Запрос.Выполнить().Выгрузить();
     табРезультат.Колонки.Добавить("Разница");
     Для Каждого СтрокаТаб Из табРезультат Цикл
         Если Не СтрокаТаб.Количество = ВернутьДлинуПоСтроке(СтрокаТаб.Характеристика)*СтрокаТаб.Коэффициент*СтрокаТаб.хлысты Тогда
             // СтрокаТаб.Разница =  СтрокаТаб.Количество -  ВернутьДлинуПоСтроке(СтрокаТаб.Характеристика)*СтрокаТаб.Коэффициент*СтрокаТаб.хлысты;
            Сообщить(СтрокаТаб.Ссылка);
            
         КонецЕсли;
     КонецЦикла;
      

           ТабДок=Новый ТабличныйДокумент;
    Результат=Запрос.Выполнить().Выгрузить();
    
    Построитель=Новый ПостроительОтчета;
    Построитель.ИсточникДанных=Новый ОписаниеИсточникаДанных(Результат);
    Построитель.Вывести(ТабДок);
    Возврат ТабДок;
    
    
    
    КонецФункции
//КонецПроцедуры    


&НаКлиенте
Процедура Сформировать(Команда)
    
     СформироватьТабДокумент();
    
    
КонецПроцедуры


и не работает ((( не показывает (((
14 stix2010
 
22.08.13
10:25
(10) мдя...
ТабДок.Показать();
15 stix2010
 
22.08.13
10:27
(13)

Табдок=СформироватьДокумент();
Табдок.Показать();

малчик, иди в школу
16 Wobland
 
22.08.13
10:29
(8) ты хочешь на результат запроса посмотреть или таки сделать печатную форму?
17 fanatic1
 
22.08.13
10:33
Да мне просто нужно вывести результат и все! с Божьей (тоесть Вашей помощью) Разобрался..Все выводит круто!!!!Вот текст, вдруг кому пригодиться )))) От меня хотелось бы пожелать Вам удачи...Спасибо... и еще Вот я когда научусь как Вы, я не буду писать по одной строчке, я сразу буду вписывать куда вставить....Вот что получилось...&НаСервере
Функция ВернутьДлинуПоСтроке(ХарактеристикаНаименование)
    
     Если ЗначениеЗаполнено(ХарактеристикаНаименование) = 1 тогда
         ИмяХарактеристики= сокрлп(ХарактеристикаНаименование);
         //считаем что в характеристике указана именно длина
         ИмяХарактеристики = СтрЗаменить(Имяхарактеристики," ",Символы.ПС);
         Попытка
             Длина = Число(СтрПолучитьСтроку(ИмяХарактеристики,1));
         исключение
             Длина = 0;
         КонецПопытки;
         Возврат Длина;
     Иначе
         Возврат 0;
     конецесли;
    
КонецФункции

&НаСервере
Функция СформироватьТабДокумент()
//Процедура СформироватьТабДокумент()
    
    
     Запрос = Новый Запрос;
     Запрос.Текст =
     "ВЫБРАТЬ
     |    РеализацияТоваровУслугТовары.Ссылка,
     |    РеализацияТоваровУслугТовары.Номенклатура,
     |    РеализацияТоваровУслугТовары.Количество,
     |    РеализацияТоваровУслугТовары.хлысты,
     |    РеализацияТоваровУслугТовары.Коэффициент,
     |    РеализацияТоваровУслугТовары.Характеристика
     |ИЗ
     |    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
     |ГДЕ
     |    РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &Дата1 И &Дата2";
     Дата1 = НачалоДня('20130505');;
     Дата2 = ТекущаяДата();
    
         ТабДок=Новый ТабличныйДокумент;

     Запрос.УстановитьПараметр("Дата1", Дата1);
     Запрос.УстановитьПараметр("Дата2", дата2);
     табРезультат = Запрос.Выполнить().Выгрузить();
     табРезультат.Колонки.Добавить("Разница");
     Для Каждого СтрокаТаб Из табРезультат Цикл
         Если Не СтрокаТаб.Количество = ВернутьДлинуПоСтроке(СтрокаТаб.Характеристика)*СтрокаТаб.Коэффициент*СтрокаТаб.хлысты Тогда
              СтрокаТаб.Разница =  СтрокаТаб.Количество -  ВернутьДлинуПоСтроке(СтрокаТаб.Характеристика)*СтрокаТаб.Коэффициент*СтрокаТаб.хлысты;
            Сообщить(СтрокаТаб.Ссылка);
            
         КонецЕсли;
     КонецЦикла;
      

            
    
    Построитель=Новый ПостроительОтчета;
    Построитель.ИсточникДанных=Новый ОписаниеИсточникаДанных(ТабРезультат);
    Построитель.Вывести(ТабДок);
    ТабДок.Показать();
    Возврат ТабДок;
    
    
    
    КонецФункции
//КонецПроцедуры    


&НаКлиенте
Процедура Сформировать(Команда)
        
     СформироватьТабДокумент();
      
    
КонецПроцедуры
18 Wobland
 
22.08.13
10:34
он на сервере показал! мы преклоняемся перед тобой, гуру
19 ptiz
 
22.08.13
10:34
(17) Спасибо, пригодится!
20 fanatic1
 
22.08.13
10:35
а еще вопрос, а как можно в моем запросе группировку поставить? по номенклатуре?
21 stix2010
 
22.08.13
10:39
(18) не говори, у меня так не получается
(20) разрешаем
22 ptiz
 
22.08.13
10:52
(20) В запрос добавить "ИТОГИ СУММА(Количество) ПО Номенклатура"
и
Результат=Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);