powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Остаток товара
64 сообщений из 64, показаны все 3 страниц
Остаток товара
    #37767365
vlads2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Допустим, есть справочник товаров (tovar) с двумя полями
x(Serial) и name(text)
т.е. код товара и его наименование.
А также справочник складов (sklad) с аналогичными полями:
x(Serial) и name(text)
Третий справочник: справочник операций прихода/расхода (oper):
x(Serial), dat(data), xtovar(int), xsklad(int) и kol(int)
где поле kol - это кол-во прихода или расхода (штук) товара
dat - дата операции.
а xtovar и xsklad - ссылки на коды товара и склада.
Задача такова. При добавлении строки oper система должна автоматически в каком-нибудь третьем справочнике хранить актуальные остатки товара: справочник остатков (ost)
x(Serial), xtovar(int), xsklad(int) и kol(int).

Проблема, с которой я к Вам обращаюсь: Как я понимаю - это работа с триггерами. Алгоритм такой:
- Триггер должен сначала понять, есть ли вообще строка в справочнике ost (xtovar-xsklad) и если её нету - создать новую с нулевой суммой.
- Ну и в существующую или в созданную новую строку добавить/отнять необходимую сумму товара.

Вопросов несколько:
1) Если это делают несколько пользователей - не случится ли так что два пользователя одновременно не найдут пару (xtovar-xsklad) и создадут каждый свою такую пару. И получится дубляж строк. Как этого избежать.
2) Как понять триггеру, что нужной строки с уникальной парой (xtovar-xsklad) нет, чтобы он создал.
3) Может кто то какой то другой вариант решения проблемы.

Заранее спасибо.
...
Рейтинг: 0 / 0
Остаток товара
    #37767551
Ы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ы
Гость
vlads2,

1. PK(xtovar, xsklad) гарантирует уникальность
2. ничто не запрещает сделать проверочный select в триггере
...
Рейтинг: 0 / 0
Остаток товара
    #37767562
vlads2Вопросов несколько:
...
3) Может кто то какой то другой вариант решения проблемы.
...


ДА! Есть другие варианты решения проблемы
Предложенный Вами - не самый лучший.

vlads21) Если это делают несколько пользователей - не случится ли так что два пользователя одновременно не найдут пару (xtovar-
xsklad) и создадут каждый свою такую пару. И получится дубляж строк. Как этого избежать.

Для этого существуют ограничения. В данном случае ограничение уникальности на строку. (Если кто-то создаст новую строку с указанными парами полей, то возникнет нарушение ссылочной целостности.)

vlads22) Как понять триггеру, что нужной строки с уникальной парой (xtovar-xsklad) нет, чтобы он создал.

Так же как и любому другому запросу.

Настоятельно рекомендую Вам подтянуть теорию по базам данных.

Вы уверены, что система ДОЛЖНА ХРАНИТЬ остатки в каком-то третьем справочнике?
Может быть, их стоит рассчитывать при необходимости?
Тогда триггер не нужен, достаточно только view. А значит не возникает класс проблем, связанных с триггерами.

Кстати, с этой проблемой Вам нужно в топик "Проектирование БД"

Модератор: Тема перенесена из форума "PostgreSQL".
...
Рейтинг: 0 / 0
Остаток товара
    #37767638
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нужен соответствующий уровень блокировки транзакций
...
Рейтинг: 0 / 0
Остаток товара
    #37767649
Naf,
Интересно, как это приблизит автора топика к решению его проблемы?
...
Рейтинг: 0 / 0
Остаток товара
    #37767796
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlads2,

Ответ найдешь тут , мне просто лень повторяться. Что непонятного - спросишь, но думаю там все разжевано.
...
Рейтинг: 0 / 0
Остаток товара
    #37767799
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
\/\/\/\/\/\/\/\/\/\/\/\/как это приблизит автора топика к решению его проблемы?

Заставит одного пользователя подождать, пока другой работает с таблицей остатков.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Остаток товара
    #37767905
Dimitry Sibiryakov,

Имелось ввиду: повлияет ли это решение на текст триггеров или view. Какая поворотная точка произойдет после принятия данного решения.
(Да и вообще, отбросит ли пользователя с ошибкой сразу или чуть позже - в чем разница? Может и не отбросить вовсе -- но это уже расчет вероятностей)
...
Рейтинг: 0 / 0
Остаток товара
    #37767996
vlads2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет, сделать уникальность КодТовара-КодСклада. И тогда второй попадёт в ошибку. Так как такие проблемы будут очень редки - проблема как таковая решится сама.
...
Рейтинг: 0 / 0
Остаток товара
    #37768004
vlads2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А по поводу
\/\/\/\/\/\/\/\/\/\/\/\/ ДА! Есть другие варианты решения проблемы
Предложенный Вами - не самый лучший.
Подскажите вариант получше?

Для Злой Бобр спасибо, почитаю ссылочку
...
Рейтинг: 0 / 0
Остаток товара
    #37768019
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlads2Подскажите вариант получше?

Можно использовать только вставки, а время от времени их сворачивать. Тогда не будет ни
конфликтов, ни ожиданий, ни ошибок уникальности. Но работоспособность такой схемы зависит
от наличия в сервере TIL Snapshot. Без него работать не будет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Остаток товара
    #37768026
vlads2,

Я уже предложил: попробуйте не делать таблицу остатков и обслуживающие ее триггеры.

Сделайте примитивное view, которое выдает расчетное количество остатков на складе исходя из движения товаров.
Хотя Вы не рассказали всей задачи, поэтому однозначных ответов не будет.

А вообще все уже сделано до нас. И ссылка с обсуждением, указанная пользователем с ником Злой Бобр, не первая и не последняя.
...
Рейтинг: 0 / 0
Остаток товара
    #37768345
vlads2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
\/\/\/\/\/\/\/\/\/\/\/\/,

Программа проста. Есть товар - приход/расход.
Кол-во товаров ~1000. Операций много.
Просто есть 1С7 сетевая бухгалтерия. Ввиду того, что бухгалтерии не хватает уже мощей, да и база превышает 2 гига, а денеХ начальство жопит экономит на новое ПО, да и желание изучать что-то новое, когда знаешь толично 1С7 и PostgreSQL, как то не хочется.
Вот и решили - Adob Connection нам в руки для обмена с PostgreSQL (если не найдём что нить получше) и данные хранить в оной СУБД. И то, только нечто регистров, как съедающие большую часть базы
...
Рейтинг: 0 / 0
Остаток товара
    #37768354
vlads2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно, конечно и view использовать, да только постоянно расситывать при большом объёме информации будет как минимум дороговато по времени обработки. Операций около 100 в день * данные с 2004 года = около 300 тыс проводок.
...
Рейтинг: 0 / 0
Остаток товара
    #37768451
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlads2около 300 тыс проводок

Э-э-э... Простите, в разделе, посвящённом PG, над вами не смеются за то, что называете
такие цифры "большим объёмом"?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Остаток товара
    #37768455
vlads2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

Сервер тоже "экономный"
...
Рейтинг: 0 / 0
Остаток товара
    #37768491
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати, контроль отрицательных остатков требуется?
...
Рейтинг: 0 / 0
Остаток товара
    #37768526
vlads2Можно, конечно и view использовать, да только постоянно расситывать при большом объёме информации будет как минимум дороговато по времени обработки. Операций около 100 в день * данные с 2004 года = около 300 тыс проводок.

(красным выделил я)

Позвольте, а что такое "Инвентаризация", как часто она проводится и что дальше делается с результатами инвентаризации? Насколько подробно она описана в правилах бухучета?

Скорее всего, "данные с 2004 года" - это некоторое заблуждение.
Что мешает провести натурное испытание времени создания отображения на 300 тыс проводок?

Так как Вы упомянули 1С (прости-господи), то тут даже не в этот форум, а прямиком в профильный. Там Вам популярно объяснят, что 1С и экономия денег -- это взаимоисключающие параграфы. (Предлагаю вашему руководству пойти дальше: вовсе изъять компьютеры из бухгалтерии. Пусть считают руками на бумаге. ненуаче?)
...
Рейтинг: 0 / 0
Остаток товара
    #37768536
Dimitry SibiryakovЭ-э-э... Простите, в разделе, посвящённом PG, над вами не смеются за то, что называете
такие цифры "большим объёмом"?..


Подозреваю, что 100 операций в день не будут большими даже для форума 1с. То есть там тоже будут смеяться.
...
Рейтинг: 0 / 0
Остаток товара
    #37768770
vlads2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Согласен что будут смеяться, но всё-таки, хотя 1С оставить, а за 1C SQL не платить
...
Рейтинг: 0 / 0
Остаток товара
    #37768802
vlads2...
когда знаешь толично 1С7 и PostgreSQL
...

У меня есть сильные сомнения.

