Ключ записи Регистра сведений, подчиненного регистратору #779216


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

В этой группе 1С