Имя: Пароль:
1C
1С v8
Выбор номенклатуры в ТЧ.
,
0 bard666
 
16.06.15
13:32
УТ 10.3. В ТЧ заказа покупателя доработан выбор номенклатуры. Конкретно в процедуре НачалоВыбора прописано открытие формы выбора с заполнением определенной номенклатурой. И получается такая картина, что в процедуру ПриИзменении номенклатуры система не проваливается и не заполняет Ставку НДС, ЕИ...Как бы это обойти или может что-то сделать иначе в процедурах..


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



Процедура ОткрытьФормуОтбора(Владелец, Фасовка) Экспорт    
    
    ФормаВыбора = Справочники.Номенклатура.ПолучитьФормуВыбора(, Владелец);
    Если Фасовка Тогда
        Запрос = Новый Запрос;
        Запрос.Текст =
        "ВЫБРАТЬ
        |    Номенклатура.Ссылка
        |ИЗ
        |    Справочник.Номенклатура КАК Номенклатура
        |ГДЕ
        |    (Номенклатура.ЭА_Фасовка
        |            ИЛИ Номенклатура.ЭА_Комплект
        |            ИЛИ Номенклатура.ЭА_ГотоваяНефасуемаяПродукция)";
        МассивНоменклатуры = Новый СписокЗначений;    
        МассивНоменклатуры.ЗагрузитьЗначения(Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"));  
        ФормаВыбора.Отбор.Ссылка.ВидСравнения = ВидСравнения.ВСписке;
        ФормаВыбора.Отбор.Ссылка.Значение = МассивНоменклатуры;          
        ФормаВыбора.Отбор.Ссылка.Использование = Истина;
    Иначе            
        ФормаВыбора.Отбор.ЭА_Фасовка.Значение = Фасовка;
        ФормаВыбора.Отбор.ЭА_Фасовка.Использование = Истина;
        ФормаВыбора.Отбор.ЭА_Комплект.Значение = Фасовка;
        ФормаВыбора.Отбор.ЭА_Комплект.Использование = Истина;        
    КонецЕсли;
    ФормаВыбора.РежимВыбора = Истина;
    ФормаВыбора.Открыть();
КонецПроцедуры // ОткрытьФормуОтбора()
1 Альбатрос
 
16.06.15
13:34
Ибо:
СтандартнаяОбработка = Ложь;
2 Альбатрос
 
16.06.15
13:34
Вручную прописывай вызов нужных процедур и функций
3 bard666
 
16.06.15
13:36
Я понял, что эта строка все портит, если вернуть, откроются две формы..
(2) Вот и думаю куда прописывать..
4 Альбатрос
 
16.06.15
13:39
(3) ОбработкаВыбора() ессесно
5 bard666
 
16.06.15
13:43
(4) поэкспериментируем, спасибо.
6 bard666
 
16.06.15
13:45
(4) не проваливается
7 Альбатрос
 
16.06.15
13:48
...Подбора() =)
8 bard666
 
16.06.15
13:49
(4) Если имелось в виду что-то такое:

Процедура ТоварыНоменклатураОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
    
    //некий код
    
КонецПроцедуры
9 Альбатрос
 
16.06.15
13:50
(8) Процедура ОбработкаВыбора(ЗначениеВыбора, Источник)

    Перем Команда;

    Если ТипЗнч(ЗначениеВыбора) = Тип("Структура") Тогда
        ЗначениеВыбора.Свойство("Команда", Команда);

        Если Команда = "ПодборВТабличнуюЧастьТовары" Тогда
            ОбработкаПодбора(Товары, ЗначениеВыбора);
10 bard666
 
16.06.15
13:58
ОбработкаВыбора в форме Номенклатуры? Если да, то туда не заходит.
11 Альбатрос
 
16.06.15
13:59
(10) с хера ли номенклатуры? документа!
12 bard666
 
16.06.15
14:02
Все, моя вкурил, отлажу. Тему можно закрывать.
13 bard666
 
16.06.15
14:02
Благодарю, Альбатрос
14 chelentano
 
16.06.15
14:51
чтобы заходило в процедуру "ПриИзменении" достаточно просто указывать в качестве владельца открываемой формы выбора элемент поля ввода, на который навешано событие "НачалоВыбора"