Ключ записи регистра сведений 1с как использовать
Перейти к содержимому

Ключ записи регистра сведений 1с как использовать

  • автор:

Ключ записи

Совокупность полей записи, по которой контролируется уникальность записей в регистре.

В регистре не может быть двух записей с одинаковыми значениями полей, входящих в ключ записи.

Также используется для идентификации записей, например, чтобы спозиционироваться на строку в списке.

Полезные ссылки:

  • ИТС — Особенности использования типов, предназначенных для манипулирования необъектными данными,
  • ИТС — Работа с прикладными объектами средствами встроенного языка,
  • ИТС — Организация выбора из произвольной формы (на примере выбора из списка регистра сведений),
  • ИТС — Периодические регистры сведений

1С 8.3 Ключ менеджера записи регистра сведений — Программист 1С Минск. Автоматизация бизнеса.

ПРИМЕРЫ КОДА 1С

Перейти в раздел примеры кода 1С 8.3:

Пример кода от JuniorOneS: Возврат ключа менеджера записи регистра сведений в 1С 8.3:

Функция КлючМенеджераЗаписиРС ( ДанныеЗаписи , ИмяРС = «» ) Экспорт

// Параметры:
// ДанныеЗаписи — МенеджерЗаписи, Структура, Произвольный — коллекция с данными записи
// ИмяРС — Строка — Имя регистра. Если не передано,
// то метаданные регистра берутся из ДанныеЗаписи

Если ПустаяСтрока ( ИмяРС ) Тогда
РС_Метаданные = Метаданные . НайтиПоТипу ( ТипЗнч ( ДанныеЗаписи ));
Иначе
РС_Метаданные = Метаданные . РегистрыСведений [ ИмяРС ];
КонецЕсли;

Значения_ключа = Новый Структура ( «Период» );

Для Каждого Измерение Из РС_Метаданные . Измерения Цикл
Значения_ключа . Вставить ( Измерение . Имя );
КонецЦикла;

ЗаполнитьЗначенияСвойств ( Значения_ключа , ДанныеЗаписи );

//Возвращает ключ менеджера записи регистра сведений
Возврат РегистрыСведений [ РС_Метаданные . Имя ]. СоздатьКлючЗаписи ( Значения_ключа ); //Ключ записи регистра

Ключ записи регистра сведений для открытия ее формы

Для того, чтобы открыть существующую запись регистра сведений в управляемых формах необходимо:

  • Знать значения всех измерений
  • Вызов производится с клиентской процедуры через конструктор Новый с использованием обертки в виде массива
  • Либо через вспомогательную функцию, которая создаст ключ на сервере
  • Первый пример кода открытия записи регистра сведений
  • Второй вариант открытия — с использованием серверного вызова
  • Особенности использования

Первый пример кода открытия записи регистра сведений

МассивКонструктораКлюча = Новый Массив;
МассивКонструктораКлюча.Добавить(Новый Структура(«ГрафикРаботы,Дата,НачалоИнтервала»,Расшифровка.ГрафикРаботы,НачалоДня(Расшифровка.Дата),Расшифровка.Дата));

КлючЗаписиРегистра = Новый («РегистрСведенийКлючЗаписи.ТабельРаботы», МассивКонструктораКлюча);
ОткрытьФорму(«РегистрСведений.ТабельРаботы.Форма.ФормаНазначенияПериода», Новый Структура(«Ключ», КлючЗаписиРегистра));

Второй вариант открытия — с использованием серверного вызова

КлючЗаписиРегистра = ПолучитьКлючЗаписи(Новый Структура(«ГрафикРаботы,Дата,НачалоИнтервала», Расшифровка.ГрафикРаботы,НачалоДня(Расшифровка.Дата),Расшифровка.Дата));
ОткрытьФорму(«РегистрСведений.ТабельРаботы.Форма.ФормаНазначенияПериода», Новый Структура(«Ключ», КлючЗаписиРегистра));

Особенности использования

В случае отсутствия записи, когда указаны не действительные измерения регистра, выйдет ошибка «Объект не найден»:

obekt-ne-najden

  • Вариант1: Используйте попытку исключение
  • Вариант2: При серверном вызове, возможно не просто создавать ключ, но и добавить проверку наличия

Запись = РегистрыСведений.ТабельРаботы.СоздатьМенеджерЗаписи();
ЗаполнитьЗначенияСвойств(Запись,Структура);
Запись.Прочитать();
Если Запись.Выбран() = Ложь
Возврат Неопределено;
КонецЕсли;

Реклама — искусство превращения полуправды в полную ложь.

— Эдгар Шоф

Ключ записи регистра сведений 1с как использовать

Всем добрый день.

Пол гугла облазил, не могу найти ни где, может кто знает?

ПостроительЗапроса = Новый ПостроительЗапроса;
ПостроительЗапроса.ИсточникДанных = Новый ОписаниеИсточникаДанных(ЖурналБизнесПроцессы);
Выборка = ПостроительЗапроса.Результат.Выбрать();
Если Выборка.Следующий() Тогда
Набор = РегистрыСведений.CRM_БизнесПроцессы.СоздатьНаборЗаписей();
Набор.Отбор.БизнесПроцесс.Установить(Выборка.БизнесПроцесс);
Строка = Набор.Прочитать();

Суть в том, что нужно установить первую строку текущей, но тип данных табличного поля — список регистра сведений. Получается, что текущая строка — это ключ записи. Подскажите пожалуйста, как мне получить этот ключ записи, отбором строку нашел, но таких реквизитов у нее нету.:(

Буду очень благодарен.

Нажми ctrl-F1 на слове «Прочитать»

РегистрСведенийМенеджер. <Имя регистра сведений>(InformationRegisterManager.<Имя регистра сведений>)
СоздатьКлючЗаписи (CreateRecordKey)
Синтаксис:

Тип: Структура.
Структура, содержащая значения для заполнения свойств ключа записи.
Имена элементов структуры должны соответствовать именам ключевых полей.
Возвращаемое значение:

Создает ключ записи по переданной структуре.

Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
Пример:

Отбор = Новый Структура;
Отбор.Вставить(«Подразделение», ВыбПодразделение);
Отбор.Вставить(«Должность», ВыбДолжность);
Рег = РегистрыСведений.СведенияОШтатныхЕдиницах;
КлючЗаписи = Рег.СоздатьКлючЗаписи(Отбор);
// ШтатныеЕдиницы — табличное поле для отображения списка
// записей регистра сведений
ЭлементыФормы.ШтатныеЕдиницы.ТекущаяСтрока = КлючЗаписи;

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *