Коллеги, добрый день!
Платформа 8.3.6.2237, конфигурация Управление торговлей 11.1.10.103.
Подозреваю что ошибка глупая и ответ на поверхности, но все таки.
Необходимо выбрать из общего списка заказ на сборку, чтобы отредактировать его. Делаю следующим образом.
В ОбработкаВыбора не попадаю. Скажите пожалуйста в чем проблема?
Платформа 8.3.6.2237, конфигурация Управление торговлей 11.1.10.103.
Подозреваю что ошибка глупая и ответ на поверхности, но все таки.
Необходимо выбрать из общего списка заказ на сборку, чтобы отредактировать его. Делаю следующим образом.
&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды,ОбъектыНазначенияМассив) Экспорт
ПараметрыФормы = Новый Структура("ЗакрыватьПриВыборе, МножественныйВыбор", Истина, Истина);
ОткрытьФорму("Документ.ЗаказНаСборку.ФормаВыбора", ПараметрыФормы, ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
Сообщить(ВыбранноеЗначение);
КонецПроцедуры
В ОбработкаВыбора не попадаю. Скажите пожалуйста в чем проблема?
По теме из базы знаний
- Форма редактирования списка значений
- Переделка модального окна в режиме выбора в немодальное или ошибка dZO.showModalDialog
- Как сдать экзамен 1С:Специалист по платформе?
- Использование флажков в динамических списках 2.0
- "1С:Розница 8. Ювелирный магазин" - кол. УИН в списках ДМДК, альтернативная печать DataMatrix, заполнение партий для ДМДК по артикулам/штрихкодам
Найденные решения
(1) Вот так работает?
ОбработкаВыбора() Экспорт ///это обязательно
&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды,ОбъектыНазначенияМассив) Экспорт
ПараметрыФормы = Новый Структура("ЗакрыватьПриВыборе, МножественныйВыбор", Истина, Истина);
Оповещение1 = Новый ОписаниеОповещения("ОбработкаВыбора",ЭтаФорма);
ОткрытьФорму("Документ.ЗаказНаСборку.ФормаВыбора", ПараметрыФормы, ЭтаФорма,,,,Оповещение1);
КонецПроцедуры
ПоказатьОбработкаВыбора() Экспорт ///это обязательно
(27) правильно в данном случае это открытие формы. Логика обработки на форму завязана.
В сведениях о обработке:
Далее в форме ПриСозданииНаСервере получаете данные из заказа.
ПриОткрытии вызываете ОткрытьФорму.
И уже в обработчике ОбработкаВыбора получаете и обрабатываете.
Единственно, будет показана форма обработки. Ну, ее можно как-то получше оформить :)
В сведениях о обработке:
ДобавитьКоманду(ТаблицаКоманд,
//"Заполнить по док. отчет производства за смену (мн.подбор)",
"Отправить в заказ на сборку",
"Отправить в заказ на сборку",
//"ВызовКлиентскогоМетода",
"ОткрытиеФормы",
Истина);
Далее в форме ПриСозданииНаСервере получаете данные из заказа.
ПриОткрытии вызываете ОткрытьФорму.
И уже в обработчике ОбработкаВыбора получаете и обрабатываете.
Единственно, будет показана форма обработки. Ну, ее можно как-то получше оформить :)
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) этот код где располагается? Модуль формы обработки, документа?
Процедуру ОбработкаВыбора откуда-то скопировали?
Если указали ОткрытьФорму("Документ.ЗаказНаСборку.ФормаВыбора", ПараметрыФормы, ЭтаФорма) , то обработчик выбора должен быть всей формы.
А у нее другие параметры. Приведенный обработчик больше подходит для обработки выбора элемента формы.
Процедуру ОбработкаВыбора откуда-то скопировали?
Если указали ОткрытьФорму("Документ.ЗаказНаСборку.ФормаВыбора", ПараметрыФормы, ЭтаФорма) , то обработчик выбора должен быть всей формы.
А у нее другие параметры. Приведенный обработчик больше подходит для обработки выбора элемента формы.
(11) судя по скрину все верно. Единственное замечание, Сообщить(ВыбранноеЗначение) всегда покажет строку "Массив". Но работать должно.
Если это внешняя обработка... после редактирования и сохранения... запущенную обработку в режиме предприятия закрывали и открывали снова? Иначе будет отрабатывать старый код.
Если это внешняя обработка... после редактирования и сохранения... запущенную обработку в режиме предприятия закрывали и открывали снова? Иначе будет отрабатывать старый код.
(1) Вот так работает?
ОбработкаВыбора() Экспорт ///это обязательно
&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды,ОбъектыНазначенияМассив) Экспорт
ПараметрыФормы = Новый Структура("ЗакрыватьПриВыборе, МножественныйВыбор", Истина, Истина);
Оповещение1 = Новый ОписаниеОповещения("ОбработкаВыбора",ЭтаФорма);
ОткрытьФорму("Документ.ЗаказНаСборку.ФормаВыбора", ПараметрыФормы, ЭтаФорма,,,,Оповещение1);
КонецПроцедуры
ПоказатьОбработкаВыбора() Экспорт ///это обязательно
(31) это работает, то не так как думаете. Это две разные формы открываются.
Сначала открывается форма командой заполнения. отрабатывает и закрывается.
Потом Оповещением открывается новая форма и отрабатывает.
Почему отрабатывает 2 раза, потому что отрабатывает оповещение и стандартный обработчик ОбработкаВыбора (на момент этого обработчика форма снова доступна).
Можно в ОписаниеОповещения указать любую свою процедуру, и отключить из свойств формы обработчик ОбработкаВыбора. Тогда стандартный обработчик не будет вызываться.
Но учтите, что хранить в этой форме промежуточные данные нельзя, они будут теряться (формы на самом деле разные). Если этого не требуется, то можно использовать этот способ.
Сначала открывается форма командой заполнения. отрабатывает и закрывается.
Потом Оповещением открывается новая форма и отрабатывает.
Почему отрабатывает 2 раза, потому что отрабатывает оповещение и стандартный обработчик ОбработкаВыбора (на момент этого обработчика форма снова доступна).
Можно в ОписаниеОповещения указать любую свою процедуру, и отключить из свойств формы обработчик ОбработкаВыбора. Тогда стандартный обработчик не будет вызываться.
Но учтите, что хранить в этой форме промежуточные данные нельзя, они будут теряться (формы на самом деле разные). Если этого не требуется, то можно использовать этот способ.
Если проверяете через ВыборИзСписка (тот что привязан к элементу формы), то и не будет. Нужно тогда этот обработчик использовать и переопределять поведение.
Сама же функция через ВыполнитьКоманду подключаемой внешней обработки - работает.
Правда не понятно требование МножественныйВыбор. На форме только ссылка на документ. Там не может храниться несколько ссылок.
Я кажется догадываюсь, что смутило в работе обработки.
Подключили ее как внешнюю. При ее использовании Сообщить не показывается? Так и не будет, хотя и отрабатывает. Просто форма (как и сама обработка) сразу же закрывается после отработки и сообщение не успевает показаться, так как привязана к той (уже закрытой) форме. Вот сообщения и не видно. Но ОбработкаВыбора отрабатывает нормально.
Сама же функция через ВыполнитьКоманду подключаемой внешней обработки - работает.
Правда не понятно требование МножественныйВыбор. На форме только ссылка на документ. Там не может храниться несколько ссылок.
Я кажется догадываюсь, что смутило в работе обработки.
Подключили ее как внешнюю. При ее использовании Сообщить не показывается? Так и не будет, хотя и отрабатывает. Просто форма (как и сама обработка) сразу же закрывается после отработки и сообщение не успевает показаться, так как привязана к той (уже закрытой) форме. Вот сообщения и не видно. Но ОбработкаВыбора отрабатывает нормально.
(19) Смотрите, предположим, что ОбработкаВыбора отрабатывает. Дописала все, что требовалось.
В процедуру ПолучитьДанныеИзЗаказаКлиента попадаем, табличная часть обработки заполняется. А вот в процедуру ИзменитьЗаказНаСборку не попадаем. Я не понимаю...
В процедуру ПолучитьДанныеИзЗаказаКлиента попадаем, табличная часть обработки заполняется. А вот в процедуру ИзменитьЗаказНаСборку не попадаем. Я не понимаю...
&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды,ОбъектыНазначенияМассив) Экспорт
ПолучитьДанныеИзЗаказаКлиента(ОбъектыНазначенияМассив);
ПараметрыФормы = Новый Структура("ЗакрыватьПриВыборе, МножественныйВыбор", Истина, Ложь);
ОткрытьФорму("Документ.ЗаказНаСборку.ФормаВыбора", ПараметрыФормы, ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ПолучитьДанныеИзЗаказаКлиента (МассивОбъектов)
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", МассивОбъектов);
Запрос.Текст =
"ВЫБРАТЬ
| ЗаказКлиентаТовары.Номенклатура КАК Номенклатура,
| ЗаказКлиентаТовары.Количество КАК Количество,
| ЗаказКлиентаТовары.Ссылка.НомерПоДаннымКлиента КАК НомерЗаказа,
| ЗаказКлиентаТовары.КоличествоУпаковок КАК КоличествоУпаковок
|ИЗ
| Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
|ГДЕ
| ЗаказКлиентаТовары.Ссылка В(&Ссылка)";
Результат = Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() Цикл
Строка = Объект.СтрокиЗаказаКлиента.Добавить();
Строка.Номенклатура = Результат.Номенклатура;
Строка.Количество = Результат.Количество;
Строка.КоличествоУпаковок = Результат.КоличествоУпаковок;
Строка.НомерЗаказа = Результат.НомерЗаказа;
КонецЦикла;
Сообщить("ПолучитьДанныеИзЗаказаКлиента");
КонецПроцедуры
&НаСервере
Процедура ИзменитьЗаказНаСборку (ЗаказНаСборку)
ОбъектЗаказНаСборку = ЗаказНаСборку.ПолучитьОбъект();
Для Каждого Стр Из Объект.СтрокиЗаказаКлиента Цикл
СтрокаТЧ = ОбъектЗаказНаСборку.Продукция.Добавить();
СтрокаТЧ.Номенклатура = Стр.Номенклатура;
СтрокаТЧ.Количество = Стр.Количество;
СтрокаТЧ.КоличествоУпаковок = Стр.КоличествоУпаковок;
СтрокаТЧ.НомерЗаказа = Стр.НомерЗаказа;
КонецЦикла;
ОбъектЗаказНаСборку.Записать();
Сообщить("ИзменитьЗаказНаСборку");
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
//Сообщить(ВыбранноеЗначение);
ИзменитьЗаказНаСборку(ВыбранноеЗначение);
КонецПроцедуры
Показать
(20) тут проблема в том, что используете подключаемую внешнюю обработку заполнения с вызовом клиентского метода. Как хотите не сработает.
Смотрите, при запуске обработки платформа запускает клиентскую процедуру ВыполнитьКоманду(ИдентификаторКоманды,ОбъектыНазначенияМассив).
Все что в ней отработает и она завершится(закроется). Все. Больше ничего в ней не будет работать.
Тут или переделать на открытие формы, или открывать модально. Последнее может не поддерживаться конфигурацией.
Смотрите, при запуске обработки платформа запускает клиентскую процедуру ВыполнитьКоманду(ИдентификаторКоманды,ОбъектыНазначенияМассив).
Все что в ней отработает и она завершится(закроется). Все. Больше ничего в ней не будет работать.
Тут или переделать на открытие формы, или открывать модально. Последнее может не поддерживаться конфигурацией.
(27) правильно в данном случае это открытие формы. Логика обработки на форму завязана.
В сведениях о обработке:
Далее в форме ПриСозданииНаСервере получаете данные из заказа.
ПриОткрытии вызываете ОткрытьФорму.
И уже в обработчике ОбработкаВыбора получаете и обрабатываете.
Единственно, будет показана форма обработки. Ну, ее можно как-то получше оформить :)
В сведениях о обработке:
ДобавитьКоманду(ТаблицаКоманд,
//"Заполнить по док. отчет производства за смену (мн.подбор)",
"Отправить в заказ на сборку",
"Отправить в заказ на сборку",
//"ВызовКлиентскогоМетода",
"ОткрытиеФормы",
Истина);
Далее в форме ПриСозданииНаСервере получаете данные из заказа.
ПриОткрытии вызываете ОткрытьФорму.
И уже в обработчике ОбработкаВыбора получаете и обрабатываете.
Единственно, будет показана форма обработки. Ну, ее можно как-то получше оформить :)
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот