8.х Помогите изменить запрос

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

  1. TopicStarter Overlay
    zes
    Offline

    zes Опытный в 1С

    Регистрация:
    29 ноя 2010
    Сообщения:
    61
    Симпатии:
    0
    Баллы:
    26
    Запрос такой:
    Работает отлично
    Код:
    		Запрос.Текст=
    
    "ВЫБРАТЬ
    |	КОЛИЧЕСТВО (Различные ЧекСостав.Ссылка) КАК КолЧ,
    |	ЧекСостав.Ссылка КАК Ссылка,
    |	ЧекСостав.Ссылка.Свойство КАК Свойство,
    |	ЧекСостав.Товар КАК Товар,
    |	СУММА(ВЫБОР КОГДА ЧекСостав.Ссылка.ТипЧека = &Тип ТОГДА ЧекСостав.Количество ИНАЧЕ (-1)*ЧекСостав.Количество КОНЕЦ) КАК Количество,
    |	СУММА(ВЫБОР КОГДА ЧекСостав.Ссылка.ТипЧека = &Тип ТОГДА ЧекСостав.Скидка ИНАЧЕ (-1)*ЧекСостав.Скидка КОНЕЦ) КАК Скидка,		
    |	СУММА(ВЫБОР КОГДА ЧекСостав.Ссылка.ТипЧека = &Тип ТОГДА ЧекСостав.Сумма ИНАЧЕ (-1)*ЧекСостав.Сумма КОНЕЦ) КАК Сумма,		
    |	СУММА(ВЫБОР КОГДА ЧекСостав.Ссылка.ТипЧека = &Тип ТОГДА ЧекСостав.Итого ИНАЧЕ (-1)*ЧекСостав.Итого КОНЕЦ) КАК Итого		
    |	
    |ИЗ
    |	Документ.Чек.Состав КАК ЧекСостав
    |ГДЕ
    |	ЧекСостав.Ссылка.Дата МЕЖДУ &Дата1 И &Дата2
    |	И ЧекСостав.Ссылка.ТипЧека = &Тип
    |	И ЧекСостав.Ссылка.Проведен
    |СГРУППИРОВАТЬ ПО
    |	ЧекСостав.Ссылка,
    |	ЧекСостав.Ссылка.Свойство,
    |	ЧекСостав.Товар
    
    | ОБЪЕДИНИТЬ ВСЕ
    
    |ВЫБРАТЬ
    |	СУММА(0),
    |	ВозвратСостав.Ссылка,
    |	ВозвратСостав.Ссылка.Поставщик,
    |	ВозвратСостав.Товар,
    |	СУММА(ВЫБОР КОГДА ВозвратСостав.ВидОперации = &Возврат ТОГДА (-1)*ВозвратСостав.Количество ИНАЧЕ ВозвратСостав.Количество КОНЕЦ),
    |	СУММА(ВЫБОР КОГДА ВозвратСостав.ВидОперации = &Возврат ТОГДА (-1)*ВозвратСостав.Скидка ИНАЧЕ ВозвратСостав.Скидка КОНЕЦ),
    |	СУММА(ВЫБОР КОГДА ВозвратСостав.ВидОперации = &Возврат ТОГДА (-1)*ВозвратСостав.Сумма ИНАЧЕ ВозвратСостав.Сумма КОНЕЦ),
    |	СУММА(ВЫБОР КОГДА ВозвратСостав.ВидОперации = &Возврат ТОГДА (-1)*(ВозвратСостав.Сумма-ВозвратСостав.Скидка) ИНАЧЕ ВозвратСостав.Сумма КОНЕЦ)
    |ИЗ
    |	Документ.Возврат.Состав КАК ВозвратСостав
    |ГДЕ
    |	ВозвратСостав.Ссылка.Дата МЕЖДУ &Дата1 И &Дата2
    |	И ВозвратСостав.Ссылка.Проведен
    |СГРУППИРОВАТЬ ПО
    |	ВозвратСостав.Ссылка,
    |	ВозвратСостав.Ссылка.Поставщик,
    |	ВозвратСостав.Товар
    |ИТОГИ 
    |	СУММА(КолЧ),
    |	СУММА(Количество),
    |	СУММА(Сумма),
    |	СУММА(Скидка),
    |	СУММА(Итого)
    |ПО
    |  	Свойство,
    |	Товар";
    
    На форме разместил ТаблицуЗначений (номенклатура)
    Нужно модифицировать запрос, чтобы выводились только те товары, которыми заполнена ТаблицаЗначений.

    Помогите пожалуйста
  2. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    1. Передаете в запрос вашу таблицу значений (одну колонку с номенклатурой) к ней левым соединением делаете тот запрос, который у вас сейчас.

    2. Просто передаете в запрос массив номенклатуры из ТЧ, в запросе просто ставите дополнительное условие ГДЕ Товар в (&МассивНоменклатуры).

    Результаты в этих двух случаях будут отличаться. Тут надо смотреть что именно вам нужно.
  3. TopicStarter Overlay
    zes
    Offline

    zes Опытный в 1С

    Регистрация:
    29 ноя 2010
    Сообщения:
    61
    Симпатии:
    0
    Баллы:
    26
    Вариант 2 думаю логичнее, да и проще сделать.

    Как в запрос передать массив номенклатуры?
    Так?
    Запрос.УстановитьПараметр("НужныйТовар", <А ТУТ ЧТО?> );
  4. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Ваш массив из номенклатуры.
  5. TopicStarter Overlay
    zes
    Offline

    zes Опытный в 1С

    Регистрация:
    29 ноя 2010
    Сообщения:
    61
    Симпатии:
    0
    Баллы:
    26
    Подскажите тогда пожалуйста, как заполнить массив из таблицы, которая лежит на форме?
  6. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    перед формирвоанием запроса надо просто в цикле пройтись по таблице с формы и записать необходимые значения в массив
  7. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Тут дело не в логичнее, а в том что вам надо - дело в разных результатах.

    Код:
    Запрос.УстановитьПараметр("НужныйТовар", МояТаблицаЗначений.ВыгрузитьКолонку("Номенклатура"));
    
  8. TopicStarter Overlay
    zes
    Offline

    zes Опытный в 1С

    Регистрация:
    29 ноя 2010
    Сообщения:
    61
    Симпатии:
    0
    Баллы:
    26
    Второй вариант сделал, работает, спасибо.
    Вот бы ещё по первому сделать
  9. TopicStarter Overlay
    zes
    Offline

    zes Опытный в 1С

    Регистрация:
    29 ноя 2010
    Сообщения:
    61
    Симпатии:
    0
    Баллы:
    26
    Блин, ещё загвоздка.
    Дело в том, что наименование товара в номенклатеру содержит артикул, т.е. наименование выглядят так:
    9971 indigo 48 блузка женская арт. 9971
    9971 indigo 46 блузка женская арт. 9971
    9971 indigo 44 блузка женская арт. 9971
    9971 белая 42 блузка женская арт. 9971
    127089 sea 44 футболка женская арт. 127089
    127089 sea 42 футболка женская арт. 127089
    127089 sea 46 футболка женская арт. 127089

    Нужно сделать, чтобы поиск проходил не по полному наименованию, а только по артиклу, чтобы не вбивать один и тот же товар несколько раз.
  10. TopicStarter Overlay
    zes
    Offline

    zes Опытный в 1С

    Регистрация:
    29 ноя 2010
    Сообщения:
    61
    Симпатии:
    0
    Баллы:
    26
    В массив добавляю только артиклы, таким образом:
    Код:
    	МассивТоварАутсайдер = Новый Массив;
    Для Каждого Тек Из ТоварАутсайдер Цикл
    арт=Сред(Тек.Наименование, Найти(Тек.Наименование,"арт."));
    МассивТоварАутсайдер.Добавить(арт)
    КонецЦикла;
    
    Т.е. там теперь не полные наименования, а только часть.
    Вот теперь как в запросе изменить?
  11. TopicStarter Overlay
    zes
    Offline

    zes Опытный в 1С

    Регистрация:
    29 ноя 2010
    Сообщения:
    61
    Симпатии:
    0
    Баллы:
    26
    Сделал, тему закрыть можно)

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