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