Имя: Пароль:
1C
1С v8
Расшифровка на пересечении измерений СКД
0 AllJoke
 
14.04.15
17:50
Доброго дня всем.
Есть обработка. В ней есть ТабличныйДокумент. С помощью СКД вывожу в него результат. Теперь касаемо расшифровок - на пересечении стрки и столбца мне нужно делать отбор по этим измерениям в РегистреСведений. Вообще не могу сообразить куда копать.

В гугле есть методы расшифровок, но не по моему методу.
Прикладываю скрин - https://www.dropbox.com/s/qvjt6euxdrgx3cl/Скриншот%202015-04-14%2017.49.20.png?dl=0
1 Defender aka LINN
 
14.04.15
17:54
"на пересечении стрки и столбца мне нужно делать отбор по этим измерениям в РегистреСведений"
http://liza.leland.ru/wp-content/uploads/2014/05/ШТА-300x200.jpeg
2 AllJoke
 
14.04.15
18:01
Пытаюсь объяснить более подробно. Есть два справочника - Сотрудники, Подразделения. Есть также РС - СотрПодразделенияРаботают. Делаю СКД на их основе. В строках - Сотрудники, в столбцах - Подразделения. На пересечении - ячейка краситься, если есть запись в РС по сотруднику и подразделению. Так вот, при двойном клике мыши на эту красную ячейку мне нужно установить отбор в РС (например он у меня выведен также на форме внизу, как ДинамическийСписок). Вот не могу понять как правильно расшифровку сделать по этой ячейке.
3 Nuobu
 
14.04.15
18:30
(2) Вот так вот:
Поля=Данные.Элементы.Получить(Расшифровка).ПолучитьПоля();
ПолеОтбора=Поля.Найти("ПолеОтбора")
4 Nuobu
 
14.04.15
18:31
(3) Эти строки вставляешь в процедуру "ОбработкаРасшифровки()"
И добавляешь строку: СтандартнаяОбработка = Ложь;
5 AllJoke
 
15.04.15
09:59
Забыл отметить - это всё я делаю в обработке. Там ДанныеРасшифровки в проц.ОбработкаРасшифровки() нет, пришлось делать реквизит формы и тип значения - Произвольный. Формы управляемые.
6 AllJoke
 
15.04.15
09:59
(4) ПолеОтбора = Тип(Неопределено)
7 AllJoke
 
15.04.15
10:25
Nuobu - тебе огромное спасибо за наводку. Посомтрел в типовой БП 3.0, я не верно указал параметр расшифровки.
8 Crush
 
15.04.15
10:25
В макете добавь поля расшифровки
9 AllJoke
 
15.04.15
10:31
(8) уже сотворил. А у меня теперь такой вопрос - в ячейке, которую я кликаю два раза, мне выдает ИдентификаторРасшифровкиКомпоновкиДанных, по совету "Nuobu" я получаю нужные мне данные, а вот как получить значение самой ячейки?
10 fisher
 
15.04.15
10:38
(9) Значение ресурса? Только из текста ячейки. В данных расшифровки его нет.
11 AllJoke
 
15.04.15
10:39
(10) текст ячейки, я так понимаю, получаю только на сервере?
12 fisher
 
15.04.15
10:42
(11) На клиенте.
13 AllJoke
 
15.04.15
10:46
Теперь уперся в отбор по РегиструСведений. Нужно отобрать записи по двум измерениям, хотя в Сп пишет структура может содержать только один элемент.  На скорую руку не подскажете?

РегистрыСведений.МойРегистр.Выбрать(СтруктураОтбора) - здесь в СтруктуреОтбора два элемента (Измер1, Измер2). Ругается - Недопустимое значение параметра (параметр номер '1').
14 fisher
 
15.04.15
10:48
(13) Не. На скорую не подскажу. И в СП лень лезть. Я давно забыл, как выбирать данные методами менеджеров объектов. И тебе советую :)
15 AllJoke
 
15.04.15
10:49
(14) Спасибо, учту. Тогда - запрос?
16 George Wheels
 
15.04.15
10:58
(13) СтруктураОтбора = Новый Структура("Отбор", Новый Структура("Измер1"...
17 fisher
 
15.04.15
10:59
(15) Да. Запросом универсальнее. Сегодня требуется простое обращение к РС, а завтра потребуется допилить или захочется одновременно получать сопутствующие данные без лишних обращений к БД - и всё равно придется переделывать на запрос.
Чтобы быстрее клепать запросы можно использовать шаблоны.
18 George Wheels
 
15.04.15
11:01
(16) + поторопился.
А РС периодический?
19 AllJoke
 
15.04.15
11:02
(18) нет.
20 AllJoke
 
15.04.15
11:05
(17) Тут ты прав. Но если же мне нужно просто получить выборку лишь для того, чтобы удалить либо добавить запись....пользоваться запросом каждый раз ради этого не есть хорошо, чисто моё мнение.
21 George Wheels
 
15.04.15
11:10
ЭлементОтбора = ДинСписок.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение    = Новый ПолеКомпоновкиДанных("Измер1");
ЭлементОтбора.ВидСравнения     = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.Использование    = Истина;
ЭлементОтбора.ПравоеЗначение   = ТвойСотрудник;
22 George Wheels
 
15.04.15
11:11
(21) + и ещё один элемент Измер2
23 fisher
 
15.04.15
11:15
(21) Выдыхай. ДенисаЧ накличешь. Причем тут компоновка и динамический список?
Отбор там просто третьим параметром идти должен (первые два - период). И ключ структуры отбора содержать имя измерения.
24 fisher
 
15.04.15
11:20
(20) Объективно - запрос ничем не хуже. Кода больше - это да.
Но моё чувство прекрасного это не смущает. Проще стучаться в базу однотипно, чем использовать оба подхода без какой-либо практической пользы.
25 George Wheels
 
15.04.15
11:20
(23) Тогда произвольный запрос в динамическом списке:

ВЫБРАТЬ
...

ГДЕ
РС.Измер1 = &Сотрудник
И РС.Измер2 = &Подразделение

при клике
ДинСписок.Параметры.УстановитьЗначениеПараметра("Сотрудник", ВыбранныйСотрудник);
ДинСписок.Параметры.УстановитьЗначениеПараметра("Подразделение", ВыбранноеПодразделение);
26 AllJoke
 
15.04.15
11:21
Хорошо, хорошо. С регситром понятно. А вот как решить задачу обновлнеия ТАбДока на клиенте, елси этот ТабДок с вязана с СКД? Причем по условию, обращаться к серверу нельзя. Тобишь удалил я запись в оегистре и в моей шахматке должна ячейка стать серой, что означает - записи там нет.
27 fisher
 
15.04.15
11:23
(26) Ту ячейку, по которой клацал? Ну, это просто. Ты же на клиенте можешь получить у поля формы текущую область. И делай с ней что хочешь.
28 AllJoke
 
15.04.15
11:25
(27) тут немного не так. Подробнее: есть список Регистра внизу, там я удаляю запись, вот после этих мани пуляций шахматка должна перестроиться. Причем без вызова сервера.
29 fisher
 
15.04.15
11:28
(28) Человечески ПЕРЕСТРОИТЬ на клиенте не получится. Но можно работать на уровне прямого доступа к областям. Вот и думай.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан