Павло Чистов

У СКД розшифровка є спливаюче меню (по подвійному кліку на комірці), що містять доступні користувачеві дії, такі як відкриття посилання на елемент, упорядкування, групування, оформлення та ін. Тут я приведу приклади розв'язання найбільш поширених завдань, пов'язаних з розшифровкою, таких як :

1. Обмеження доступних дій;

2. Додавання в меню свого довільного дії;

3. Додавання в меню різних дій, в залежності від осередку, для якої виконується розшифровка.

Вся робота з розшифровкою, виконується в подію ОбработкаРасшіфровкі. Що б отримати доступ до цієї події, необхідно спочатку згенерувати основну форму звіту. Потім ПолеТаблічногоДокумента> Властивості> Події.

Отже, завдання №1. Постановка: Необхідно доступні дії для користувача обмежити тільки: відкриттям елемента, упорядкуванням і оформленням.

Завдання №2. Постановка: Необхідно додати в меню свою дію, що відкриває основну форму елементів, що містяться в осередку, для якої виконується розшифровка.

У процедурі ВиполнітьДействіе1 (Розшифровка) отримуємо ПараметрРасшіфровкі для вибраної комірки і відкриває основну форму:

Завдання №3. Постановка: Необхідно в залежності від колонки, для якої виконується розшифровка, додавати свої дії: для «Поле1» - «Действіе1», для «Поле2» - «Действіе2».

Як бачите, нічого складного тут немає. )

11. Андрій Скляров (coder1cv8) 3310 13.04.09 13:27 Зараз в темі

(10) Хм. Ну ось видер приклад зі свого звіту, де по розшифровці виводяться руху по товару / складу за допомогою вкладеної схеми:

Процедура ДвіженіяПоТовару (Номенклатура, Склад)
ТабДок = Новий ТаблічнийДокумент;

СКД_Расшіфровка = СхемаКомпоновкіДанних.ВложенниеСхемиКомпоновкіДанних [0] Схеми;
КомпоновщікНастроек_Расшіфровка = Новий КомпоновщікНастроекКомпоновкіДанних ();
КомпоновщікНастроек_Расшіфровка.ЗагрузітьНастройкі (СКД_Расшіфровка.НастройкіПоУмолчанію);
Налаштування = КомпоновщікНастроек_Расшіфровка.Настройкі;
// Встановимо параметри
Параметри = Настройкі.ПараметриДанних.Елементи;

ПараметрНоменклатура = Параметри.Найті ( "Номенклатура");
ПараметрНоменклатура.Значеніе = Номенклатура;
ПараметрНоменклатура.Іспользованіе = Істина;

ПараметрСклад = Параметри.Найті ( "Склад");
ПараметрСклад.Значеніе = Склад;
ПараметрСклад.Іспользованіе = Істина;

КомпоновщікМакета = Новий КомпоновщікМакетаКомпоновкіДанних;
МакетКомпоновкіДанних = КомпоновщікМакета.Виполніть (СКД_Расшіфровка, Налаштування);
ПроцессорКомпоновкіДанних = Новий ПроцессорКомпоновкіДанних;
ПроцессорКомпоновкіДанних.Ініціалізіровать (МакетКомпоновкіДанних);
ПроцессорВивода = Новий ПроцессорВиводаРезультатаКомпоновкіДаннихВТаблічнийДокумент;
ПроцессорВивода.УстановітьДокумент (ТабДок);
ПроцессорВивода.Вивесті (ПроцессорКомпоновкіДанних);

ось так все працює, 100%

51. Роман Кусков (romku) 12 18.08.16 16:57 Зараз в темі

(11) coder1cv8, спасибі за приклад. Дуже допомогло.

6. Ігор Ісхаков (Ish_2) 985 13.04.09 10:13 Зараз в темі

(3) Відповідь безумовно вірний. Якби питання було про батьків при однорівневої угрупованню. Якщо мова йде ПОЛЯХ ВСІХ батьків, то

1.Предполагаются багаторівневі угруповання невідомого рівня.
2.Значеніе масиву. отриманого методом НайтіРодітелей () можуть мати різні типи і на певних рівнях можуть не мати полів (непридатний метод ПолучітьПоля ()).

Таким чином. передбачається процедура.
Я припустив. що це не приватний (вузький) питання. і його можна розглянути в завданні № 4.

12. kadr (kadr) 36 13.04.09 15:25 Зараз в темі

передбачає, що у Вас заповнена основна СКД для звіту і Ви використовуєте розширення ОтчетОб'ект.СхемаКомпоновкіДанних.

Подивіться як відпрацює той же код якщо очистити основну СКД звіту і завантажити макет в коді

СхемаКомпоновкіДанних1 = ПолучітьМакет (ІмяВашегоМакетаСКД)
СКД_Расшіфровка = СхемаКомпоновкіДанних1.ВложенниеСхемиКомпоновкіДанних [0] Схеми;

13. Андрій Скляров (coder1cv8) 3310 13.04.09 17:19 Зараз в темі

(12) Наскільки я розумію, між схемою отриманої з макета і вкладеної схемою, не повинно бути принципових відмінностей.

15. kadr (kadr) 36 13.04.09 20:25 Зараз в темі

(13) також звернув увагу, що при заповненому властивості основна СКД звіту все працює нормально, а при програмній обробці залишається тільки відбір і вибрані поля

14. Андрій Скляров (coder1cv8) 3310 13.04.09 17:22 Зараз в темі

Взагалі, є в СКД деякі глюки. Зокрема, зауважив, що може "відвалюватися" як сама схема, так і форма налаштувань. В такому випадку допомагає тільки пересозданіе звіту.

16. kadr (kadr) 36 23.04.09 10:04 Зараз в темі

Ось де собака порилася.
перед завантаженням налаштувань до новоствореного КомпоновщікНастроек його треба ініціалізувати

25. katzo (katzo) 16.06.09 17:09 Зараз в темі

Люди, рятуйте! Ну ніяк не можу налаштувати відбір вкладеної схеми, щоб деталізувати загальний звіт. У мене процидурку, яка дані для відбору виглядає так:

НаКліенте
Функція ПолучітьРекурсівноСтруктуруОтбора (ТекущееПоле, СтруктураОтбора = Не визначено)
Якщо СтруктураОтбора = Не визначено Тоді
СтруктураОтбора = Новий Структура;
КонецЕсли;

Для кожного ТекЕл З ТекущееПоле.ПолучітьПоля () Цикл
СтруктураОтбора.Вставіть (ТекЕл.Поле, ТекЕл.Значеніе);
КонецЦікла;

Для кожного ТекЕл З ТекущееПоле.ПолучітьРодітелей () Цикл
Якщо ТіпЗнч (ТекЕл) = Тип ( "ЕлементРасшіфровкіКомпоновкіДаннихПоля") Тоді
ПолучітьРекурсівноСтруктуруОтбора (ТекЕл, СтруктураОтбора);
ІначеЕслі ТіпЗнч (ТекЕл) = Тип ( "ЕлементРасшіфровкіКомпоновкіДаннихГруппіровка") Тоді
Повідомити ( "Угруповання:" + ТекЕл.Группіровка);
інакше
Повідомити ( "Невідомий елемент:" + ТекЕл);
КонецЕсли;
КонецЦікла;

Повернення СтруктураОтбора;
КонецФункціі // ПолучітьРекурсівноСтруктуруОтбора ()


Викликається вона так:

ТекущееПоле = ДанниеРасшіфровкі.Елементи [Розшифровка];
СтруктураОтбора = ПолучітьРекурсівноСтруктуруОтбора (ТекущееПоле);

В результаті значення полів (рядків і колонок) отримую спокійно, а з угруповань не можу ніяк витягнути ні назва угруповання (мені потрібно саме отримати шлях до даних, а не нічого не значуще "ГруппіровкаN"), ні значення, які потім треба встановити в відбір у вкладеній схемою. Може я що не так роблю? Я тільки-тільки почав програму під СКД, 100 грам не допомогли, а важкі наркотики я не хочу вживати, щоб в цьому розібратися :(

Схожі статті