Стандартная обработка = Ложь, как добавлять тот или иной элемент.

1. user606894_schana1w3 20.03.17 18:22 Сейчас в теме
Здравствуйте, как добавлять при выборе из справочника в табличную часть что - либо?
Вот есть документ, выбираем номенклатуру колбаса, в табличной части товары выбираем единицу измерения(установил отбор).
Открываю форму

на сервере

ФормаВыб = Справочники.ЕдиницыИзмерения.ПолучитьФорму("ФормаВыбора", ЭтаФорма);
ФормаВыб.Отбор.Владелец.Значение = объект.Номенклатура;
ФормаВыб.Отбор.Владелец.Использование = Истина;
ФормаВыб.РежимВыбора = Истина;
ФормаВыб.Открыть();



потом при изменении единицы измерения

на клиенте

СтандартнаяОбработка=Ложь;
ПолучателиЕдиницаИзмеренияПриИзмененииНаСервере();



Все открывает как надо, но он не подставляет в табличную часть то значение которое я выбрал(допустим штуки)
подсмотрел на форумах, нужно чтото такое дописать

&НаКлиенте

Процедура ПолучателиОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)

СтандартнаяОбработка=Ложь;

НоваяСтрока = Элементы.Получатели.ДобавитьСтроку();

НоваяСтрока.ЕдиницаИзмерения = ВыбранноеЗначение;

КонецПроцедуры
Показать

и не пашет, что не так?
По теме из базы знаний
Найденные решения
9. Vix 28 20.03.17 21:24 Сейчас в теме
(1)
&НаКлиенте
Процедура ЕдИзмНачалоВыбора()
        СтандартнаяОбработка = ЛОЖЬ;
	НФорма = ПолучитьФорму("Справочник.ЕдиницыИзмерения.ФормаВыбора",,ЭтаФорма);
	НФорма.ОткрытьМодально();
        НоваяСтрока = Элементы.Получатели.ДобавитьСтроку();
       НоваяСтрока.ЕдиницаИзмерения = НФорма.ТекущийЭлемент.ТекущиеДанные;	
КонецПроцедуры


в форме ОбработкаВыбора появится выбранное значение, там можно получателю добавить ед. изм.
user606894_schana1w3; +1 Ответить
Остальные ответы
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
9. Vix 28 20.03.17 21:24 Сейчас в теме
(1)
&НаКлиенте
Процедура ЕдИзмНачалоВыбора()
        СтандартнаяОбработка = ЛОЖЬ;
	НФорма = ПолучитьФорму("Справочник.ЕдиницыИзмерения.ФормаВыбора",,ЭтаФорма);
	НФорма.ОткрытьМодально();
        НоваяСтрока = Элементы.Получатели.ДобавитьСтроку();
       НоваяСтрока.ЕдиницаИзмерения = НФорма.ТекущийЭлемент.ТекущиеДанные;	
КонецПроцедуры


в форме ОбработкаВыбора появится выбранное значение, там можно получателю добавить ед. изм.
user606894_schana1w3; +1 Ответить
2. A.Sytchev 20.03.17 18:41 Сейчас в теме
ФормаВыб = Справочники.ЕдиницыИзмерения.ПолучитьФорму("ФормаВыбора", ЭтаФорма)


Поставь владельцем не всю форму, а "Получатели".
dmb2006; herfis; +2 Ответить
4. herfis 498 20.03.17 18:58 Сейчас в теме
Плюсанул (2), но перечитал пост и теперь вообще не понимаю, что хочет автор.
Какая-то доп-табличная часть "Получатели", куда параллельно добавляются единицы измерения из ТЧ товаров... Фигня какая-то. А если поменяют? А еще куча других "если"?
5. user606894_schana1w3 20.03.17 20:38 Сейчас в теме
(4) Ну я так образно ее обозвал, чтобы проще было объяснить, у меня одна табчасть - получатели(свого рода данные о номенклатуре)
тоесть форма такая, 1 реквизит = Номенклатура(выбрали, допустим - колбаса), далее в табличной части *получатели* автоматически создается строка с единицей измерения(шт), характеристикой(вкусное мясо) и контрагента(тому кому мы отправляем колбасу(получатель).
6. user606894_schana1w3 20.03.17 20:39 Сейчас в теме
7. user606894_schana1w3 20.03.17 20:46 Сейчас в теме
(2)Нет. ничего не изменилось.
3. A.Sytchev 20.03.17 18:44 Сейчас в теме
Либо перехватывай обработку выбора у самой формы и делай там что тебе нужно. Но это плохой вариант.
8. user606894_schana1w3 20.03.17 21:15 Сейчас в теме
&НаСервере
Процедура ПолучателиЕдиницаИзмеренияПриИзмененииНаСервере(ЕдиницаИзмерения)
	ФормаВыб = Справочники.ЕдиницыИзмерения.ПолучитьФорму("ФормаВыбора", Элементы.Получатели);
ФормаВыб.Отбор.Владелец.Значение = объект.Номенклатура;
ФормаВыб.Отбор.Владелец.Использование = Истина;
ФормаВыб.РежимВыбора = Истина;

ФормаВыб.ОткрытьМодально();
КонецПроцедуры

&НаКлиенте
Процедура ПолучателиЕдиницаИзмеренияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	СтандартнаяОбработка=Ложь;
	СтрТЧ = Элементы.Получатели.ТекущиеДанные;
	ВыбранноеЗначение=ТекущийЭлемент;
	ПолучателиЕдиницаИзмеренияПриИзмененииНаСервере(стрТЧ.ЕдиницаИзмерения);
		
	ПолучателиОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка);
	
	
КонецПроцедуры

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

	Элементы.Получатели.ДобавитьСтроку();
	стрТЧ= Элементы.Получатели.ТекущиеДанные;
	стрТЧ.ЕдиницаИзмерения = ВыбранноеЗначение;

КонецПроцедуры
Показать


Чутка похимичил
он тупо не добавляет данные - Элементы.Получатели.ДобавитьСтроку(); строку то он добавляет и все, даже если указать специально, что мол стрТЧ. ЕдиницаИзмерения = "штукарь"; то ничего не произойдет.
10. user606894_schana1w3 20.03.17 22:40 Сейчас в теме
&НаСервере
&НаСервере
функция ПолучателиЕдиницаИзмеренияПриИзмененииНаСервере()
	ФормаВыб = Справочники.ЕдиницыИзмерения.ПолучитьФорму("ФормаВыбора",ЭтаФорма);
ФормаВыб.Отбор.Владелец.Значение = объект.Номенклатура;
ФормаВыб.Отбор.Владелец.Использование = Истина;
ФормаВыб.РежимВыбора = Истина;

ФормаВыб.ОткрытьМодально();
ном = ФормаВыб.ТекущийЭлемент.ТекущиеДанные;
возврат ном.ссылка; 
Конецфункции

&НаКлиенте
Процедура ПолучателиЕдиницаИзмеренияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	СтандартнаяОбработка=Ложь;
	СтрТЧ = Элементы.Получатели.ТекущиеДанные;
	Элементы.Получатели.ДобавитьСтроку();
	
	ВыбранноеЗначение = ПолучателиЕдиницаИзмеренияПриИзмененииНаСервере();
		
	ПолучателиОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка);
	
	ВыбранноеЗначение = объект.ЕдиницаИзмерения;
	
	
КонецПроцедуры

&НаКлиенте
Процедура ПолучателиОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
	
	СтандартнаяОбработка=Ложь;	
	Элементы.Получатели.ДобавитьСтроку();
	стрТЧ= Элементы.Получатели.ТекущиеДанные;
	стртч.единицаИзмерения = ВыбранноеЗначение;
	КонецПроцедуры

Показать


Всем спасибо, все работает.)
11. herfis 498 21.03.17 10:43 Сейчас в теме
(10) Очень плохой код. Очень запутанный и кривой. Модальное открытие формы на сервере? Это жесть. Бизнес-логика тоже нифига непонятная. Получается, при выборе единицы измерения в строке табличной части автоматом создается две следующие строки (Элементы.Получатели.ДобавитьСтроку в ПолучателиЕдиницаИзмеренияНачалоВыбора и в ПолучателиОбработкаВыбора)? Но какой бы кривой не была бизнес-логика, никакой необходимости в нестандартных обработчиках я не вижу.
Чтобы единица измерения выбиралась в подчинении к номенклатуре, в УФ достаточно настроить связи параметров выбора у реквизита формы. Ни строчки кода.
А для выполнения каких-то действий по факту изменения реквизита предназначен прямой как железная дорога обработчик "ПриИзменении". Ну ладно, если почему-то хочется в обработке выбора - пожалуйста. Но в стандартной.
И как не крути, остается ощущение неправильной постановки задачи. Если постановка как в (5), то не надо никаких кривых автоматизаций непонятно чего.
Простая табличная часть с ручным добавлением строк, в которых при добавлении проставляется дефолтная единица измерения и характеристика. Надо поменять - откроют и поменяют. Связанные отборы форм выбора, как я уже сказал, в УФ настраиваются параметрически.
Если первую строку надо создать автоматом при изменении номенклатуры - не вопрос. Так и делай. Просто заполняй дефолтными значениями. Не надо никаких выпрыгивающих форм. Тем более - модальных на сервере.
12. Solovyeff 21.03.17 13:41 Сейчас в теме
В управляемых формах использовать модальные окна - ужасных грех.

&НаКлиенте
Процедура КомандаОткрытияФормыВыбора(Команда)
	
	Параметры = Новый Структура("Отбор", ВашаСтруктураОтбора);
	ОткрытьФорму("Справочник.Валюты.ФормаВыбора",Параметры, ЭтаФорма,,,,,Новый ОписаниеОповещения("ПолучитьЧтоТоИзФормыВыбора", ЭтотОбъект));

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

&НаКлиенте
Процедура ПолучитьЧтоТоИзФормыВыбора(Результат, ДополнительныеПараметры) Экспорт
	
	//В параметре результат, выбранное значение 
	Если Результат = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	 //Что-то делает с полученным значением

КонецПроцедуры // ПолучитьЧтоТоИзФормыВыбора()

Показать
wild83; LomayaZakat; ulikpan; +3 Ответить
Оставьте свое сообщение

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