powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / 8.2 Форма выбора для поля, содержащего ссылочный реквизит
15 сообщений из 15, страница 1 из 1
8.2 Форма выбора для поля, содержащего ссылочный реквизит
    #36612928
KuzEv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем, здравствуйте!

Подскажите, каким образом можно сделать следующее:
Имею форму. На форме кнопка и несколько полей. Жму на кнопку - вызывается формасписка регистра сведений (в качестве формы выбора). Выбираю нужную мне запись регистра сведений. Окно списка закрывается. Некоторые значения данных из выбранной записи должны быть занесены в поля на форме.

Естественно, много гуглил. Взял за основу вариант http://pro1c.org.ua/index.php?showtopic=276.
Но в 8.2 мне его никак "не уложить".

Почти все работает, кроме того, что никак не установить владельца открываемой формысписка регистра сведений. А раз нет владельца, то выбранные в формесписка данные возвращаются "в никуда".
...
Рейтинг: 0 / 0
8.2 Форма выбора для поля, содержащего ссылочный реквизит
    #36613416
KuzEv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дополню свой вопрос. Есть код в модуле формы, из которой вызывается формасписка регистра сведений.

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

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

&НаКлиенте
Процедура ПриложениеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПриложениеНачалоВыбораНаСервере();
КонецПроцедуры

&НаКлиенте
Процедура ПриложениеОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
// Обработаем значение выбора
СтандартнаяОбработка = Ложь;
ПриложениеПериод = ВыбранноеЗначение.Период;
Приложение = ВыбранноеЗначение.Приложение;
КонецПроцедуры

Также есть код в формесписка для обработки выбора записи:

// Форма списка регистра сведений
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ОповеститьОВыборе(ВыбраннаяСтрока);
СтандартнаяОбработка = Ложь;
КонецПроцедуры

Дык вот ошибка в строке:
ФормаРС.ВладелецФормы = ЭтаФорма; .
Пишет - несоответствие типов.
Пробовал писать сюда:
ФормаРС = РегистрыСведений["Приложения"].ПолучитьФорму("ФормаВыбора", ЭтаФорма);
Пропускает "мимо ушей". Значение ВладелецФормы остается "Неопределено".

Может кто незамыленным глазом что-нибуть подскажет? ;)
...
Рейтинг: 0 / 0
8.2 Форма выбора для поля, содержащего ссылочный реквизит
    #36613438
Господин ПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
код странный... пытаться создать форму на сервере через ПолучитьФорму, который доступен только на толстом клиенте...
...
Рейтинг: 0 / 0
8.2 Форма выбора для поля, содержащего ссылочный реквизит
    #36613447
KuzEv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Господин ПЖкод странный... пытаться создать форму на сервере через ПолучитьФорму, который доступен только на толстом клиенте...

Готов выслушать конструктивную критику ;)
У меня такая бурная фантазия, потому что нет нормальных примеров. Вот и изобретаю...
...
Рейтинг: 0 / 0
8.2 Форма выбора для поля, содержащего ссылочный реквизит
    #36613456
KuzEv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На клиенте это не работает =)
ФормаРС = РегистрыСведений["Приложения"].ПолучитьФорму("ФормаВыбора");
...
Рейтинг: 0 / 0
8.2 Форма выбора для поля, содержащего ссылочный реквизит
    #36613466
Господин ПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KuzEvНа клиенте это не работает =)
ФормаРС = РегистрыСведений["Приложения"].ПолучитьФорму("ФормаВыбора");

клиент то тонкий вероятно... будем СП читать про ОткрытьФорму() или дальше мудрить?
...
Рейтинг: 0 / 0
8.2 Форма выбора для поля, содержащего ссылочный реквизит
    #36613482
KuzEv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Господин ПЖKuzEvНа клиенте это не работает =)
ФормаРС = РегистрыСведений["Приложения"].ПолучитьФорму("ФормаВыбора");

клиент то тонкий вероятно... будем СП читать про ОткрытьФорму() или дальше мудрить?

Клиент толстый, гад =)
Предлагаете заюзать ОткрытьФорму() на клиенте?
...
Рейтинг: 0 / 0
8.2 Форма выбора для поля, содержащего ссылочный реквизит
    #36613491
Господин ПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я предлагаю открывать форму на клиенте. На сервере ее создавать не надо ибо смысла нет
...
Рейтинг: 0 / 0
8.2 Форма выбора для поля, содержащего ссылочный реквизит
    #36613493
Господин ПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ФормаРС = РегистрыСведений["Приложения"].ПолучитьФорму("ФормаВыбора") не работает

А что говорит?
...
Рейтинг: 0 / 0
8.2 Форма выбора для поля, содержащего ссылочный реквизит
    #36613536
Господин ПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
притащить упр. форму на сервер в качестве контекста и создать там - это большая разница
...
Рейтинг: 0 / 0
8.2 Форма выбора для поля, содержащего ссылочный реквизит
    #36613554
KuzEv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Господин ПЖФормаРС = РегистрыСведений["Приложения"].ПолучитьФорму("ФормаВыбора") не работает

А что говорит?

{РегистрСведений.ИБПриложения.Форма.ФормаЗаписи.Форма(86,15)}: Переменная не определена (РегистрыСведений)
ФормаРС = <<?>>РегистрыСведений["Приложения"].ПолучитьФорму("ФормаВыбора"); (Проверка: Тонкий клиент)

Хм, клиент тонкий, гад =)
...
Рейтинг: 0 / 0
8.2 Форма выбора для поля, содержащего ссылочный реквизит
    #36613632
KuzEv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
После "пинка" Господина ПЖ исправил для Толстого клиента так:

&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
// Обработаем значение выбора
Запись.ПриложениеПериод = ВыбранноеЗначение.Период;
Запись.Приложение = ВыбранноеЗначение.Приложение;
КонецПроцедуры

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

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

Буду думать теперь для Тонкого клиента.
...
Рейтинг: 0 / 0
8.2 Форма выбора для поля, содержащего ссылочный реквизит
    #36613635
Господин ПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чо тут думать... заменить РегистрыСведений["Приложения"].ПолучитьФорму("ФормаВыбора"); на ОткрытьФорму()... т.к. ОткрытьФорму универсальнее с точки зрения доступности в разных контекстах про ПолучитьФорму забыть и не вспоминать
...
Рейтинг: 0 / 0
8.2 Форма выбора для поля, содержащего ссылочный реквизит
    #36613659
KuzEv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Слушаюсь, мой Господин =)

При использовании ОткрытьФорму(<ИмяФормы>, <Параметры>, <Владелец>, <Уникальность>, <Окно>) нужно задействовать <Параметры>.

Значение ключа можно "подготовить" на клиенте?
Если мне нужно отобрать записи регистра сведений за определенный период?
...
Рейтинг: 0 / 0
8.2 Форма выбора для поля, содержащего ссылочный реквизит
    #36615407
KuzEv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KuzEvСлушаюсь, мой Господин =)

При использовании ОткрытьФорму(<ИмяФормы>, <Параметры>, <Владелец>, <Уникальность>, <Окно>) нужно задействовать <Параметры>.

Значение ключа можно "подготовить" на клиенте?
Если мне нужно отобрать записи регистра сведений за определенный период?

Вот как я пока сделал.

У формысписка (форме для выбора) сделал две процедуры:

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

&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОповеститьОВыборе(ВыбраннаяСтрока);
КонецПроцедуры

А в форме, из которой вызываю формусписка так:
// Приложение - элемент формы

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

&НаКлиенте
Процедура ПриложениеОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
// Обработаем значение выбора
СтандартнаяОбработка = Ложь;
Запись.ПриложениеПериод = ВыбранноеЗначение.Период;
Запись.Приложение = ВыбранноеЗначение.Приложение;
КонецПроцедуры
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / 8.2 Форма выбора для поля, содержащего ссылочный реквизит
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]