Имя: Пароль:
1C
 
Не работает самописная кнопка подбора номенклатуры!
0 23th
 
21.06.17
05:49
Сделал кнопку для подбора товара:

Процедура КоманднаяПанель1Подбор(Кнопка)
    
    ФормаПодбора = Обработки.гарПодбор.ПолучитьФорму("Форма", ЭтаФорма, ЭтаФорма);
    ФормаПодбора.РежимВыбора = Истина;
    ФормаПодбора.МножественныйВыбор=Истина;
    ФормаПодбора.ЗакрыватьПриВыборе = Ложь;
    
    ФормаПодбора.Открыть();

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

В самой обработке подбора сделал следующие

Процедура СписокНоменклатурыВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
    
    ТекСтрока=ЭлементыФормы.СписокНоменклатуры.ТекущиеДанные;
    Если ТекСтрока.Ссылка.ЭтоГруппа тогда
        Возврат;
    Иначе
        СтандартнаяОбработка=Ложь;
        Форма = ПолучитьФорму("Форма1");
        Форма.Номенклатура = ТекСтрока.Ссылка;
        Форма.ЕдиницаИзмерения = ТекСтрока.Ссылка.ЕдиницаДляОтчетов;
        СтруктураДанных = Форма.ОткрытьМодально();
        
        ОповеститьОВыборе(СтруктураДанных);
    КонецЕсли;
КонецПроцедуры

Но почему то главную форму с товарами не опопвещается и туда ничего не попадает!
1 Альбатрос
 
21.06.17
05:58
А кого, собссно, она должна оповещать?
2 craxx
 
21.06.17
06:01
(0) СтруктураДанных = Форма.ОткрытьМодально();
вот тут корень проблемы
3 sFAQer
 
21.06.17
06:06
(2) 23th <- вот тут корень проблемы
4 23th
 
21.06.17
06:21
(3) Почему? Этож открывается форма ввода количества номенклатуры! а то иначе будет только одна номенклатура вылазить.
5 craxx
 
21.06.17
06:29
(4) вдумчиво посмотри как в типовых реализовано
+ не увидел обработку подбора
6 craxx
 
21.06.17
06:30
(5) обработку выбора в смысле
7 23th
 
21.06.17
06:42
Убрал модально, все равно ничего не работает!!!

Процедура СписокНоменклатурыВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
    
    ТекСтрока=ЭлементыФормы.СписокНоменклатуры.ТекущиеДанные;
    Если ТекСтрока.Ссылка.ЭтоГруппа тогда
        Возврат;
    Иначе
        СтандартнаяОбработка=Ложь;
        //Форма = ПолучитьФорму("Форма1");
        //Форма.Номенклатура = ТекСтрока.Ссылка;
        //Форма.ЕдиницаИзмерения = ТекСтрока.Ссылка.ЕдиницаДляОтчетов;
        СтруктураДанных = Новый Структура;
        СтруктураДанных.Вставить("Номенклатура", ТекСтрока.Ссылка);
        СтруктураДанных.Вставить("ЕдиницаИзмерения", ТекСтрока.Ссылка.ЕдиницаДляОтчетов);
        СтруктураДанных.Вставить("Количество", 1);
        
        //= Форма.ОткрытьМодально();
        
        ОповеститьОВыборе(СтруктураДанных);
    КонецЕсли;
КонецПроцедуры
8 craxx
 
21.06.17
06:43
отладчик что говорит?
9 23th
 
21.06.17
06:45
(8) ОповеститьОВыборе(СтруктураДанных);

Здесь все нормально останавливается.
А дальше то больше ничего и нет. Я все сделал как в типовой подбор сделан, но видимо чтото не учел. Вот хочу догнать в чем дело.
10 craxx
 
21.06.17
06:54
(9) потому что у тебя владелец формы подбора должен быть элемент в который подбор идет
либо в форме вызывающей форму подбора пиши ОбработкуВыбора
11 23th
 
21.06.17
07:23
Поменял владельца
ФормаПодбора = Обработки.гарПодбор.ПолучитьФорму("Форма", ЭлементыФормы.Товары,);


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

Но через отладчик поставил точку останова, так он в обработку выбора даже не заходит!!! И ничего не работает!
12 tixis
 
21.06.17
07:33
(11)Поменял владельца
ФормаПодбора = Обработки.гарПодбор.ПолучитьФорму("Форма", ЭлементыФормы.Товары,);
ВТорой параметр это не владелец, и верните в третий параметр ЭтаФорма
13 23th
 
21.06.17
07:35
УРА!!!!!!!!!!
Заработало!

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

    // Вставить содержимое обработчика.
КонецПроцедуры