Еще раз повторяю: опишите проблему на профильном форуме. Наверняка эта проблема не нова (в том числе и явление экономных извращенцев).

В одной конторе сходную проблему решили выделенным файл-сервером на Linux, который очень быстро жонглировал файлами. Путем натрных экспериментов (буквально с часами в руке) это работало быстрее SQL версии. Подробностей не знаю, не моя сфера.
...
Рейтинг: 0 / 0
Остаток товара
    #37768825
vlads2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Знать бы ещё правильный сервер... :)

А так. Linux не дружит с 1C7.7 есть такие проблемы.
...
Рейтинг: 0 / 0
Остаток товара
    #37768828
vlads2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, ещё замечу... 1С ДБФ версия, что стоит у нас физически более 2 гигабайт не тянет, вернее тянет, но возникает риск ошибок
...
Рейтинг: 0 / 0
Остаток товара
    #37769208
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlads2,

Вы судя по всему незнаете ни постгреса ни темболее 1С. Поэтому предлагаю позвать даже не очень умного 1С-ника и все у вас будет работать. И даже на сервере начального уровня.
Можете как вариант купить 1С 8.х - там те же грабли только в профиль. Но лично я невижу никаких проблем что б у вас эта 1С-ка неработала. Хотя, вру - причина в никаком программисте (видимо ввиду нежелания руководства платить программисту).

ЗЫ. Сделаю за ящик хеннеси и мешок вяленой рыбы. И это вовсе не шутка или издевка.
...
Рейтинг: 0 / 0
Остаток товара
    #37769230
vlads2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Злой Бобр,

"Спасибо" злой Бобр за предположение, на то ты и злой бобр :), однако 1С я знаю, особенно семёрку. Хотя что я оправдываюсь. Я сюда пришёл за идеями а не за чем то-либо иным.
Пока оных я даже не услышалпрочёл.
То что начальство ограничивает в финансах, да, это проблема. Однако в планах перевести программу вообще на яву, так что от 1С вообще отойду, но на это надо время. Так как проблема с переходом заострилась остро сейчас (появляется новый удалённый отдел, на который ключик есть только бухгалтерский сетевой) ,что послужило заданному мной вопросу (просьбы совета).

Мне бы просто идейки как это делают другие, а там я дальше допетрю.
...
Рейтинг: 0 / 0
Остаток товара
    #37769234
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlads2,

Ну да, ну да ... Хотя ладно, дарю "идейку". Сделайте обрезку базы и будет вам счастье.
...
Рейтинг: 0 / 0
Остаток товара
    #37769292
vlads2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
:) 1С7 Бухгалтерия сетевая не SQL. Размер два гига, работает исключительно по сети... если низя поменять на иную компоненту (расчёт) или переписать (сжатые сроки) остаётся перенести большую часть информации в БД и просто обращаться к нужной информации при помощи селекта
...
Рейтинг: 0 / 0
Остаток товара
    #37769335
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlads2,

Ну если еще и исключительно по сети ... А база на какой ОС лежит? И сколько пользователей работают?
...
Рейтинг: 0 / 0
Остаток товара
    #37769339
vlads2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
10 пользователей, у всех хрюши
...
Рейтинг: 0 / 0
Остаток товара
    #37769342
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlads2,

А база где?
...
Рейтинг: 0 / 0
Остаток товара
    #37769402
vlads2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На "сервере". Просто один комп (1 ядро, 512 ОЗУ), на котором ключик висит
...
Рейтинг: 0 / 0
Остаток товара
    #37769407
vlads2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Память нарастим, 2 винта в зеркале стоит. Но от этого 1С быстрее работать не будет же :)
...
Рейтинг: 0 / 0
Остаток товара
    #37769581
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlads2 Но от этого 1С быстрее работать не будет же :)
Непонятно - это вопрос или утверждение?.. Когда сможете ответить на поставленный вопрос, тогда и получите ответ. А пока могу только посоветовать нанять программиста 1С и будет вам счастье.
...
Рейтинг: 0 / 0
Остаток товара
    #37769662
vlads2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нанять нет необходимости, оттого, что тут часть 1С программирования.

Короче так. Пока вчера я с вами обсуждал, накидал программу.
Все обороты выгрузил в PostgreSQL. Т.е. при проведении документы теперь выгружают обороты не в проводки, а в БД, теперь дело осталось только за отчётами. Часть уже подправил, остальную часть доделаю за неделю.
Единственное, что сеё обсуждение помогло - я отказался от регистров, остатки расчитываются в реальном времени
...
Рейтинг: 0 / 0
Остаток товара
    #37770090
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlads2,

Ну я надеюсь вы вазелином запаслись. Ждем следующей вашей ветки, ну или продолжения в этой. На тему почему несходятся данные и т.п.
...
Рейтинг: 0 / 0
Остаток товара
    #37770174
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Злой Бобрмогу только посоветовать нанять программиста 1С и будет вам счастье.

Не будет им счастья. Эти олухи царя небесного даже в железо не в состоянии
проинвестироваться, а ты предлагаешь гораздо более дорогого программиста...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Остаток товара
    #37771313
vlads2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

Ладно контору обгаживать, фирма мелкая, подработка, так сказать. Какие успехи / неудачи, если не забуду - расскажу.
...
Рейтинг: 0 / 0
Остаток товара
    #37771336
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlads2Ладно контору обгаживать
Да ты, собственно, это сделал сам. Никто же тебя не тянул за язык рассказывать, что
"сервером" работает машинка в полугигом ОЗУ и ХР на борту...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Остаток товара
    #37771564
zeon11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovvlads2Ладно контору обгаживать
Да ты, собственно, это сделал сам. Никто же тебя не тянул за язык рассказывать, что
"сервером" работает машинка в полугигом ОЗУ и ХР на борту...


Да на любой оптовке от владика до Калининграда эта конфигурация в 101 случае из ста. 2-5 рабочих мест, в качестве сервера в лучшем случае пыльный системник в углу с XP, а то и на так называемом сервере ещё и человечек сидит, ТОРГ-12 выдаёт. В качестве основной системы ломаная 1С 7.7, всё остальное, включая операционку, тоже пиз, извиняюсь, стыренное. "Поднимают" всё это какие-то ПТУ-шники за кусок хлеба. Таковы реалии российского мелкого бизнеса.
...
Рейтинг: 0 / 0
Остаток товара
    #37771985
vlads2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zeon11,

Не.. тут посолиднее... хрюша и ключик 1С - честные :)
Ну памяти будет два гига. Остальное не поменяется.
...
Рейтинг: 0 / 0
Остаток товара
    #37772111
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlads2Остальное не поменяется.
А зря. ХР - хреновейший файловый сервер из всех существующих. Для 1С гораздо лучше Samba
(ещё лучше Novell Netware, но где ж её нынче возьмёшь).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Остаток товара
    #37772113
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlads2zeon11,

Не.. тут посолиднее... хрюша и ключик 1С - честные :)
Ну памяти будет два гига. Остальное не поменяется. так что насчет контроля отрицательных остатков? это важно?
себестоимость нужно рассчитывать?
...
Рейтинг: 0 / 0
Остаток товара
    #37772115
zeon11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlads2,

По сабжу.
Я так понял, что твоя основная задача, (может быть ты сам ещё этого не осознал, но к этому идёт) постепенное незаметное вытеснение в отдельно взятой конторе бизнес-процессов с 1С на свою систему.
По-сему у тебя будет следующая проблема - когда начнёшь выдавать "на горячую" ТОРГ-12, то система не сможет быстро предоставлять операторам текущие остатки, чтобы склад не ушёл в "минус". Поэтому, лучше сразу запланировать рабочую таблицу с текущими остатками по складам, обновляемую триггерами первички. Если-же кому-то понадобятся остатки на какую-то дату, то тогда SQL-запрос по первичке. В этом случае пару секунд можно и подождать
...
Рейтинг: 0 / 0
Остаток товара
    #37772152
zeon11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovvlads2Остальное не поменяется.
А зря. ХР - хреновейший файловый сервер из всех существующих. Для 1С гораздо лучше Samba
(ещё лучше Novell Netware, но где ж её нынче возьмёшь).


Под самбу нужон отдельный системник, за который уж точно никого не посадишь работать.
Меня один чел лет десять назад спрашивал, а как-бы за один системник двух человек посадить, типа две мышки, две клавиатуры и один системник.
Я его тогда спросил, а мониторов два или один желаете?
Он оживился и спросил, а что, можно один?

Смешно, но где-то лет пять назад я видел работающую такую систему под Linux
...
Рейтинг: 0 / 0
Остаток товара
    #37772196
vlads2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Naf,

себестоимость - партиционный учёт будет. От этого и будет контроль отрицательных остатков. Просто партии я не расписывал здесь - сам догадаюся как это нарисовать. Допетрю
...
Рейтинг: 0 / 0
Остаток товара
    #37785578
vlads2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как и обещал - итоги миграции:
Миграция завершена успешно, точнее её первая часть.
База готова, всё сделал через ODBC. Единственное, контроля отрицательных остатков не стал делать - просто при выборе товара показывается только тот товар, у которого есть остаток. Так сказать - защита от дурака.
Да, уточнил кол-во операций, оказалось их около миллиона. Постгрюха на раз-два щёлкает.
Итого остаток товара считается довольно быстро, за исключением, если мы хотим получить остаток по всему товару сразу, запрос выполняется секунды 4, загружается ещё секунд десять. Т.е. 15 секунд на отчёт... ну, в принципе, я просто попросил открывать товар по папкам, дабы отчёт формировался очень быстро.
Ну да ладно.

Вопросец появился, о великие гуру программирования. Пока я делаю это средствами самой 1С, но хочется всё-таки задействоавть запросы.

Есть Таблица
tovar parent name ispapka
Код товара, код родителя, наименование товара и признак, что это папка а не товар (1 - папка).
Проблема вот в чём, если я хочу узнать остаток товаров из папки с кодом, скажем 7, то у меня возникает задача:
...
Рейтинг: 0 / 0
Остаток товара
    #37785580
vlads2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Простите, продолжу:
Родитель с кодом 7, значит получить остатки товаров, у кого код родителя равен 7, а также рекурсивно по всем папкам, у которых код родителя равен 7 также проделать такую же фигню.
Вот как это сделать быстро в селекте.

Т.е. пока покажите пример - вывести весть товар в папке родителя с кодом 7:
SELECT name FROM tovar WHERE PARENT=7
даёт только товар в папке с кодом 7, но не даёт список товаров во вложенных подпапках... и как решить данную проблему быстро - не знаю
...
Рейтинг: 0 / 0
Остаток товара
    #37785616
Last1Cmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlads2Простите, продолжу:
Родитель с кодом 7, значит получить остатки товаров, у кого код родителя равен 7, а также рекурсивно по всем папкам, у которых код родителя равен 7 также проделать такую же фигню.
Вот как это сделать быстро в селекте.

Т.е. пока покажите пример - вывести весть товар в папке родителя с кодом 7:
SELECT name FROM tovar WHERE PARENT=7
даёт только товар в папке с кодом 7, но не даёт список товаров во вложенных подпапках... и как решить данную проблему быстро - не знаю

если не знать количество уровней заранее то только рекурсией что таки да, долго
...
Рейтинг: 0 / 0
Остаток товара
    #37785772
vlads2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Last1Cmen,

Даже если долго, то как?
Я, конечно, могу сделать процедурку, которая рекусивно мне будет собирать данные, иного выхода не придумал.

Типа получить список подчинённых и для каждого подчинённого, кто является папкой запустить ту же процедуру и всё это вернуть.
Ну а селектом просто это, получается, нельзя сделать
...
Рейтинг: 0 / 0
Остаток товара
    #37785813
Last1Cmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlads2Last1Cmen,

Даже если долго, то как?
Я, конечно, могу сделать процедурку, которая рекусивно мне будет собирать данные, иного выхода не придумал.

Типа получить список подчинённых и для каждого подчинённого, кто является папкой запустить ту же процедуру и всё это вернуть.
Ну а селектом просто это, получается, нельзя сделать

селектом можно через join всех уровней иерахического справочника, это будет быстрее нежели рекурсией проходить по всем родителям в иерархическом справочнике пока не уткнешся в признак "пустого" родителя или другого признака "корневого" элемента (ну или в искомое)

НО для того чтобы организовать такие джоины необходимо знать заранее количество уровней вложенности ("иерархии") справочника... т.к. это одна таблица и код запроса нужно делать с таким количесвом подзапросов (по этой же таблице) сколько у вас уровней вложенности
...
Рейтинг: 0 / 0
Остаток товара
    #37785816
Last1Cmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlads2Last1Cmen,

Даже если долго, то как?
Я, конечно, могу сделать процедурку, которая рекусивно мне будет собирать данные, иного выхода не придумал.

Типа получить список подчинённых и для каждого подчинённого, кто является папкой запустить ту же процедуру и всё это вернуть.
Ну а селектом просто это, получается, нельзя сделать

просто ещё и задачи бывают разные
скажем проверка вхождения в группу когда элементов группы не сильно много (понятие много для каждого выводиться опытным путем) ... в моей среде 1С мне удобнее получать (в разумных пределах) общий список элементов входящих в группу средствами самой платформы и уже этот список временной таблицей передавать в запрос СКЛ и по нему уже осуществлять выборки по необходимым таблицам
...
Рейтинг: 0 / 0
Остаток товара
    #37785830
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Last1CmenНО для того чтобы организовать такие джоины необходимо знать заранее количество уровней
вложенности ("иерархии") справочника...

или спроектировать справочник с избыточными связями, чтобы при добавлении элемента он
связывался не только с непосредственным родителем, но и со всеми остальными предками.
Тогда не нужны ни рекурсия, ни многочисленные джоины.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Остаток товара
    #37785849
Last1Cmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovLast1CmenНО для того чтобы организовать такие джоины необходимо знать заранее количество уровней
вложенности ("иерархии") справочника...

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


возможен и такой вариант
жесткая фиксация списка родителей
в качестве дублирующей структуры для запросов почему бы и нет

почему дублирующей ? избыточен и сложнее в поддержке для полной реализации (заполнение при создании, контроль переноса в другую группу, контроль за уровнем вложености и уникальности вложений, некоторые проблемы с отображением в гридах/деревьях ) но в некоторых случаях имеет право на существование...
...
Рейтинг: 0 / 0
Остаток товара
    #37786024
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Last1Cmenсложнее в поддержке для полной реализации

Однострочные триггера сложны в поддержке?.. Ню-ню...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Остаток товара
    #37786281
Last1Cmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovLast1Cmenсложнее в поддержке для полной реализации

Однострочные триггера сложны в поддержке?.. Ню-ню...


это только для смены местонахождения элемента опять же если меняется структура самого справочника или интерфейсные привязки ("проводник" в гриде скажем и т.д.)

да и какие тут тригера если у человека проблема с селектом
...
Рейтинг: 0 / 0
Остаток товара
    #37786501
vlads2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я как понимаю, вы предлагаете, чтобы при создании элемента в служебной таблице вводились все связи с родительскими папками... хм... не, тогда от рекурсии мы не уходим, он происходит при создании элемента, зато селект упрощается.

НО, если элемент необходимо будет перетащить в другую папку (сменить родителя), необходмо предусмотреть перезаполнение служебной таблицы... Это усложняет дело.

Хотя большое спасибо за идейку.
...
Рейтинг: 0 / 0
Остаток товара
    #37786507
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlads2тогда от рекурсии мы не уходим
С чего бы вдруг?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Остаток товара
    #37786529
vlads2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakovvlads2тогда от рекурсии мы не уходим
С чего бы вдруг?..


А когда мы заполняем подчинённую таблицу - рекурсии не будет?
...
Рейтинг: 0 / 0
Остаток товара
    #37786555
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlads2А когда мы заполняем подчинённую таблицу - рекурсии не будет?

Нет, конечно. Эта схема принципиально предназначена для исключения рекурсии в деревьях
неограниченной высоты/глубины.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Остаток товара
    #37786643
vlads2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakovvlads2А когда мы заполняем подчинённую таблицу - рекурсии не будет?

Нет, конечно. Эта схема принципиально предназначена для исключения рекурсии в деревьях
неограниченной высоты/глубины.


Создаём элемент в родителе. Мы должны сначала сделать связь в служебной таблице:
Родитель - Элемент
...
Рейтинг: 0 / 0
Остаток товара
    #37786644
vlads2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
продолжу...
Создаём элемент в родителе. Мы должны сначала сделать связь в служебной таблице:
Родитель - Элемент, Затем Родитель.Родитель - Элемент, затем Родитель.Родитель.Родитель - Элемент и т.д.
Почему это не рекурсия. Али что то я не допетрю?
...
Рейтинг: 0 / 0
Остаток товара
    #37786673
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlads2Почему это не рекурсия. Али что то я не допетрю?

Потому что все связи для родителя уже созданы. Достаточно их скопировать:
Код: sql
1.
2.
insert into links (parent,child)
   select parent,new.child from links where child=new.parent


Где тут рекурсия?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Остаток товара
    #37786700
vlads2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

Дмитрий, снимаю шляпу!!!
...
Рейтинг: 0 / 0
Остаток товара
    #37787208
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlads2Dimitry Sibiryakov,

Дмитрий, снимаю шляпу!!!
После таких разжёвываний уже не снимать - а съедать пора :).
...
Рейтинг: 0 / 0
64 сообщений из 64, показаны все 3 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Остаток товара
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]