Имя: Пароль:
1C
1С v8
Помогите с расшифровкой
,
0 Max-VLAD
 
13.07.12
06:56
Здравствуйте! Такая проблема: нужно подставить Строки.Параметры.ДокРасш = Выборка.Ссылка в этот код, конкретно в последние строчки снизу:
   Результат = Запрос.Выполнить().Выгрузить();
   выборка = Запрос.Выполнить().Выбрать();
   Таб = Новый ТабличныйДокумент;
   ТекМакет = ПолучитьМакет("Макет");
   Шапка = ТекМакет.ПолучитьОбласть("Шапка");
   Строки = ТекМакет.ПолучитьОбласть("Строки");
   Итого = ТекМакет.ПолучитьОбласть ("Итого");
   СуммаДокументаИтого = 0;
   выборка.следующий();
   Шапка.Параметры.ТекДата=ТекущаяДата();
   ТабДок.Вывести(Шапка);
                                             
   Для Каждого Строка Из Результат Цикл
   Строки.Параметры.Заполнить(Строка);
   Если ЗначениеЗаполнено(Строка.СуммаДокумента) Тогда
           СуммаДокументаИтого = Строка.СуммаДокумента + СуммаДокументаИтого;
   КонецЕсли;
       
   Строки.Параметры.Контрагент = Строка.Контрагент;
   Строки.Параметры.ПодразделениеИз = Строка.ПодразделениеИз;
   Строки.Параметры.СуммаДокумента = Строка.СуммаДокумента;
   ТабДок.Вывести(Строки);
   КонецЦикла;
   
   Итого.Параметры.СуммаДокументаИтого = СуммаДокументаИтого;
   ТабДок.Вывести(Итого);

Только куда и в каком виде я не знаю, пытаюсь делать - вылезает ошибка:
{Отчет.ПКО.Форма.ФормаОтчета.Форма(73)}: Поле объекта не обнаружено (Ссылка)
   Строки.Параметры.ДокРасш = Выборка.Ссылка;
Значит надо его где-то прописать в коде, где - не могу понять. Код правильный, он работает, мне просто нужно  сделать расшифровку, чтобы по клике на ячейку открывался документ, на который она ссылается. В всех строковых ячейках, кроме Итого, в Свойствах ячейки в ПараметреРасшифровки я указал  ДокРасш. Помогите, пожалуйста!
1 Alex1979rak
 
13.07.12
06:58
запрос покажи
2 Cube
 
13.07.12
06:59
3 Max-VLAD
 
13.07.12
07:01
(2)
Процедура Сформировать(ТабДок) Экспорт
ЭлементыФормы.Таб.Очистить();
Запрос = Новый Запрос;
Запрос.Текст ="ВЫБРАТЬ
 | НД_ПКО.Контрагент КАК Контрагент,
  | НД_ПКО.ПодразделениеИз КАК ПодразделениеИз,
  | НД_ПКО.СуммаДокумента КАК СуммаДокумента
  | ИЗ
  | Документ.НД_ПКО КАК НД_ПКО
  | ГДЕ НД_ПКО.Ссылка.Проведен
  | И НД_ПКО.Дата <= &ДатаКон
  | И НД_ПКО.Дата >= &ДатаНач
  | УПОРЯДОЧИТЬ ПО ПодразделениеИз
  | ИТОГИ СУММА(СуммаДокумента) ПО ПодразделениеИз";
4 Alex1979rak
 
13.07.12
07:02
(3) в запросе поле Ссылка не наблюдаю
5 Cube
 
13.07.12
07:02
(3) Ты что запрос вручную набирал?) Открой конструктор запросов...
6 Max-VLAD
 
13.07.12
07:04
(4) Вот и я про то же. Где ее надо указать?
(5) Да. В конструкторе все отлично работает. Но в макете выводит данные как попало и не отображает итоги
7 Cube
 
13.07.12
07:11
(6) Запрос.Текст ="ВЫБРАТЬ
 | НД_ПКО.Ссылка КАК Ссылка,
 | НД_ПКО.Контрагент КАК Контрагент,
...
8 Max-VLAD
 
13.07.12
07:19
(7) Спасибо, ошибка исчезла. Теперь новая проблема: при щелчке на ячейку вылезает окошко Null...
9 Cube
 
13.07.12
07:29
(8) Так ты, видимо не весь запрос нам показал, ага? Соединение в запросе сделал, получил NULLы, а у нас теперь спрашиваешь что такое))
10 Max-VLAD
 
13.07.12
07:31
(9) Разочарую, но запрос я показал весь) Изменил только там где вы сказали:

"ВЫБРАТЬ
| НД_ПКО.Ссылка КАК Ссылка,
 | НД_ПКО.Контрагент КАК Контрагент,
  | НД_ПКО.ПодразделениеИз КАК ПодразделениеИз,
  | НД_ПКО.СуммаДокумента КАК СуммаДокумента
  | ИЗ
  | Документ.НД_ПКО КАК НД_ПКО
  | ГДЕ НД_ПКО.Ссылка.Проведен
  | И НД_ПКО.Дата <= &ДатаКон
  | И НД_ПКО.Дата >= &ДатаНач
  | УПОРЯДОЧИТЬ ПО ПодразделениеИз
  | ИТОГИ СУММА(СуммаДокумента) ПО ПодразделениеИз";
11 Cube
 
13.07.12
07:34
(10) А че ты мне ВЫ-каешь?))
Ну тогда ты показал в (0) не весь код, ведь кода "Строки.Параметры.ДокРасш = Выборка.Ссылка;" в (0) нету...
12 Rie
 
13.07.12
07:36
(10) Как в одной из прошлых веток - а не по итогов записи ли ты щёлкаешь? В ней как раз те самые NULL и будут.
13 Max-VLAD
 
13.07.12
07:36
(11) Давай  на ТЫ))
Строка уже есть, но хня всё та же(
14 Max-VLAD
 
13.07.12
07:37
(12) Не по итогам, а по строке, где выводятся данные
15 Cube
 
13.07.12
07:39
(14) Дай скрин свойств ячейки табличного документа, где выскакивает Null...
16 Max-VLAD
 
13.07.12
07:42
17 Cube
 
13.07.12
07:44
А, так может это всё-таки на строке итогов вылазит Null...
18 Rie
 
13.07.12
07:47
(14) А строка выводится для каждой записи, в том числе и для итоговых. И если по такой строке (с итогами) щёлк - она в ответ - Null.
19 Max-VLAD
 
13.07.12
07:49
(17) Да нет, по Контрагенту, по Подразделению и СуммеДокумента. Ну и по Итогам сейчас кликнул - та же хрень.((
(18) Rie, и как это исправить?
20 Cube
 
13.07.12
07:51
(19) Давай скрин результата запроса и скрин сформированного на этих данных отчета.
21 Max-VLAD
 
13.07.12
08:00
Результаты запроса через Консоль запросов: http://i077.radikal.ru/1207/c5/0f731eb31de8.jpg
Результаты отчета: http://s018.radikal.ru/i517/1207/a8/fba9a9f06c0e.jpg
22 Cube
 
13.07.12
08:03
(21) Ну хз... А ты точно на ячейке "Подразделение" щелкаешь?
23 Max-VLAD
 
13.07.12
08:04
(22) И по ней, и по Контрагенту, и по СуммеДокумента.
24 Rie
 
13.07.12
08:11
(19) Судя по тексту запроса, источником Null могут быть только итоговые записи.
Как формируются строки отчёта? (Покажи код)
25 Max-VLAD
 
13.07.12
08:13
Весь код:

 Процедура ЗаполнитьТабДок() Экспорт
КонецПроцедуры

Процедура Кнопка1Нажатие(Элемент)
    НастройкаПериода = Новый НастройкаПериода;
    НастройкаПериода.РедактироватьКакИнтервал = Истина;
    НастройкаПериода.РедактироватьКакПериод = Истина;
    НастройкаПериода.ВариантНастройки = ВариантНастройкиПериода.Период;
    НастройкаПериода.УстановитьПериод(ДатаНач, ?(ДатаКон='0001-01-01', ДатаКон, КонецДня(ДатаКон)));
    Если НастройкаПериода.Редактировать() Тогда
        ДатаНач = НастройкаПериода.ПолучитьДатуНачала();
        ДатаКон = НастройкаПериода.ПолучитьДатуОкончания();
    КонецЕсли;
КонецПроцедуры

Процедура Сформировать(ТабДок) Экспорт
ЭлементыФормы.Таб.Очистить();
Запрос = Новый Запрос;
Запрос.Текст ="ВЫБРАТЬ
| НД_ПКО.Ссылка КАК Ссылка,
 | НД_ПКО.Контрагент КАК Контрагент,
  | НД_ПКО.ПодразделениеИз КАК ПодразделениеИз,
  | НД_ПКО.СуммаДокумента КАК СуммаДокумента
  | ИЗ
  | Документ.НД_ПКО КАК НД_ПКО
  | ГДЕ НД_ПКО.Ссылка.Проведен
  | И НД_ПКО.Дата <= &ДатаКон
  | И НД_ПКО.Дата >= &ДатаНач
  | УПОРЯДОЧИТЬ ПО ПодразделениеИз
  | ИТОГИ СУММА(СуммаДокумента) ПО ПодразделениеИз";  

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

   Итого.Параметры.СуммаДокументаИтого = СуммаДокументаИтого;
   ТабДок.Вывести(Итого);            
       
ТабДок.ТолькоПросмотр = Истина;
ТабДок.Показать();
КонецПроцедуры  

Процедура КнопкаСформироватьНажатие(Кнопка) Экспорт
         Сформировать(ЭлементыФормы.Таб);
КонецПроцедуры
26 Мимохожий Однако
 
13.07.12
08:16
неплохо бы:
в строке НД_ПКО.СуммаДокумента КАК СуммаДокумента применить метод ЕстьNull, чтобы преврать NULL  в 0.
Использовать имя переменной Строка не рекомендуется (об этом я тебе и в прошлых ветках писал)
В макете в секции итогов убери расшифровку строки.
27 Rie
 
13.07.12
08:21
(25) Опять один цикл по результату, содержащему как итоговые, так и детальные записи.
Когда Строка - итоговая запись,
Строки.Параметры.Заполнить(Строка);
честно выводит Null вместо документа и контрагента.

В прошлой ветке говорилось, что с этим делать (и вроде бы ты писал, что заработало?).
28 Max-VLAD
 
13.07.12
08:22
(26) Как применить этот метод в моем запросе? Т.е. как написать?
Значит вместо Строка написать Строки?
В макете в секции Итогов у меня не стоит Расшифровка.
29 Rie
 
13.07.12
08:30
(28) Секция итогов тут ни при чём. Вообще непонятно, зачем ты в запросе итоги получаешь - если потом их не используешь, а насчитываешь итог вручную.
Варианты:

А) Выкинь на фиг из запроса ИТОГИ

Б)
Для Каждого Строка Из Результат Цикл
   Если Строка.ТипЗаписи()<>ТипЗаписиЗапроса.ДетальнаяЗапись Тогда
       Продолжить;
   КонецЕсли;
   // далее - как у тебя

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

(Почти то же самое, что и в прошлый раз говорилось. Сделай милость, разберись, как это работает - чтобы очередных веток на эту тему не создавать).
30 Max-VLAD
 
13.07.12
08:31
ОК, спасибо за участие, пошел разбираться!)