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

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

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

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

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

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