|
Ключ записи Регистра сведений, подчиненного регистратору | ☑ | ||
---|---|---|---|---|
0
commdt
23.08.16
✎
12:04
|
Есть динамический список со стандартным запросом, основной таблицей является, к примеру, регистр. На форму выведены все поля динамического списка, среди которых есть и Регистратор (если регистр подчинен регистратору).
Метод Элементы.ДинамическийСписок.ТекущаяСтрока возвращает ключ записи регистра. Далее, обходом отборов набора записей я устанавливаю значения из ключа записи. Если в ключе есть НомерСтроки, то выбираю соответствующую строку набора записей. Пока дело касается Регистров накопления и бухгалтерии, всё в порядке - ключ содержит Регистратор и номер строки, в отборе есть единственное поле - "Регистратор". Также, всё в порядке с независимыми регистрами сведений: В отбор входят все измерения, они же присутствуют в ключе Но вот как только дело доходит до Регистра сведений, подчиненного регистратору, начинается какое-то мракобесие. Единственным полем отбора набора записей регистра является "Регистратор", при этом ключ хоть и содержит регистратор, но он там Неопределено (а в динамическом списке представлен). При этом в ключе присутствуют измерения регистра, но на кой чёрт они мне нужны, если по ним не строится отбор. ЧЯДНТ? Почему Регистратор = Неопределено, хотя он представлен? Как отобрать единственную запись регистра сведений, подчиненного регистратору, имея ключ записи? |
|||
1
commdt
23.08.16
✎
14:15
|
Проверил - добавить новые отборы в набор записей нельзя. Косяк платформы или я туплю?
|
|||
2
hhhh
23.08.16
✎
14:22
|
а зачем вам этот ключ? Вроде у вас запрос, в нем поля, по ним и отбирайте. Так-то и ежу понятно, что отбор в этом регистре возможен только по периоду и регистратору.
|
|||
3
commdt
23.08.16
✎
16:19
|
(2) Суть в том, что мой динамический список действительно динамический. Т.е. при выборе объекта метаданных в нём задаётся основная таблица. Таблица на форме тоже формируется программно.
Далее по двойному клику на строке списка предполагается, что будут получены все данные строки (запись регистра сведений или ссылка) и по ним будет заполнена форма для просмотра и редактирования данных. Проблема в том, что клик на клиенте, а заполнение формы - на сервере. На клиенте есть "ТекущиеДанные" и "ТекущаяСтрока". На сервере ничего этого нет. Текущие данные на сервер идут плохо, остаётся текущая строка, которая ключ записи или ссылка, что прекрасно. Но вот с регистром сведений получается такая ерунда. При этом Ключ записи хоть и существует на клиенте, но недоступен - его не дозаполнить, не переформировать. Похоже, придётся на сервере заново получать строку динамического списка по ключу, а уже потом смотреть, что получится |
|||
4
apokrit
23.08.16
✎
16:32
|
(0) КлючЗаписи нужен для идентификации Записи (а не набора записей).
В регистре сведений (не важно подчиненном регистратору или нет) ключом является набор измерений (+ период если есть, + регистратор если периодичность по позиции регистратора) Если нужен регистратор - его нужно явно добавить в выбираемые поля и поставить флаг "Использовать всегда" (/ вызвать метод УстановитьОбязательноеИспользование если это нужно сделать программно) |
|||
5
commdt
23.08.16
✎
16:43
|
(4) В динамическом списке он выбирается, на форме есть и есть в ТекущиеДанные.
Да чёрт с ним, я даже принудительно установил для него обязательное использование перед получением КлючаЗаписи. Всё равно, в ключе записи Регистратор = Неопределено. Я вот думаю, может, попробовать на сервере получить строку динамического списка по ключу, а уже из неё взять все данные |
|||
6
Fragster
гуру
23.08.16
✎
16:44
|
так периодичность регистра-то какая?
|
|||
7
apokrit
23.08.16
✎
16:48
|
(4)
>Всё равно, в ключе записи Регистратор = Неопределено. Еще раз - регистратор не входит в ключ записи подчиненного регистра сведений, если только у этого регистра не стоит периодичность "по регистратору". Можно использовать любые бубны - значение регистратора от этого в ключе записи не появится. (То что там вообще есть поле Регистратор - конечно не красиво, но это особенность реализации) >Я вот думаю, может, попробовать на сервере получить строку динамического списка по ключу, а уже из неё взять все данные Зачем???? Если на руках уже есть регистратор и нужен регистратор, почему бы его просто не использовать? |
|||
8
commdt
23.08.16
✎
16:52
|
Хаха, "Менеджер записи не может быть использован для регистра с режимом записи "Подчинение регистратору".
И куда мне сунуть твой ключ записи, нуралиев? (7) Я заранее не знаю, что у меня есть на руках и с чем имею дело. Было 3 строчки кода, которые работали с любым объектом конфигурации, кроме чёртвого регистра сведений, подчиненного ергистратору |
|||
9
apokrit
23.08.16
✎
16:57
|
(8) Ну вот я даже не знаю что еще написать.
Можно попробовать СП цитировать: РегистрСведенийКлючЗаписи.<Имя регистра сведений> (InformationRegisterRecordKey.<Имя регистра сведений>) Регистратор (Recorder) Использование: Только чтение. Описание: Тип: ДокументСсылка.<Имя документа>. Содержит регистратор, который занес данную запись регистра сведений. Доступность: Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер). Примечание: Имеет смысл только для регистра, у которого в Конфигураторе установлен режим записи "Подчинение регистратору" и периодичность "По позиции регистратора". |
|||
10
commdt
23.08.16
✎
16:57
|
В общем, вопрос простой, как табуретка:
Как получить запись регистра сведений, подчиненного регистратору, имея на руках ключ записи? |
|||
11
Fragster
гуру
23.08.16
✎
17:23
|
Запись = РегистрыСведений.ххх.СоздатьМенеджерЗаписи()
ЗаполнитьЗначенияСвойств(); Запись.Прочитать(); |
|||
12
apokrit
23.08.16
✎
17:24
|
(10) Прямо запись - эффективно не получится.
Можно данные записи. Написать запрос к (основной) таблице регистра с условиями по всем полям. Еще через РегистрыСведений.<ИмяРегистра>.Выбрать() можно (с соответствующим отбором) |
|||
13
apokrit
23.08.16
✎
17:24
|
(11) Это не будет работать для регистра подчиненного регистратору.
|
|||
14
commdt
23.08.16
✎
17:28
|
(11) "Менеджер записи не может быть использован для регистра с режимом записи "Подчинение регистратору".
(12) В принципе ок. Для периодического можно вместо регистратора использовать период, а для непериодического будет достаточно измерений. Но это какой-то бред по сравнению с тем, как легко это делается в любом другом случае |
|||
15
hhhh
23.08.16
✎
17:58
|
(14) а зачем вам запись? Всё равно отредактировать ее вы не сможете. Редактирование идет только набора записей целиком. И для регистра накопления то же самое.
|
|||
16
commdt
23.08.16
✎
23:13
|
(15) ну да, для этого я и получаю набор записей. на форму выводятся реквизиты одной конкретной записи, её я правлю, а записываю весь набор.
Для сабжа сделаю свой аналог ключа записи - по набору измерений получу запросом регистратор и номер строки. суну в структуру, а дальше по накатанному |
|||
17
hhhh
23.08.16
✎
23:37
|
тогда зачем городить фигню какую-то? получить набор записей, м с ним работать
|
|||
18
commdt
23.08.16
✎
23:58
|
(17) ну так в этом вся проблема. У набора записей отбор только по Регистратору. В ключе есть всё, кроме регистратора
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |