Имя: Пароль:
1C
1С v8
УФ - как открыть форму записи РС которой нет, но может и быть?
0 RomaH
 
naïve
11.04.12
08:46
РС настройки печати на разные принтеры
Измерения:
рабочее место
объект метаданных
имя макета

ресурсы:
имя принера

Имею форму с деревом всех форм (БСП - пользовательские макеты)
отуда надо открыть запись РС
при открытии имею все три измерения, но записи в РС может не быть на момент открытия

как правильно открыть существующую или новую запись?
1 RomaH
 
naïve
11.04.12
08:47
пока в таком состоянии:

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

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


но говорит что

{РегистрСведений.НастройкиПечатиНаРазныеПринтеры.Форма.МакетыПечатныхФорм.Форма(196)}: Ошибка при вызове метода контекста (ОткрытьФормуМодально)
   ОткрытьФормуМодально("РегистрСведений.НастройкиПечатиНаРазныеПринтеры.ФормаЗаписи",ПараметрыОткрытия,ЭтаФорма);
по причине:
Объект не найден
2 Ненавижу 1С
 
гуру
11.04.12
08:51
РегистрСведенийКлючЗаписи.<Имя регистра сведений> (InformationRegisterRecordKey.<Имя регистра сведений>)
Пустой (IsEmpty)
Синтаксис:

Пустой()
Возвращаемое значение:

Тип: Булево.
Истина - все поля ключа имеют значения по умолчнию.
Описание:

Определяет, есть ли в регистре записи.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
3 RomaH
 
naïve
11.04.12
08:53
(2) и ...? чем мне это поможет
4 Stepa86
 
11.04.12
08:58
я вот так делал:


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

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


и в форме записи


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
   
   ЗаполнитьЗначенияСвойств( Запись, Параметры );
   
КонецПроцедуры
5 Mort
 
11.04.12
09:14
(3) В зависимости от результата сувать ключ в параметры или нет.
6 Ненавижу 1С
 
гуру
11.04.12
09:22
вообще как-то все очень печально сложно получается, не находите?
параметры упаковываем в структуру - получаем ключ, ключ упаковываем в структуру - получаем форму
7 RomaH
 
naïve
11.04.12
09:27
(4) спасибо
смысл ясен
8 Mort
 
11.04.12
09:28
(6) Ну это совпало так. В любом языке можно найти подобные комбинации.
Хотя у меня тоже при работе с ключами РС часто возникает чувство, что что-то тут сделано через задницу.
9 Ненавижу 1С
 
гуру
11.04.12
09:30
(8) ну вот зачем ключ упаковывать в структуру для передачи в форму?
10 Stepa86
 
11.04.12
09:42
(9) ну если кроме ключа ничего в форму передавать не надо, и открывать нужно форму по умолчанию, то нарно хватит ОткрытьЗначение( ключ ). Вот тока не уверен, что для РС это сработает