Как задать открытие формы ?

1. Terabaytus 27.02.21 14:47 Сейчас в теме
Добрый день, есть список при выборе документа, открывается форма для редактирования у меня заготовлена другая форма как можно поменять стандартную форму на неё ?
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
2. glek 119 27.02.21 15:31 Сейчас в теме
Если открывается просто форма объекта, то можно в модуле менеджера переопределить форму. Если же должна открываться разная форма по условию, то тогда можно
1. Из формы списка проверять условие и открывать требуемую форму
2. В основной форме при создании на сервере проверять условие и открывать требуемую ,а эту ставить в отказ
Terabaytus; +1 Ответить
7. glek 119 01.03.21 07:17 Сейчас в теме
(4) Делаете несколько процедур в форме списка 1
Выбор
ПередНачалоИзменения
ПередДобавлением.
И прописываете в них открытие своей формы.
В одних процедурах устанавливаете Отказ = истина, в других стандартнаяобработка = ложь
Terabaytus; +1 Ответить
9. glek 119 01.03.21 09:47 Сейчас в теме
(8) В выборе тоже надо описать.
И кроме того, перед началом изменении и в выборе необходимо в форму передавать параметр -
Новый Структура("Ключ", <Документ на который спозиционировались>). В противном случае каждый раз будет открываться новый документ
Terabaytus; +1 Ответить
11. glek 119 01.03.21 10:24 Сейчас в теме
(10) Анализ модуля ОценкаПроизводительностиКлиент.НачатьЗамер показал, что ключевая операция должна быть строкой. Уберите этот замер и попробуйте еще раз.
А по ошибке - судя по всему, у вас нет такой колонки в таблице. Соответственно и обращение к ней вызывает ошибку
Terabaytus; +1 Ответить
15. spacecraft 02.03.21 01:19 Сейчас в теме
(14)
только следом сразу же открывает и второй новый, почему ?

Потому что не "Отказ = Истина;", а "СтандартнаяОбработка = Ложь;" должно быть.
Terabaytus; +1 Ответить
30. spacecraft 04.03.21 12:38 Сейчас в теме
(29)
Отказ = Истина прописаная в выборе не работает

Поймите простую истину. Отказ это не глобальная переменная. Это возможно один из параметров процедуры обработчика. Т.е. если в процедуре есть такой параметр, тогда можно с ним работать. Если нет, то это обычная переменная определяемая внутри процедуры и ни на что не влияет.
Terabaytus; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. glek 119 27.02.21 15:31 Сейчас в теме
Если открывается просто форма объекта, то можно в модуле менеджера переопределить форму. Если же должна открываться разная форма по условию, то тогда можно
1. Из формы списка проверять условие и открывать требуемую форму
2. В основной форме при создании на сервере проверять условие и открывать требуемую ,а эту ставить в отказ
Terabaytus; +1 Ответить
3. Terabaytus 27.02.21 20:40 Сейчас в теме
(2)По второму пункту поясните пожалуйста с условием понятно всё остальное не совсем создать процедуру с открытием код такой
Форма = ПолучитьФорму("Документ.Первый.Форма.ФормаДокумента1");
	Форма.Открыть();
	Отказ = Истина;
4. Terabaytus 27.02.21 21:00 Сейчас в теме
(2) При выборе документа скажем в формесписка1 должна открываться формадокумента1 для этого списка.
7. glek 119 01.03.21 07:17 Сейчас в теме
(4) Делаете несколько процедур в форме списка 1
Выбор
ПередНачалоИзменения
ПередДобавлением.
И прописываете в них открытие своей формы.
В одних процедурах устанавливаете Отказ = истина, в других стандартнаяобработка = ложь
Terabaytus; +1 Ответить
8. Terabaytus 01.03.21 09:38 Сейчас в теме
(7) Так ?
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)

	// ЭлектронноеВзаимодействие.ОбменСКонтрагентами
	Если Поле = Элементы.СостояниеЭДО Тогда
		ОбменСКонтрагентамиКлиент.ДекорацияСостояниеЭДОФормаСпискаНажатие(ВыбраннаяСтрока, СтандартнаяОбработка = Ложь);
	КонецЕсли;
	// Конец ЭлектронноеВзаимодействие.ОбменСКонтрагентами
	
	// СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов
	УчетОригиналовПервичныхДокументовКлиент.СписокВыбор(Поле.Имя, ЭтотОбъект, Элементы.Список, СтандартнаяОбработка = Ложь);
	// Конец СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов

КонецПроцедуры

&НаКлиенте
Процедура СписокПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)

	КлючеваяОперация = ПолучитьФорму("Документ.АктСписанияМЗ.Форма.ФормаДокумента1").Открыть();
	Отказ = Истина;
	//КлючеваяОперация ="СозданиеФормыАктСписанияМЗ";
	ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина, КлючеваяОперация);

КонецПроцедуры

&НаКлиенте
Процедура СписокПередНачаломИзменения(Элемент, Отказ)

	КлючеваяОперация = ПолучитьФорму("Документ.АктСписанияМЗ.Форма.ФормаДокумента1").Открыть();
	Отказ = Истина;
	//КлючеваяОперация ="ОткрытиеФормыАктСписанияМЗ";
	ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина, КлючеваяОперация);

КонецПроцедуры
Показать
9. glek 119 01.03.21 09:47 Сейчас в теме
(8) В выборе тоже надо описать.
И кроме того, перед началом изменении и в выборе необходимо в форму передавать параметр -
Новый Структура("Ключ", <Документ на который спозиционировались>). В противном случае каждый раз будет открываться новый документ
Terabaytus; +1 Ответить
10. Terabaytus 01.03.21 09:54 Сейчас в теме
(9)При такой конструкции выдаёт ошибку
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)

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

КонецПроцедуры

&НаКлиенте
Процедура СписокПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)

    КлючеваяОперация = ПолучитьФорму("Документ.АктСписанияМЗ.Форма.ФормаДокумента1").Открыть();
    Отказ = Истина;
    //КлючеваяОперация ="СозданиеФормыАктСписанияМЗ";
    ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина, КлючеваяОперация);

КонецПроцедуры

&НаКлиенте
Процедура СписокПередНачаломИзменения(Элемент, Отказ)

    КлючеваяОперация = ПолучитьФорму("Документ.АктСписанияМЗ.Форма.ФормаДокумента1").Открыть();
    Отказ = Истина;
    //КлючеваяОперация ="ОткрытиеФормыАктСписанияМЗ";
    ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина, КлючеваяОперация);

КонецПроцедуры
Показать
Прикрепленные файлы:
11. glek 119 01.03.21 10:24 Сейчас в теме
(10) Анализ модуля ОценкаПроизводительностиКлиент.НачатьЗамер показал, что ключевая операция должна быть строкой. Уберите этот замер и попробуйте еще раз.
А по ошибке - судя по всему, у вас нет такой колонки в таблице. Соответственно и обращение к ней вызывает ошибку
Terabaytus; +1 Ответить
12. Terabaytus 01.03.21 12:51 Сейчас в теме
(11)Теперь выдаёт при выборе документа вот эту ошибку
Прикрепленные файлы:
13. Terabaytus 01.03.21 22:15 Сейчас в теме
(11) Спасибо заработало, а можно чуть подробней о ключе не совсем понял <Документ на который спозиционировались> что за документ прописать ?

КлючеваяОперация = ПолучитьФорму("Документ.АктСписанияМЗ.Форма.ФормаДокумента1", Новый Структура("Ключ", <?>));
	КлючеваяОперация.Открыть();
	Отказ = Истина;
14. Terabaytus 01.03.21 23:04 Сейчас в теме
(11)Разобрался )
ПараметрыВвода = Новый Структура("Ключ",ВыбраннаяСтрока);
	КлючеваяОперация = ПолучитьФорму("Документ.АктСписанияМЗ.Форма.ФормаДокумента1", ПараметрыВвода);
	КлючеваяОперация.Открыть();
	Отказ = Истина;

Прописал так в выборе и изменениях, открывает нужный документ в упрощённой форме только следом сразу же открывает и второй новый, почему ?
Прикрепленные файлы:
15. spacecraft 02.03.21 01:19 Сейчас в теме
(14)
только следом сразу же открывает и второй новый, почему ?

Потому что не "Отказ = Истина;", а "СтандартнаяОбработка = Ложь;" должно быть.
Terabaytus; +1 Ответить
16. Terabaytus 03.03.21 13:59 Сейчас в теме
(15)В тему вопроса, подскажите пожалуйста, а как тогда сделать что выбрав определённый документ в форме списка никакая форма не открывалась, а щёлкнув по другому док она открылась ?
17. spacecraft 03.03.21 14:06 Сейчас в теме
18. Terabaytus 03.03.21 14:10 Сейчас в теме
(17)Выделенная строка по ней щёлкаю, а она не открывается пока какое то условие не выполню, а щёлкаю по другой открывается. Как сделать ?
Прикрепленные файлы:
19. spacecraft 03.03.21 14:41 Сейчас в теме
(18) можно воспользоваться обработчиком списка ПередНачаломИзменения

СписокПередНачаломИзменения(Элемент, Отказ)
Проверять условие (в Элемент.ТекущиеДанные можно получить данные строки списка) и в случае, когда не нужно открывать, делать отказ
Отказ = Истина
20. Terabaytus 03.03.21 15:49 Сейчас в теме
(19)СписокПередНачаломИзменения(Элемент, Отказ) у меня он есть но рабоает всё в процедуре СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Отказ = Истина так не прокатывает открывается основная форма везде уже переискал что за неё отвечает.
21. spacecraft 03.03.21 15:55 Сейчас в теме
(20) почему работу нескольких обработчиков не воспринимаете?
Делаете то, что я сказал в обработчике списка ПередНачаломИзменения.
Не нужно пытаться все делать в одном обработчике. Каждый обработчик служит для своих целей.
22. Terabaytus 03.03.21 16:05 Сейчас в теме
(21)Так я проверил их всё в них закоментил Сообшить("Работать") за пустил и не чего не произошло отработал только СписокВыбор
23. spacecraft 03.03.21 16:43 Сейчас в теме
(22) Просто Выбор срабатывает раньше. Хорошо, а что мешает проверять условие и только при необходимости открывать нужную форму?

В обработчике Выбор:
// УсловиеВыполнилось = Истина; // тут вместо этого проверяем на условие и присваиваем Истина или Ложь
Если УсловиеВыполнилось = Истина Тогда
    ПараметрыВвода = Новый Структура("Ключ",ВыбраннаяСтрока);
    ОткрытьФорму("Документ.АктСписанияМЗ.Форма.ФормаДокумента1", ПараметрыВвода);
    СтандартнаяОбработка = Ложь;
КонецЕсли;
24. Terabaytus 03.03.21 17:27 Сейчас в теме
(23)Потому что у меня 2 формы одна основная вторая упрощённая предназначенная для определённого круга лиц так с помощь этой конструкции

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


вставленной в Выбор я открываю ФормуДокумента1. Если я её "закоменчу" и везде пропишу
СтандартнаяОбработка = Ложь;
это не помогает всё равно открывается основная форма.
Суть в том как отключить запуск основной формы в модуле ФормаСписка1 тогда да можно поставить условие.
Прикрепленные файлы:
25. Terabaytus 04.03.21 09:28 Сейчас в теме
26. spacecraft 04.03.21 09:37 Сейчас в теме
27. Terabaytus 04.03.21 11:33 Сейчас в теме
(26)Можно сначала ? Мне нужно что бы выделенная строка не открывалась по щелчку по ней это возможно сделать ?
Прикрепленные файлы:
28. spacecraft 04.03.21 11:45 Сейчас в теме
(27) можно. Выше уже было сказано как.
29. Terabaytus 04.03.21 12:00 Сейчас в теме
(28)Отказ = Истина прописаная в выборе не работает
ОткрытиеНаСервере Отказ = Истина не даёт открыть ФормуСписка1
Можно ещё вопрос, а стандартными инструментами Динамического списка можно запретить открытие выбранной строки ?
30. spacecraft 04.03.21 12:38 Сейчас в теме
(29)
Отказ = Истина прописаная в выборе не работает

Поймите простую истину. Отказ это не глобальная переменная. Это возможно один из параметров процедуры обработчика. Т.е. если в процедуре есть такой параметр, тогда можно с ним работать. Если нет, то это обычная переменная определяемая внутри процедуры и ни на что не влияет.
Terabaytus; +1 Ответить
31. Terabaytus 04.03.21 12:56 Сейчас в теме
(30)Слава Богам !!!! Вот оно !!! то есть Вам спасибо огромное !!!
5. Sashares 34 28.02.21 01:19 Сейчас в теме
Бедная БГУ2... за что ж вы с ней так
6. Terabaytus 28.02.21 08:46 Сейчас в теме
(5)Это ещё только начало, дальше круче будет )) (злобный смех)
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот