Имя: Пароль:
1C
1С v8
Автоматическая подстановка номенклатуры при заполнении артикула
0 noooobok
 
15.01.15
09:58
Всем привет!

1с 8.2 упп 1.3
Требуется помощь в составлении запроса.  
Есть документ "Установка кодов номенклатуры покупателей". Необходимо сделать автозаполнение артикула при выборе номенклатуры и наоборот(автозаполнение номенклатуры при выборе артикула).
с 1 частью задания я справился, а во второй возникли сложности. При выборе артикула номенклатура заполняется, но необходимо указать, чтобы номенклатура выбиралась только определенного типа (ГотоваяПродукция). Подсобите, пожалуйста.


Текст процедуры:

Процедура ТабличноеПоле1АртикулПриИзменении(Элемент)
          СтрокаТабличнойЧасти = ЭлементыФормы.ТабличноеПоле1.ТекущиеДанные;
    //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    Номенклатура.Ссылка
        |ИЗ
        |    Справочник.Номенклатура КАК Номенклатура
        |ГДЕ
        |    Номенклатура.ВидНоменклатуры = ""ГотоваяПродукция""
        |    И Номенклатура.Артикул = Номенклатура.Артикул";

    Результат = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = Результат.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        // Вставить обработку выборки ВыборкаДетальныеЗаписи
    КонецЦикла;

    //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА



    Если ЗначениеЗаполнено(Элемент.Значение) Тогда
          СтрокаТабличнойЧасти.Номенклатура = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", Элемент.Значение);
        
    Иначе

           СтрокаТабличнойЧасти.Номенклатура  = "";                                         
            
    КонецЕсли;

    
КонецПроцедуры
1 vicof
 
15.01.15
10:09
"Номенклатура.ВидНоменклатуры = ""ГотоваяПродукция"""
= ЗНАЧЕНИЕ(Перечисление.ВидыНоменклатуры.ГотоваяПродукция)
2 Дмитрий
 
15.01.15
10:12
Номенклатура.Артикул = Номенклатура.Артикул

может

Номенклатура.Артикул = &Артикул

и

Запрос.УстановитьПараметр("Артикул", НужныйАртикул)
3 noooobok
 
15.01.15
10:20
Дмитрий - Переменная не определена (НужныйАртикул)
vicof - не совсем понятно как оформить
4 Дмитрий
 
15.01.15
10:23
(3) ну так нужно ее определить, присвоить ей значение артикула, по которому нужно искать номенклатуру
5 noooobok
 
15.01.15
12:30
(4) не смог осилить :( я понимаю, что это элементарно, но я пока еще "кран". Еще добавлю инфу: есть справочник ВидНоменклатуры с реквизитом ТипНоменклатуры. Тип данного реквизита ПеречислениеСсылка.ТипыНоменклатуры.
МБ как-нибудь задействовать это?
6 Дмитрий
 
15.01.15
12:41
Процедура ТабличноеПоле1АртикулПриИзменении(Элемент)
     СтрокаТабличнойЧасти =     ЭлементыФормы.ТабличноеПоле1.ТекущиеДанные;

    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    Номенклатура.Ссылка
        |ИЗ
        |    Справочник.Номенклатура КАК Номенклатура
        |ГДЕ
        |    Номенклатура.ВидНоменклатуры = &ГотоваяПродукция
        |    И Номенклатура.Артикул = &Артикул";

    Запрос.УстановитьПараметр("ГотоваяПродукция", Справочники.ВидНоменклатуры.ИскатьПоНаименованию("Готовая продукция"));
    Запрос.УстановитьПараметр("Артикул", Элемент.Значение);  
Результат = Запрос.Выполнить();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        СтрокаТабличнойЧасти.Номенклатура = ВыборкаДетальныеЗаписи.Ссылка;
    КонецЦикла;
КонецПроцедуры
7 Дмитрий
 
15.01.15
12:41
(6)

Пропустил строчку

    ВыборкаДетальныеЗаписи = Результат.Выбрать();
8 noooobok
 
15.01.15
14:42
Решил проблему следующим образом:

Процедура ТабличноеПоле1АртикулПриИзменении(Элемент)
              СтрокаТабличнойЧасти = ЭлементыФормы.ТабличноеПоле1.ТекущиеДанные;
    //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    Номенклатура.Ссылка
        |ИЗ
        |    Справочник.Номенклатура КАК Номенклатура
        |ГДЕ
        |    Номенклатура.Артикул = &Артикул
        |    И Номенклатура.ВидНоменклатуры = &ВидНоменклатуры";

    Запрос.УстановитьПараметр("Артикул", СтрокаТабличнойЧасти.Артикул);
    Запрос.УстановитьПараметр("ВидНоменклатуры", Справочники.ВидыНоменклатуры.НайтиПоКоду("000000023"));
    Результат = Запрос.Выполнить().Выбрать();
    КолВоЗаписей = Результат.Количество();

    
    
    Если КолВоЗаписей = 1 Тогда
        //Выборка = Результат.Выбрать();
         Результат.Следующий();
        СтрокаТабличнойЧасти.Номенклатура = Результат.Ссылка;
    КонецЕсли;
    
              
КонецПроцедуры

Всем спасибо, кто откликнулся!!!