Открыть форму выбора у реквизита с составным типом данных
Здравствуйте коллеги!
Помоги пожалуйста советом!
Есть внешняя обработка. На этой обработке есть реквизит "Документ", тип данных у этого реквизита составной (Реализация, Отчет о розничных продажах и Возврат поставщику). До этого был не составной тип данных и поэтому при подборе я спокойно ставил СтандартнаяОбратотка=Ложь и накладывал отборы на Период и еще пару реквизитов. Но как быть, когда реквизит составной ведь при подборе сначала всплывает окно с выбором типа и только потом сама форма подбора? Мне необходимо открыть нужную форму и установить отборы на динамический список в форме выбора. Необходимо создать свою форму выбора типа и ее открывать при подборе, а после выбора открывать нужную форму?
Помоги пожалуйста советом!
Есть внешняя обработка. На этой обработке есть реквизит "Документ", тип данных у этого реквизита составной (Реализация, Отчет о розничных продажах и Возврат поставщику). До этого был не составной тип данных и поэтому при подборе я спокойно ставил СтандартнаяОбратотка=Ложь и накладывал отборы на Период и еще пару реквизитов. Но как быть, когда реквизит составной ведь при подборе сначала всплывает окно с выбором типа и только потом сама форма подбора? Мне необходимо открыть нужную форму и установить отборы на динамический список в форме выбора. Необходимо создать свою форму выбора типа и ее открывать при подборе, а после выбора открывать нужную форму?
По теме из базы знаний
- Технология обновления нетиповых конфигураций 1С:Предприятия 8 (редакция 12.04.2012)
- Загрузка данных из табличного документа (управляемые формы)
- Простые радости жизни программиста 1С: выбор типа значения
- Форма выбора для реквизита с составным типом данных
- Загрузка банковской выписки для 1С 7.7 любой конфигурации
Найденные решения
Можно обойтись стандартным выбором типа, тогда и при добавлении строки не будет выскакивать список выбора. Только в обработке выбора нужно будет прерывать стандартное поведение после выбора типа.
&НаКлиенте
Процедура ТаблицаДокументНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ТекущиеДанные = Элементы.Таблица.ТекущиеДанные;
Если ТекущиеДанные.Документ = Неопределено Тогда
Возврат
КонецЕсли;
СтандартнаяОбработка = Ложь;
ОткрытьФормуВыбораДокумента(ТекущиеДанные.Документ, Элемент)
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФормуВыбораДокумента(Ссылка, Элемент)
ПараметрыФормы = Новый Структура;
Отбор = Новый Структура;
// здесь формируем отборы
ПараметрыФормы.Вставить("Отбор", Отбор);
ИмяФормыВыбора = ПолучитьИмяФормыВыбораПоСсылке(Ссылка);
ФормаВыбора = ПолучитьФорму(ИмяФормыВыбора, ПараметрыФормы, Элемент);
ФормаВыбора.Заголовок = "Форма выбора с моим отбором";
ФормаВыбора.Открыть();
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьИмяФормыВыбораПоСсылке(Ссылка)
Возврат Ссылка.Метаданные().ПолноеИмя() + ".ФормаВыбора";
КонецФункции
&НаКлиенте
Процедура ТаблицаДокументОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
Если ТипЗнч(ВыбранноеЗначение) = Тип("Тип") Тогда
МассивТипов = Новый Массив;
МассивТипов.Добавить(ВыбранноеЗначение);
ОписаниеТипов = Новый ОписаниеТипов(МассивТипов);
ТекущиеДанные = Элементы.Таблица.ТекущиеДанные;
ТекущиеДанные.Документ = ОписаниеТипов.ПривестиЗначение();
СтандартнаяОбработка = Ложь;
// после выбора типа можно сразу вызвать выбор документа, но это не обязательно
ОткрытьФормуВыбораДокумента(ТекущиеДанные.Документ, Элемент)
КонецЕсли;
КонецПроцедуры
ПоказатьПрикрепленные файлы:
ВнешняяОбработка1.epf
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3)Можно использовать список значений и его метод ВыбратьЭлемент():
СписокТиповДокументов = Новый СписокЗначений;
СписокТиповДокументов.Добавить(Тип("ДокументСсылка.Реализация", "Реализация");
СписокТиповДокументов.Добавить(Тип("ДокументСсылка.......
......
ВыбранныйЭлемент = СписокЗначений.ВыбратьЭлемент();
ТипДокумента = ВыбранныйЭлемент.Значение;
(1)
Т.е. вам нужно в момент выбора пользователем типа документа программно определять выбор типа, чтобы наложить соответствующие отборы при подборе?
Пока писала, тут уже решение озвучили)
ведь при подборе сначала всплывает окно с выбором типа и только потом сама форма подбора?
Т.е. вам нужно в момент выбора пользователем типа документа программно определять выбор типа, чтобы наложить соответствующие отборы при подборе?
Пока писала, тут уже решение озвучили)
(6)из за того что я отключаю стандартную обработку список с выбором типа не всплывает. Я так понял мне нужно либо свою форму выбора типа создать либо поймать событие после выбора типа документа. Вообщем необходимо открыть форму выбора выбранного типа документа и накинуть на не отборы.
(4)Ваш метод приближает меня к истине. Но всплыла друга проблема. Форма с выбором типа открывается и при добавлении строки в тч, т.е. нажать кнопку Добавить сработал обработчик НачалоВыбора и открывается форма выбора типа документа. Как устранить эту проблему?
(4)Ваш метод приближает меня к истине. Но всплыла друга проблема. Форма с выбором типа открывается и при добавлении строки в тч, т.е. нажать кнопку Добавить сработал обработчик НачалоВыбора и открывается форма выбора типа документа. Как устранить эту проблему?
Можно обойтись стандартным выбором типа, тогда и при добавлении строки не будет выскакивать список выбора. Только в обработке выбора нужно будет прерывать стандартное поведение после выбора типа.
&НаКлиенте
Процедура ТаблицаДокументНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ТекущиеДанные = Элементы.Таблица.ТекущиеДанные;
Если ТекущиеДанные.Документ = Неопределено Тогда
Возврат
КонецЕсли;
СтандартнаяОбработка = Ложь;
ОткрытьФормуВыбораДокумента(ТекущиеДанные.Документ, Элемент)
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФормуВыбораДокумента(Ссылка, Элемент)
ПараметрыФормы = Новый Структура;
Отбор = Новый Структура;
// здесь формируем отборы
ПараметрыФормы.Вставить("Отбор", Отбор);
ИмяФормыВыбора = ПолучитьИмяФормыВыбораПоСсылке(Ссылка);
ФормаВыбора = ПолучитьФорму(ИмяФормыВыбора, ПараметрыФормы, Элемент);
ФормаВыбора.Заголовок = "Форма выбора с моим отбором";
ФормаВыбора.Открыть();
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьИмяФормыВыбораПоСсылке(Ссылка)
Возврат Ссылка.Метаданные().ПолноеИмя() + ".ФормаВыбора";
КонецФункции
&НаКлиенте
Процедура ТаблицаДокументОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
Если ТипЗнч(ВыбранноеЗначение) = Тип("Тип") Тогда
МассивТипов = Новый Массив;
МассивТипов.Добавить(ВыбранноеЗначение);
ОписаниеТипов = Новый ОписаниеТипов(МассивТипов);
ТекущиеДанные = Элементы.Таблица.ТекущиеДанные;
ТекущиеДанные.Документ = ОписаниеТипов.ПривестиЗначение();
СтандартнаяОбработка = Ложь;
// после выбора типа можно сразу вызвать выбор документа, но это не обязательно
ОткрытьФормуВыбораДокумента(ТекущиеДанные.Документ, Элемент)
КонецЕсли;
КонецПроцедуры
ПоказатьПрикрепленные файлы:
ВнешняяОбработка1.epf
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот