Запрос по документу и справочнику

Тема в разделе "1C и всё что с ней связано", создана пользователем has, 20 ноя 2008.

Статус темы:
Закрыта.
  1. has

    has Гость

    Значит так, есть у меня справочник Номенклатура, у которого есть табличная часть. Точнее у некоторых элементов есть, а у некоторых нет. В табличной части указываются комплектующие и их количество. При проведении расходной накладной, если указана номенклатура, у которой есть комплектующие, должны списываться комплектующие в том количестве, в котором они указаны в справочнике. Вот не могу создать запрос, который выбирает всю номенклатуру из табличной части документа и смотрит, если у нее есть комплектующие, то выбирает только комплектующие с соответствующим количеством. Например, есть номенклатура "Компьютер", у которого такие комплектующие:
    Комплектующая Кол-во
    Монитор 1
    Сис. блок 1
    Мышь 1
    Клавиатура 1
    В расходной накладной мы указываем одну мышь и один компьютер, соответственно должно списаться 2 мыши, 1 монитор, 1 клавиатура, 1 сис. блок. Кто может помочь?
     
  2. BikerDan

    BikerDan Гость

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

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


    Пока Результат .Следующий() Цикл

    ................................
    //Процедура списания комплектующих,товар ведь как таковой не списываеся...
    .................................
    Перемен = ИСТИНА;
    КонецЦикла;
    Если не Перемен Тогда
    ....................................
    //Списываем товар у которого нет комплектующих
    .....................................
    КонецЕсли
    КонецЦикла;

    Перебираем строки табличной части ТаблицаНоменклатура и если запрос выдает необходимую информацию,то есть проверяется условие есть ли комплектующие или нет,если есть то списываем нужную номенклатуру...



    P.S. код на 8.1...
     
  3. has

    has Гость

    BikerDan Дело в том, что у номенклатуры имеется признак "ИмеетКомплектующие". Вот пишу вот такой запрос:
    "ВЫБРАТЬ
    | Номенклатура.Комплектующие.(
    | Комплектующая,
    | Количество
    | )
    |ИЗ
    | Справочник.Номенклатура КАК Номенклатура
    |ГДЕ
    | &ИмеетКомплектующие = 1
    | Номенклатура.Ссылка = &Номенклатура";

    Запрос.УстановитьПараметр("Номенклатура",ТекТовар.Номенклатура);
    Запрос.УстановитьПараметр("ИмеетКомплектующие",ТекТовар.Номенклатура.ИмеетКомплектующие);

    Выдает пустой результат...
     
  4. BikerDan

    BikerDan Гость

    "ИмеетКомплектующие" какой тип...если булево тогда замени
    | &ИмеетКомплектующие = 1
    на
    | &ИмеетКомплектующие = ИСТИНА
    причем Истина обязательно большими буквами..
    запросу вроде твоя единичка не нравится
    а параметр
    Запрос.УстановитьПараметр("ИмеетКомплектующие",ТекТовар.Номенклатура.ИмеетКомплектующие);
    можешь удалить...
     
  5. HUNTER424

    HUNTER424 Гость

    Да вы че ребята какая табличная часть, это же скорее всего регистр сведений "КомплектующиеНоменклатуры"
     
  6. BikerDan

    BikerDan Гость

    Согласен регистр прогресивней и работает быстрее да и базу меньше грузит. :rolleyes:
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей