|
Кросс таблица для СКД | ☑ | ||
---|---|---|---|---|
0
Ly_Alena
08.01.16
✎
14:02
|
Добрый вечер! Для расшифровки данных в предопределенном макете СКД решила сделать кросс таблицу ну и как обычно начались тупняки.
Кросс таблица показывает все документы движения, которые есть в регистре. А как отсортировать, например по контрагенту? Процедура РезультатОбработкаРасшифровки(Элемент, ВыбраннаяСтрока, Расшифровка, СтандартнаяОбработка) ... СоответствиеОтбора = Новый Соответствие; //СоответствиеОтбора.Вставить("Контрагент", ВыбраннаяСтрока.Контрагент); ... КонецПериода Как указать колонку (параметр) в текущей строке, по которой отсортировать? |
|||
1
Ly_Alena
08.01.16
✎
14:02
|
Процедура РезультатОбработкаРасшифровки(Элемент, ВыбраннаяСтрока, Расшифровка, СтандартнаяОбработка)
... СоответствиеОтбора = Новый Соответствие; СоответствиеОтбора.Вставить("Контрагент", ВыбраннаяСтрока.Контрагент); ... КонецПроцедуры |
|||
2
Ly_Alena
11.01.16
✎
05:00
|
Вот это да... ни одного сообщения. Граждане хэлп! )
|
|||
3
Ly_Alena
11.01.16
✎
08:03
|
Похоже люди еще с каникул не вышли ) Печаль прямо...
|
|||
4
Chameleon1980
11.01.16
✎
08:19
|
спят ешо
|
|||
5
Ly_Alena
11.01.16
✎
08:34
|
С пятницы еще ) (4)
|
|||
6
hhhh
11.01.16
✎
09:26
|
(5) а что конкретно не получается? И почему пишешь отбор, а вопрос задаешь про сортировку? Это же разные вещи.
|
|||
7
Ly_Alena
11.01.16
✎
09:33
|
(6) не получается отобразить только те документы движения, из которых складывается цифра в отчете. у меня отображает все документы движения, которые есть в регистре.
|
|||
8
Ly_Alena
11.01.16
✎
09:35
|
(6) отбор. мне нужно отобрать по колонкам в строке, по которой щелкнули
|
|||
9
Ly_Alena
11.01.16
✎
09:38
|
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь; Отчет = Отчеты.ОтчетСписокКроссТаблица.Создать(); СтруктураНостроек = Новый Структура; СтруктураНостроек.Вставить("ИмяРегистра", "ДебиторыКредиторы"); СтруктураНостроек.Вставить("ДатаКон", ТекущаяДата()); СоответствиеОтбора = Новый Соответствие; //СоответствиеОтбора.Вставить("Контрагент", Расшифровка.Контрагент); СтруктураНостроек.Вставить("Отбор",СоответствиеОтбора); СоответствиеГруппировок = Новый Соответствие; СоответствиеГруппировок.Вставить("Контрагент"); СтруктураНостроек.Вставить("ГруппировкиСтрок", СоответствиеГруппировок); СтруктураНостроек.Вставить("ВыбранныеПоля", Новый Структура("ДокументЗадолженности", "ДокументЗадолженности")); СтруктураНостроек.Вставить("РаскрашиватьИзмерения", Истина); Отчет.Настроить(СтруктураНостроек); ФормаОтчета = Отчет.ПолучитьФорму(); ФормаОтчета.ОбновитьОтчет(); ФормаОтчета.Открыть(); КонецПроцедуры Закомментированная строка выдает ошибку: {Форма.ФормаОтчета.Форма(12)}: Значение не является значением объектного типа (Контрагент) СоответствиеОтбора.Вставить("Контрагент", Расшифровка.Контрагент); |
|||
10
Ly_Alena
11.01.16
✎
09:39
|
Как ему написать по какому полю должен быть отбор, передать из строки расшифровки?
|
|||
11
Defender aka LINN
11.01.16
✎
09:46
|
Чтобы сделать расшифровку - надо СКД не мешать. Она и сама все умеет.
|
|||
12
Ly_Alena
11.01.16
✎
09:47
|
(11) если не предопределенный макет.
|
|||
13
Defender aka LINN
11.01.16
✎
09:51
|
(12) На кой черт он нужен?
А так - в типовых (в Рознице 1 точно) есть готовый код, который из данных расшифровки выгребает значения |
|||
14
hhhh
11.01.16
✎
09:55
|
(12) вообще-то Расшифровка это массив. Поэтому слово Расшифровка.Контрагент не прокатит по-любому. Лучше поставь там точку останова и посмотри отладчиком, что там в поле Расшифровка?
|
|||
15
Ly_Alena
11.01.16
✎
10:42
|
Понятно что Расшифровка.Контрагент не пойдет. Поэтому и спрашиваю как пойдет?
|
|||
16
Ly_Alena
11.01.16
✎
10:52
|
(13) мне нужны данные не из расшифровки, а данные отчета, чтобы расшифровка по ним была отфильтрована.
ps Для чего нужен предопределенный макет - не обсуждается. |
|||
17
Ly_Alena
11.01.16
✎
12:20
|
Люююдиии, вы где? )
|
|||
18
AceVi
11.01.16
✎
14:44
|
Запусти отладку и смотри
1. данные расшифровки хранятся в таблице(или там дерево, не суть важно) ДанныеРашифровки. 2. Переменная Расшифровка - это просто указатель на строку в этой таблице(то ли номер строки, то ли значение колонки, посмотри через отладчик). Соответственно - находишь строку - в строке значение расшифровки. и от туда уже через точку получишь контрагента. |
|||
19
Defender aka LINN
11.01.16
✎
22:34
|
(14) Расшифровка - это не массив.
(18) И не таблица и не дерево. |
|||
20
Ly_Alena
12.01.16
✎
08:18
|
Расшифровка - это поле расшифровки - которое я указала в макете.
|
|||
21
Ly_Alena
12.01.16
✎
08:19
|
(18) (19) если б через точку можно было что-то получить - я бы сюда не написала. Ошибка выходит через точку - выше писала текст.
|
|||
22
Ly_Alena
12.01.16
✎
08:21
|
(20) Пардоньте! Не поле, которое я указала - а документ регистратор.
|
|||
23
Ly_Alena
12.01.16
✎
08:43
|
Уже мне кажется весь интернет перерыла...
Все-таки как получить данные строки, в которой выполняется расшифровка ячейки в предопределенном макете? |
|||
24
AceVi
12.01.16
✎
09:08
|
(23) Я же написал как. ты пробовала?
|
|||
25
AceVi
12.01.16
✎
09:09
|
(21) Читай Внимательно! там написано что есть переменная с именем ДанныеРашифровки - это таблица. и далее по тексту читай. что за невнимательность.
|
|||
26
Ly_Alena
12.01.16
✎
09:10
|
(24) Конечно. Расшифровка - это документ Регистратор.
С самого начала так и пробовала через точку - выдает ошибку. |
|||
27
Ly_Alena
12.01.16
✎
09:10
|
(25) Так... сейчас
|
|||
28
Ly_Alena
12.01.16
✎
09:13
|
(25) Не пойму, как выйти на данные расшифровки?
|
|||
29
Ly_Alena
12.01.16
✎
09:14
|
(28) если через точку ДанныеРасшифровки.Контрагент или любое другое поле - говорит что поле не обнаружено.
|
|||
30
AceVi
12.01.16
✎
09:19
|
о боже. ДанныеРасшифровки это ТАБЛИЦА. тебе в ней надо получить строку - указание на строку есть переменная Расшифровка. По крайней мере так работают стандартные отчеты на СКД. Скинь сюда значение переменной Расшифровка.
|
|||
31
Ly_Alena
12.01.16
✎
09:31
|
Значение расшифровки - Документ Платежное поручение входящее
|
|||
32
Ly_Alena
12.01.16
✎
09:33
|
(30) в Отчете нет такого значение (как платежное поручение). Это есть в регистре из которого строится кросс таблица.
|
|||
33
AceVi
12.01.16
✎
09:39
|
Это прям ты скопировала из отладчика значение переменной? у тебя там строка в которой написано Документ Платежное поручение входящее?
Или ты не привела полное значение и там ссылка на конкретный документ? |
|||
34
AceVi
12.01.16
✎
09:49
|
О кстати - как ты формируешь сам отчет?
в модуле отчета типа такие строки есть? МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки); |
|||
35
Ly_Alena
12.01.16
✎
10:33
|
(33) ссылка на конкретный документ
|
|||
36
Ly_Alena
12.01.16
✎
10:36
|
(34) нет - ни одной строчки нет.
|
|||
37
AceVi
12.01.16
✎
10:46
|
Тогда понятно, как видишь, в стандартных отчетах которые придумала 1С, они при компановке макета данные расшифорвки выгружают в переменную ДанныеРасшифровки, по крайней мере так было в УПП 1.3. Ты значит, по своему как то делаешь. тут пока сам отчет не пришлешь, не понятно как ты там все настроила.
И в конце концов, тогда странно, если у тебя переменная Расшифровка - это ссылка на конкретный документ, тогда и через точку можно получать. У тебя форма отчета обычная или управляемая? Судя по всему обычная. и должно через точку получать значения из типа значения ссылка. Значит что то непонятное твориться, надо глядеть на сам отчет в отладчике. |
|||
38
Ly_Alena
12.01.16
✎
10:50
|
(37) Форма отчета обычная. Если внешнюю обработку скину - не получится. Регистр свой. Что делать?
|
|||
39
Ly_Alena
12.01.16
✎
11:35
|
(37) снова все меня покинули. Мне так нужна хоть какая-то помощь...
|
|||
40
AceVi
12.01.16
✎
11:41
|
Скидывай базу, что делать то.
Делаешь пустую базу, заводишь в регистр пару строк и скидываешь. |
|||
41
Ly_Alena
12.01.16
✎
11:54
|
(40) Других вариантов нет? Базу не могу. И отправлять ничего не могу.
|
|||
42
AceVi
12.01.16
✎
12:01
|
(41) Ну а какие варианты, если ты утверждаешь, что переменная Расшифровка = ссылка а через точку ты получить не можешь. Либо неверное наименование реквизита через точку и там такого нет, либо твориться магия.
Если ты говоришь - что это ссылка - ну открой в отладчике и посмотри, есть там контрагент или нет.и скрин сделай. |
|||
43
Ly_Alena
12.01.16
✎
12:11
|
(42) открывала документ и через точку ставила реквизиты, которые есть там.
Может загвоздка в том, что в расшифровке показывает документ регистратор, который в макете не участвует. Он показывает все данные из регистра, никак не связанные с выведенным отчетом. И эти данные нужно отфильтровать. |
|||
44
AceVi
12.01.16
✎
13:04
|
(43) Не путай теплое с мягким. Если Расшифровка = ссылка то и через точку получить можно. А че там за ссылка - регистратор не регистратор, не важно.
Скрины давай. |
|||
45
Ly_Alena
12.01.16
✎
13:57
|
||||
46
Ly_Alena
12.01.16
✎
13:58
|
Лучше здесь
https://dropmefiles.com/elvmz |
|||
47
Ly_Alena
12.01.16
✎
14:01
|
https://dropmefiles.com/NM0HL - значение расшифровки
|
|||
48
AceVi
12.01.16
✎
15:09
|
(47) Давай по порядку. СКД показывать не надо.
я прошу скрин где - Покажи значение переменной расшифровка в окне "Вычислить выражение" (ставишь курсор на переменную и нажимаешь shift+f9) и раскрой, и покажи что там есть реквизит контрагент. |
|||
49
Ly_Alena
13.01.16
✎
05:03
|
ДанныеРасшифровки https://dropmefiles.com/NM0HL
|
|||
50
Ly_Alena
13.01.16
✎
06:45
|
Короче сделала извратом:
Процедура РезультатВыбор(Элемент, Область, СтандартнаяОбработка) мПолеКонтрагент =Область.Верх; КонецПроцедуры Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка) ... //Контрагент ПолеКонтрагент = ЭлементыФормы.Результат.Область(мПолеКонтрагент,2).Текст; ПолеСправочникаКонтрагенты = Справочники.Контрагенты.НайтиПоНаименованию(ПолеКонтрагент); ... СоответствиеОтбора = Новый Соответствие; СоответствиеОтбора.Вставить("Контрагент", ПолеСправочникаКонтрагенты); СтруктураНостроек.Вставить("Отбор",СоответствиеОтбора); ... Если кто-то предложит более изящное решение - буду очень рада! |
|||
51
Mankubus
13.01.16
✎
06:54
|
(50) а расшифровка.контрагент не работает что ли?
документ платежное поручение у тебя не ДанныеРасшифровки, а Расшифровка |
|||
52
Ly_Alena
13.01.16
✎
07:06
|
(51) Нет
|
|||
53
LordCMEPTb
13.01.16
✎
08:48
|
(52) А в макете, который выводит область "Строка" у ячейки "Контрагент" задан параметр расшифровки?
Ну и в параметр расшифровки вроде можно несколько значений установить, лишь бы одни были в текущей группе структуры отчетов (т.е. не получилось так, что расшифровка шапки по контрагенту, который только в подчиненной группировке выбирается). |
|||
54
Ly_Alena
13.01.16
✎
09:07
|
(53) Контрагенту не задавала параметр расшифровки... Сейчас попробую.
|
|||
55
Ly_Alena
13.01.16
✎
09:11
|
(53) не
Расшифровка - ссылка на документ платежное поручение |
|||
56
Ly_Alena
17.01.16
✎
14:17
|
Снова я! Все прокляла! Сделала расшифровку по кросс таблице, возникла необходимость добавить Регистратор в расшифровку. А вот фиг! Выскакивает ошибка - что такое измерение не найдено. Получается в кросс-таблице можно отобразить только изменения? Или все-таки есть вариант показать документ регистратор? Товарищи знатоки хэлп!
|
|||
57
Ly_Alena
18.01.16
✎
13:02
|
up
|
|||
58
Ly_Alena
18.01.16
✎
13:52
|
(56) не изменения, а измеРения
Код: Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; Отчет = Отчеты.ОтчетСписокКроссТаблица.Создать(); СтруктураНостроек = Новый Структура; СтруктураНостроек.Вставить("ИмяРегистра", "ДебиторыКредиторы"); СтруктураНостроек.Вставить("ДатаКон", ТекущаяДата()); //Контрагент ПолеКонтрагент = ЭлементыФормы.Результат.Область(мПолеКонтрагент,2).Текст; ПолеСправочникаКонтрагенты = Справочники.Контрагенты.НайтиПоНаименованию(ПолеКонтрагент); //Ответственный ПолеОтветственный = ЭлементыФормы.Результат.Область(мПолеКонтрагент,5).Текст; ПолеСправочникаОтветственный = Справочники.ФизическиеЛица.НайтиПоНаименованию(ПолеОтветственный); //Договора ПолеДоговор = ЭлементыФормы.Результат.Область(мПолеКонтрагент,12).Текст; ПолеСправочникаДоговор = Справочники.ДоговорыКонтрагентов.НайтиПоКоду(ПолеДоговор); // //Срок по договору //ПолеСрокПоДоговору = ЭлементыФормы.Результат.Область(мПолеКонтрагент,8).Расшифровка; //Если ПолеСрокПоДоговору <> "" Тогда // ПолеДаты = Дата(ПолеСрокПоДоговору); //Иначе // ПолеДаты = ""; //КонецЕсли; //Договор //ПолеДоговор = ЭлементыФормы.Результат.Область(мПолеКонтрагент,12).Расшифровка; //ПолеСправочникаДоговор = Справочники.ДоговорыКонтрагентов.НайтиПоКоду(ПолеДоговор); СоответствиеОтбора = Новый Соответствие; СоответствиеОтбора.Вставить("Контрагент", ПолеСправочникаКонтрагенты); СоответствиеОтбора.Вставить("Ответственный",ПолеСправочникаОтветственный); //СоответствиеОтбора.Вставить("СрокПоДоговору",ПолеДаты); СоответствиеОтбора.Вставить("Договор",ПолеСправочникаДоговор); СтруктураНостроек.Вставить("Отбор",СоответствиеОтбора); // СоответствиеГруппировок = Новый Соответствие; //СоответствиеГруппировок.Вставить("Контрагент"); ////СоответствиеГруппировок.Вставить("Ответственный"); ////СоответствиеГруппировок.Вставить("Договор"); ////СоответствиеГруппировок.Вставить("СрокПоДоговору"); СоответствиеГруппировок = Новый Соответствие; СоответствиеГруппировок.Вставить("ДокументЗадолженности"); СтруктураНостроек.Вставить("ГруппировкиСтрок", СоответствиеГруппировок); Отчет.Настроить(СтруктураНостроек); ФормаОтчета = Отчет.ПолучитьФорму(); ФормаОтчета.ОбновитьОтчет(); ФормаОтчета.Открыть(); КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |