Добрый день, есть список при выборе документа, открывается форма для редактирования у меня заготовлена другая форма как можно поменять стандартную форму на неё ?
---
Если открывается просто форма объекта, то можно в модуле менеджера переопределить форму. Если же должна открываться разная форма по условию, то тогда можно
1. Из формы списка проверять условие и открывать требуемую форму
2. В основной форме при создании на сервере проверять условие и открывать требуемую ,а эту ставить в отказ
---
Делаете несколько процедур в форме списка 1
Выбор
ПередНачалоИзменения
ПередДобавлением.
И прописываете в них открытие своей формы.
В одних процедурах устанавливаете Отказ = истина, в других стандартнаяобработка = ложь
---
В выборе тоже надо описать.
И кроме того, перед началом изменении и в выборе необходимо в форму передавать параметр -
Новый Структура("Ключ", <Документ на который спозиционировались>). В противном случае каждый раз будет открываться новый документ
---
Анализ модуля ОценкаПроизводительностиКлиент.НачатьЗамер показал, что ключевая операция должна быть строкой. Уберите этот замер и попробуйте еще раз.
А по ошибке - судя по всему, у вас нет такой колонки в таблице. Соответственно и обращение к ней вызывает ошибку
---
только следом сразу же открывает и второй новый, почему ?
Потому что не "Отказ = Истина;", а "СтандартнаяОбработка = Ложь;" должно быть.
---
Отказ = Истина прописаная в выборе не работает
Поймите простую истину. Отказ это не глобальная переменная. Это возможно один из параметров процедуры обработчика. Т.е. если в процедуре есть такой параметр, тогда можно с ним работать. Если нет, то это обычная переменная определяемая внутри процедуры и ни на что не влияет.
---
Если открывается просто форма объекта, то можно в модуле менеджера переопределить форму. Если же должна открываться разная форма по условию, то тогда можно
1. Из формы списка проверять условие и открывать требуемую форму
2. В основной форме при создании на сервере проверять условие и открывать требуемую ,а эту ставить в отказ
---
По второму пункту поясните пожалуйста с условием понятно всё остальное не совсем создать процедуру с открытием код такой
```1c
    Форма = ПолучитьФорму("Документ.Первый.Форма.ФормаДокумента1");
    Форма.Открыть();
    Отказ = Истина;
```
---
При выборе документа скажем в формесписка1 должна открываться формадокумента1 для этого списка.
---
Делаете несколько процедур в форме списка 1
Выбор
ПередНачалоИзменения
ПередДобавлением.
И прописываете в них открытие своей формы.
В одних процедурах устанавливаете Отказ = истина, в других стандартнаяобработка = ложь
---
Так ?

```1c
    &НаКлиенте
    Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)

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

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

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

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

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

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

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

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

    КонецПроцедуры
```
---
В выборе тоже надо описать.
И кроме того, перед началом изменении и в выборе необходимо в форму передавать параметр -
Новый Структура("Ключ", <Документ на который спозиционировались>). В противном случае каждый раз будет открываться новый документ
---
При такой конструкции выдаёт ошибку

```1c
    &НаКлиенте
    Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)

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

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

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

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

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

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

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

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

    КонецПроцедуры
```
---
Анализ модуля ОценкаПроизводительностиКлиент.НачатьЗамер показал, что ключевая операция должна быть строкой. Уберите этот замер и попробуйте еще раз.
А по ошибке - судя по всему, у вас нет такой колонки в таблице. Соответственно и обращение к ней вызывает ошибку
---
Теперь выдаёт при выборе документа вот эту ошибку
---
Спасибо заработало, а можно чуть подробней о ключе не совсем понял <Документ на который спозиционировались> что за документ прописать ?

```1c
    КлючеваяОперация = ПолучитьФорму("Документ.АктСписанияМЗ.Форма.ФормаДокумента1", Новый Структура("Ключ", <?>));
    КлючеваяОперация.Открыть();
    Отказ = Истина;
```
---
Разобрался )

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

Прописал так в выборе и изменениях, открывает нужный документ в упрощённой форме только следом сразу же открывает и второй новый, почему ?
---
только следом сразу же открывает и второй новый, почему ?
Потому что не "Отказ = Истина;", а "СтандартнаяОбработка = Ложь;" должно быть.
---
В тему вопроса, подскажите пожалуйста, а как тогда сделать что выбрав определённый документ в форме списка никакая форма не открывалась, а щёлкнув по другому док она открылась ?
---
ничего не понял.
---
Выделенная строка по ней щёлкаю, а она не открывается пока какое то условие не выполню, а щёлкаю по другой открывается. Как сделать ?
---
можно воспользоваться обработчиком списка ПередНачаломИзменения

СписокПередНачаломИзменения(Элемент, Отказ)
Проверять условие (в Элемент.ТекущиеДанные можно получить данные строки списка) и в случае, когда не нужно открывать, делать отказ
Отказ = Истина
---
СписокПередНачаломИзменения(Элемент, Отказ) у меня он есть но рабоает всё в процедуре СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
 Отказ = Истина так не прокатывает открывается основная форма везде уже переискал что за неё отвечает.
---
почему работу нескольких обработчиков не воспринимаете?
Делаете то, что я сказал в обработчике списка ПередНачаломИзменения.
Не нужно пытаться все делать в одном обработчике. Каждый обработчик служит для своих целей.
---
Так я проверил их всё в них закоментил Сообшить("Работать") за пустил и не чего не произошло отработал только СписокВыбор
---
Просто Выбор срабатывает раньше. Хорошо, а что мешает проверять условие и только при необходимости открывать нужную форму?

В обработчике Выбор:

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

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

вставленной в Выбор я открываю ФормуДокумента1. Если я её "закоменчу" и везде пропишу
```1c
    СтандартнаяОбработка = Ложь;
```
 это не помогает всё равно открывается основная форма.
Суть в том как отключить запуск основной формы в модуле ФормаСписка1 тогда да можно поставить условие.
---
Вы меня не поняли ?
---
нет
---
Можно сначала ? Мне нужно что бы выделенная строка не открывалась по щелчку по ней это возможно сделать ?
---
можно. Выше уже было сказано как.
---
Отказ = Истина прописаная в выборе не работает
ОткрытиеНаСервере Отказ = Истина не даёт открыть ФормуСписка1
Можно ещё вопрос, а стандартными инструментами Динамического списка можно запретить открытие выбранной строки ?
---
Отказ = Истина прописаная в выборе не работает
Поймите простую истину. Отказ это не глобальная переменная. Это возможно один из параметров процедуры обработчика. Т.е. если в процедуре есть такой параметр, тогда можно с ним работать. Если нет, то это обычная переменная определяемая внутри процедуры и ни на что не влияет.
---
Слава Богам !!!! Вот оно !!! то есть Вам спасибо огромное !!!
---
Бедная БГУ2... за что ж вы с ней так
---
Это ещё только начало, дальше круче будет )) (злобный смех)