Имя: Пароль:
1C
 
как программно открыть форму редактирования регистра сведений?
0 m74y
 
24.06.09
11:24
Форма списка с отбором по конкретной записи открывается так:

----------------------------------------------------------------
Форма = РегистрыСведений.КоэффициентыЗаработка.ПолучитьФорму("ФормаСписка");
   Форма.РегистрСведенийСписок.Отбор.ТипАвтомобиля.Установить(ВыбраннаяСтрока.Период);
   Форма.РегистрСведенийСписок.Отбор.ТипАвтомобиля.Установить(ВыбраннаяСтрока.ТипАвтомобиля);
Форма.РегистрСведенийСписок.Отбор.Водитель.Установить(?(ВыбраннаяСтрока.Водитель = "Водитель", Истина, Ложь));
   
Форма.ОткрытьМодально();
--------------------------------------------------------------------

подскажите, как открыть форму редактирования записи?
1 Mort
 
24.06.09
11:29
РегистрСведенийМенеджерЗаписи.<Имя регистра сведений>.ПолучитьФорму (InformationRegisterRecordManager.<Имя регистра сведений>.GetForm)
РегистрСведенийМенеджерЗаписи.<Имя регистра сведений> (InformationRegisterRecordManager.<Имя регистра сведений>)
ПолучитьФорму (GetForm)
Синтаксис:
ПолучитьФорму(<Форма>, <Владелец>, <Ключ уникальности>)
Параметры:
<Форма> (необязательный)
Тип: Строка, ОбъектМетаданных: Форма . Имя формы, как оно задано в конфигураторе, или объект описания метаданного требуемой формы. Если параметр не указан, то используется основная форма, заданная в конфигураторе.
<Владелец> (необязательный)
Тип: Форма, Элемент управления. Объект, который будет являться владельцем открываемой формы.
<Ключ уникальности> (необязательный)
Тип: Произвольный. В данном параметре может быть задан некоторый ключ, значение которого будет использоваться для поиска уже открытых форм.
При поиске учитываются значения свойств открытых форм соответствующим значениям параметров метода. Если найдена открытая форма (по совпадению всех параметров), то она будет возвращена вместо новой формы.
Если из некой формы (один и тот же владелец) требуется открывать новые экземпляры другой формы, то при каждом вызове метода значение данного параметра должно быть уникально (в рамках соответствующих значений свойств открытых форм).
Значение параметра присваивается свойству открываемой формы КлючУникальности.
Следует учитывать, что при получении формы из "объекта" система получает форму для конкретного экземпляра объекта с учетом совокупности переданных параметров, в то время как для "ссылки" всегда существует только один объект в базе данных и форма получается одна (для одинаковой совокупности параметров).
Возвращаемое значение:
Тип: Форма.
Описание:
Получает форму записи регистра сведений.
Пример:
Курс.ПолучитьФорму().Открыть();
2 m74y
 
24.06.09
11:41
(1) Я понял как просто открыть основную форму, но мне надо открыть форму редактирования с отбором по конкретной записи регистра.
3 m74y
 
24.06.09
11:45
уточню вопрос: как получить ключ уникальности или ключ записи? В между ними чем разница?
4 m74y
 
24.06.09
12:02
так никто и не ответит?
5 Andry888
 
24.06.09
12:16
прмер...

с=новый структура ("Код",12);
м=РегистрыСведений.АдресныйКлассификатор.Выбрать(с);
   
м.Следующий();
   
ф=м.ПолучитьМенеджерЗаписи().ПолучитьФорму("ФормаЗаписи");
ф.Открыть();
6 m74y
 
24.06.09
12:55
Не помогает:
-------------------------------------------------------------
Ключ = Новый Структура();
Ключ.Вставить("Период", ВыбраннаяСтрока.Период);
Ключ.Вставить("ТипАвтомобиля", ВыбраннаяСтрока.ТипАвтомобиля);
Ключ.Вставить(?(ВыбраннаяСтрока.Водитель = "Водитель", Истина, Ложь));
м = РегистрыСведений.КоэффициентыЗаработка.Выбрать(Ключ);
м.Следующий();
ФормаЗаписи=м.ПолучитьМенеджерЗаписи().ПолучитьФорму("ФормаЗаписи");
ФормаЗаписи.ОткрытьМодально();
-----------------------------------------------------------------
Пишет: Ошибка при вызове метода контекста (Выбрать): Несоответствие типов (параметр номер ""1"")
7 Andry888
 
24.06.09
13:09
(6) што не помогает?
если у тебя ошибки...я то тут причем смотри регистр (он наверно подчинен регистратору + в отборе только !одно! поле можно использовать)...
8 m74y
 
24.06.09
13:36
регистр независимый, в отборе можно использовать 3 поля (0)
9 Aprobator
 
24.06.09
13:54
(0) а так:

Ключ = Новый Структура();
Ключ.Вставить("ТипАвтомобиля", ВыбраннаяСтрока.ТипАвтомобиля);
Ключ.Вставить(?(ВыбраннаяСтрока.Водитель = "Водитель", Истина, Ложь));

м = РегистрыСведений.КоэффициентыЗаработка.Получить(Период, Ключ);
....
10 Aprobator
 
24.06.09
13:56
+(9) это к (6).
11 m74y
 
24.06.09
14:16
Знаешь, а ты был прав (6) в отборе только !одно! поле можно использовать...

по одному полю все получается замечательно, а вот по всем вместе нет...
12 m74y
 
24.06.09
14:26
А как сделать, что бы в отборе можно было использовать несколько полей?
13 Aprobator
 
24.06.09
14:45
(12) а (9) там получить - не катит?
15 m74y
 
24.06.09
14:58
(13)Ошибка при вызове метода контекста (Получить): Недопустимое значение параметра (параметр номер '2')
Ключ = Новый Структура();
Ключ.Вставить("ТипАвтомобиля", ВыбраннаяСтрока.ТипАвтомобиля);
Ключ.Вставить("Водитель",?(ВыбраннаяСтрока.Водитель = "Водитель", Истина, Ложь));
Ключ.Вставить("Период", ВыбраннаяСтрока.Период);

м = РегистрыСведений.КоэффициентыЗаработка.Получить(ВыбраннаяСтрока.Период,Ключ);
16 m74y
 
24.06.09
16:32
идеи иссякли?
17 Andry888
 
24.06.09
17:26
(15) Юрий, Вы бы по внимательней читали СП... нах ты "период" в структуру запихал???
18 m74y
 
25.06.09
09:11
(17) Понимаете, Андрей, вот так работает:
--------------------------------------------------------------------------
Ключ = Новый Структура();
//Ключ.Вставить("ТипАвтомобиля", ВыбраннаяСтрока.ТипАвтомобиля);
Ключ.Вставить(?(ВыбраннаяСтрока.Водитель = "Водитель", Истина, Ложь));
м = РегистрыСведений.КоэффициентыЗаработка.Выбрать(,,Ключ);
м.Следующий();
ФормаЗаписи=м.ПолучитьМенеджерЗаписи().ПолучитьФорму("ФормаЗаписи");
ФормаЗаписи.ОткрытьМодально();

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

Я пробовал по- разному и так тоже:
---------------------------------------------------------------
...
м = РегистрыСведений.КоэффициентыЗаработка.Выбрать(Период,Период,Ключ);
...
--------------------------------------------------------------------
Вы конечно правы, период в структуре лишний, но дело не только в нем.

В принципе, я решил эту проблему по- своему:
----------------------------------------------------------------------
Запрос.Текст ="ВЫБРАТЬ
     |    *
     |ИЗ
     |    РегистрСведений.КоэффициентыЗаработка КАК КоэффициентыЗаработка
     |ГДЕ
     |    КоэффициентыЗаработка.Период = &Период
     |    И КоэффициентыЗаработка.Водитель = &Водитель
     |    И КоэффициентыЗаработка.ТипАвтомобиля = &ТипАвтомобиля";
Запрос.УстановитьПараметр("Период", ЭлементыФормы.ТабличноеПолеКоэффициентЗаработка.ТекущаяСтрока.Период);              
Запрос.УстановитьПараметр("Водитель", ?(ЭлементыФормы.ТабличноеПолеКоэффициентЗаработка.ТекущаяСтрока.Водитель = "Водитель", Истина,Ложь));              
Запрос.УстановитьПараметр("ТипАвтомобиля", ЭлементыФормы.ТабличноеПолеКоэффициентЗаработка.ТекущаяСтрока.ТипАвтомобиля);              
   
Результат = Запрос.Выполнить().Выгрузить();
КоличествоКолонок = Результат.Колонки.Количество()-1;
Элемент = Результат[0];
Для Счетчик = 0 по КоличествоКолонок Цикл
Форма[Результат.Колонки[Счетчик].Имя] = Элемент[Счетчик];    
КонецЦикла;
Форма.ОткрытьМодально();
19 Aprobator
 
25.06.09
09:41
(15) ты (9) внимательно смотрел? Нафига период еще в ключ пихать? Он у тебя и так первым параметром идет в методе получить.
20 Andry888
 
25.06.09
09:42
В (18) ты "выбрать" юзаешь, а надо "получить"....
21 m74y
 
25.06.09
13:40
Ключ = Новый Структура();
Ключ.Вставить("ТипАвтомобиля", ВыбраннаяСтрока.ТипАвтомобиля);
Ключ.Вставить("Водитель",?(ВыбраннаяСтрока.Водитель = "Водитель", Истина, Ложь));

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

Это работает. Спасибо за помощь.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.