helpf.pro
Регистрация

v8: Не работает расшифровка

astralf
10.09.2012 13:46Прочитано: 15941
вот такой не хитрый текст в обработке

Код 1C v 8.2 УП
 &НаКлиенте
Процедура Команда1(Команда)
// Вставить содержимое обработчика.
ТабДок = Новый ТабличныйДокумент;
ТабДок = Документ(ТабДок);
ТабДок.ТолькоПросмотр = Истина;
ТабДок.Показать();
КонецПроцедуры

&НаСервере
Функция Документ(ТабДок) Экспорт
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Номенклатура.Наименование КАК Наименование,
| Номенклатура.Код КАК Код
|ИЗ
| Справочник.Номенклатура КАК Номенклатура" ;
Результат = Запрос.Выполнить().Выбрать();
Макет = Обработки.Обработка1.ПолучитьМакет("Макет");
Область = Макет.ПолучитьОбласть("Область1");
ТабДок.ТолькоПросмотр = Истина;
Пока Результат.Следующий() Цикл
Область.Параметры.Заполнить(Результат);
Область.Параметры.Расшифровка = Справочники.Номенклатура.ПолучитьСсылку();
ТабДок.Вывести(Область);
КонецЦикла;

Возврат ТабДок;
КонецФункции


документ выводит, а когда кликаю по ячейке, пишет, что объект не найден.
что за фигня?
Yandex
Возможно, вас также заинтересует
Реклама на портале
theelectric
10.09.2012 14:11Ответ № 1
(0) astralf, ну если не ошибаюсь, ты с наименования ссылку не получишь... Попробуй добавить еще одно поле в запросе - и пусть это будет Номенклатура.Ссылка КАК Ссылка. Наименование можно в принципе даже убрать - будешь выводить ссылку - получишь и название!
И еще... мне кажется измени код:
Код 1C v 8.2 УП
 Область.Параметры.Расшифровка = Результат.Ссылка;   

Хотя утверждать не буду - сам не пробовал... Попробуй сначала первое!
astralf
10.09.2012 15:25Ответ № 2
пасиб, ща попробуем
astralf
10.09.2012 15:28Ответ № 3
РАБОТАЕТ!!! СПасибо!
astralf
10.09.2012 15:30Ответ № 4
на всякий случай приведу окончательный код, вдруг кто париться будет, я пол-дня убил на эту хрень. самое интересное, в обычном (а не в управляемом) приложении всё работало по первому коду, и даже без дополнительного разнесения на серверную и клиентскую часть - тупо в одной процедуре. вопрос: на кой ляд придумано управляемое приложение?

Код 1C v 8.2 УП
 &НаКлиенте
Процедура Команда1(Команда)
// Вставить содержимое обработчика.
ТабДок = Новый ТабличныйДокумент;
ТабДок = Документ(ТабДок);
ТабДок.ТолькоПросмотр = Истина;
ТабДок.Показать();
КонецПроцедуры

&НаСервере
Функция Документ(ТабДок) Экспорт
перем код, ышь;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Номенклатура.Код КАК Код,
| Номенклатура.Ссылка,
| Номенклатура.Наименование
|ИЗ
| Справочник.Номенклатура КАК Номенклатура" ;
Результат = Запрос.Выполнить().Выбрать();
Макет = Обработки.Обработка1.ПолучитьМакет("Макет");
Область = Макет.ПолучитьОбласть("Область1");
ТабДок.ТолькоПросмотр = Истина;
Пока Результат.Следующий() Цикл
Область.Параметры.Заполнить(Результат);
Область.Параметры.Расшифровка = Результат.Ссылка;
ТабДок.Вывести(Область);
КонецЦикла;

Возврат ТабДок;
КонецФункции
astralf
11.09.2012 11:51Ответ № 5
Вопрос закрыт!
Mokey
22.12.2014 13:35Ответ № 6

О! Нашёл вопрос. Открою.

Вариант такой же, только в 8.1. Вывожу отчёт через построитель.

Код 1C v 8.х
 
Выборка0 = ПостроительОтчетаПроцентный.Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Сезон");
Пока Выборка0.Следующий() Цикл
ТекОбласть = ПолучитьТекущуюОбласть(Выборка0, КоличествоГруппировок);
Если НЕ ТекОбласть = Неопределено Тогда
    СтруктураРасшифровки.Вставить("Сезон", Выборка0.Сезон);
    ТекОбласть.Параметры.Заполнить(Выборка0);
    Если Выборка0.Группировка() = "Поставщик" Тогда
        СтруктураПоиска = Новый Структура;
        СтруктураПоиска.Вставить("Поставщик", Выборка0.Поставщик);
        СтруктураПоиска.Вставить("Сезон", Выборка0.Сезон);
        СтруктураПараметровРаботы = ОбщегоНазначения.СформироватьСтруктуруПараметровРаботыСПоставщиком(СтруктураПоиска);
        ТекОбласть.Параметры["ПоставщикСтрокой"] = Выборка0.Поставщик.Наименование + " (" + СтруктураПараметровРаботы.Валюта + ")";
        ТекОбласть.Параметры.РасшифровкаМашин = СтруктураРасшифровки;
    КонецЕсли;
    ЭлементыФормы.ПолеТабличногоДокумента.Вывести(ТекОбласть, Выборка0.Уровень());
КонецЕсли;
Выборка1 = Выборка0.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Поставщик");
Пока Выборка1.Следующий() Цикл
ТекОбласть = ПолучитьТекущуюОбласть(Выборка1, КоличествоГруппировок);
Если НЕ ТекОбласть = Неопределено Тогда
    СтруктураРасшифровки.Вставить("Поставщик", Выборка1.Поставщик);
    ТекОбласть.Параметры.Заполнить(Выборка1);
    Если Выборка1.Группировка() = "Поставщик" Тогда
        СтруктураПоиска = Новый Структура;
        СтруктураПоиска.Вставить("Поставщик", Выборка1.Поставщик);
        СтруктураПоиска.Вставить("Сезон", Выборка1.Сезон);
        СтруктураПараметровРаботы = ОбщегоНазначения.СформироватьСтруктуруПараметровРаботыСПоставщиком(СтруктураПоиска);
        ТекОбласть.Параметры["ПоставщикСтрокой"] = Выборка1.Поставщик.Наименование + " (" + СтруктураПараметровРаботы.Валюта + ")";
        ТекОбласть.Параметры.РасшифровкаМашин = СтруктураРасшифровки;
    КонецЕсли;
    ЭлементыФормы.ПолеТабличногоДокумента.Вывести(ТекОбласть, Выборка1.Уровень());
КонецЕсли;
КонецЦикла;
КонецЦикла;

Код этот формируется на лету, а потом выполняется. Не суть. Работает как положено уже давно. Но вот решил к одному из ресурсов прикрутить расшифровку. В свойствах ячейки указал ПараметрРасшифровки, в данном случае это РасшифровкаМашин. Всё якобы отрабатывает, расшифровка появляется, НО! во всех ячейках структура с последними данными в цикле! Как это побороть? Инфы нет нигде толковой.

Т.е. вот кусок, который формирует расшифровку:

Код 1C v 8.х
  ТекОбласть.Параметры.РасшифровкаМашин = СтруктураРасшифровки;   

после этого область вывелась, вроде как расшифровка должна была вывестись вместе с областью и зафиксироваться, как в других ячейках, расшифровка в которых автоматически формируется.

Mokey
22.12.2014 13:46Ответ № 7

Доступно на пальцах получается так:

Имеем:

Сезон1

Поставщик1       Число1

Поставщик2       Число2

Поставщик3       Число3

 вот, при двойном клике на Число1 получаем в расшифровке структуру Сезон1-Поставщик3, и так в люой из ячеек ЧислоN

Mokey
22.12.2014 14:43Ответ № 8

Так, что всегда последние значения разобрался, структура хранит последние значения по ключам. Подсунул в расшивровку список значений - при двойном клике выводит список из ВСЕХ значений группировок. Тогда как работает присвоение расшифровки текущей области - вообще тёмный лес((

Mokey
22.12.2014 14:44Ответ № 9

Модераторы! Когда можно будет редактировать сообщения свои? Дапустил пару ошибок - и всё! Пусть все считают меня неграмотным? ))))

Mokey
22.12.2014 14:47Ответ № 10

По существу вопроса.

Можно, конечно, заморочиться другими какими-то обходными путями, но хотелось изящно, при выводе области в определённую ячейку закидываются параметры группировок в расшифровку и при двойном клике на этой ячейке уже точно известно, с какими отборами, например, сформировать уточняющий отчёт.

Mokey
22.12.2014 15:00Ответ № 11

Так, кажется, разобрался. Структуру надо создавать заново перед заполнением и присвоением параметру расшифровки! Уже хоть что-то.

Mokey
22.12.2014 15:39Ответ № 12

Да! Так работает. Меня всё устраивает))

Mokey
22.12.2014 15:39Ответ № 13
Вопрос закрыт!
Подсказка: Для быстрого поиска ответов - используйте 'Поиск'
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.