Как собрать в запросе товар, аналоги товара и аналоги аналогов? #415637


#0 by Господин ПЖ
Формально "аналогов аналогов" может быть "в глубину" сколько угодно.
#1 by Asmody
вроде как 1Сные запросы рекурсию не поддерживают
#2 by Господин ПЖ
об этом и речь. А судя по задачам на спеца - вроде как должны
#3 by Asmody
серьезно?! это в задаче на спеца такое? может чего пропустил?
#4 by Господин ПЖ
да нет. Если понимать ее буквально. Есть товар, у него есть несколько аналогов. У аналогов свои аналоги. Расходная накладная должна списать товар или если его нет, его аналог или аналог аналога "и так далее". В ковычках - прямая цитата из билета.
#5 by Ненавижу 1С
У номенклатуры А есть аналог Б. У Б обязательно есть аналог А?
#6 by Ахиллес
Может быть как с получением родителей?
#7 by Ахиллес
Получить как нибудь предварительно максимальную вложенность и собрать текст запроса на необходимую глубину
#8 by Господин ПЖ
ага. И ходим по кругу потом. От А к Б. Давайте по простому: .... ну откуда тут родители.
#9 by Господин ПЖ
это ж проведение в Расходной. На экзамене на спеца. Где обычно все просто и без затей
#10 by Ахиллес
Я имел в виду тот же способ, что при получении всех родителей запросом. У Габеца: Как получить всех родителей выбранного элемента справочника? Запрос = Новый Запрос("ВЫБРАТЬ
#11 by Господин ПЖ
понятно. Но формально тут иерархии нет. Просто регистр сведений в 2 измерения Товар, Аналог. (имхо). П.э. смысла городить огород в многоэтажности мне не тут понятен.
#12 by Ахиллес
Может не запросом? За запрос в цикле расстрел на месте и незачет автоматом?
#13 by Господин ПЖ
это сразу "эцик с гвоздями".
#14 by Ненавижу 1С
Пока не будет обеспечено транзитивности и симметричности это не алгебраическая структура
#15 by Ахиллес
Делать то чего?
#16 by Господин ПЖ
единственная идэя - выкинуть к х.ям "и так далее". И делать на трех временных таблицах Товар, Аналог товара, Аналог аналога товара. (т.е. аналог аналога только 1-го уровня).
#17 by Господин ПЖ
блииииин. Ты это принимаищему доказывать будешь? Сразу "зачетку в зубы - приходите осенью".
#18 by Ахиллес
Все равно одним запросом не получишь все аналоги и все остатки по ним. Полюбасу цикл. Получаем остатки товара из табличной части, если чего то не хватает ищем аналоги (можно и не запросом)и заполняем таблицу, повторяем попытку списания и т.д. пока не спишется весь товар или не закончатся аналоги.
#19 by Vitello
А формулировка именно такая как в названии темы?
#20 by Господин ПЖ
Люк, открой для себя силу пакетных запросов... (с) иеода
#21 by Господин ПЖ
да
#22 by Vitello
Ну тогда глубина здесь ограничена :) Правда это не дело конечно.
#23 by Asmody
[Расходная накладная должна списать товар или если его нет, его аналог или аналог аналога "и так далее"] - госсподи, кошмар какой!! они там с ума посходили с такими задачами? это как - "расходная должна"? Сама?! а потом получается: "По квитанции 'корова рыжая' - одна, брали мы ее одну, сдавать будем одну..." а если этот "аналог аналога аналога" от исходного товара по цене отличается в два раза? у нас за такое "списание" склад и отдел учета на неслабый штраф попадет, и нам еще достанется, за то, что программа такое позволяет. чего они курят-то у себя там в 1С?
#24 by Ахиллес
У тебя вложенность произвольная. Если сделаешь пакетным запросом, ну делай, в чем проблемы то тогда?
#25 by Serg_1960
Задача, как и многие другие, - "абстрактная". В "реале" ФигВам кто позволит так документы заполнять. Впрочем - не важно. Конфа УПП - принцип раздеталировки продукции. Имхо, если ограничить "грубину" - проще реализовать. Иначе рекурсия и запросы в цикле...
#26 by Господин ПЖ
ну чего ты хочешь... Зато занюханой учетной политике , цена которой - единственная запись в регитсре сведений и направление сортировки партий, посвещено пол абзаца. "Еще раз подчеркивается - учетная политика действует один год. Потом она может смениться." Альфа и омега учета. Это ж каким идиотом надо притащиться в УЦ1 один чтобы не сделать этот занюханый периодический регистр сведений.
#27 by Господин ПЖ
вложенность придется ограничить имхо.
#28 by Serg_1960
Обязательно запросом реализовать? Если "да" - с ума они там спятили что-ли. Если "нет" - сорри, погорячился :))
#29 by bvn13
а если в цикле делать запрос на "очередного" аналога, а "проверенные и неподошедшие по остатку" аналоги сваливать в список значений? При условии, что в запросе стоит ГДЕ ??? НЕ В (СписокПроверенных) ?
#30 by Господин ПЖ
ну формально делать можно хоть как. Но решение могут признать "не эффективным" или не работающим. И привет горячий. Особенно весело с задачей на бизнес-процессы. Ее по тарифам ошибок проще не решать. Если сделать неправильно - больше минусов нахватаешь.
#31 by Ахиллес
Если ограничишь вложенность 3, при проверке сделает вложенность 4 чисто по приколу. Так что сразу расчитывай на вложенность 100 что бы он задолбался аналоги аналогов заводить ;-)
#32 by Господин ПЖ
проще решение должно быть, проще... Это экзамен на спеца, а не запуск шаттла в космос.
#33 by Господин ПЖ
а экзамен на спеца - это проверка на скоропись и знания патернов решения основных типов задач в билетах. Т.к. думать особо некогда имхо.
#34 by GenV
Если нет ограничений на вложенность, то кроме как запрос в цикле с сохранением списанных и не списанных остатков во временную таблицу пакетным запросом ничего в голову не приходит.
#35 by Злобный Фей
Сформировать дерево (в корне - товары из ТЧ, в строках - аналоги) всех возможных аналогов чз рекурсивную процедуру, захреначить по нему запрос, а потом пробегаться по дереву и получать из результа запроса остаток. Нормально?
#36 by Serg_1960
Аналог аналога? Тогда надо иметь в виду что, если номенклатура "А" и номенклатура "Б" являются полными аналогами и разрешена их замена друг на друга,- тогда в регистре сведений "Аналоги номенклатуры" будет указано две записи: - основная: номенклатуры "А", аналог - номенклатура "Б", коэф-ент = 1; Всё. Без анализа - зацикливание вам гарантированно.
#37 by Ахиллес
Отпишись о результате. Как делал и приняли/неприняли.
#38 by GenV
Зацикленность можно убрать если сохранять во временную таблицу всю проверенную номенклатуру. И соотв. накладывать общее условие с учетом этой таблицы. Тогда на 3-м этапе А уже отпадет.
#39 by Asmody
в пределе можем получить, что для любых товаров A0 и An, существуют товары А1, А2, ... An-1, такие, что A1 аналог A0, ... Аn аналог An-1. Вопрос - является ли в при этом An аналогом A0?
#40 by vde69
вообще нужно делать регистр связей и в нем хранить все возможные комбинации, пусть регистр  будет на миллион записей зато будет простой запрос. второй вариант это цикл со вложеным запросом на экзамене не прокатит, но на практике будет не таким уж плохим
#41 by vde69
+ и всякие зацикливания обрабатывать при записи в регистр, а не при чтении
#42 by Господин ПЖ
>>вообще нужно делать регистр связей и в нем хранить все возможные комбинации стуркутура у него какая будет?
#43 by Господин ПЖ
утяжеляете задачу. Это при записи ловить надо по хорошему.
#44 by mm_84
зачем а запросе искать аналоги аналогов? по логике если А аналог В, а С Аналог В то автоматом С аналог А.
#45 by mm_84
т.е. если В аналог А, а С Аналог В то автоматом С аналог А.
#46 by nop
СР, 2 измерения 0 ресурсов, по логике если А аналог Б, то и Б аналог А.
#47 by AquaKosh
Поделюсь своими мучениями с аналогами.... Конфа УПП. Делал отчёт М-29, но не простой, а с аналогами... Имея в наличии "идеальные" исходные данные, т.е. вариант , когда все друг другу аналоги, задачу решил одним большим запросом (штук 6-7 временных таблиц). Но учитывая, что поддерживать вариант на реальной базе оказалось достаточно сложно (не надо тут сейчас начинать кричать, что "да нет проблем, при записи всё контролируем"...), пришлось пересмотреть принцип и реализовать всё на 3-ёх ТЗ с поиском (типа ).
#48 by GenV
а у номенклатуры может быть только один аналог? А то мой вариант (одним запросом в цикле) тогда не прокатит. + получается при записи аналога Б -> С придется записывать еще и аналог А -> С.
#49 by PR
В запросе никак. Asmody в прав.
#50 by PR
1С часто дает задачки, которые можно понять по-разному. Уже давно известно лекарство, не выпендривайся и пойми, что имела ввиду 1С, а не пытайся прочитать задание, как юридический договор.
#51 by PR
Скорее всего одно из трех. Либо 1С имела ввиду, что уровень вложенности два, то есть аналоги у товаров и аналоги у аналоги у аналогов этих самых товаров. То есть к примеру аналоги аналогов аналогов не рассматриваются. Либо считалось, что запрос формируется после указания пользователем настроек, в которых можно понять, какой уровень вложенности требуется. Либо предполагалось, что все нужно закатать в СКД, а там уже пользователь сам выбирает, что хочет, то есть частный случай второго варианта. Это тоже реально. А засунуть в запрос сразу все аналоги, и товаров и аналогов и аналогов аналогов и т. д. - это вообще что-то непонятное, о чем речь-то?
#52 by nop
может оставить эту обязанность оператору ? Откуда знать машине точно знать что если А аналог Б, то при записи что Б аналог А, А таки действительно аналог С ??
#54 by Господин ПЖ
>>Уже давно известно лекарство, не выпендривайся и пойми, что имела ввиду 1С, а не пытайся прочитать задание, как юридический договор. это правда. я к первому варианту скланяюсь.
#55 by Serg_1960
Браво! Честное слово - я в восторге, без иронии. Действительно дословно "аналоги аналогов" обозначает двухуровневую конструкцию и ничего более.
#56 by КонецЦикла
Мдя...
#57 by Serg_1960
Мудрое и лаконичное замечание :))
#58 by Garkin
На ИТС статья есть о то как в СКД построить произвольную иерархию.
#59 by Garkin
+ хотя вот не помню как там дело обстоит с зацикливанием :)
#60 by Господин ПЖ
вот почти дословно. У товаров есть несколько аналогов. В свою очередь у аналогов есть свои аналоги. Т.е. есть куртка замшевая (КЗ), ее аналог - куртка велюровая (КВ), ее аналог в свою очередь - куртак кожанная (КК) и так далее. Если нет товара автоматом списываются его аналоги. Т.е. если нет КЗ, списывется КВ, если нет КВ - списывается КК. И так далее. Что есть это "И так далее"? Следующий уровень аналогов аналогов?
#61 by Serg_1960
"и так далее" - означает "неограниченная вложенность уровней" и... рекурсия с запросами в цикле... Эх, а счастье было так близко :(
#62 by Pashkaa
Тогда какое же условие выхода из рекурсии? Аналог.Аналог = Неопределено что ли?
#63 by КуплюКровать
у номенклатуры заводим таб часть "аналоги". При записи проверяем если в таб части есть номенклатура которая сама аналог то добавляем ссылку на текущий элемент еще в один элемент. Короче у КЗ в таб части будет 2 записи, КВ и КК
#64 by PR
Ну, если нужно все в одном запросе, то можно так. Получаем все остатки товаров, можно с фильтром по списку номенклатуры, куда входят все товары и аналоги из ТЧ, полученные никаким не запросом, а очень даже рекурсией. Потом перебирается ТЧ и ищется в результате запроса остаток для товара, если его нет, то для аналога и т. д. Но дебилизм конечно, я бы за такое убил.
#65 by Pashkaa
А вложенные запросы или пакетные тут ни как не помогут, хотя как..? Хм и это ведь уже механизм СКД а не запросов. Есть объект метаданных Новый Запрос; и я так понимаю нужно реализовывать им. Но ИМХО без циклов тут не обойтись, а запрос в цикле это сразу завал.
#66 by Господин ПЖ
а разница с РС Товар, Аналог в чем по существу? И потом - КК про то что она является аналогом КЗ "сама не знает".
#67 by Defender aka LINN
Это не цикл, а рекурсия будет :) А там уже главное - проверять, чтобы зацикливания не случилось.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С