Имя: Пароль:
1C
1С v8
ДанныеРасшифровки - "неразрешимая проблема"!
0 Мисти
 
30.11.17
23:08
Простите, в каком-то смысле дублирую вопрос, но мне уже позарез надо.
Украла такой прекрасный кусочек - СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");

//Из схемы возьмем настройки по умолчанию
Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;

//Помещаем в переменную данные о расшифровке данных
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;

//Формируем макет, с помощью компоновщика макета
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;

//Передаем в макет компоновки схему, настройки и данные расшифровки
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
1 Мисти
 
30.11.17
23:09
Отчет при этом формируется, а в расшифровку я не попадаю!
Наверное, потому что нет реквизита формы ДанныеРасшифровки
А если делаю такой реквизит, то не работает кусочек выше. Не тот тип, говорит!
2 simol
 
30.11.17
23:31
Так делай это в форме отчета
3 Мисти
 
30.11.17
23:35
Это - что?
у меня всё в форме отчета!
4 Cyberhawk
 
30.11.17
23:40
Никакого реквизита формы для расшифровки не надо
5 Мисти
 
30.11.17
23:49
А почему тогда я не попадаю в расшифровку?
У меня другой версии нет!
6 Мисти
 
30.11.17
23:50
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
    н = 1;
    СтандартнаяОбработка = Ложь;
    ДанныеРасшифровки = ПолучитьИзВременногоХранилища(АдресХранилищаДанныхРасшифровки);
    //Значение текущего поля    
    Поле = ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьПоля()[0];
Вот сюда я не попадаю!
7 Мисти
 
30.11.17
23:59
Чего может не хватать в форме?
8 Franchiser
 
гуру
01.12.17
01:03
Код надо писать в модуле объекта в прикомпоновкерезультата()
9 hhhh
 
01.12.17
07:11
(7) ну эта процедура Процедура РезультатОбработкаРасшифровки привязана к событию формы?
10 Мисти
 
01.12.17
13:36
(9)Конечно! Не то, чтоб к событию, а стоит в обработке расшифорвки свойства "поле".
(8) а я в форме - добавила свою кнопку "сформировать" и это всё - туда!
11 Мисти
 
01.12.17
13:42
У меня сейчас 2 кнопки "сформировать" - одна стандартная, одна моя, чтоб прилепить туда весь текст с расшифровкой.
По моей явно выдается отдельная таблица! Она не попадает в таб. часть отчета, наверное, поэтому и расшифровка не срабатывает. А почему не попадает?
12 Мисти
 
01.12.17
13:43
,,,,,,,,,,,,,,,,,
ДокументРезультат = Новый ТабличныйДокумент;
    // Вывод результат компоновки в табличный документ
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
    АдресХранилищаДанныхРасшифровки = ПоместитьВоВременноеХранилище(ДанныеРасшифровки, УникальныйИдентификатор);
    Возврат(ДокументРезультат);


А в начале так - &НаКлиенте
Процедура ЗапуститьФормированиеОтчета(ВФоне = Ложь)
        РезультатВыполнения = СформироватьОтчетНаСервере();
    РезультатВыполнения.ТолькоПросмотр = Истина;
    РезультатВыполнения.Показать();
КонецПроцедуры
13 Cyberhawk
 
01.12.17
13:48
(12) В прошлой теме Я уже отвечал по этому поводу
14 Мисти
 
01.12.17
14:08
ДокументРезультат нужно загрузить в поле табличного документа на форме - это?
Я вот и думала, что "загрузила"
15 Cyberhawk
 
01.12.17
15:33
Это
16 Мисти
 
03.12.17
21:55
Формально получилось, в том смысле, что не ругается.
Почему-то поле отчета выглядит странно - серое, как обычно выглядят недоступные кнопки, но это полбеды.
В расшифровке - пусто!
ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьПоля()
17 Мисти
 
03.12.17
21:55
Индекс    Значение элемента    Тип элемента    Поле    Значение    Иерархия
0    ЗначениеПоляРасшифровкиКомпоновкиДанных    ЗначениеПоляРасшифровкиКомпоновкиДанных    "Сумма"        Ложь
18 Мисти
 
03.12.17
21:56
Это отладчик так показывает значение
ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьПоля()
19 Мисти
 
03.12.17
21:59
Наверное, надо еще в СКД где-то что-то обозначить?
Где тот момент, когда в расшифровку запихиваются значения полей?
20 Дык ё
 
03.12.17
22:45
(10) этот код должен быть в модуле объекта в прикомпоновкерезультата. а на форме реквизит ДанныеРасшифровки должен быть строковым, внезапно. там будет адрес в хранилище. это если пользоваться штатными механизмами

а если хочется странного типа "а я в форме" - надо делать слегка иначе
21 Мисти
 
04.12.17
15:01
Пусть в модуле!
Я никак не найду примера подходящего, мне кажется, тут ничего сложного - если найти что-то готовое.
    СхемаКомпоновкиДанных = Отчеты.АР_ОтчетПоРасходам.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
    // Установка настроек схемы компоновки данных
    Настройки = Отчет.КомпоновщикНастроек.Настройки;
    // В этот объект помещается информация о расщифровке данных
    ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
    // Формирование макета компоновки данных с помощью компоновщика макета
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    // В макет компоновки передаются СхемаКомпоновкиДанных, ее Настройки и ДанныеРасшифровки для заполнения информации о расшифровке
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
    // Выполнение компоновки данных с помощью процессора компоновки
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки);
    // Очистка поля табличного документа - Результат
    //Элементы.Результат.Очистить(); //Формы.
    //ДокументРезультат = Элементы.Результат;//Формы
    ДокументРезультат = Новый ТабличныйДокумент;
    // Вывод результат компоновки в табличный документ
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
    АдресХранилищаДанныхРасшифровки = ПоместитьВоВременноеХранилище(ДанныеРасшифровки, УникальныйИдентификатор);
Вот это всё писать в модуле?
22 Мисти
 
04.12.17
15:21
Отрабатывает это "приКомпоновке", а в расшифровку я опять перестала попадать!
&НаКлиенте
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
    н = 1;
    СтандартнаяОбработка = Ложь;
    ОбработатьРезультатНаСервере(Расшифровка);

Вот сюда!
23 Мисти
 
04.12.17
15:24
Ну, логично, этот "ДокументРезультат" никак с полем "результат" формы не связан.
24 Мисти
 
04.12.17
15:35
Что сделать-то?
25 ildary
 
04.12.17
15:54
(24) Перестать программировать методом "хренак хренак и в продакшен" и сесть читать учебники.
26 Мисти
 
04.12.17
16:00
О! Нет! Учебник тут не поможет.
27 Мисти
 
04.12.17
16:13
В модуле "ПриКомпоновке... " заканчивается вот этим -
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
    Результат = ДокументРезультат;
ДанныеРасшифровки - реквизит и еще выбран в поле формы
В расшифровку попадаю
&НаКлиенте
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
    н = 1;
    СтандартнаяОбработка = Ложь;
    ОбработатьРезультатНаСервере(Расшифровка);
КонецПроцедуры

&НаСервере
Процедура ОбработатьРезультатНаСервере(Расшифровка)
    ДанныеРасшифровкиТек = ПолучитьИзВременногоХранилища(ДанныеРасшифровки);
    //Значение текущего поля    
    Поле = ДанныеРасшифровкиТек.Элементы[Расшифровка].ПолучитьПоля()[0];    //ПарметрыРасштфровки.Собственник
КонецПроцедуры
Но что-то ничего интересного там не вижу!
Выражение    Значение    Тип
ПолучитьИзВременногоХранилища(ДанныеРасшифровки).Элементы[Расшифровка].ПолучитьПоля()[0]    ЗначениеПоляРасшифровкиКомпоновкиДанных    ЗначениеПоляРасшифровкиКомпоновкиДанных
Значение        Null
Иерархия    Ложь    Булево
Поле    "Сумма"    Строка
28 Мисти
 
04.12.17
16:25
А почему я не вижу названий колонки и строки?
Значение        Null - тоже неправильно, я там вижу вполне конкретную сумму!
29 Мисти
 
04.12.17
16:39
ДанныеРасшифровкиТек.Элементы[Расшифровка].ПолучитьРодителей()
Дает массив из 2 элементов.
Может, там что-то хорошее?
30 Мисти
 
04.12.17
16:50
ДанныеРасшифровкиТек.Элементы[Расшифровка].ПолучитьРодителей()[0].ПолучитьПоля() - там есть моя статья! Правда, только в виде наименования - это по горизонтали.
А где взять по вертикали?
31 Мисти
 
04.12.17
16:52
ДанныеРасшифровкиТек.Элементы[Расшифровка].ПолучитьРодителей()[0].ПолучитьПоля()[0].Значение - ура, то, что нужно!
Осталось найти вертикаль!
32 Мисти
 
04.12.17
16:57
Т.е. нашлось значение строки, а значение колонки где?
33 Мисти
 
04.12.17
16:59
Вау, есть!
ДанныеРасшифровкиТек.Элементы[Расшифровка].ПолучитьРодителей()[1].ПолучитьПоля()[0].Значение