|
|
|
8.2 Форма выбора для поля, содержащего ссылочный реквизит
|
|||
|---|---|---|---|
|
#18+
Всем, здравствуйте! Подскажите, каким образом можно сделать следующее: Имею форму. На форме кнопка и несколько полей. Жму на кнопку - вызывается формасписка регистра сведений (в качестве формы выбора). Выбираю нужную мне запись регистра сведений. Окно списка закрывается. Некоторые значения данных из выбранной записи должны быть занесены в поля на форме. Естественно, много гуглил. Взял за основу вариант http://pro1c.org.ua/index.php?showtopic=276. Но в 8.2 мне его никак "не уложить". Почти все работает, кроме того, что никак не установить владельца открываемой формысписка регистра сведений. А раз нет владельца, то выбранные в формесписка данные возвращаются "в никуда". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 13:57 |
|
||
|
8.2 Форма выбора для поля, содержащего ссылочный реквизит
|
|||
|---|---|---|---|
|
#18+
Дополню свой вопрос. Есть код в модуле формы, из которой вызывается формасписка регистра сведений. &НаСервере Процедура ПриложениеНачалоВыбораНаСервере() // Создадим ключ, идентифицирующий строку в списке регистра ДанныеКлюча = Новый Структура("Период, Приложение", ЭтаФорма.Элементы.ПриложениеПериод, ЭтаФорма.Элементы.Приложение); Ключ = РегистрыСведений["Приложения"].СоздатьКлючЗаписи(ДанныеКлюча); // Создадим форму регистра и откроем ее ФормаРС = РегистрыСведений["Приложения"].ПолучитьФорму("ФормаВыбора"); ФормаРС.Параметры.КлючНазначенияИспользования=Ключ; ФормаРС.Параметры.РежимВыбора = Истина; ФормаРС.ВладелецФормы = ЭтаФорма; ФормаРС.ОткрытьМодально(); КонецПроцедуры &НаКлиенте Процедура ПриложениеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ПриложениеНачалоВыбораНаСервере(); КонецПроцедуры &НаКлиенте Процедура ПриложениеОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) // Обработаем значение выбора СтандартнаяОбработка = Ложь; ПриложениеПериод = ВыбранноеЗначение.Период; Приложение = ВыбранноеЗначение.Приложение; КонецПроцедуры Также есть код в формесписка для обработки выбора записи: // Форма списка регистра сведений &НаКлиенте Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) ОповеститьОВыборе(ВыбраннаяСтрока); СтандартнаяОбработка = Ложь; КонецПроцедуры Дык вот ошибка в строке: ФормаРС.ВладелецФормы = ЭтаФорма; . Пишет - несоответствие типов. Пробовал писать сюда: ФормаРС = РегистрыСведений["Приложения"].ПолучитьФорму("ФормаВыбора", ЭтаФорма); Пропускает "мимо ушей". Значение ВладелецФормы остается "Неопределено". Может кто незамыленным глазом что-нибуть подскажет? ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 16:48 |
|
||
|
8.2 Форма выбора для поля, содержащего ссылочный реквизит
|
|||
|---|---|---|---|
|
#18+
код странный... пытаться создать форму на сервере через ПолучитьФорму, который доступен только на толстом клиенте... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 17:00 |
|
||
|
8.2 Форма выбора для поля, содержащего ссылочный реквизит
|
|||
|---|---|---|---|
|
#18+
Господин ПЖкод странный... пытаться создать форму на сервере через ПолучитьФорму, который доступен только на толстом клиенте... Готов выслушать конструктивную критику ;) У меня такая бурная фантазия, потому что нет нормальных примеров. Вот и изобретаю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 17:04 |
|
||
|
8.2 Форма выбора для поля, содержащего ссылочный реквизит
|
|||
|---|---|---|---|
|
#18+
На клиенте это не работает =) ФормаРС = РегистрыСведений["Приложения"].ПолучитьФорму("ФормаВыбора"); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 17:06 |
|
||
|
8.2 Форма выбора для поля, содержащего ссылочный реквизит
|
|||
|---|---|---|---|
|
#18+
KuzEvНа клиенте это не работает =) ФормаРС = РегистрыСведений["Приложения"].ПолучитьФорму("ФормаВыбора"); клиент то тонкий вероятно... будем СП читать про ОткрытьФорму() или дальше мудрить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 17:07 |
|
||
|
8.2 Форма выбора для поля, содержащего ссылочный реквизит
|
|||
|---|---|---|---|
|
#18+
Господин ПЖKuzEvНа клиенте это не работает =) ФормаРС = РегистрыСведений["Приложения"].ПолучитьФорму("ФормаВыбора"); клиент то тонкий вероятно... будем СП читать про ОткрытьФорму() или дальше мудрить? Клиент толстый, гад =) Предлагаете заюзать ОткрытьФорму() на клиенте? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 17:11 |
|
||
|
8.2 Форма выбора для поля, содержащего ссылочный реквизит
|
|||
|---|---|---|---|
|
#18+
я предлагаю открывать форму на клиенте. На сервере ее создавать не надо ибо смысла нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 17:14 |
|
||
|
8.2 Форма выбора для поля, содержащего ссылочный реквизит
|
|||
|---|---|---|---|
|
#18+
ФормаРС = РегистрыСведений["Приложения"].ПолучитьФорму("ФормаВыбора") не работает А что говорит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 17:15 |
|
||
|
8.2 Форма выбора для поля, содержащего ссылочный реквизит
|
|||
|---|---|---|---|
|
#18+
притащить упр. форму на сервер в качестве контекста и создать там - это большая разница ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 17:28 |
|
||
|
8.2 Форма выбора для поля, содержащего ссылочный реквизит
|
|||
|---|---|---|---|
|
#18+
Господин ПЖФормаРС = РегистрыСведений["Приложения"].ПолучитьФорму("ФормаВыбора") не работает А что говорит? {РегистрСведений.ИБПриложения.Форма.ФормаЗаписи.Форма(86,15)}: Переменная не определена (РегистрыСведений) ФормаРС = <<?>>РегистрыСведений["Приложения"].ПолучитьФорму("ФормаВыбора"); (Проверка: Тонкий клиент) Хм, клиент тонкий, гад =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 17:33 |
|
||
|
8.2 Форма выбора для поля, содержащего ссылочный реквизит
|
|||
|---|---|---|---|
|
#18+
После "пинка" Господина ПЖ исправил для Толстого клиента так: &НаКлиенте Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) // Обработаем значение выбора Запись.ПриложениеПериод = ВыбранноеЗначение.Период; Запись.Приложение = ВыбранноеЗначение.Приложение; КонецПроцедуры &НаКлиенте Процедура ПриложениеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ДанныеКлюча = Новый Структура("Период, Приложение", ЭтаФорма.Элементы.ПриложениеПериод, ЭтаФорма.Элементы.Приложение); Ключ = РегистрыСведений["Приложения"].СоздатьКлючЗаписи(ДанныеКлюча); // Создадим форму регистра и откроем ее //ФормаРС = РегистрыСведений["Приложения"].ПолучитьФормуСписка("ФормаВыбора", ЭтаФорма.Элементы.Приложение); ФормаРС = РегистрыСведений["Приложения"].ПолучитьФорму("ФормаВыбора"); ФормаРС.Параметры.КлючНазначенияИспользования=Ключ; ФормаРС.Параметры.РежимВыбора = Истина; ФормаРС.ВладелецФормы = ЭтаФорма; ФормаРС.ОткрытьМодально(); КонецПроцедуры Буду думать теперь для Тонкого клиента. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 17:57 |
|
||
|
8.2 Форма выбора для поля, содержащего ссылочный реквизит
|
|||
|---|---|---|---|
|
#18+
чо тут думать... заменить РегистрыСведений["Приложения"].ПолучитьФорму("ФормаВыбора"); на ОткрытьФорму()... т.к. ОткрытьФорму универсальнее с точки зрения доступности в разных контекстах про ПолучитьФорму забыть и не вспоминать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 17:59 |
|
||
|
8.2 Форма выбора для поля, содержащего ссылочный реквизит
|
|||
|---|---|---|---|
|
#18+
Слушаюсь, мой Господин =) При использовании ОткрытьФорму(<ИмяФормы>, <Параметры>, <Владелец>, <Уникальность>, <Окно>) нужно задействовать <Параметры>. Значение ключа можно "подготовить" на клиенте? Если мне нужно отобрать записи регистра сведений за определенный период? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 18:05 |
|
||
|
8.2 Форма выбора для поля, содержащего ссылочный реквизит
|
|||
|---|---|---|---|
|
#18+
KuzEvСлушаюсь, мой Господин =) При использовании ОткрытьФорму(<ИмяФормы>, <Параметры>, <Владелец>, <Уникальность>, <Окно>) нужно задействовать <Параметры>. Значение ключа можно "подготовить" на клиенте? Если мне нужно отобрать записи регистра сведений за определенный период? Вот как я пока сделал. У формысписка (форме для выбора) сделал две процедуры: &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ЭтаФорма.Список.ПроизвольныйЗапрос=Истина; ЭтаФорма.Список.ТекстЗапроса=" |ВЫБРАТЬ | РегистрСведенийПриложения.Период, | РегистрСведенийПриложения.Приложение, | РегистрСведенийПриложения.Версия, | РегистрСведенийПриложения.ДатаВыхода, | РегистрСведенийПриложения.Сервер, | РегистрСведенийПриложения.Каталог, | РегистрСведенийПриложения.Примечание | ИЗ |РегистрСведений.Приложения КАК РегистрСведенийПриложения | ГДЕ |РегистрСведенийПриложения.Период <= &АктуальнаяДата |"; ЭтаФорма.Список.Параметры.УстановитьЗначениеПараметра("АктуальнаяДата", Параметры.АктуальнаяДата); КонецПроцедуры &НаКлиенте Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ОповеститьОВыборе(ВыбраннаяСтрока); КонецПроцедуры А в форме, из которой вызываю формусписка так: // Приложение - элемент формы &НаКлиенте Процедура ПриложениеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ПараметрыВыбора = Новый Структура; ПараметрыВыбора.Вставить("РежимВыбора", Истина); ПараметрыВыбора.Вставить("ЗакрыватьПриВыборе", Истина); ПараметрыВыбора.Вставить("ТолькоПросмотр", Истина); ПараметрыВыбора.Вставить("АктуальнаяДата", Запись.Период); ПараметрыВыбора.Вставить("Приложение", Запись.Приложение); ПараметрыВыбора.Вставить("ПриложениеПериод", Запись.ПриложениеПериод); ОткрытьФорму("РегистрСведений.Приложения.Форма.ФормаДляВыбора",ПараметрыВыбора,ЭтаФорма.Элементы.Приложение); КонецПроцедуры &НаКлиенте Процедура ПриложениеОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) // Обработаем значение выбора СтандартнаяОбработка = Ложь; Запись.ПриложениеПериод = ВыбранноеЗначение.Период; Запись.Приложение = ВыбранноеЗначение.Приложение; КонецПроцедуры ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2010, 15:27 |
|
||
|
|

start [/forum/topic.php?fid=28&msg=36612928&tid=1522390]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
168ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 215ms |
| total: | 476ms |

| 0 / 0 |
