Имя: Пароль:
1C
1С v8
Как получить данные из ТЗ ??
, ,
0 Taffy
 
07.06.12
17:26
Добрый вечер!
Впервые создаю печатную форму,сильно не ругайте.Сделала запрос.Мне нужно получить данные из ТЗ Товары.КАК это можно сделать??

   
   ТабДок = Новый ТабличныйДокумент;
   Макет =ПолучитьМакет("Накладная");    
   ДопКолонка = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
   Если ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
       ВыводитьКоды    = Истина;
       Колонка         = "Артикул";
       ТекстКодАртикул = "Артикул";
   ИначеЕсли ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Код Тогда
       ВыводитьКоды    = Истина;
       Колонка         = "Код";
       ТекстКодАртикул = "Код";
   Иначе
       ВыводитьКоды    = Ложь;
       Колонка         = "";
       ТекстКодАртикул = "Код";
   КонецЕсли;

   Если ВыводитьКоды Тогда
       ОбластьШапки  = "ШапкаСКодом";
       ОбластьСтроки = "СтрокаСКодом";
   Иначе
       ОбластьШапки  = "ШапкаТаблицы";
       ОбластьСтроки = "Строка";
   Конецесли;

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

   ПредставлениеОрганизации = ФормированиеПечатныхФормСервер.ОписаниеОрганизации(УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Организация, Шапка.Дата), "ПолноеНаименование,");
   ПредставлениеКонтрагента = ФормированиеПечатныхФормСервер.ОписаниеОрганизации(УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Контрагент, Шапка.Дата), "ПолноеНаименование,");

   //Поставщик
   ОбластьМакета = Макет.ПолучитьОбласть("Поставщик");
   ОбластьМакета.Параметры.ПредставлениеПоставщика = ПредставлениеОрганизации;
   ОбластьМакета.Параметры.Поставщик = Шапка.Организация;
   ТабДок.Вывести(ОбластьМакета);

   //Покупатель
   
   ОбластьМакета = Макет.ПолучитьОбласть("Покупатель");
   ОбластьМакета.Параметры.ПредставлениеПолучателя = ПредставлениеКонтрагента;
   ОбластьМакета.Параметры.Получатель = Шапка.Контрагент;
   ТабДок.Вывести(ОбластьМакета);
   
   // Вывести табличную часть
       ОбластьМакета = Макет.ПолучитьОбласть(ОбластьШапки);
       Если ВыводитьКоды Тогда
           ОбластьМакета.Параметры.Колонка = Колонка;
       КонецЕсли;
       
       ТабДок.Вывести(ОбластьМакета);
       
       ОбластьМакета = Макет.ПолучитьОбласть(ОбластьСтроки);
       Итого         = 0;
       Ном           = 0;
       
       
       
       // Товары
       Пока ВыборкаСтрокТовары.Следующий() Цикл
           
           Если НЕ ЗначениеЗаполнено(ВыборкаСтрокТовары.Номенклатура) Тогда
               Продолжить;
           КонецЕсли;
           
           НомерСтроки=1;            
           ОбластьМакета.Параметры.Заполнить(ВыборкаСтрокТовары);
           ОбластьМакета.Параметры.Товар = ВыборкаСтрокТовары.Номенклатура;
           ОбластьМакета.Параметры.НомерСтроки =ВыборкаСтрокТовары.НомерСтроки;
           ОбластьМакета.Параметры.Серия = ВыборкаСтрокТовары.СерияНоменклатуры;
           ОбластьМакета.Параметры.Срок = ВыборкаСтрокТовары.СрокГодности;
           //Для каждого Стр из ТЗ Цикл
           //ОбластьМакета.Параметры.Цена = ВыборкаСтрокРеализации.ТаблицаЗначений.Колонки("Цена");
           Если ВыводитьКоды Тогда
               ОбластьМакета.Параметры.КодАртикул = ВыборкаСтрокТовары.КодАртикул;
           КонецЕсли;
           
           ТабДок.Вывести(ОбластьМакета);
           НомерСтроки = НомерСтроки + 1;

           
           
       КонецЦикла;
       

       
   // Вывести Итого
       ОбластьМакета = Макет.ПолучитьОбласть("Итого");
       ОбластьМакета.Параметры.Всего = ОбщегоНазначения.ФорматСумм(Итого);
       ТабДок.Вывести(ОбластьМакета);
    // Вывести подписи
       ОбластьМакета = Макет.ПолучитьОбласть("Подписи");
       ОбластьМакета.Параметры.Заполнить(Шапка);
       ТабДок.Вывести(ОбластьМакета);

   //    
   //ТабДок.Вывести(ОбластьМакета);
           
   ТабДок.ОтображатьСетку = Ложь;
   ТабДок.Защита = Ложь;
   ТабДок.ТолькоПросмотр = Ложь;
   ТабДок.ОтображатьЗаголовки = Ложь;
   ТабДок.Показать();
1 mikecool
 
07.06.12
17:27
да что ж сегодня за день молодых и красивых на форкме...
2 DrShad
 
07.06.12
17:30
ломает читать кучу кода чтобы выяснить что конкретно у тебя не получается
3 DrShad
 
07.06.12
17:30
да и юзать ТЗ уже не кошерно
4 salvator
 
07.06.12
17:32
(0) В чем проблема-то?
5 Taffy
 
07.06.12
17:34
не выгружаются данные из ТЗ на форму печати
6 DrShad
 
07.06.12
17:35
(5) а с фига ли должны? ты же ее только создала и больше не юзала
7 Taffy
 
07.06.12
17:36
по разному пробовала.как правильно не поняла
8 salvator
 
07.06.12
17:37
У тебя в запросе выбирается табличная часть в качестве поля.
9 mikecool
 
07.06.12
17:38
+8 ее надо потом Выгрузить() в ТЗ
10 salvator
 
07.06.12
17:39
+(8) А не, не то. Выборка вроде есть из нее.
А вот это
ОбластьМакета.Параметры.Заполнить(ВыборкаСтрокТовары);
           ОбластьМакета.Параметры.Товар = ВыборкаСтрокТовары.Номенклатура;
           ОбластьМакета.Параметры.НомерСтроки =ВыборкаСтрокТовары.НомерСтроки;
           ОбластьМакета.Параметры.Серия = ВыборкаСтрокТовары.СерияНоменклатуры;
           ОбластьМакета.Параметры.Срок = ВыборкаСтрокТовары.СрокГодности;
шикарно конечно
11 Taffy
 
07.06.12
17:40
не так надо было?
12 Oleg_Kag
 
07.06.12
17:41
Зачем выгрузить в ТЗ. У неё в запросе все готово. ей в макет нужно просто цену вывести.
То есть сделать что-то типа ВыборкаСтрокРеализации.Следующий() и лепить...сходу вопрос...там, суда по конструкции запроса, могут быть разные цены в документе?
(10)... "я как бы уверен, но проделаю это еще раз" :)
13 salvator
 
07.06.12
17:42
(11) Либо только первую строчку, либо только остальные.
Почитай про метод Заполнить(), а то у тебя получается масло масленое
14 Taffy
 
07.06.12
17:43
да.могут быть разные цены в документе.
15 DrShad
 
07.06.12
17:44
(13) ну для этого ей нужно псевдонимы привести к именам параметров
16 salvator
 
07.06.12
17:45
(15) Ну вот я и говорю, пусть почитает, прежде чем такие слова страшные писать.
17 DrShad
 
07.06.12
17:48
(16) ну врядли она поймет что в запросе приведением псевдонимов в соответствующий вид получается возможность использовать Заполнить() из только описания самого метода
18 Oleg_Kag
 
07.06.12
17:48
(15) согласен...тока этот запрос ей сделал... конструктор запросов, судя по тому, таб част "в скобочках".
ТС у Вас уже всё есть в результате выборки запроса. который называется Шапка...
19 Taffy
 
07.06.12
17:49
спасибо
20 Taffy
 
07.06.12
17:50
запрос делала конструктором))
21 DrShad
 
07.06.12
17:51
(20) ты не поверишь, но это видно
22 Oleg_Kag
 
07.06.12
17:52
Вот Ваш же запрос в "классическом" виде
Запрос.Текст =
           "ВЫБРАТЬ
           |    Партии.Номер,
           |    Партии.Дата,
           |    Партии.Контрагент,
           |    Партии.Организация,
           |    Партии.Ссылка,
           |    Партии.ТоварыПоПартиям.Номенклатура
           |    Партии.ТоварыПоПартиям.Количество,
           |    Партии.ТоварыПоПартиям.КоличествоОстаток,
           |    Партии.ТоварыПоПартиям.ЕдиницаИзмеренияМест,
           |    Партии.ТоварыПоПартиям.ХарактеристикаНоменклатуры,
           |    Партии.ТоварыПоПартиям.СерияНоменклатуры,
           |    Партии.ТоварыПоПартиям.КоличествоМест,
           |    Партии.ТоварыПоПартиям.ЕдиницаИзмерения,
           |    Партии.ТоварыПоПартиям.СрокГодности,
           |    Партии.ТоварыПоПартиям.НомерСтроки КАК НомерСтроки,
           |    Партии.Ссылка КАК Ссылка2,
           |    Реализация.Ссылка КАК Ссылка1,
           |    Реализация.Товары.Цена,
           |    Реализация.Товары.Сумма
           |ИЗ
           |    Документ.РасходныйОрдерНаТовары КАК Партии
           |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК Реализация
           |        ПО Партии.ДокументПередачи = Реализация.Ссылка
           |ГДЕ
           |    Партии.Ссылка = &ТекДокумент
           |
           |УПОРЯДОЧИТЬ ПО
           |    НомерСтроки";
23 salvator
 
07.06.12
17:54
(21) |    Партии.Ссылка КАК Ссылка2
убери лишнюю, а то запутаешься)
24 salvator
 
07.06.12
17:54
(23) к (20)
25 Oleg_Kag
 
07.06.12
17:55
Товарищи, тока какашками не закидывать . Я прекрасно знаю что запрос сверху НЕ "правильный" , что надо отталкиваться от табличных частей документов и т.п.