8.х Как установить параметр - группа регистра сведений

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Seva, 23 сен 2014.

  1. TopicStarter Overlay
    Seva
    Offline

    Seva Опытный в 1С

    Регистрация:
    5 дек 2007
    Сообщения:
    62
    Симпатии:
    0
    Баллы:
    26
    Помогите плиз. Пытаюсь сотворить бонусную систему лояльности в рознице 1.0.
    Все вроде как обычно, но нужно задать отбор на группу товар, к примеру за покупку товара в магазине на карту начисляется бонусы в размере 2% от суммы покупки, но если покупают к примеру товар из группы телевизоры то должно начисляться 4%.
    Создал регистр сведений для этого но в запросе не могу установить параметр правильно:
    Код:
                Запрос = Новый Запрос;
                             Запрос.Текст = "ВЫБРАТЬ
                               |    ЧекККМ.СуммаДокумента,
                               |    ЧекККМ.ДисконтнаяКарта,
                               |    ЧекККМ.Магазин,
                               |    ЧекККМТовары.Номенклатура
                               |ПОМЕСТИТЬ Док
                               |ИЗ
                               |    Документ.ЧекККМ.Товары КАК ЧекККМТовары
                               |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЧекККМ КАК ЧекККМ
                               |        ПО ЧекККМТовары.Ссылка = ЧекККМ.Ссылка
                               |ГДЕ
                               |    ЧекККМ.Ссылка = &Ссылка
                               |;
                               |
                               |////////////////////////////////////////////////////////////////////////////////
                               |ВЫБРАТЬ
                               |    Док.СуммаДокумента,
                               |    Док.ДисконтнаяКарта,
                               |    Док.Магазин,
                               |    Док.Номенклатура,
                               |    НоменклатураДляБонусов.ГруппаНоменклатуры,
                               |    НоменклатураДляБонусов.Учитывать,
                               |    НоменклатураДляБонусов.Процент,
                               |    ВЫБОР
                               |        КОГДА НоменклатураДляБонусов.Процент ЕСТЬ NULL
                               |            ТОГДА Док.СуммаДокумента * 0.02
                               |        ИНАЧЕ Док.СуммаДокумента * НоменклатураДляБонусов.Процент
                               |    КОНЕЦ КАК РучнойПроцент
                               |ИЗ
                               |    Док КАК Док
                               |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НоменклатураДляБонусов КАК   НоменклатураДляБонусов
                               |        ПО (НоменклатураДляБонусов.ГруппаНоменклатуры В ИЕРАРХИИ (&ДокНоменклатура))";
                          
    Запрос.УстановитьПараметр("Ссылка",Ссылка);
    Запрос.УстановитьПараметр("Магазин",Магазин);
    Запрос.УстановитьПараметр("ДокНоменклатура",РегистрыСведений.НоменклатураДляБонусов...);
    Результат = Запрос.Выполнить().Выбрать();
    
                Пока Результат.Следующий() Цикл                   
                        Движение = Движения.БонусныеБаллы.Добавить();
                        Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
                        Движение.Период = Дата;
                        Движение.ДисконтнаяКарта = Результат.ДисконтнаяКарта;
                        Движение.Магазин = Результат.Магазин;
                        Движение.Бонусы = Результат.РучнойПроцент;
                КонецЦикла;
    
    В регистре сведений измерения:
    ГруппаНоменклатуры - Справочник номенклатура,
    Учитывать - булево
    Ресурс:
    Процент.
    Дорогие Гуру помогите пожалуйста...
  2. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.568
    Симпатии:
    717
    Баллы:
    204
    Соединения нельзя выполнять по иерархии.
    Сделайте запрос, который выберет всю номенклатуру в указанной группе, и соедините с его результатом запрос по документу.
  3. TopicStarter Overlay
    Seva
    Offline

    Seva Опытный в 1С

    Регистрация:
    5 дек 2007
    Сообщения:
    62
    Симпатии:
    0
    Баллы:
    26
    Спасибо попробую, но когда выполняю этот запрос в консоле запросов все работает если указываю группу номенклатуры. проблема у меня именно в этой строке:
    Запрос.УстановитьПараметр("ДокНоменклатура",РегистрыСведений.НоменклатураДляБонусов...);
  4. nbIpKuH_BaH9I
    Online

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.987
    Симпатии:
    398
    Баллы:
    104
    upload_2014-9-23_21-46-21.png
    --- Объединение сообщений, 23 сен 2014 ---
    Читайте справку.
  5. TriviumFan
    Offline

    TriviumFan Опытный в 1С Заблокирован

    Регистрация:
    19 мар 2013
    Сообщения:
    92
    Симпатии:
    15
    Баллы:
    29
    :D
  6. TopicStarter Overlay
    Seva
    Offline

    Seva Опытный в 1С

    Регистрация:
    5 дек 2007
    Сообщения:
    62
    Симпатии:
    0
    Баллы:
    26
    Не понял что вы хотели этим сказать. У меня нет проблемы с запросом, может конечно он не правильный, но работает. У меня проблема с указанием параметра запроса:
    Запрос.УстановитьПараметр("ДокНоменклатура",РегистрыСведений.НоменклатураДляБонусов...);
    Мне нужно здесь указать что ДокНоменклатура это измерение непереодического независимого регистра сведений.
  7. nbIpKuH_BaH9I
    Online

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.987
    Симпатии:
    398
    Баллы:
    104
    Я вам дал информацию как правильно пользоваться конструкций В. Параметром надо значение указывать, а не измерения.


    Отправлено из моего iPhone используя Tapatalk
  8. TopicStarter Overlay
    Seva
    Offline

    Seva Опытный в 1С

    Регистрация:
    5 дек 2007
    Сообщения:
    62
    Симпатии:
    0
    Баллы:
    26
    Понятно, тогда как указать значение измерения непереодического независимого регистра сведений?
  9. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.568
    Симпатии:
    717
    Баллы:
    204
    выбрать его с помощью отдельного запроса или в пакетном запросе написать запрос.
    --- Объединение сообщений, 23 сен 2014 ---
    что, уже можно?
    Seva нравится это.
  10. TriviumFan
    Offline

    TriviumFan Опытный в 1С Заблокирован

    Регистрация:
    19 мар 2013
    Сообщения:
    92
    Симпатии:
    15
    Баллы:
    29
    Да я про то, что тут нет никакого соединения, глянь на исходный запрос.
  11. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.568
    Симпатии:
    717
    Баллы:
    204
    Ну как же нет? Левое соединение документа(или ТЧ документа) с РегистромСведений
  12. nbIpKuH_BaH9I
    Online

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.987
    Симпатии:
    398
    Баллы:
    104
    Вы так говорите будто у Вас там одна единственная запись. В регистре может быть миллион записей. Самый простой способ запросом отобрать нужные вам записи из этого регистра и воспользоваться подсказкой №3 из моего поста №4. А именно "Форма оператора В для проверки совпадения значения с одним из результата запроса".
  13. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    эм. А что когда-то нельзя было?
  14. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.568
    Симпатии:
    717
    Баллы:
    204
    напрямую

    ПО Таб1.Поле В Иерархии Таб2.Поле

    нельзя....если ничего не изменилось.
  15. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    А где в запросе ТС такое соединение?
  16. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.568
    Симпатии:
    717
    Баллы:
    204
    Я один что ли читаю письма целиком? :)
    Код:
    ......
    |ИЗ
                        |    Док КАК Док
                               |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НоменклатураДляБонусов КАК   НоменклатураДляБонусов
                               |        ПО (НоменклатураДляБонусов.ГруппаНоменклатуры В ИЕРАРХИИ (&ДокНоменклатура))";
    .........
    
  17. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Да вроде нет.
    И где там соединение вида
    ?
    TriviumFan нравится это.
  18. TriviumFan
    Offline

    TriviumFan Опытный в 1С Заблокирован

    Регистрация:
    19 мар 2013
    Сообщения:
    92
    Симпатии:
    15
    Баллы:
    29
    Посмотри на условие
    Опередили(
    Шурик тут как тут!
  19. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Не боись, скоро уйду, работать надо.. :)
  20. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.568
    Симпатии:
    717
    Баллы:
    204
    ну дык &ДокНоменклатура - это измерение РегистраСведений, по словам ТС :)

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