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

Тема в разделе "Отчеты и обработки для "1С:Предприятие 7.7"", создана пользователем 17cross76, 10 июн 2008.

  1. TopicStarter Overlay
    17cross76
    Offline

    17cross76

    Регистрация:
    10 июн 2008
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    Стоит задача:
    Вытащить за период из Реализации:
    №док, НаименДок, Дата, Наимен.Номенклатуры, +(Серия, Сертификат, ДатаНачалаСрока, ДатаКонцаСрока)

    Где то что в скобках должно выдергиваться из справочника Номенклатура(Это дополнительные реквизиты каждого элемента).
    Я сделал так....
    Код:
    Процедура Сформировать1()
    Перем Запрос, ТекстЗапроса, Таб;
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса = 
    "//{{ЗАПРОС(Сформировать1)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |Реализация = Документ.Реализация.ТекущийДокумент; 
    |НоменклатураСпр = Справочник.Номенклатура;
    |ДатаДок = Документ.Реализация.ДатаДок;
    |НомерДок = Документ.Реализация.НомерДок;
    |Номен = Документ.Реализация.Номенклатура;
    |НомСпр = Справочник.Номенклатура.Наименование;                       
    |Серия1 = Справочник.Номенклатура.Серия1;
    |Сертификат1 = Справочник.Номенклатура.Сертификат1;
    |СрокДействияНач = Справочник.Номенклатура.СрокДействияНач;
    |СрокДействияКон = Справочник.Номенклатура.СрокДействияКон; 
    |Группировка Реализация  без упорядочивания;
    |"//}}ЗАПРОС
    ;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    Возврат;
    КонецЕсли;
    
    // Подготовка к заполнению выходных форм данными запроса
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Сформировать1");
    // Заполнение полей "Заголовок"
    Таб.ВывестиСекцию("Заголовок");
    Состояние("Заполнение выходной таблицы...");
    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
    Пока Запрос.Группировка(1) = 1 Цикл
    // Заполнение полей Реализация
    Таб.ВывестиСекцию("Реализация");
    КонецЦикла;
    // Вывод заполненной формы
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Сформировать1", "");
    КонецПроцедуры
    
    
    Но в результате получаю только то, что есть из Накладной, что я делаю не так?
  2. Stado_adama
    Offline

    Stado_adama Модераторы Модератор

    Регистрация:
    27 ноя 2007
    Сообщения:
    1.086
    Симпатии:
    0
    Баллы:
    26
    у тебя номенклатура в реализации сюдя по всему находится в табличной части? т.е. ее может быть много и разной?
    внимание вопрос: а как в таком случае машинке понять из какой именно номенклатуры и чего ты хочешь вытащить? да и вообще зачем тут запрос я не совсем понимаю... я бы на твоем месте вытащи через выборку документов... ибо совсем не уверен в том, что запрос отработает быстрее... а после этого перебор строк документа... и в этом переборе ты должен дать машине понять какая именно номенклатура тебя интересует...
  3. Tiger
    Offline

    Tiger Опытный в 1С

    Регистрация:
    12 июл 2006
    Сообщения:
    489
    Симпатии:
    0
    Баллы:
    26
    Код:
      Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса = 
    "//{{ЗАПРОС(Сформировать1)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |Реализация = Документ.Реализация.ТекущийДокумент; 
    |ДатаДок = Документ.Реализация.ДатаДок;
    |НомерДок = Документ.Реализация.НомерДок;
    |Номен = Документ.Реализация.Номенклатура;
    |НомСпр = Документ.Реализация.Номенклатура.Наименование;                       
    |Серия1 = Документ.Реализация.Номенклатура.Серия1;
    |Сертификат1 = Документ.Реализация.Номенклатура.Сертификат1;
    |СрокДействияНач = Документ.Реализация.Номенклатура.СрокДействияНач;
    |СрокДействияКон = Документ.Реализация.Номенклатура.СрокДействияКон; 
    |Группировка Реализация  без упорядочивания;
    |"//}}ЗАПРОС
    
  4. TopicStarter Overlay
    17cross76
    Offline

    17cross76

    Регистрация:
    10 июн 2008
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    :unsure: B) Огромное сенкс, пошло..... Но только все позиции из каждой накладной не вытаскивает, а хотелосьбы все и в хронологическом порядке номеров документов...Возможно???
    Да, так оно и есть..... думал что через запрос будет проще..... :D
  5. TopicStarter Overlay
    17cross76
    Offline

    17cross76

    Регистрация:
    10 июн 2008
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    Все спасибо кто помогал, Вот так все получилось как хотел, но...
    Код:
    Процедура Сформировать1()
    Перем Запрос, ТекстЗапроса, Таб;
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса = 
    "//{{ЗАПРОС(Сформировать1)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |Реализация = Документ.Реализация.ТекущийДокумент; 
    |ДатаДок = Документ.Реализация.ДатаДок;
    |НомерДок = Документ.Реализация.НомерДок;
    |Номен = Документ.Реализация.Номенклатура;
    |НомСпр = Документ.Реализация.Номенклатура.Наименование;                       
    |Серия1 = Документ.Реализация.Номенклатура.Серия1;
    |Сертификат1 = Документ.Реализация.Номенклатура.Сертификат1;
    |СрокДНач = Документ.Реализация.Номенклатура.СрокДействияНач;
    |СрокДКон = Документ.Реализация.Номенклатура.СрокДействияКон; 
    |Группировка Реализация;
    |Группировка Номен;  
    
    |"//}}ЗАПРОС
    ;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    Возврат;
    КонецЕсли;
    
    // Подготовка к заполнению выходных форм данными запроса
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Сформировать1");
    // Заполнение полей "Заголовок"
    Таб.ВывестиСекцию("Заголовок");
    Состояние("Заполнение выходной таблицы...");
    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
    Пока Запрос.Группировка(1) = 1 Цикл 
    Пока Запрос.Группировка(2) = 1 Цикл
    // Заполнение полей Реализация
    Таб.ВывестиСекцию("Реализация");
    КонецЦикла; 
    КонецЦикла;
    
    
    // Вывод заполненной формы
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Сформировать1", "");
    КонецПроцедуры
    
    
    ..... Выводит почемуто и группы номенклатуры, как их убрать?
  6. Steel Rain
    Offline

    Steel Rain Опытный в 1С

    Регистрация:
    29 сен 2006
    Сообщения:
    408
    Симпатии:
    2
    Баллы:
    29
    Код:
    |Группировка Номен; 
    
    заменить на
    Код:
    |Группировка Номен Без Групп; 
    
  7. TopicStarter Overlay
    17cross76
    Offline

    17cross76

    Регистрация:
    10 июн 2008
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    Еще раз всем огромное спасибо... Эта задача решена! :unsure: B) :D

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