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

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

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

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

КлючЗаписиРегистра = Новый ("РегистрСведенийКлючЗаписи.ТабельРаботы", МассивКонструктораКлюча);
ОткрытьФорму("РегистрСведений.ТабельРаботы.Форма.ФормаНазначенияПериода", Новый Структура("Ключ", КлючЗаписиРегистра));НомерСтрокиНачало    = 1;
ПозицияНачало        = 1;
НомерСтрокиОкончание = СтрЧислоСтрок(объект.ПолеТекстовогоДокумента);
ПозицияКонец         = СтрДлина(СтрПолучитьСтроку(объект.ПолеТекстовогоДокумента,НомерСтрокиОкончание));
ТекущийЭлемент       = Элементы.Результат;
Элементы.Результат.УстановитьГраницыВыделения(НомерСтрокиНачало,ПозицияНачало,НомерСтрокиОкончание,ПозицияКонец); 

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

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

 

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

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

obekt-ne-najden

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

Реклама духов принесла мне больше известности, чем любой фильм, в котором я снималась.

— Денев Катрин