Имя: Пароль:
1C
1С v8
Не заходит в ОбработкуВыбора
0 kn
 
24.06.14
20:36
Добрый вечер.
Для БП 3.0(Интерфейс Такси) делаю внешнюю обработку для заполнения табличной части, для документа Требование накладная при выборе документа Поступление должна заполняться табличная часть, но почему-то при выборе Поступления не происходит захода в ОбработкуВыбора, далее приведу кусок кода

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

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

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


    Если ВыбранноеЗначение = Неопределено Тогда
        ТекстСообщения = "Документ <Поступление тоавров и услуг> не выбран!";
        ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
        Возврат;    
    КонецЕсли;
    
    ЗаполнитьПоОснованию(Объект.документОбъект, ВыбранноеЗначение);            
    
    КопироватьДанныеФормы(Объект.документОбъект, ИсточникВыбора);
    
    ТекстСообщения = "Обработка завершена";
    ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
    
КонецПроцедуры
1 Господин ПЖ
 
24.06.14
20:39
а собственно почему она должна срабатывать?
2 kn
 
24.06.14
20:40
потому что ФормаВыбора вызывается
3 shuhard
 
24.06.14
20:49
(2) это не оправдание
4 kn
 
24.06.14
20:51
а как надо? обычно пользуюсь модальными диалогами, но тут нельзя
5 Мимохожий Однако
 
24.06.14
20:55
Второй параметр должен быть Булево (Ложь).
6 kn
 
24.06.14
20:56
может не хватает реквизита ФормыВыбора ИмяТаблицы, но чем его в данном случае заполнять?
7 kn
 
24.06.14
20:57
(5)Второй параметр чего?
8 Мимохожий Однако
 
24.06.14
21:00
СП:
Расширение поля формы для поля ввода.ОбработкаВыбора (Form field extension for a text box.ChoiceProcessing)
Расширение поля формы для поля ввода (Form field extension for a text box)
ОбработкаВыбора (ChoiceProcessing)
Синтаксис:

ОбработкаВыбора(<ВыбранноеЗначение>, <СтандартнаяОбработка>)
Параметры:

<ВыбранноеЗначение>

Тип: Произвольный.
Выбранное значение, которое будет установлено как значения поля ввода или массив выбранных значений в случае, если в подчиненной форме свойство МножественныйВыбор имеет значение Истина.
В параметре можно вернуть другое значение, которое и будет помещено в элемент управления.
Выбранное значение будет помещаться в историю выбора поля ввода управляемой формы.
<СтандартнаяОбработка>

Тип: Булево.
В данный параметр передается признак выполнения стандартной (системной) обработки события. Если в теле процедуры-обработчика установить данному параметру значение Ложь, стандартная обработка события производиться не будет.
Значение по умолчанию: Истина.
Описание:

Вызывается после осуществления выбора, но до помещения выбранного значения в элемент управления.
Примечание:

В обработчике данного события нельзя использовать серверные методы формы с директивой компиляции &НаСервере.
9 Мимохожий Однако
 
24.06.14
21:01
ИМХО, я ошибся ))
10 kn
 
24.06.14
21:02
УправляемаяФорма (ManagedForm)
ОбработкаВыбора (ChoiceProcessing)
Синтаксис:

ОбработкаВыбора(<ВыбранноеЗначение>, <ИсточникВыбора>)
Параметры:

<ВыбранноеЗначение>

Тип: Произвольный.
Результат выбора в подчиненной форме. В случае множественного выбора возвращается массив выбранных значений.
<ИсточникВыбора>

Тип: Произвольный.
Форма, где осуществлен выбор.
Описание:

Возникает на клиенте при выборе объекта в одной из подчиненных форм или при вызове в одной из подчиненных форм метода ОповеститьОВыборе".
11 kn
 
24.06.14
22:00
ФормаВыбор = ПолучитьФорму("Документ.ПоступлениеТоваровУслуг.ФормаВыбора",СтруктураПараметров, ЭтаФорма);
Здесь что-то не так с ЭтаФорма при вызове по кнопке Заполнить из ТребованияНакладной, или где ошибка то закралась?
12 hhhh
 
25.06.14
00:25
а какая процедура привязана к событию ОбработкаВыбора?
13 kn
 
25.06.14
06:24
ОбработкаВыбора - Событие формы, в ней выполняется заполнение
ТЧ Требования по ТЧ Поступления(там скорей всего неправильный код, но мне пока надо отладить что заходил в ОбработкуВыбора).
Если сделать на форме поле и вызывать обработку как внешнюю через Файл и выбирать в поле Требование, то срабатывает, а через стандартную кнопку Заполнить в Требовании - нет
14 Мимохожий Однако
 
25.06.14
06:59
Посмотри как предлагает 1С
http://its.1c.ru/db/metod81#content:4259:1
15 kn
 
25.06.14
07:26
(14)дело в том что работало уже, но при переписывании без модальных диалогов(как того требует новый интерфейс) вот такой затык. Процедура Инициализации есть, обработка регистрируется, кнопка Заполнить появляется, ТЧ Требования чистится, но не идет заполнение при выборе Поступления, не заходит в ОбработкуВыбора, т.к не появляется соответствующее сообщение
16 kn
 
25.06.14
10:41
прочитав http://v8.1c.ru/o7/201301nm/
,получилось так

ДополнительныеПараметры = Новый Структура("ДокТребование, ФормаТребование", ДокТребование, ФормаТребование);

ОписаниеОповещения = Новый ОписаниеОповещения("ОбработкаВыбораПоступления", ЭтотОбъект, ДополнительныеПараметры);
                    ФормаВыбора.ОписаниеОповещенияОЗакрытии = ОписаниеОповещения;
                    ФормаВыбора.РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца;
ФормаВыбора.РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца;
ФормаВыбора.Открыть();
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.