| 
    
            
         
         | 
    
  | 
Запрос регистра сведений | ☑ | ||
|---|---|---|---|---|
| 
    0
    
         Deahianaianyrto    
     22.08.14 
            ✎
    10:57 
 | 
         
        Есть непериодический регистр сведений Измерение: ГруппаНоменклатуры, ресурс: ВидЦен
 
        Есть Товар. Необходимо определить ВидЦен для соответствующей группы номенклатуры (в иерархии) Как задать запрос?  | 
|||
| 
    1
    
        User_Agronom    
     22.08.14 
            ✎
    11:00 
 | 
         
        Запрос = новый Запрос;
 
        Запрос.Текст = "тут пишешь текст запроса"; Запрос.УстановитьПараметр("ГруппаНоменклатуры", ЯХЗКакУТебяЭтоБудетОпределятся); Выборка = Запрос.Выполнить().Выбрать();  | 
|||
| 
    2
    
         Deahianaianyrto    
     22.08.14 
            ✎
    11:02 
 | 
         
        Да нет, параметр - товар, а в регистре сведений ГруппыНоменклатуры и ВидыЦен.
 
        Надо подобрать из какой группы товар и получить соответствующий ВидЦены  | 
|||
| 
    3
    
        ale-sarin    
     22.08.14 
            ✎
    11:04 
 | 
         
        (2) Родитель. Только помните, что у родителя тоже родитель может быть.     
         | 
|||
| 
    4
    
         Deahianaianyrto    
     22.08.14 
            ✎
    11:10 
 | 
         
        В том то и дело много родителей
 
        Как условие поставить на товар в группе?  | 
|||
| 
    5
    
        User_Agronom    
     22.08.14 
            ✎
    11:10 
 | 
         
        (2) Ну так измени:
 
        Запрос = новый Запрос; Запрос.Текст = "тут пишешь текст запроса"; Запрос.УстановитьПараметр("Товар", ЯХЗКакУТебяЭтоБудетОпределятся); Выборка = Запрос.Выполнить().Выбрать(); Делов то :)  | 
|||
| 
    6
    
         Deahianaianyrto    
     22.08.14 
            ✎
    11:10 
 | 
         
        (5) А как в запросе поставить условие что товар в группе?     
         | 
|||
| 
    7
    
        MaXpaT    
     22.08.14 
            ✎
    11:12 
 | 
         
        (6) Где Таблица.Номенклатура В ИЕРАРХИИ (&Товар)     
         | 
|||
| 
    8
    
         Deahianaianyrto    
     22.08.14 
            ✎
    11:14 
 | 
         
        (7) А так будет работать? Ведь по идее наоборот Товар в Иерархии Группа     
         | 
|||
| 
    9
    
        User_Agronom    
     22.08.14 
            ✎
    11:17 
 | 
         
        Группы = Новый Массив;
 
        ТоварЗапомнить = Товар; Пока ТоварЗапоминить.Родитель <> Справочник.Номенклатура.Пустая Ссылка цикл Группы.Добавить(товарЗапомнить.Родитель); ТоварЗапоминить = ТоварЗапоминить.Родитель; КонецЦикла; И этот массив передавай параметром.  | 
|||
| 
    10
    
        hhhh    
     22.08.14 
            ✎
    11:19 
 | 
         
        (8) (ВЫБРАТЬ Ссылка Из Справочник.Номенклатура КАК НОменклатура
 
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСВедений.Цены КАК Цены ПО НОменклатура.РОдитель = Цены.ГРуппаНоменклатуры ИЛИ НОменклатура.РОдитель.РОдитель = Цены.ГРуппаНоменклатуры ИЛИ НОменклатура.РОдитель.РОдитель.РОдитель = Цены.ГРуппаНоменклатуры ИЛИ НОменклатура.РОдитель.РОдитель.РОдитель.РОдитель = Цены.ГРуппаНоменклатуры ИЛИ НОменклатура.РОдитель.РОдитель.РОдитель.РОдитель.РОдитель = Цены.ГРуппаНоменклатуры ИЛИ НОменклатура.РОдитель.РОдитель.РОдитель.РОдитель.РОдитель.РОдитель = Цены.ГРуппаНоменклатуры  | 
|||
| 
    11
    
        User_Agronom    
     22.08.14 
            ✎
    11:21 
 | 
         
        (10) И выпал в ошибку. Ты же не знаешь сколько уровней брать?     
         | 
|||
| 
    12
    
        MaXpaT    
     22.08.14 
            ✎
    11:24 
 | 
         
        посмотри аналог в типовой бухии 2.0 
 
        общиймодуль.БухгалтерскийУчет.ПолучитьСчетаУчетаНоменклатуры() там это сделано примерно как в (10) СписокГрупп = ОбщегоНазначения.ПолучитьСписокВышестоящихГрупп(Номенклатура); Функция ПолучитьСписокВышеСтоящихГрупп(ЭлементСправочника) Экспорт Результат = Новый Массив; Если НЕ ЗначениеЗаполнено(ЭлементСправочника) Тогда Возврат Результат; КонецЕсли; МетаданныеСправочника = ЭлементСправочника.Метаданные(); Если НЕ МетаданныеСправочника.Иерархический Тогда Возврат Результат; КонецЕсли; ИмяСправочника = МетаданныеСправочника.Имя; Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ | Справочник1.Родитель КАК Родитель1, | Справочник2.Родитель КАК Родитель2, | Справочник3.Родитель КАК Родитель3, | Справочник4.Родитель КАК Родитель4, | Справочник5.Родитель КАК Родитель5 |ИЗ | Справочник." + ИмяСправочника + " КАК Справочник1 | ЛЕВОЕ СОЕДИНЕНИЕ Справочник." + ИмяСправочника + " КАК Справочник2 | ПО (Справочник2.Ссылка = Справочник1.Родитель) | ЛЕВОЕ СОЕДИНЕНИЕ Справочник." + ИмяСправочника + " КАК Справочник3 | ПО (Справочник3.Ссылка = Справочник2.Родитель) | ЛЕВОЕ СОЕДИНЕНИЕ Справочник." + ИмяСправочника + " КАК Справочник4 | ПО (Справочник4.Ссылка = Справочник3.Родитель) | ЛЕВОЕ СОЕДИНЕНИЕ Справочник." + ИмяСправочника + " КАК Справочник5 | ПО (Справочник5.Ссылка = Справочник4.Родитель) |ГДЕ | Справочник1.Ссылка = &Ссылка"; ТекущийЭлемент = ЭлементСправочника; Пока ЗначениеЗаполнено(ТекущийЭлемент) Цикл Запрос.УстановитьПараметр("Ссылка", ТекущийЭлемент); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда Для Индекс = 1 по 5 Цикл ТекущийЭлемент = Выборка["Родитель" + Индекс]; Если ЗначениеЗаполнено(ТекущийЭлемент) Тогда Результат.Добавить(ТекущийЭлемент); Иначе Прервать; КонецЕсли; КонецЦикла; Иначе ТекущийЭлемент = Неопределено; КонецЕсли; КонецЦикла; Возврат Результат; КонецФункции  | 
|||
| 
    13
    
        MaXpaT    
     22.08.14 
            ✎
    11:25 
 | 
         
        ну или как в (9) по-сути тоже самое, выполняться немного дольше будет, зато текста поменьше     
         | 
|||
| 
    14
    
        anatoly    
     22.08.14 
            ✎
    11:30 
 | 
         
        (10) рукалицо...
 
        В ИЕРАРХИИ некошерно? (8) да - наоборот, просто поменять местами поле и параметр в той строке  | 
|||
| 
    15
    
         Deahianaianyrto    
     22.08.14 
            ✎
    11:34 
 | 
         
        (9)
 
        Группы = Новый Массив; ТоварЗапомнить = Товар; Пока ТоварЗапомнить.Родитель <> Справочники.Номенклатура.ПустаяСсылка() Цикл Группы.Добавить(ТоварЗапомнить.Родитель); ТоварЗапоминить = ТоварЗапомнить.Родитель; КонецЦикла; Даёт бесконечный цикл  | 
|||
| 
    16
    
         Deahianaianyrto    
     22.08.14 
            ✎
    11:38 
 | 
         
        (14) Говорит что некорректное условие (если поменять местами)     
         | 
|||
| 
    17
    
        User_Agronom    
     22.08.14 
            ✎
    11:39 
 | 
         
        (15) А глазки разуть? Самому?     
         | 
|||
| 
    18
    
        User_Agronom    
     22.08.14 
            ✎
    11:48 
 | 
         
        Похоже не получается:
 
        Группы = Новый Массив; ТоварЗапомнить = Товар; Пока ТоварЗапомнить.Родитель <> Справочники.Номенклатура.ПустаяСсылка() Цикл Группы.Добавить(ТоварЗапомнить.Родитель); ТоварЗапомнить = ТоварЗапомнить.Родитель; КонецЦикла; Сообщить("найдено "+Группы.Количество()+" элементов"); Работает код  | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |