Коллеги, добрый день!
Платформа 8.3.6.2237, конфигурация Управление торговлей 11.1.10.103.
Подозреваю что ошибка глупая и ответ на поверхности, но все таки.
Необходимо выбрать из общего списка заказ на сборку, чтобы отредактировать его. Делаю следующим образом.

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

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

В ОбработкаВыбора не попадаю. Скажите пожалуйста в чем проблема?
---
Вот так работает?

```1c
    &НаКлиенте
    Процедура ВыполнитьКоманду(ИдентификаторКоманды,ОбъектыНазначенияМассив) Экспорт

    ПараметрыФормы = Новый Структура("ЗакрыватьПриВыборе, МножественныйВыбор", Истина, Истина);
    Оповещение1 = Новый ОписаниеОповещения("ОбработкаВыбора",ЭтаФорма);
    ОткрытьФорму("Документ.ЗаказНаСборку.ФормаВыбора", ПараметрыФормы, ЭтаФорма,,,,Оповещение1);

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

ОбработкаВыбора() Экспорт ///это обязательно
---
правильно в данном случае это открытие формы. Логика обработки на форму завязана.
В сведениях о обработке:

```1c
    ДобавитьКоманду(ТаблицаКоманд,
    //"Заполнить по док. отчет производства за смену (мн.подбор)",
    "Отправить в заказ на сборку",
    "Отправить в заказ на сборку",
    //"ВызовКлиентскогоМетода",
    "ОткрытиеФормы",
    Истина);
```

Далее в форме ПриСозданииНаСервере получаете данные из заказа.
ПриОткрытии вызываете ОткрытьФорму.
И уже в обработчике ОбработкаВыбора получаете и обрабатываете.
Единственно, будет показана форма обработки. Ну, ее можно как-то получше оформить :)
---
этот код где располагается? Модуль формы обработки, документа?
Процедуру ОбработкаВыбора откуда-то скопировали?
Если указали ОткрытьФорму("Документ.ЗаказНаСборку.ФормаВыбора", ПараметрыФормы, ЭтаФорма) , то обработчик выбора должен быть всей формы.
А у нее другие параметры. Приведенный обработчик больше подходит для обработки выбора элемента формы.
---
код в модуле формы. Насчет обработки вы кстати правы. Поправила на

```1c
    &НаКлиенте
    Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
    Сообщить(ВыбранноеЗначение);
    КонецПроцедуры
```

но результат не изменился.
---
поправили вручную, а указать в обработчиках формы, что событие ОбработкаВыбора использует эту процедуру?
---
конечно тоже сделала.
---
Процедура ОбработкаВыбора назначена в качестве обработчика?
---
да
---
скрин в студию
---
судя по скрину все верно. Единственное замечание, Сообщить(ВыбранноеЗначение) всегда покажет строку "Массив". Но работать должно.
Если это внешняя обработка... после редактирования и сохранения... запущенную обработку в режиме предприятия закрывали и открывали снова? Иначе будет отрабатывать старый код.
---
да, конечно перезакрывала. Вот сижу голову ломаю. Причем проблема не в отображении массива значений, он никакое Сообщить() не отрабатывает.
---
а форма выбора хоть открывается?
---
да, открывается, щелкаю по строке дважды (или кнопку Выбрать), закрывается и ... ничего.
---
прикладывайте обработку
---
это же не просто внешняя обработка, а подключаемая через ДополнительныеОтчетыИОбработки.
Так. и где не работает? Где проверяете?
---
раз инициализацию прошло, то еще должно быть оповещение о выборе, чтобы в нее попало!
---
платформа сама оповещает владельца
---
а вы в форме инициализировали процедуру или скопировали?
---
Вот так работает?

```1c
    &НаКлиенте
    Процедура ВыполнитьКоманду(ИдентификаторКоманды,ОбъектыНазначенияМассив) Экспорт

    ПараметрыФормы = Новый Структура("ЗакрыватьПриВыборе, МножественныйВыбор", Истина, Истина);
    Оповещение1 = Новый ОписаниеОповещения("ОбработкаВыбора",ЭтаФорма);
    ОткрытьФорму("Документ.ЗаказНаСборку.ФормаВыбора", ПараметрыФормы, ЭтаФорма,,,,Оповещение1);

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

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

так пробовали?
---
переменная Элемент не определена
---
Если проверяете через ВыборИзСписка (тот что привязан к элементу формы), то и не будет. Нужно тогда этот обработчик использовать и переопределять поведение.

Сама же функция через ВыполнитьКоманду подключаемой внешней обработки - работает.

Правда не понятно требование МножественныйВыбор. На форме только ссылка на документ. Там не может храниться несколько ссылок.

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

```1c
    &НаКлиенте
    Процедура ВыполнитьКоманду(ИдентификаторКоманды,ОбъектыНазначенияМассив) Экспорт

    ПолучитьДанныеИзЗаказаКлиента(ОбъектыНазначенияМассив);

    ПараметрыФормы = Новый Структура("ЗакрыватьПриВыборе, МножественныйВыбор", Истина, Ложь);
    ОткрытьФорму("Документ.ЗаказНаСборку.ФормаВыбора", ПараметрыФормы, ЭтаФорма);

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

    &НаСервере
    Процедура ПолучитьДанныеИзЗаказаКлиента (МассивОбъектов)

    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("Ссылка", МассивОбъектов);
    Запрос.Текст =
    "ВЫБРАТЬ
    | ЗаказКлиентаТовары.Номенклатура КАК Номенклатура,
    | ЗаказКлиентаТовары.Количество КАК Количество,
    | ЗаказКлиентаТовары.Ссылка.НомерПоДаннымКлиента КАК НомерЗаказа,
    | ЗаказКлиентаТовары.КоличествоУпаковок КАК КоличествоУпаковок
    |ИЗ
    | Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
    |ГДЕ
    | ЗаказКлиентаТовары.Ссылка В(&Ссылка)";

    Результат = Запрос.Выполнить().Выбрать();

    Пока Результат.Следующий() Цикл
    Строка = Объект.СтрокиЗаказаКлиента.Добавить();
    Строка.Номенклатура = Результат.Номенклатура;
    Строка.Количество = Результат.Количество;
    Строка.КоличествоУпаковок = Результат.КоличествоУпаковок;
    Строка.НомерЗаказа = Результат.НомерЗаказа;
    КонецЦикла;

    Сообщить("ПолучитьДанныеИзЗаказаКлиента");

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

    &НаСервере
    Процедура ИзменитьЗаказНаСборку (ЗаказНаСборку)

    ОбъектЗаказНаСборку = ЗаказНаСборку.ПолучитьОбъект();
    Для Каждого Стр Из Объект.СтрокиЗаказаКлиента Цикл
    СтрокаТЧ = ОбъектЗаказНаСборку.Продукция.Добавить();
    СтрокаТЧ.Номенклатура = Стр.Номенклатура;
    СтрокаТЧ.Количество = Стр.Количество;
    СтрокаТЧ.КоличествоУпаковок = Стр.КоличествоУпаковок;
    СтрокаТЧ.НомерЗаказа = Стр.НомерЗаказа;
    КонецЦикла;
    ОбъектЗаказНаСборку.Записать();

    Сообщить("ИзменитьЗаказНаСборку");

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

    &НаКлиенте
    Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)

    //Сообщить(ВыбранноеЗначение);
    ИзменитьЗаказНаСборку(ВыбранноеЗначение);

    КонецПроцедуры
```
---
предположим, что ОбработкаВыбора отрабатывает
что значит "предположим"? заходит туда отладчик или нет?
---
нет, не заходит.
---
тут проблема в том, что используете подключаемую внешнюю обработку заполнения с вызовом клиентского метода. Как хотите не сработает.
Смотрите, при запуске обработки платформа запускает клиентскую процедуру ВыполнитьКоманду(ИдентификаторКоманды,ОбъектыНазначенияМассив).
Все что в ней отработает и она завершится(закроется). Все. Больше ничего в ней не будет работать.
Тут или переделать на открытие формы, или открывать модально. Последнее может не поддерживаться конфигурацией.
---
с открытием модально сделала, все работает. Выдается сообщение, что использование модальных окон в данном режиме запрещено, поэтому решила попробовать сделать "правильно".
---
правильно в данном случае это открытие формы. Логика обработки на форму завязана.
В сведениях о обработке:

```1c
    ДобавитьКоманду(ТаблицаКоманд,
    //"Заполнить по док. отчет производства за смену (мн.подбор)",
    "Отправить в заказ на сборку",
    "Отправить в заказ на сборку",
    //"ВызовКлиентскогоМетода",
    "ОткрытиеФормы",
    Истина);
```

Далее в форме ПриСозданииНаСервере получаете данные из заказа.
ПриОткрытии вызываете ОткрытьФорму.
И уже в обработчике ОбработкаВыбора получаете и обрабатываете.
Единственно, будет показана форма обработки. Ну, ее можно как-то получше оформить :)
---
поняла, спасибо.