| 
    
            
         
         | 
    
  | 
Как сделать запрос по всем документам с отбором по сериям и номенклатуре? | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        gabd_marat    
     13.03.20 
            ✎
    09:07 
 | 
         
        Добрый день! Можете подсказать как сделать запрос по всем документам с отбором по сериям и номенклатуре     
         | 
|||
| 
    1
    
        dka80    
     13.03.20 
            ✎
    09:10 
 | 
         
        Нужно больше деталей: что значит все документы? Прием сотрудника на работу и Требование накладная? Где серии? В табличной части или в реквизитах документа? Может все-таки посмотреть какие регистры двигают документы и по регистру собрать?     
         | 
|||
| 
    2
    
        d4rkmesa    
     13.03.20 
            ✎
    09:12 
 | 
         
        (0) В языке запросов 1С нет понятия "все документы". Если только есть критерии отбора, но там специфическое применение.     
         | 
|||
| 
    3
    
        dka80    
     13.03.20 
            ✎
    09:14 
 | 
         
        (2) тем не менее, это не мешает динамически сформировать текст запроса по метаданным и получить запрос по всем документам     
         | 
|||
| 
    4
    
        gabd_marat    
     13.03.20 
            ✎
    09:32 
 | 
         
        Или можно как то циклом сделать запрос по метаданным где в табл части используется номенклатура и серии, потом через отладчик получить массив данных?     
         | 
|||
| 
    5
    
        gabd_marat    
     13.03.20 
            ✎
    09:32 
 | 
         
        (3) Есть примеры?     
         | 
|||
| 
    6
    
        gabd_marat    
     13.03.20 
            ✎
    09:36 
 | 
         
        (2) Список документов не известен где используется эта номенклатура с сериями. Серия и номенклатура в табличной части документа.     
         | 
|||
| 
    7
    
        Йохохо    
     13.03.20 
            ✎
    09:36 
 | 
         
        (4) покажи что получилось по одному документу
 
        запрос по метаданным, данные из отладчика, кто то наступил на пятницу тринадцатое  | 
|||
| 
    8
    
        ДенисЧ    
     13.03.20 
            ✎
    09:40 
 | 
         
        (6) Вообще ниезвестен? Или только тебе?     
         | 
|||
| 
    9
    
        welwel    
     13.03.20 
            ✎
    09:42 
 | 
         
        (5) http://bit.ly/2wScT9D
 
        Первая ссылка на мисту  | 
|||
| 
    10
    
        dka80    
     13.03.20 
            ✎
    09:48 
 | 
         
        Ищи в яндексе обход дерева метаданных     
         | 
|||
| 
    11
    
        gabd_marat    
     13.03.20 
            ✎
    13:41 
 | 
         
        Вроде что то получилось 
 
        Процедура КнопкаВыполнитьНажатие(Кнопка) Итерация = 0; Запрос = Новый Запрос; МВТ = Новый МенеджерВременныхТаблиц; Запрос.МенеджерВременныхТаблиц = МВТ; Запрос.Текст = "ВЫБРАТЬ Таблицы.Номенклатура, |Таблицы.СерияНоменклатуры, |Таблицы.Ссылка |ПОМЕСТИТЬ ВременнаяТаблица ИЗ ( |"; Для Каждого Документ Из Метаданные.Документы Цикл //Сообщить("--------------------------- //|Документ: "+Документ.Имя); к1 = 0; к2 = 0; Для Каждого ТабличнаяЧасть Из Документ.ТабличныеЧасти Цикл //Сообщить("ТабличнаяЧасть: "+ТабличнаяЧасть.Имя); к1 = 0; к2 = 0; Для Каждого Реквизит Из ТабличнаяЧасть.Реквизиты Цикл //Сообщить("Реквизит: "+Реквизит.Имя); Если Реквизит.Имя = "СерияНоменклатуры" Тогда //Сообщить("------- Хоп"); к1 = 1; КонецЕсли; Если Реквизит.Имя = "Номенклатура" Тогда к2 = 1; КонецЕсли; КонецЦикла; Если к1 = 1 и к2 = 1 Тогда Если Итерация = 1 Тогда Запрос.Текст = Запрос.Текст + " | |ОБЪЕДИНИТЬ |"; КонецЕсли; Запрос.Текст = Запрос.Текст + " |ВЫБРАТЬ ТЧ.Номенклатура КАК Номенклатура, |ТЧ.Ссылка КАК Ссылка, |ТЧ.СерияНоменклатуры КАК СерияНоменклатуры |ИЗ Документ." +Документ.Имя+ "." +ТабличнаяЧасть.Имя+ " КАК ТЧ |ГДЕ ТЧ.Номенклатура ССЫЛКА Справочник.Номенклатура и ТЧ.СерияНоменклатуры ССЫЛКА Справочник.СерииНоменклатуры"; //Сообщить(Запрос.Текст); Итерация = ?(Итерация = 0,1,1); к1 = 0; к2 = 0; КонецЕсли; КонецЦикла; КонецЦикла; Запрос.Текст = Запрос.Текст + " |) КАК Таблицы"; //Сообщить(Запрос.Текст); ТаблицаЗначений = Запрос.Выполнить().Выгрузить(); //Для Каждого Строка Из ТаблицаЗначений Цикл // Сообщить(Строка(Строка.Номенклатура) + " — " + Строка(Строка.Документ)); //КонецЦикла; //Сообщить(ТаблицаЗначений.Количество()); Запрос1 = Новый Запрос; Запрос1.Текст = " |ВЫБРАТЬ Номенклатура.Ссылка |ИЗ Справочник.Номенклатура КАК Номенклатура |ГДЕ Номенклатура.Ссылка НЕ В (&ТЗ) |УПОРЯДОЧИТЬ ПО Номенклатура.Ссылка.Наименование"; Запрос1.УстановитьПараметр("ТЗ",ТаблицаЗначений); ТаблицаЗначений1 = Запрос1.Выполнить().Выгрузить(); Для Каждого Строка Из ТаблицаЗначений Цикл Сообщить(Строка(Строка.Ссылка)); КонецЦикла; Сообщить(ТаблицаЗначений1.Количество()); КонецПроцедуры (10) (10)  | 
|||
| 
    12
    
        gabd_marat    
     13.03.20 
            ✎
    13:43 
 | 
         
        Делаю точку остановки на строке ТаблицаЗначений = Запрос.Выполнить().Выгрузить();
 
        не могу получить элементы таблицы значений, почему?  | 
|||
| 
    13
    
        ДенисЧ    
     13.03.20 
            ✎
    13:45 
 | 
         
        (12) Потому что у тебя
 
        |ПОМЕСТИТЬ ВременнаяТаблица ИЗ (  | 
|||
| 
    14
    
        gabd_marat    
     13.03.20 
            ✎
    13:52 
 | 
         
        (13) Мне получается нужно сделать запрос к тз и добавить отбор по номенклатуре и серии?     
         | 
|||
| 
    15
    
        ДенисЧ    
     13.03.20 
            ✎
    14:00 
 | 
         
        (14) Если платформа новая - то в отладчике можешь посмотреть в запросе менеджер временных таблиц, там есть временные таблицы, оттуда можно посмотреть     
         | 
|||
| 
    16
    
        gabd_marat    
     13.03.20 
            ✎
    15:03 
 | 
         
        8.3.1534 (15)     
         | 
|||
| 
    17
    
        gabd_marat    
     13.03.20 
            ✎
    15:04 
 | 
         
        Где смотреть ?     
         | 
|||
| 
    18
    
        ДенисЧ    
     13.03.20 
            ✎
    15:08 
 | 
         
        (17) (17) На запрос в отладчике встань и поразворачивай плюсики - увидишь     
         | 
|||
| 
    19
    
        gabd_marat    
     13.03.20 
            ✎
    16:41 
 | 
         
        Получилось , вот
 
        Процедура КнопкаВыполнитьНажатие(Кнопка) Итерация = 0; Запрос = Новый Запрос; МВТ = Новый МенеджерВременныхТаблиц; Запрос.МенеджерВременныхТаблиц = МВТ; Запрос.Текст = "ВЫБРАТЬ Таблицы.Номенклатура, |Таблицы.СерияНоменклатуры, |Таблицы.Ссылка |ПОМЕСТИТЬ ВременнаяТаблица ИЗ ( |"; Для Каждого Документ Из Метаданные.Документы Цикл //Сообщить("--------------------------- //|Документ: "+Документ.Имя); к1 = 0; к2 = 0; Для Каждого ТабличнаяЧасть Из Документ.ТабличныеЧасти Цикл //Сообщить("ТабличнаяЧасть: "+ТабличнаяЧасть.Имя); к1 = 0; к2 = 0; Для Каждого Реквизит Из ТабличнаяЧасть.Реквизиты Цикл //Сообщить("Реквизит: "+Реквизит.Имя); Если Реквизит.Имя = "СерияНоменклатуры" Тогда //Сообщить("------- Хоп"); к1 = 1; КонецЕсли; Если Реквизит.Имя = "Номенклатура" Тогда к2 = 1; КонецЕсли; КонецЦикла; Если к1 = 1 и к2 = 1 Тогда Если Итерация = 1 Тогда Запрос.Текст = Запрос.Текст + " | |ОБЪЕДИНИТЬ |"; КонецЕсли; Запрос.Текст = Запрос.Текст + " |ВЫБРАТЬ ТЧ.Номенклатура КАК Номенклатура, |ТЧ.Ссылка КАК Ссылка, |ТЧ.СерияНоменклатуры КАК СерияНоменклатуры |ИЗ Документ." +Документ.Имя+ "." +ТабличнаяЧасть.Имя+ " КАК ТЧ |ГДЕ ТЧ.Номенклатура ССЫЛКА Справочник.Номенклатура и ТЧ.СерияНоменклатуры ССЫЛКА Справочник.СерииНоменклатуры"; //Сообщить(Запрос.Текст); Итерация = ?(Итерация = 0,1,1); к1 = 0; к2 = 0; КонецЕсли; КонецЦикла; КонецЦикла; Запрос.Текст = Запрос.Текст + " |) КАК Таблицы ; |ВЫБРАТЬ ВременнаяТаблица.Номенклатура, |ВременнаяТаблица.Ссылка КАК Ссылка, |ВременнаяТаблица.СерияНоменклатуры КАК СерияНоменклатуры |ИЗ ВременнаяТаблица КАК ВременнаяТаблица |ГДЕ ВременнаяТаблица.Номенклатура.Ссылка = &СсылкаНоменклатура |УПОРЯДОЧИТЬ ПО ВременнаяТаблица.Ссылка"; Запрос.УстановитьПараметр("СсылкаНоменклатура",Справочники.Номенклатура.НайтиПоКоду("Н0021225")); Запрос.УстановитьПараметр("СерияНоменклатуры",Справочники.СерииНоменклатуры.НайтиПоКоду("000030631",Истина)); //Сообщить(Запрос.Текст); ТаблицаЗначений = Запрос.Выполнить().Выгрузить();  | 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |