1с 7.7 тис 964 черный запрос

Тема в разделе "1C и всё что с ней связано", создана пользователем KiR, 25 фев 2011.

Наш партнер Genesis Hackspace
  1. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    есть задача - отобрать по регистру ПартииНаличные движение и остатки за указанный период по выбранной товарной группе (или товару). теперь нужно построить запрос таким образом чтобы вытаскивать свойство номенклатуры Размер.

    Попытался упростить задачу и выбрать просто из справочника данное свойство по одному товару. запрос ничего не возвращает.
    Код (Text):
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |ТекущийЭлемент = Справочник.СвойстваНоменклатуры.ТекущийЭлемент;
    |Номенклатура = Регистр.ПартииНаличие.Номенклатура;
    |Владелец = Справочник.СвойстваНоменклатуры.Владелец;
    |ВидСвойства = Справочник.СвойстваНоменклатуры.ВидСвойства;
    |ЗначениеСвойства = Справочник.СвойстваНоменклатуры.ЗначениеСвойства;
    |Группировка Номенклатура;
    |Группировка ТекущийЭлемент;
    |Условие((Владелец = Товар));
    |"//}}ЗАПРОС
    ;
    Помогите пожалуйста написать правильный текст. Я ламо в запросах
     
  2. puh14

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    что-то нет ни функции движения ни остатков. ни связи межу измерением номенклатура и справочником свойства номенклатуры. Вопрос - размер это элемент какого справочника?
     
  3. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    А чем не устраивает стандартный отчет
    ВедомостьПоПартиямТМЦ ?
     
  4. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    есть справочник Свойства Номенклатуры, который по идее подчинен справочнику номенклатура. в нем 2 реквизита - ВидСвойства и ЗначениеСвойства.
    в справочнике видов свойств есть группа Свойства Номенклатуры, а в ней элемент - Размер. вот его значение мне и нужно получить

    На основании его я и сделал свой - внешний вид хотели другой. вот теперь только к нему нада прикрутить размер чтобы выводить номенклатура.наименование+(Номенклатура.свойство.размер)
     
  5. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    А если сам будешь изготавливать запрос, стоит лучше вместо
    |Владелец = Справочник.СвойстваНоменклатуры.Владелец;
    |ВидСвойства = Справочник.СвойстваНоменклатуры.ВидСвойства;
    |ЗначениеСвойства = Справочник.СвойстваНоменклатуры.ЗначениеСвойства;

    использовать
    |ЗначениеСвойства = Регистр.ПартииНаличие.Партия.Свойство;
     
  6. puh14

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |Свойства = Справочник.СвойстваНоменклатуры.ТекущийЭлемент;
    |Номенклатура = Регистр.ПартииНаличие.Номенклатура,Справочник.СвойстваНоменклатуры.Владелец;
    |КолВо = Регистр.ПартииНаличие.Количество;
    |Группировка Номенклатура;
    |Группировка Свойства;
    |Функция ПрКол = Приход(КолВо);
    |Функция РасКол = Расход(КолВо);
    |Функция ОстКол = КонОст(КолВо);
    |Условие((Свойства.Владелец = Номенклатура));//связка между свойством и номенклатурой, на всякий случай.
    |Условие((Свойства.ВидСвойства = ВыбВид));//тут собсно тип размер
    |Условие((Свойства.ЗначениеСвойства = ВыбЗначение));//тут значение размер
    |Условие(( Номенклатура = товар));//тут отбор по конкретному товару
    |"//}}ЗАПРОС

    как-то так. А пустое у тебя было, потому как пока не укажешь функции - ничего из регистров показывать не будет.

    Добавлено:
    А если так, то покажет и всевозможные размеры
    |ЗначениеСвойства = Регистр.ПартииНаличие.Партия.Свойство, Справочник.СвойстваНоменклатуры.ЗначениеСвойства;
     
  7. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    Добавил. получаю ошибку - Значение не представляет агрегатный объект (родитель): 26
     
  8. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Нарисуй весь запрос - что-то родитель нигде не фигурирует
     
  9. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    не фигурирует. не знаю его куда вкинуть. вот как делал:
    Код (Text):
    "//{{ЗАПРОС(Сформировать)
    |Период с НачДата по КонДата;
    |Без итогов;
    |Номенклатура   = Регистр.ПартииНаличие.Номенклатура;
    //  |Партия           = Регистр.ПартииНаличие.Партия;
    |СвойствоПартии   = Регистр.ПартииНаличие.Партия.Свойство,Справочник.СвойстваНоменклатуры.ЗначениеСв
    ойства;
    |Поставщик     = Регистр.ПартииНаличие.Партия.Поставщик;
    |КодОперации = Регистр.ПартииНаличие.КодОперации;
    |Количество   = Регистр.ПартииНаличие.Количество;
    |Артикул         = Регистр.ПартииНаличие.Номенклатура.Артикул;
    |СвойствоИмя     = Справочник.СвойстваНоменклатуры.ТекущийЭлемент;
    |ВладелецС         = Справочник.СвойстваНоменклатуры.ТекущийЭлемент.Владелец;
    |Свойство       = Справочник.СвойстваНоменклатуры.ТекущийЭлемент.ВидСвойства;
    //  |Размер       = Справочник.СвойстваНоменклатуры.ТекущийЭлемент.ЗначениеСвойства;
    |Функция НачОстК = НачОст(Количество);
    |Функция ПриходК = Приход(Количество) Когда ((КодОперации <> глКО.Перемещение) И (КодОперации <> глКО.Перемещение) И (КодОперации <> глКО.ПередачаВРозницу) И (КодОперации <> глКО.ВозвратИзРозницы));
    |Функция РасходК = Расход(Количество) Когда ((КодОперации <> глКО.Перемещение) И (КодОперации <> глКО.Перемещение) И (КодОперации <> глКО.ПередачаВРозницу) И (КодОперации <> глКО.ВозвратИзРозницы));
    |Функция КонОстК = КонОст(Количество);
    |Группировка Артикул;
    |Группировка Номенклатура без Групп;
    |Группировка СвойствоПартии;";
    ;
    Если ПустоеЗначение(ВыбПоставщик) = 0 Тогда
    ТекстЗапроса = ТекстЗапроса + "Условие(Поставщик = ВыбПоставщик);";
    Конецесли;
    ТекстЗапроса = ТекстЗапроса + ?(Товар.ЭтоГруппа() = 1,"Условие(Номенклатура.родитель = Товар);","Условие(Номенклатура = Товар);");//+
    "Условие ((ВладелецС = Номенклатура) И (СвойствоИмя = ВидсвойстваРазмер));");
    на самом деле текст запроса "латанный-перелатанный" а как правильно должно быть - я х.з.
     
  10. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    Вот тут не понятно. мне нужно не передавать значение, а получать значение.
     
  11. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    А так попробовать
    Код ( (Unknown Language)):
    "//{{ЗАПРОС(Сформировать)
    |Период с НачДата по КонДата;
    |Без итогов;
    |Номенклатура   = Регистр.ПартииНаличие.Номенклатура;
    |СвойствоПартии   = Регистр.ПартииНаличие.Партия.Свойство;
    |Поставщик     = Регистр.ПартииНаличие.Партия.Поставщик;
    |КодОперации = Регистр.ПартииНаличие.КодОперации;
    |Количество    = Регистр.ПартииНаличие.Количество;
    |Артикул      = Регистр.ПартииНаличие.Номенклатура.Артикул;
    |Функция НачОстК = НачОст(Количество);
    |Функция ПриходК = Приход(Количество) Когда ((КодОперации <> глКО.Перемещение) И (КодОперации <> глКО.Перемещение) И (КодОперации <> глКО.ПередачаВРозницу) И (КодОперации <>  
    глКО.ВозвратИзРозницы));
    |Функция РасходК = Расход(Количество) Когда ((КодОперации <> глКО.Перемещение) И (КодОперации <> глКО.Перемещение) И (КодОперации <> глКО.ПередачаВРозницу) И (КодОперации <>  
    глКО.ВозвратИзРозницы));
    |Функция КонОстК = КонОст(Количество);
    |Группировка Артикул;
    |Группировка Номенклатура без Групп;
    |Группировка СвойствоПартии;
    |Условие(Номенклатура = Товар); // все равно указано Без групп
    |Условие (СвойствоПартии = ВидсвойстваРазмер);
    |Условие(Поставщик в ВыбПоставщик);";
     
  12. Дайнеко

    Дайнеко Well-Known Member
    1C Team

    Регистрация:
    19 ноя 2009
    Сообщения:
    951
    Симпатии:
    0
    Ставлю литру - не полуцца.;) Уж больно мудреный доступ к данным.
     
  13. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Да вроде, просто вырезка из типового отчета по партиям.
    Чему там не получаться ?
    Я бы просто взял этот типовой отчет, выгрузил его запрос в ТЗ и посмотрел.
    Все данные устанавливаются группировками, и фильтр по свойствам есть.
    А на основе этой ТЗ наваял бы нужную выходную форму.

    PS. А литру я и так готов выкатить. Уж больно мне год назад "хакерский" метод помог ;)
     
  14. puh14

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    Рекомендую в условиях ставить для ссылочных данных вместо "=" "В" - отлично отрабатывает для всяких там групп и элементов.
    Собственно вместо ?(Товар.ЭтоГруппа() = 1,"Условие(Номенклатура.родитель = Товар);","Условие(Номенклатура = Товар);") пишется просто "Номенклатура В товар;"

    Кокй сейчас текущий текст запроса?
     
  15. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    Код (Text):
     |Условие (СвойствоПартии = ВидсвойстваРазмер);
    ни в какую не хочет работать это условие.

    решил попробовать упростить запрос
    Код (Text):
    "//{{ЗАПРОС(Сформировать)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |Без Итогов;
    |ВладелецСвойства = Справочник.СвойстваНоменклатуры.Владелец;
    |ВидСвойства = Справочник.СвойстваНоменклатуры.ВидСвойства;
    |ТекущийЭлемент = Справочник.СвойстваНоменклатуры.ТекущийЭлемент;
    |ЗначениеСвойства = Справочник.СвойстваНоменклатуры.ЗначениеСвойства;
    |Группировка ВладелецСвойства без групп;
    |Группировка ЗначениеСвойства без групп;
    |Условие((ВладелецСвойства = товар);
    так выводит значение всех свойств товара. если добавляю условие - (ВидСвойства = ВидСвойстваРазмер);
    ничего не выводит вообще
     
  16. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Похоже, путаешь вид свойства и значение свойства
     
  17. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    не получится, ибо это свойство просто не заполнено. а вот в справочнике свойств номенклатуры есть то что нужно
    -------------------------------------------------------------------------------------------------------------------------------------------
    текс. с упрощенным запросом разобрался. лохонулся тут - не спозиционировался на ТекущемЭлементе...
    ВдСвойстваРазмер = СоздатьОбъект("Справочник.ВидыСвойств");
    ВдСвойстваРазмер.НайтиПоНаименованию("Размер",0);
    ВидСвойстваРазмер = ВдСвойстваРазмер.ТекущийЭлемент();

    решил к этот простой заработавший запрос немного видоизменить:
    Код (Text):
    //{{ЗАПРОС(Сформировать)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |Без Итогов;
    |ВладелецСвойства = Регистр.ПартииНаличие.Номенклатура, Справочник.СвойстваНоменклатуры.Владелец;
    |КолВо = Регистр.ПартииНаличие.Количество;
    |ВидСвойства = Справочник.СвойстваНоменклатуры.ВидСвойства;
    |ТекущийЭлемент = Справочник.СвойстваНоменклатуры.ТекущийЭлемент;
    |ЗначениеСвойства = Справочник.СвойстваНоменклатуры.ЗначениеСвойства;
    //  |Функция ПрКол = Приход(КолВо);
    //  |Функция РасКол = Расход(КолВо);
    //  |Функция ОстКол = КонОст(КолВо);
    |Группировка ВладелецСвойства без групп;
    |Группировка ЗначениеСвойства без групп;
    |Условие((ВладелецСвойства = товар));
    |Условие(ВидСвойства = ВидСвойстваРазмер.ТекущийЭлемент());
    |"//}}ЗАПРОС;
    так отрабатывает нормально. но как только раскомментирую строки с функциями - уже не возвращает ничего. неужто Дайнеко прав?!?! :( :(

    Пожалуйста подскажите как быть в моей ситуации? уж очень не хочется простой перебор значений... :please:
     
  18. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    так и не поборол я эту штуку - в итоге сделал 2 запроса - сначала одним вынимаю всю номенклатуру из Партий Наличие, а потом подаю это на вход Справочника Свойств Номенклатуры...
    Всем спасибо за участие. Особо активным участникам выдам благодарственные ;)
     
  19. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    Помогите, пожалуйста, еще с одним запросом, а вернее с условием...
    Необходимо выбрать все заявки покупателей у которых нет подчиненных документов или же эти подчиненные документы не проведены
     
  20. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Проще сделать перебором заявок в цикле, собирая в таблицу заявки без подчиненных или с непроведенными подчиненными.
    Кода получится строк на пять
     
Загрузка...

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