Имя: Пароль:
1C
1С v8
Как принудительно передать активность на форме?
0 Haku
 
16.01.12
14:10
Добрый день всем,

Ситуация кажется банальной но с ней завис капитально: есть форма подбора товаров на управляемом приложении (УТ 11), при попытке набрать в поиске нужный товар - находится, всё как надо, переносится в корзину, и активность остаётся на той номенклатуре, которую выбрали из списка (результат выборки из всей номенклатуры). Нужно, чтобы активность после добавления в корзину товара перешла к поисковой строке.
Пробовал поставить не пропускать поисковую строку при вводе а остальные часть пропускать- ноль реакции, программно вклиниваюсь в то место, где только закончилось добавление товара в корзину, но тут -нехватка опыта, по интуиции пишу:

ЭтаФорма.СтрокаПоиска.Активность=Истина;

конечно неверно.
Подскажите, прошу, как можно передать управление?
1 butterbean
 
16.01.12
14:14
ТекущийЭлемент
2 Haku
 
16.01.12
14:25
Спасибо, но не сработало.
После процедуры добавления в корзину всё равно активность у номенклатуры а не у поиска, поэтому я и думал достучаться через ЭтаФорма
Или же я неверно понял и надо ставить иначе?
3 Mort
 
16.01.12
14:33
Код показывай
4 Haku
 
16.01.12
14:42
вот процедура в которую вклиниваюсь:

&НаКлиенте
Процедура ДобавитьВКорзину(СтруктураПараметрыНоменклатуры, КоличествоУпаковок)
   
   Если ЗапрашиватьКоличество Тогда
       
       ПараметрыФормы = Новый Структура;
       ПараметрыФормы.Вставить("Номенклатура",      СтруктураПараметрыНоменклатуры.Номенклатура);
       ПараметрыФормы.Вставить("Характеристика",    СтруктураПараметрыНоменклатуры.Характеристика);
       ПараметрыФормы.Вставить("Упаковка",          СтруктураПараметрыНоменклатуры.Упаковка);
       ПараметрыФормы.Вставить("Цена",              СтруктураПараметрыНоменклатуры.Цена);
       ПараметрыФормы.Вставить("Дата",              Дата);
       ПараметрыФормы.Вставить("Валюта",            Валюта);
       ПараметрыФормы.Вставить("Соглашение",        Соглашение);
       
       ПараметрыФормы.Вставить("РедактироватьЦену",            Истина);
       ПараметрыФормы.Вставить("РегистрироватьЦеныПоУсловиям", РегистрироватьЦеныПоУсловиям);
       
       СтруктураВозвращенноеЗначение = ОткрытьФормуМодально("Обработка.ПодборТоваровВДокументЗакупки.Форма.ЗапросКоличества", ПараметрыФормы, ЭтаФорма);
       Если СтруктураВозвращенноеЗначение <> Неопределено Тогда
           СтруктураПараметрыНоменклатуры.Упаковка              = СтруктураВозвращенноеЗначение.Упаковка;
           СтруктураПараметрыНоменклатуры.Цена                  = СтруктураВозвращенноеЗначение.Цена;
           КоличествоУпаковок                                   = СтруктураВозвращенноеЗначение.Количество;
           СтруктураПараметрыНоменклатуры.УсловиеЦеныПоставщика = СтруктураВозвращенноеЗначение.УсловиеЦеныПоставщика;
       Иначе
           Возврат;
       КонецЕсли;
       
   КонецЕсли;
   
   РезультатПоиска = Объект.Корзина.НайтиСтроки(СтруктураПараметрыНоменклатуры);
   Если РезультатПоиска.Количество() = 0 Тогда
       
       ТекущаяСтрока = Объект.Корзина.Добавить();
       
       ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтруктураПараметрыНоменклатуры);
       
   Иначе
       
       ТекущаяСтрока = РезультатПоиска[0];
       
   КонецЕсли;
   
   ТекущаяСтрока.КоличествоУпаковок = КоличествоУпаковок + ТекущаяСтрока.КоличествоУпаковок;
   
   СтруктураДействий = Новый Структура;
   СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
   СтруктураДействий.Вставить("ПересчитатьСумму");

   ОбработкаТабличнойЧастиТоварыКлиент.ПриИзмененииРеквизитовВТЧКлиент(Объект.Корзина, ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
   
   // Активизируем текущую строку табличной части
   Элементы.Корзина.ТекущаяСтрока = ТекущаяСтрока.ПолучитьИдентификатор();
   
   Если Не ПоказыватьПодобранныеТовары Тогда
       
       ТекстСобытия = НСтр("ru = 'Товар добавлен в корзину'");
       ТекстОповещения = НСтр("ru = 'Товар %%Товар%% стоимостью %%Цена%% %%Валюта%% в количестве %%КоличествоУпаковок%% %%ЕдиницаИзмерения%% добавлен в корзину'");
       ТекстОповещения = СтрЗаменить(ТекстОповещения, "%%Товар%%",              ""+ТекущаяСтрока.Номенклатура + ?(ЗначениеЗаполнено(СтруктураПараметрыНоменклатуры.Характеристика)," ("+СтруктураПараметрыНоменклатуры.Характеристика+")",""));
       ТекстОповещения = СтрЗаменить(ТекстОповещения, "%%Цена%%",               ТекущаяСтрока.Цена);
       ТекстОповещения = СтрЗаменить(ТекстОповещения, "%%Валюта%%",             Валюта);
       ТекстОповещения = СтрЗаменить(ТекстОповещения, "%%ЕдиницаИзмерения%%",   ?(ЗначениеЗаполнено(СтруктураПараметрыНоменклатуры.Упаковка),СтруктураПараметрыНоменклатуры.Упаковка,НСтр("ru = 'ед.'")));
       ТекстОповещения = СтрЗаменить(ТекстОповещения, "%%КоличествоУпаковок%%", КоличествоУпаковок);
       
       ПоказатьОповещениеПользователя(ТекстСобытия, ,ТекстОповещения);
       
   КонецЕсли;
   
   КорзинаПриИзменении();
   
   //передать активность поисковой строке
   
   ТекущийЭлемент.АктивизироватьПоУмолчанию=Истина;

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


И сама процедура Корзины при изменении

&НаКлиенте
Процедура КорзинаПриИзменении()
   
   ПозицииПрописью = НРег(ЧислоПрописью(Объект.Корзина.Количество(), "Л = ru_RU; ДП = Ложь; НП = Истина; НД = Ложь;", НСтр("ru = 'позиция,позиции,позиций,ж,,,,,0'")));
   
   ИнформационнаяНадпись = НСтр("ru = 'Всего подобрано %Позиций% на сумму %Сумма% %Валюта%'");
   ИнформационнаяНадпись = СтрЗаменить(ИнформационнаяНадпись,"%Позиций%", ПозицииПрописью);
   ИнформационнаяНадпись = СтрЗаменить(ИнформационнаяНадпись,"%Сумма%", Объект.Корзина.Итог("Сумма"));
   ИнформационнаяНадпись = СтрЗаменить(ИнформационнаяНадпись,"%Валюта%", Валюта);
   
   КонецПроцедуры


Куда нужно передать управление- проверил, называется СтрокаПоиска
5 V_V_V
 
16.01.12
15:06
Читай (1)
ЭтаФорма.ТекущийЭлемент = Элементы.СтрокаПоиска;
6 V_V_V
 
16.01.12
15:11
+(5) Можно и без ЭтаФорма.
ТекущийЭлемент = Элементы.СтрокаПоиска;
7 Haku
 
16.01.12
15:11
ступил, извиняйте.
Вот теперь дошло и всё сработало как надо. Спасибо огромное!!
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn