Имя: Пароль:
1C
1С v8
Макет отчета. Помогите решить проблему.
0 progaoff
 
03.07.15
14:02
Процедура КнопкаВыполнитьНажатие(Кнопка)
      
    Запрос = Новый Запрос;
    Запрос.Текст = "
    
    |    ВЫБРАТЬ
    |        СУММА(Продажа.СуммаДокумента) КАК СуммаДокумента
    |    ПОМЕСТИТЬ ТабПрод
    |    ИЗ
    |        Документ.Продажа КАК Продажа
    |    ГДЕ
    |        Продажа.Дата МЕЖДУ &ДатаНач И &ДатаКон
    |        И Продажа.Организация = &Организация
    |;
    |    
    |    ////////////////////////////////////////////////////////////////////////////////
    |    ВЫБРАТЬ
    |        СУММА(Визит.СуммаОбщая) КАК СуммаОбщая
    |    ПОМЕСТИТЬ ТабВиз
    |    ИЗ
    |        Документ.Визит КАК Визит
    |    ГДЕ
    |        Визит.Организация = &Организация
    |        И Визит.Дата МЕЖДУ &ДатаНач И &ДатаКон
    |;
    |    
    |    ////////////////////////////////////////////////////////////////////////////////
    |   Выбрать Сумма(СуммаБезСкидки) КАК СуммаБезСкидки,
    |           Сумма(Поле1) КАК Поле1,
    |           Сумма(СуммаДокумента) КАК СуммаДокумента
    |           Из
    |           (
    |    ВЫБРАТЬ
    |        СУММА(ВыполнениеРаботПоВизиту.СуммаБезСкидки) / &КолДней КАК СуммаБезСкидки,
    |        0 Как Поле1,
    |        0 КАК СуммаДокумента
    |    ИЗ
    |        РегистрНакопления.ВыполнениеРаботПоВизиту КАК ВыполнениеРаботПоВизиту
    |    ГДЕ
    |        ВыполнениеРаботПоВизиту.Период МЕЖДУ &ДатаНач И &ДатаКон
    |        И ВыполнениеРаботПоВизиту.Организация = &Организация
    |        И ВыполнениеРаботПоВизиту.Номенклатура = &Номенклатура
    |    Объединить Все
    |    ВЫБРАТЬ
    |        0 КАК СуммаБезСкидки,
    |        СУММА(ТабПрод.СуммаДокумента + ТабВиз.СуммаОбщая) / &КолДней КАК Поле1,
    |        0 КАК СуммаДокумента
    |    ИЗ
    |        ТабВиз КАК ТабВиз,
    |        ТабПрод КАК ТабПрод
    |    Объединить Все
    |    ВЫБРАТЬ
    |     0 КАК СуммаБезСкидки,
    |     0 КАК Поле1,
    |     ТабПрод.СуммаДокумента
    |    Из ТабПрод КАК ТабПрод) КАК ВложенныйЗапрос";

    Запрос.УстановитьПараметр("ДатаКон", ДатаКон);
    Запрос.УстановитьПараметр("ДатаНач", ДатаНач);
    Запрос.УстановитьПараметр("КолДней", КолДней);   //Надо избавится от него.
    Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
    Запрос.УстановитьПараметр("Организация", Организация);

    Результат = Запрос.Выполнить();

    Если Результат.Пустой() Тогда
        Возврат;
    КонецЕсли;

    Выборка = Результат.Выбрать();
    ТабДок = Новый ТабличныйДокумент;
    Макет = ПолучитьМакет("Макет");

    
    Пока Выборка.Следующий() Цикл
    ОбластьДанных = Макет.ПолучитьОбласть("Данные");
    ОбластьДанных.Параметры.Заполнить(Выборка);
    Макет.Вывести(ОбластьДанных);
КонецЦикла;

Макет.Показать();
    

    

КонецПроцедуры
1 progaoff
 
03.07.15
14:03
Строчка область данных при выводе отчета опускается вниз, и видны параметры, тем не менее цифры по отчету появляются.
2 progaoff
 
03.07.15
14:05
3 Dmitrith
 
03.07.15
14:06
ОбластьДанных = Макет.ПолучитьОбласть("Данные");
зачем внутри цикла?
4 Ненавижу 1С
 
гуру
03.07.15
14:06
так ты Макет или ТабДок выводить собрался?
5 progaoff
 
03.07.15
14:12
Макет
6 ВРедная
 
03.07.15
14:14
(5) Это был вопрос с подвохом
7 dsdred
 
03.07.15
14:19
ОбластьДанных = Макет.ПолучитьОбласть("Данные");

Пока Выборка.Следующий() Цикл
    ЗаполнитьЗначенияСвойств(ОбластьДанных.Параметры,Выборка);
    ТабДок.Вывести(ОбластьДанных);
КонецЦикла;

ТабДок.Показать();
8 progaoff
 
03.07.15
14:26
все красиво но в макет не попадает.
9 progaoff
 
03.07.15
14:27
ну в смысле что нужно в макет.
10 progaoff
 
03.07.15
14:28
а не в таб док
11 dsdred
 
03.07.15
14:29
(8) открыл картинку с макетом и ужаснулся сразу, сильно ужаснулся....

Тебя в макете все устраивает?
12 Garykom
 
гуру
03.07.15
14:29
прочтите инструкцию или позовите к клавиатуре программиста
13 ВРедная
 
03.07.15
14:29
(9) нет, тебе не нужно в макет.
Макет - он на то и макет, что его не выводят. Из него берут шаблон областей, заполняют данные и выводят в другой табличный документ
14 progaoff
 
03.07.15
14:29
нет не все, я его переделаю...
15 ВРедная
 
03.07.15
14:30
(11) да, (12) должно помочь
16 progaoff
 
03.07.15
14:30
(12) спасибо КЭП-ОЧЕВИДНОСТЬ!
17 dsdred
 
03.07.15
14:31
(14) начни с макета, он у тебя нарисован но что то в нем не хватает... Может Области Шапки например и еще чего то...
18 Mifka
 
03.07.15
14:32
возможно проблема в том что не в табличном документе он не видит шапки макета. Для этого нужно в макете задать область шапка и ее выводить в табличный документ перед данными
19 dsdred
 
03.07.15
14:34
(18) у него запрос вообще в халастую работает, пусть подумает.
Область данные у него от запроса ни чего не выводит
20 progaoff
 
03.07.15
14:37
но данные выводятся, почему же запрос в холостую работает???
21 dsdred
 
03.07.15
14:39
(20) дай угадаю вот эти 2096,1666667 | 24812,06666667 | 7715 ?
22 progaoff
 
03.07.15
14:41
(21) да
23 dsdred
 
03.07.15
14:42
(22)Намек не ясен?
24 progaoff
 
03.07.15
14:43
(23) Пятница - думать очень тяжело...
25 progaoff
 
03.07.15
14:43
(23) если можно открытым текстом - что не так я делаю?
26 dsdred
 
03.07.15
14:44
(25) Хорошо у тебя область Данные именно этими цифрами заполнена.

Я вить не мог знать что твой запрос должен выводить...
27 progaoff
 
03.07.15
14:46
че строка с параметрами остается пустой а область данных съезжает на строчку ниже? (26)
28 dsdred
 
03.07.15
14:46
(25)
ОбластьДанных = Макет.ПолучитьОбласть("Данные");

Пока Выборка.Следующий() Цикл

    ТабДок.Вывести(ОбластьДанных);
КонецЦикла;

ТабДок.Показать();

Если сделаешь вот так то увидешь теже цифры. Странно не правда ли?
29 progaoff
 
03.07.15
14:49
это конечно меня тоже удивляет)
30 dsdred
 
03.07.15
14:51
(29) Ты думать то вообще не собираешься? Или ты стебаешься?
31 progaoff
 
03.07.15
14:55
Нет я не стебаюсь, я просто уже не вдуплю что происходит, я понимаю что вывод кривой, но почему так не пойму
32 dsdred
 
03.07.15
14:58
33 ВРедная
 
03.07.15
14:59
(27) Потому что ты никуда не выводишь строку с параметрами, а еще потому, что строка с параметрами у тебя в макете не принадлежит никакой области
34 progaoff
 
03.07.15
15:17
как я подставлю результат если он в запросе?
35 progaoff
 
03.07.15
15:20
я имею ввиду имена параметров
36 Garykom
 
гуру
03.07.15
15:22
(34) ехал на машине, она сломалась... думаешь если выйти попинать по колесам или открыть капот и там чего нить подергать оно поедет и причем как нуна?

ЗЫ сча программирование даже на 1С намного сложнее устройства машины, понятно что колесо поменять почти любой сможет (в 1С это переименовать/убрать колонку в отчете)

а вот сделать новые колеса с 0? даже при наличии всех инструментов
37 dsdred
 
03.07.15
15:22
(35) У тебя имена параметров в макете на 4 строке
а область почему то 5 строка

Иди уже домой...
38 dsdred
 
03.07.15
15:25
(37) да в запросе Организация пропала, ее наверное выводить тоже лень
39 progaoff
 
03.07.15
15:29
у меня и имена параметров и область данные в одной строке...
40 progaoff
 
03.07.15
15:30
ой! не тот макет
41 progaoff
 
03.07.15
15:32
42 ВРедная
 
03.07.15
15:35
(41) не расшарен
43 progaoff
 
03.07.15
15:36
готово
44 dsdred
 
03.07.15
15:42
(39) Вот тебе гамно-код но рекомендую сменить вид деятельности.

ОблШапка = Макет.ПолучитьОбласть("R1:R3");
ТабДок.Вывести(облШапка);

ОбластьДанных = Макет.ПолучитьОбласть("R4");

Пока Выборка.Следующий() Цикл
  ОблСтрока.Параметры.Организация = Строка(Организация);
  ЗаполнитьЗначенияСвойств(ОбластьДанных.Параметры,Выборка);
  ТабДок.Вывести(ОбластьДанных);
КонецЦикла;

ТабДок.Показать();
45 progaoff
 
03.07.15
15:52
спасибо конечно за говна код, с видом деятельности я как нибудь сам разберусь. код я не просил я просто просил сказать то не так. и тут началось колеса, виды деятельности и все остальное - кроме критики и тупых намеков с подвохами от вас толку больше нет. спасибо большое за учатие
46 Garykom
 
гуру
03.07.15
15:53
(44) как бы на "ЗаполнитьЗначенияСвойств(ОбластьДанных.Параметры,Выборка);" большинство юнлингов сломаются а если поймут то потом когда будет
"ОбластьДанных.Параметры.Наименование = "123";" не поймутс
47 Garykom
 
гуру
03.07.15
15:55
(45) ... с возу .... легче
48 dsdred
 
03.07.15
15:56
(46) в примере
ОблСтрока.Параметры.Организация = Строка(Организация);
И
ЗаполнитьЗначенияСвойств(ОбластьДанных.Параметры,Выборка);

Просто данный типец реально не хотел думать. Вот когда я начинал мне так не подсказывали...
49 progaoff
 
03.07.15
16:00
(48) то есть ты хочешь сейчас сказать, что ты сел включил комп и сразу зарядил 1с?
50 Garykom
 
гуру
03.07.15
16:05
(49) ну да... а после >15 лет кодинга начиная с МК-61 почему бы и нет?
51 ВРедная
 
03.07.15
16:05
(49) мы хотим сказать, что если ты думать не хочешь и учиться не хочешь, то никто тебе не поможет.

В печати ты не разобрался ни на йоту, хотя материалов сейчас *опой жуй, не то что в наше время (с)
52 progaoff
 
03.07.15
16:07
так вот и пытаюсь учится, я не прошу дайте мне готовый код, я просто по просил подсказать что не так я делаю.
53 progaoff
 
03.07.15
16:08
и тут понеслось...
54 Garykom
 
гуру
03.07.15
16:11
(51) да уж сидеть и методом перебора/экспериментов выяснять что из наличествующего в СП как работает...

ЗЫ встроенный хелп с примерами виде синтаксис-помощника в 1С 77 это была сила
55 Serg_1960
 
03.07.15
16:11
(52) Подсказываю (сам спрашиваю - сам отвечаю):

Вот у тебя в коде(0) зачем-то указана строка "ТабДок = Новый ТабличныйДокумент;" - а зачем она там? Наверное чтобы создать табличный документ? А зачем он нужен? Наверное чтобы туда что-то выводить? Что выводить? Может быть "ОбластьДанных"?...
56 Garykom
 
гуру
03.07.15
16:13
(55)+ а откуда взять эту ОбластьДанных? а может из макета получить, заполнить данными и уже с данными в ТабДок и вставить?
57 Serg_1960
 
03.07.15
16:16
Макет - это, грубо говоря, как бланк - разлинован, но пустой. А таб.документ - это, грубо говоря, чистый лист. Куда надо выводить области, полученные из макета. Области в которых параметры макета предварительно заполняются нужными значениями.
58 Serg_1960
 
03.07.15
16:26
progaoff выпал в осадок надолго.

Наверное, вместо "Макет.Вывести" и "Макет.Показать" подставил "ТабДок", получил то, что ему надо и теперь молча сидит, любуется на свой первый отчет :)
59 progaoff
 
03.07.15
16:30
Еще нет))))
60 Serg_1960
 
03.07.15
16:46
Ну естественно, что "нет" :) Надо ещё поименовать шапку таблицы в макете, чтобы можно было её потом вывести на печать :)
61 progaoff
 
03.07.15
16:52
Это я уже...
Программист всегда исправляет последнюю ошибку.