Подскажите по запросу для динамического списка

  1. 9 г. назад

    1С 8.3.6, БП 3.0
    Хочется сделать свистелку для выбора остатков номенклатуры по средней цене и по последней цене закупки(партии)
    Выбирается из Формы подбора с динамическим списком.
    По средней сделал.

    	Текст=
    	"ВЫБРАТЬ РАЗРЕШЕННЫЕ
    	|	СкладИНоменклатура.Счет КАК Счет,
    	|	СкладИНоменклатура.Субконто1 КАК Номенклатура,
    	|	ЕСТЬNULL(СкладИНоменклатура.СуммаОстаток, 0) КАК Сумма,
    	|	ЕСТЬNULL(СкладИНоменклатура.КоличествоОстаток, 0) КАК Количество,
    	|	ВЫРАЗИТЬ(СкладИНоменклатура.Субконто3 КАК Справочник.Склады) КАК Склад,
    	|	СкладИНоменклатура.Организация КАК Организация,
    	|	СкладИНоменклатура.Подразделение КАК Подразделение,
    	|	ВЫБОР
    	|		КОГДА ЕСТЬNULL(СкладИНоменклатура.КоличествоОстаток, 0) <> 0
    	|			ТОГДА ЕСТЬNULL(СкладИНоменклатура.СуммаОстаток, 0) / СкладИНоменклатура.КоличествоОстаток
    	|		ИНАЧЕ 0
    	|	КОНЕЦ КАК Себестоимость,
    	|	СкладИНоменклатура.Субконто1.Наименование КАК Наименование
    	|ИЗ
    	|	РегистрБухгалтерии.Хозрасчетный.Остатки(&КонецПериода, Счет В (&СчетаУчетаСкладИНоменклатура), , Организация = &Организация) КАК СкладИНоменклатура
    	|
    	|ОБЪЕДИНИТЬ ВСЕ
    	|
    	|ВЫБРАТЬ
    	|	НоменклатураБезСклада.Счет,
    	|	НоменклатураБезСклада.Субконто1,
    	|	ЕСТЬNULL(НоменклатураБезСклада.СуммаОстаток, 0),
    	|	ЕСТЬNULL(НоменклатураБезСклада.КоличествоОстаток, 0),
    	|	&СкладПустаяСсылка,
    	|	НоменклатураБезСклада.Организация,
    	|	НоменклатураБезСклада.Подразделение,
    	|	ВЫБОР
    	|		КОГДА ЕСТЬNULL(НоменклатураБезСклада.КоличествоОстаток, 0) <> 0
    	|			ТОГДА ЕСТЬNULL(НоменклатураБезСклада.СуммаОстаток, 0) / НоменклатураБезСклада.КоличествоОстаток
    	|		ИНАЧЕ 0
    	|	КОНЕЦ,
    	|	НоменклатураБезСклада.Субконто1.Наименование
    	|ИЗ
    	|	РегистрБухгалтерии.Хозрасчетный.Остатки(&КонецПериода, Счет В (&СчетаУчетаНоменклатураБезСклада), &СубконтоНоменклатура, Организация = &Организация) КАК НоменклатураБезСклада
    	|
    	|УПОРЯДОЧИТЬ ПО
    	|	Наименование";
    
    
    Ответы: (25)
  2. Еще нужно прикрутить к этому запросу вариант с последней найденной ценой. Нужна правильная мысль

  3. если ты впихнешь в демонический список поиск последней цены, то он сдохнет на взлете

  4. тут вариантов немного:
    1. получаешь временную таблицу по Номенклатура - ДатаПоследнегоПрихода
    2. Соединяешь таблицу 1 с приходами.

    Ответы: (4)
  5. (3) Думал за это, но тогда точно список помрет, если номенклатуры много. А её много. Есть конечно самый простой вариант, рассчитать цену уже после выбора конкретной номенклатуры, но хотелось бы, чтобы юзеры видели цены прямо в списке.
    Можно как то в подзапрос передать текущую номенклатуру?

    Ответы: (6) (7)
  6. А ВЫБРАТЬ ПЕРВЫЕ 50 почему не подходит?

    Ответы: (8)
  7. (4) можно, но все равно умрет имхо

  8. tsr Можно как то в подзапрос передать текущую номенклатуру?

    конечно, через параметры.

    по поводу скорости - или системное решение с доработкой конфы

    Ответы: (9)
  9. alex_shkut А ВЫБРАТЬ ПЕРВЫЕ 50

    расскажи как

  10. (7) Каким образом? Подзапрос в запросе, который выбирает остатки номенклатуры

    Ответы: (11)
  11. ВЫБРАТЬ ИЗ (ВЫБРАТЬ ПЕРВЫЕ Х ...)

    Ответы: (11) (16)
  12. (10) все равно непонятно, причем здесь первые и скорость запроса
    (9) так, стоп.
    ты спросил можно ли передать текущую номенклатуру - это что имелось в виду? Если тебе номенклатура известна, можешь параметр &ТекНоменклатура в запросе использовать и потом задать его
    или я мысль не понял?

    p.s. я бы не гадал, а сначала написал запрос, посмотрел как и где он тупит, а потом думал уже как оптимизировать...

    Ответы: (12)
  13. (11) Нет, я имел ввиду текущая в запросе. Так то понятно и просто, если номенклатура известна

    Ответы: (14)
  14. Блин, я постоянно путаюсь в соединениях, но разве ЛЕВОЕ СОЕДИНЕНИЕ ПО Номенклатура это не текущая в запросе?

  15. tsr я имел ввиду текущая в запросе

    может я не выспался.... текущая строка в списке?

    Ответы: (15)
  16. (14) В запросе.

  17. (10) Здесь тоже нужно как то передать саму номенклатуру как то

  18. В левом соединении тоже должен быть отбор по конкретной номенклатуре, иначе будет лопатить весь приход

  19. ты похоже хочешь сделать коррелированный подзапрос

    в 1с забудь про такое

    Ответы: (19)
  20. (18) Прочитал все таки мою мысль...
    Значит будем искать

  21. Не буду утверждать (просто навскидку) что так получится
    ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ПЕРВЫЕ 1 ... УПОРЯДОЧИТЬ ПО Дата Убыв как Подзапрос ) ПО Номенклатура = Подзапрос.Номенклатура

    Ответы: (21) (22) (24)
  22. (20) внутренний запрос нельзя сортировать

    Ответы: (23)
  23. (20) а где ускорение?

    Ответы: (23)
  24. (21) Жаль... а так бы сработало.
    (22) Ограниченное количество в выборке

  25. alex_shkut ВЫБРАТЬ ПЕРВЫЕ 1 ... УПОРЯДОЧИТЬ ПО Дата Убыв как Подзапрос

    ты этим запросом хочешь крайние даты приходов получить, что ли?
    имхо, группировка по номенклатуре +максимум (Дата) только

  26. tsr и по последней цене закупки(партии)

    Ну так же задача поставлена?

  27. Я бы выгрузил список Номенклатуры, передал параметром и объединил через ТЗ

    Ответы: (27)
  28. (26) Список номенклатуры большой. Даже очень большой. Пока сделал по простому. Цены показывает только средние, а при выборе номенклатуры, находит последнюю партию и берет цену из неё.

    Ответы: (28)
  29. 12.05.2015 12:24:47 отредактировано alex_shkut

    tsr Даже очень большой.

    В выпадающем списке? Я представлял себе по принципу поиска в Яндексе или Гугле, динамически.

    Ответы: (29)
  30. (28) Не в списке, а в справочнике. В форме выбора остатков

или зарегистрируйтесь чтобы ответить!