Стандартная обработка = Ложь, как добавлять тот или иной элемент.
Здравствуйте, как добавлять при выборе из справочника в табличную часть что - либо?
Вот есть документ, выбираем номенклатуру колбаса, в табличной части товары выбираем единицу измерения(установил отбор).
Открываю форму
потом при изменении единицы измерения
на клиенте
Все открывает как надо, но он не подставляет в табличную часть то значение которое я выбрал(допустим штуки)
подсмотрел на форумах, нужно чтото такое дописать
&НаКлиенте
и не пашет, что не так?
Вот есть документ, выбираем номенклатуру колбаса, в табличной части товары выбираем единицу измерения(установил отбор).
Открываю форму
на сервере
ФормаВыб = Справочники.ЕдиницыИзмерения.ПолучитьФорму("ФормаВыбора", ЭтаФорма);
ФормаВыб.Отбор.Владелец.Значение = объект.Номенклатура;
ФормаВыб.Отбор.Владелец.Использование = Истина;
ФормаВыб.РежимВыбора = Истина;
ФормаВыб.Открыть();
потом при изменении единицы измерения
на клиенте
СтандартнаяОбработка=Ложь;
ПолучателиЕдиницаИзмеренияПриИзмененииНаСервере();
Все открывает как надо, но он не подставляет в табличную часть то значение которое я выбрал(допустим штуки)
подсмотрел на форумах, нужно чтото такое дописать
&НаКлиенте
Процедура ПолучателиОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка=Ложь;
НоваяСтрока = Элементы.Получатели.ДобавитьСтроку();
НоваяСтрока.ЕдиницаИзмерения = ВыбранноеЗначение;
КонецПроцедуры
Показатьи не пашет, что не так?
По теме из базы знаний
- Прозрачная интеграция 1С8.2 с 1С7.7 (Внешние источники, OLE)
- Доработки объектов метаданных и форм (только кодом) с помощью расширений на примере типовых конфигураций: 1C:ERP Управление предприятием 2.4 и 1С:Альфа-Авто: Автосалон+Автосервис+Автозапчасти КОРП 6
- Перенос/копирование и установка отбора/фильтра/периода при интерактивном переключении или смене варианта отчета/СКД в БСП 3.1 (1C ERP, УТ, БП, ...)
- Использование хранилища общих настроек вместо "НайтиПоНаименованию" или "НайтиПоКоду"
- Список моих рабочих отчетов и обработок, рабочий стол
Найденные решения
(1)
в форме ОбработкаВыбора появится выбранное значение, там можно получателю добавить ед. изм.
&НаКлиенте
Процедура ЕдИзмНачалоВыбора()
СтандартнаяОбработка = ЛОЖЬ;
НФорма = ПолучитьФорму("Справочник.ЕдиницыИзмерения.ФормаВыбора",,ЭтаФорма);
НФорма.ОткрытьМодально();
НоваяСтрока = Элементы.Получатели.ДобавитьСтроку();
НоваяСтрока.ЕдиницаИзмерения = НФорма.ТекущийЭлемент.ТекущиеДанные;
КонецПроцедуры
в форме ОбработкаВыбора появится выбранное значение, там можно получателю добавить ед. изм.
Остальные ответы
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
(1)
в форме ОбработкаВыбора появится выбранное значение, там можно получателю добавить ед. изм.
&НаКлиенте
Процедура ЕдИзмНачалоВыбора()
СтандартнаяОбработка = ЛОЖЬ;
НФорма = ПолучитьФорму("Справочник.ЕдиницыИзмерения.ФормаВыбора",,ЭтаФорма);
НФорма.ОткрытьМодально();
НоваяСтрока = Элементы.Получатели.ДобавитьСтроку();
НоваяСтрока.ЕдиницаИзмерения = НФорма.ТекущийЭлемент.ТекущиеДанные;
КонецПроцедуры
в форме ОбработкаВыбора появится выбранное значение, там можно получателю добавить ед. изм.
Плюсанул (2), но перечитал пост и теперь вообще не понимаю, что хочет автор.
Какая-то доп-табличная часть "Получатели", куда параллельно добавляются единицы измерения из ТЧ товаров... Фигня какая-то. А если поменяют? А еще куча других "если"?
Какая-то доп-табличная часть "Получатели", куда параллельно добавляются единицы измерения из ТЧ товаров... Фигня какая-то. А если поменяют? А еще куча других "если"?
(4) Ну я так образно ее обозвал, чтобы проще было объяснить, у меня одна табчасть - получатели(свого рода данные о номенклатуре)
тоесть форма такая, 1 реквизит = Номенклатура(выбрали, допустим - колбаса), далее в табличной части *получатели* автоматически создается строка с единицей измерения(шт), характеристикой(вкусное мясо) и контрагента(тому кому мы отправляем колбасу(получатель).
тоесть форма такая, 1 реквизит = Номенклатура(выбрали, допустим - колбаса), далее в табличной части *получатели* автоматически создается строка с единицей измерения(шт), характеристикой(вкусное мясо) и контрагента(тому кому мы отправляем колбасу(получатель).
&НаСервере
Процедура ПолучателиЕдиницаИзмеренияПриИзмененииНаСервере(ЕдиницаИзмерения)
ФормаВыб = Справочники.ЕдиницыИзмерения.ПолучитьФорму("ФормаВыбора", Элементы.Получатели);
ФормаВыб.Отбор.Владелец.Значение = объект.Номенклатура;
ФормаВыб.Отбор.Владелец.Использование = Истина;
ФормаВыб.РежимВыбора = Истина;
ФормаВыб.ОткрытьМодально();
КонецПроцедуры
&НаКлиенте
Процедура ПолучателиЕдиницаИзмеренияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка=Ложь;
СтрТЧ = Элементы.Получатели.ТекущиеДанные;
ВыбранноеЗначение=ТекущийЭлемент;
ПолучателиЕдиницаИзмеренияПриИзмененииНаСервере(стрТЧ.ЕдиницаИзмерения);
ПолучателиОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПолучателиОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка=Ложь;
Элементы.Получатели.ДобавитьСтроку();
стрТЧ= Элементы.Получатели.ТекущиеДанные;
стрТЧ.ЕдиницаИзмерения = ВыбранноеЗначение;
КонецПроцедуры
ПоказатьЧутка похимичил
он тупо не добавляет данные - Элементы.Получатели.ДобавитьСтроку(); строку то он добавляет и все, даже если указать специально, что мол стрТЧ. ЕдиницаИзмерения = "штукарь"; то ничего не произойдет.
&НаСервере
&НаСервере
функция ПолучателиЕдиницаИзмеренияПриИзмененииНаСервере()
ФормаВыб = Справочники.ЕдиницыИзмерения.ПолучитьФорму("ФормаВыбора",ЭтаФорма);
ФормаВыб.Отбор.Владелец.Значение = объект.Номенклатура;
ФормаВыб.Отбор.Владелец.Использование = Истина;
ФормаВыб.РежимВыбора = Истина;
ФормаВыб.ОткрытьМодально();
ном = ФормаВыб.ТекущийЭлемент.ТекущиеДанные;
возврат ном.ссылка;
Конецфункции
&НаКлиенте
Процедура ПолучателиЕдиницаИзмеренияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка=Ложь;
СтрТЧ = Элементы.Получатели.ТекущиеДанные;
Элементы.Получатели.ДобавитьСтроку();
ВыбранноеЗначение = ПолучателиЕдиницаИзмеренияПриИзмененииНаСервере();
ПолучателиОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка);
ВыбранноеЗначение = объект.ЕдиницаИзмерения;
КонецПроцедуры
&НаКлиенте
Процедура ПолучателиОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка=Ложь;
Элементы.Получатели.ДобавитьСтроку();
стрТЧ= Элементы.Получатели.ТекущиеДанные;
стртч.единицаИзмерения = ВыбранноеЗначение;
КонецПроцедуры
ПоказатьВсем спасибо, все работает.)
(10) Очень плохой код. Очень запутанный и кривой. Модальное открытие формы на сервере? Это жесть. Бизнес-логика тоже нифига непонятная. Получается, при выборе единицы измерения в строке табличной части автоматом создается две следующие строки (Элементы.Получатели.ДобавитьСтроку в ПолучателиЕдиницаИзмеренияНачалоВыбора и в ПолучателиОбработкаВыбора)? Но какой бы кривой не была бизнес-логика, никакой необходимости в нестандартных обработчиках я не вижу.
Чтобы единица измерения выбиралась в подчинении к номенклатуре, в УФ достаточно настроить связи параметров выбора у реквизита формы. Ни строчки кода.
А для выполнения каких-то действий по факту изменения реквизита предназначен прямой как железная дорога обработчик "ПриИзменении". Ну ладно, если почему-то хочется в обработке выбора - пожалуйста. Но в стандартной.
И как не крути, остается ощущение неправильной постановки задачи. Если постановка как в (5), то не надо никаких кривых автоматизаций непонятно чего.
Простая табличная часть с ручным добавлением строк, в которых при добавлении проставляется дефолтная единица измерения и характеристика. Надо поменять - откроют и поменяют. Связанные отборы форм выбора, как я уже сказал, в УФ настраиваются параметрически.
Если первую строку надо создать автоматом при изменении номенклатуры - не вопрос. Так и делай. Просто заполняй дефолтными значениями. Не надо никаких выпрыгивающих форм. Тем более - модальных на сервере.
Чтобы единица измерения выбиралась в подчинении к номенклатуре, в УФ достаточно настроить связи параметров выбора у реквизита формы. Ни строчки кода.
А для выполнения каких-то действий по факту изменения реквизита предназначен прямой как железная дорога обработчик "ПриИзменении". Ну ладно, если почему-то хочется в обработке выбора - пожалуйста. Но в стандартной.
И как не крути, остается ощущение неправильной постановки задачи. Если постановка как в (5), то не надо никаких кривых автоматизаций непонятно чего.
Простая табличная часть с ручным добавлением строк, в которых при добавлении проставляется дефолтная единица измерения и характеристика. Надо поменять - откроют и поменяют. Связанные отборы форм выбора, как я уже сказал, в УФ настраиваются параметрически.
Если первую строку надо создать автоматом при изменении номенклатуры - не вопрос. Так и делай. Просто заполняй дефолтными значениями. Не надо никаких выпрыгивающих форм. Тем более - модальных на сервере.
В управляемых формах использовать модальные окна - ужасных грех.
&НаКлиенте
Процедура КомандаОткрытияФормыВыбора(Команда)
Параметры = Новый Структура("Отбор", ВашаСтруктураОтбора);
ОткрытьФорму("Справочник.Валюты.ФормаВыбора",Параметры, ЭтаФорма,,,,,Новый ОписаниеОповещения("ПолучитьЧтоТоИзФормыВыбора", ЭтотОбъект));
КонецПроцедуры
&НаКлиенте
Процедура ПолучитьЧтоТоИзФормыВыбора(Результат, ДополнительныеПараметры) Экспорт
//В параметре результат, выбранное значение
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
//Что-то делает с полученным значением
КонецПроцедуры // ПолучитьЧтоТоИзФормыВыбора()
Показать
Вакансии
Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)