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

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)Это ещё только начало, дальше круче будет )) (злобный смех)
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)