Для того, чтобы открыть существующую запись регистра сведений в управляемых формах необходимо:
- Знать значения всех измерений
- Вызов производится с клиентской процедуры через конструктор Новый с использованием обертки в виде массива
- Либо через вспомогательную функцию, которая создаст ключ на сервере
Первый пример кода открытия записи регистра сведений
МассивКонструктораКлюча = Новый Массив; МассивКонструктораКлюча.Добавить(Новый Структура("ГрафикРаботы,Дата,НачалоИнтервала",Расшифровка.ГрафикРаботы,НачалоДня(Расшифровка.Дата),Расшифровка.Дата)); КлючЗаписиРегистра = Новый ("РегистрСведенийКлючЗаписи.ТабельРаботы", МассивКонструктораКлюча); ОткрытьФорму("РегистрСведений.ТабельРаботы.Форма.ФормаНазначенияПериода", Новый Структура("Ключ", КлючЗаписиРегистра));НомерСтрокиНачало = 1; ПозицияНачало = 1; НомерСтрокиОкончание = СтрЧислоСтрок(объект.ПолеТекстовогоДокумента); ПозицияКонец = СтрДлина(СтрПолучитьСтроку(объект.ПолеТекстовогоДокумента,НомерСтрокиОкончание)); ТекущийЭлемент = Элементы.Результат; Элементы.Результат.УстановитьГраницыВыделения(НомерСтрокиНачало,ПозицияНачало,НомерСтрокиОкончание,ПозицияКонец);
Второй вариант открытия – с использованием серверного вызова
&НаКлиенте Процедура ОткрытьЗапись(расшифровка) КлючЗаписиРегистра = ПолучитьКлючЗаписи(Новый Структура("ГрафикРаботы,Дата,НачалоИнтервала", Расшифровка.ГрафикРаботы,НачалоДня(Расшифровка.Дата),Расшифровка.Дата)); ОткрытьФорму("РегистрСведений.ТабельРаботы.Форма.ФормаНазначенияПериода", Новый Структура("Ключ", КлючЗаписиРегистра)); КонецПроцедуры &НаСервереБезКонтекста Функция ПолучитьКлючЗаписи(Структура) Возврат РегистрыСведений.ТабельРаботы.СоздатьКлючЗаписи(Структура); КонецФункции
Особенности использования
В случае отсутствия записи, когда указаны не действительные измерения регистра, выйдет ошибка “Объект не найден”:
- Вариант1: Используйте попытку исключение
- Вариант2: При серверном вызове, возможно не просто создавать ключ, но и добавить проверку наличия
Запись = РегистрыСведений.ТабельРаботы.СоздатьМенеджерЗаписи(); ЗаполнитьЗначенияСвойств(Запись,Структура); Запись.Прочитать(); Если Запись.Выбран() = Ложь Возврат Неопределено; КонецЕсли;
Реклама духов принесла мне больше известности, чем любой фильм, в котором я снималась.