|
|
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
Допустим, есть справочник товаров (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) Может кто то какой то другой вариант решения проблемы. Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2012, 07:02 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
vlads2, 1. PK(xtovar, xsklad) гарантирует уникальность 2. ничто не запрещает сделать проверочный select в триггере ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2012, 10:02 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
vlads2Вопросов несколько: ... 3) Может кто то какой то другой вариант решения проблемы. ... ДА! Есть другие варианты решения проблемы Предложенный Вами - не самый лучший. vlads21) Если это делают несколько пользователей - не случится ли так что два пользователя одновременно не найдут пару (xtovar- xsklad) и создадут каждый свою такую пару. И получится дубляж строк. Как этого избежать. Для этого существуют ограничения. В данном случае ограничение уникальности на строку. (Если кто-то создаст новую строку с указанными парами полей, то возникнет нарушение ссылочной целостности.) vlads22) Как понять триггеру, что нужной строки с уникальной парой (xtovar-xsklad) нет, чтобы он создал. Так же как и любому другому запросу. Настоятельно рекомендую Вам подтянуть теорию по базам данных. Вы уверены, что система ДОЛЖНА ХРАНИТЬ остатки в каком-то третьем справочнике? Может быть, их стоит рассчитывать при необходимости? Тогда триггер не нужен, достаточно только view. А значит не возникает класс проблем, связанных с триггерами. Кстати, с этой проблемой Вам нужно в топик "Проектирование БД" Модератор: Тема перенесена из форума "PostgreSQL". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2012, 10:09 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
нужен соответствующий уровень блокировки транзакций ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2012, 10:38 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
Naf, Интересно, как это приблизит автора топика к решению его проблемы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2012, 10:41 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
vlads2, Ответ найдешь тут , мне просто лень повторяться. Что непонятного - спросишь, но думаю там все разжевано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2012, 11:39 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
\/\/\/\/\/\/\/\/\/\/\/\/как это приблизит автора топика к решению его проблемы? Заставит одного пользователя подождать, пока другой работает с таблицей остатков. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2012, 11:40 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Имелось ввиду: повлияет ли это решение на текст триггеров или view. Какая поворотная точка произойдет после принятия данного решения. (Да и вообще, отбросит ли пользователя с ошибкой сразу или чуть позже - в чем разница? Может и не отбросить вовсе -- но это уже расчет вероятностей) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2012, 12:20 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
Нет, сделать уникальность КодТовара-КодСклада. И тогда второй попадёт в ошибку. Так как такие проблемы будут очень редки - проблема как таковая решится сама. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2012, 12:48 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
А по поводу \/\/\/\/\/\/\/\/\/\/\/\/ ДА! Есть другие варианты решения проблемы Предложенный Вами - не самый лучший. Подскажите вариант получше? Для Злой Бобр спасибо, почитаю ссылочку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2012, 12:50 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
vlads2Подскажите вариант получше? Можно использовать только вставки, а время от времени их сворачивать. Тогда не будет ни конфликтов, ни ожиданий, ни ошибок уникальности. Но работоспособность такой схемы зависит от наличия в сервере TIL Snapshot. Без него работать не будет. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2012, 12:54 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
vlads2, Я уже предложил: попробуйте не делать таблицу остатков и обслуживающие ее триггеры. Сделайте примитивное view, которое выдает расчетное количество остатков на складе исходя из движения товаров. Хотя Вы не рассказали всей задачи, поэтому однозначных ответов не будет. А вообще все уже сделано до нас. И ссылка с обсуждением, указанная пользователем с ником Злой Бобр, не первая и не последняя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2012, 12:57 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
\/\/\/\/\/\/\/\/\/\/\/\/, Программа проста. Есть товар - приход/расход. Кол-во товаров ~1000. Операций много. Просто есть 1С7 сетевая бухгалтерия. Ввиду того, что бухгалтерии не хватает уже мощей, да и база превышает 2 гига, а денеХ начальство жопит экономит на новое ПО, да и желание изучать что-то новое, когда знаешь толично 1С7 и PostgreSQL, как то не хочется. Вот и решили - Adob Connection нам в руки для обмена с PostgreSQL (если не найдём что нить получше) и данные хранить в оной СУБД. И то, только нечто регистров, как съедающие большую часть базы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2012, 15:10 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
Можно, конечно и view использовать, да только постоянно расситывать при большом объёме информации будет как минимум дороговато по времени обработки. Операций около 100 в день * данные с 2004 года = около 300 тыс проводок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2012, 15:12 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
vlads2около 300 тыс проводок Э-э-э... Простите, в разделе, посвящённом PG, над вами не смеются за то, что называете такие цифры "большим объёмом"?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2012, 15:42 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Сервер тоже "экономный" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2012, 15:44 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
кстати, контроль отрицательных остатков требуется? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2012, 15:53 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
vlads2Можно, конечно и view использовать, да только постоянно расситывать при большом объёме информации будет как минимум дороговато по времени обработки. Операций около 100 в день * данные с 2004 года = около 300 тыс проводок. (красным выделил я) Позвольте, а что такое "Инвентаризация", как часто она проводится и что дальше делается с результатами инвентаризации? Насколько подробно она описана в правилах бухучета? Скорее всего, "данные с 2004 года" - это некоторое заблуждение. Что мешает провести натурное испытание времени создания отображения на 300 тыс проводок? Так как Вы упомянули 1С (прости-господи), то тут даже не в этот форум, а прямиком в профильный. Там Вам популярно объяснят, что 1С и экономия денег -- это взаимоисключающие параграфы. (Предлагаю вашему руководству пойти дальше: вовсе изъять компьютеры из бухгалтерии. Пусть считают руками на бумаге. ненуаче?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2012, 16:02 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovЭ-э-э... Простите, в разделе, посвящённом PG, над вами не смеются за то, что называете такие цифры "большим объёмом"?.. Подозреваю, что 100 операций в день не будут большими даже для форума 1с. То есть там тоже будут смеяться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2012, 16:04 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
Согласен что будут смеяться, но всё-таки, хотя 1С оставить, а за 1C SQL не платить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2012, 16:58 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
vlads2... когда знаешь толично 1С7 и PostgreSQL ... У меня есть сильные сомнения. Еще раз повторяю: опишите проблему на профильном форуме. Наверняка эта проблема не нова (в том числе и явление экономных извращенцев). В одной конторе сходную проблему решили выделенным файл-сервером на Linux, который очень быстро жонглировал файлами. Путем натрных экспериментов (буквально с часами в руке) это работало быстрее SQL версии. Подробностей не знаю, не моя сфера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2012, 17:07 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
Знать бы ещё правильный сервер... :) А так. Linux не дружит с 1C7.7 есть такие проблемы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2012, 17:13 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
Да, ещё замечу... 1С ДБФ версия, что стоит у нас физически более 2 гигабайт не тянет, вернее тянет, но возникает риск ошибок ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2012, 17:15 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
vlads2, Вы судя по всему незнаете ни постгреса ни темболее 1С. Поэтому предлагаю позвать даже не очень умного 1С-ника и все у вас будет работать. И даже на сервере начального уровня. Можете как вариант купить 1С 8.х - там те же грабли только в профиль. Но лично я невижу никаких проблем что б у вас эта 1С-ка неработала. Хотя, вру - причина в никаком программисте (видимо ввиду нежелания руководства платить программисту). ЗЫ. Сделаю за ящик хеннеси и мешок вяленой рыбы. И это вовсе не шутка или издевка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2012, 19:24 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
Злой Бобр, "Спасибо" злой Бобр за предположение, на то ты и злой бобр :), однако 1С я знаю, особенно семёрку. Хотя что я оправдываюсь. Я сюда пришёл за идеями а не за чем то-либо иным. Пока оных я даже не услышалпрочёл. То что начальство ограничивает в финансах, да, это проблема. Однако в планах перевести программу вообще на яву, так что от 1С вообще отойду, но на это надо время. Так как проблема с переходом заострилась остро сейчас (появляется новый удалённый отдел, на который ключик есть только бухгалтерский сетевой) ,что послужило заданному мной вопросу (просьбы совета). Мне бы просто идейки как это делают другие, а там я дальше допетрю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2012, 19:34 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
vlads2, Ну да, ну да ... Хотя ладно, дарю "идейку". Сделайте обрезку базы и будет вам счастье. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2012, 19:37 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
:) 1С7 Бухгалтерия сетевая не SQL. Размер два гига, работает исключительно по сети... если низя поменять на иную компоненту (расчёт) или переписать (сжатые сроки) остаётся перенести большую часть информации в БД и просто обращаться к нужной информации при помощи селекта ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2012, 20:11 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
vlads2, Ну если еще и исключительно по сети ... А база на какой ОС лежит? И сколько пользователей работают? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2012, 20:38 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
10 пользователей, у всех хрюши ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2012, 20:40 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
vlads2, А база где? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2012, 20:41 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
На "сервере". Просто один комп (1 ядро, 512 ОЗУ), на котором ключик висит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2012, 21:23 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
Память нарастим, 2 винта в зеркале стоит. Но от этого 1С быстрее работать не будет же :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2012, 21:29 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
vlads2 Но от этого 1С быстрее работать не будет же :) Непонятно - это вопрос или утверждение?.. Когда сможете ответить на поставленный вопрос, тогда и получите ответ. А пока могу только посоветовать нанять программиста 1С и будет вам счастье. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2012, 01:10 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
Нанять нет необходимости, оттого, что тут часть 1С программирования. Короче так. Пока вчера я с вами обсуждал, накидал программу. Все обороты выгрузил в PostgreSQL. Т.е. при проведении документы теперь выгружают обороты не в проводки, а в БД, теперь дело осталось только за отчётами. Часть уже подправил, остальную часть доделаю за неделю. Единственное, что сеё обсуждение помогло - я отказался от регистров, остатки расчитываются в реальном времени ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2012, 06:56 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
vlads2, Ну я надеюсь вы вазелином запаслись. Ждем следующей вашей ветки, ну или продолжения в этой. На тему почему несходятся данные и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2012, 11:29 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
Злой Бобрмогу только посоветовать нанять программиста 1С и будет вам счастье. Не будет им счастья. Эти олухи царя небесного даже в железо не в состоянии проинвестироваться, а ты предлагаешь гораздо более дорогого программиста... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2012, 11:54 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Ладно контору обгаживать, фирма мелкая, подработка, так сказать. Какие успехи / неудачи, если не забуду - расскажу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2012, 19:40 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
vlads2Ладно контору обгаживать Да ты, собственно, это сделал сам. Никто же тебя не тянул за язык рассказывать, что "сервером" работает машинка в полугигом ОЗУ и ХР на борту... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2012, 20:13 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovvlads2Ладно контору обгаживать Да ты, собственно, это сделал сам. Никто же тебя не тянул за язык рассказывать, что "сервером" работает машинка в полугигом ОЗУ и ХР на борту... Да на любой оптовке от владика до Калининграда эта конфигурация в 101 случае из ста. 2-5 рабочих мест, в качестве сервера в лучшем случае пыльный системник в углу с XP, а то и на так называемом сервере ещё и человечек сидит, ТОРГ-12 выдаёт. В качестве основной системы ломаная 1С 7.7, всё остальное, включая операционку, тоже пиз, извиняюсь, стыренное. "Поднимают" всё это какие-то ПТУ-шники за кусок хлеба. Таковы реалии российского мелкого бизнеса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2012, 06:25 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
zeon11, Не.. тут посолиднее... хрюша и ключик 1С - честные :) Ну памяти будет два гига. Остальное не поменяется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2012, 12:04 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
vlads2Остальное не поменяется. А зря. ХР - хреновейший файловый сервер из всех существующих. Для 1С гораздо лучше Samba (ещё лучше Novell Netware, но где ж её нынче возьмёшь). Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2012, 12:39 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
vlads2zeon11, Не.. тут посолиднее... хрюша и ключик 1С - честные :) Ну памяти будет два гига. Остальное не поменяется. так что насчет контроля отрицательных остатков? это важно? себестоимость нужно рассчитывать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2012, 12:39 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
vlads2, По сабжу. Я так понял, что твоя основная задача, (может быть ты сам ещё этого не осознал, но к этому идёт) постепенное незаметное вытеснение в отдельно взятой конторе бизнес-процессов с 1С на свою систему. По-сему у тебя будет следующая проблема - когда начнёшь выдавать "на горячую" ТОРГ-12, то система не сможет быстро предоставлять операторам текущие остатки, чтобы склад не ушёл в "минус". Поэтому, лучше сразу запланировать рабочую таблицу с текущими остатками по складам, обновляемую триггерами первички. Если-же кому-то понадобятся остатки на какую-то дату, то тогда SQL-запрос по первичке. В этом случае пару секунд можно и подождать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2012, 12:40 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovvlads2Остальное не поменяется. А зря. ХР - хреновейший файловый сервер из всех существующих. Для 1С гораздо лучше Samba (ещё лучше Novell Netware, но где ж её нынче возьмёшь). Под самбу нужон отдельный системник, за который уж точно никого не посадишь работать. Меня один чел лет десять назад спрашивал, а как-бы за один системник двух человек посадить, типа две мышки, две клавиатуры и один системник. Я его тогда спросил, а мониторов два или один желаете? Он оживился и спросил, а что, можно один? Смешно, но где-то лет пять назад я видел работающую такую систему под Linux ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2012, 12:54 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
Naf, себестоимость - партиционный учёт будет. От этого и будет контроль отрицательных остатков. Просто партии я не расписывал здесь - сам догадаюся как это нарисовать. Допетрю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2012, 13:05 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
Как и обещал - итоги миграции: Миграция завершена успешно, точнее её первая часть. База готова, всё сделал через ODBC. Единственное, контроля отрицательных остатков не стал делать - просто при выборе товара показывается только тот товар, у которого есть остаток. Так сказать - защита от дурака. Да, уточнил кол-во операций, оказалось их около миллиона. Постгрюха на раз-два щёлкает. Итого остаток товара считается довольно быстро, за исключением, если мы хотим получить остаток по всему товару сразу, запрос выполняется секунды 4, загружается ещё секунд десять. Т.е. 15 секунд на отчёт... ну, в принципе, я просто попросил открывать товар по папкам, дабы отчёт формировался очень быстро. Ну да ладно. Вопросец появился, о великие гуру программирования. Пока я делаю это средствами самой 1С, но хочется всё-таки задействоавть запросы. Есть Таблица tovar parent name ispapka Код товара, код родителя, наименование товара и признак, что это папка а не товар (1 - папка). Проблема вот в чём, если я хочу узнать остаток товаров из папки с кодом, скажем 7, то у меня возникает задача: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2012, 22:09 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
Простите, продолжу: Родитель с кодом 7, значит получить остатки товаров, у кого код родителя равен 7, а также рекурсивно по всем папкам, у которых код родителя равен 7 также проделать такую же фигню. Вот как это сделать быстро в селекте. Т.е. пока покажите пример - вывести весть товар в папке родителя с кодом 7: SELECT name FROM tovar WHERE PARENT=7 даёт только товар в папке с кодом 7, но не даёт список товаров во вложенных подпапках... и как решить данную проблему быстро - не знаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2012, 22:13 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
vlads2Простите, продолжу: Родитель с кодом 7, значит получить остатки товаров, у кого код родителя равен 7, а также рекурсивно по всем папкам, у которых код родителя равен 7 также проделать такую же фигню. Вот как это сделать быстро в селекте. Т.е. пока покажите пример - вывести весть товар в папке родителя с кодом 7: SELECT name FROM tovar WHERE PARENT=7 даёт только товар в папке с кодом 7, но не даёт список товаров во вложенных подпапках... и как решить данную проблему быстро - не знаю если не знать количество уровней заранее то только рекурсией что таки да, долго ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2012, 23:57 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
Last1Cmen, Даже если долго, то как? Я, конечно, могу сделать процедурку, которая рекусивно мне будет собирать данные, иного выхода не придумал. Типа получить список подчинённых и для каждого подчинённого, кто является папкой запустить ту же процедуру и всё это вернуть. Ну а селектом просто это, получается, нельзя сделать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2012, 10:14 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
vlads2Last1Cmen, Даже если долго, то как? Я, конечно, могу сделать процедурку, которая рекусивно мне будет собирать данные, иного выхода не придумал. Типа получить список подчинённых и для каждого подчинённого, кто является папкой запустить ту же процедуру и всё это вернуть. Ну а селектом просто это, получается, нельзя сделать селектом можно через join всех уровней иерахического справочника, это будет быстрее нежели рекурсией проходить по всем родителям в иерархическом справочнике пока не уткнешся в признак "пустого" родителя или другого признака "корневого" элемента (ну или в искомое) НО для того чтобы организовать такие джоины необходимо знать заранее количество уровней вложенности ("иерархии") справочника... т.к. это одна таблица и код запроса нужно делать с таким количесвом подзапросов (по этой же таблице) сколько у вас уровней вложенности ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2012, 10:56 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
vlads2Last1Cmen, Даже если долго, то как? Я, конечно, могу сделать процедурку, которая рекусивно мне будет собирать данные, иного выхода не придумал. Типа получить список подчинённых и для каждого подчинённого, кто является папкой запустить ту же процедуру и всё это вернуть. Ну а селектом просто это, получается, нельзя сделать просто ещё и задачи бывают разные скажем проверка вхождения в группу когда элементов группы не сильно много (понятие много для каждого выводиться опытным путем) ... в моей среде 1С мне удобнее получать (в разумных пределах) общий список элементов входящих в группу средствами самой платформы и уже этот список временной таблицей передавать в запрос СКЛ и по нему уже осуществлять выборки по необходимым таблицам ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2012, 11:01 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
Last1CmenНО для того чтобы организовать такие джоины необходимо знать заранее количество уровней вложенности ("иерархии") справочника... или спроектировать справочник с избыточными связями, чтобы при добавлении элемента он связывался не только с непосредственным родителем, но и со всеми остальными предками. Тогда не нужны ни рекурсия, ни многочисленные джоины. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2012, 11:18 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovLast1CmenНО для того чтобы организовать такие джоины необходимо знать заранее количество уровней вложенности ("иерархии") справочника... или спроектировать справочник с избыточными связями, чтобы при добавлении элемента он связывался не только с непосредственным родителем, но и со всеми остальными предками. Тогда не нужны ни рекурсия, ни многочисленные джоины. возможен и такой вариант жесткая фиксация списка родителей в качестве дублирующей структуры для запросов почему бы и нет почему дублирующей ? избыточен и сложнее в поддержке для полной реализации (заполнение при создании, контроль переноса в другую группу, контроль за уровнем вложености и уникальности вложений, некоторые проблемы с отображением в гридах/деревьях ) но в некоторых случаях имеет право на существование... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2012, 11:37 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
Last1Cmenсложнее в поддержке для полной реализации Однострочные триггера сложны в поддержке?.. Ню-ню... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2012, 14:18 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovLast1Cmenсложнее в поддержке для полной реализации Однострочные триггера сложны в поддержке?.. Ню-ню... это только для смены местонахождения элемента опять же если меняется структура самого справочника или интерфейсные привязки ("проводник" в гриде скажем и т.д.) да и какие тут тригера если у человека проблема с селектом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2012, 18:34 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
Я как понимаю, вы предлагаете, чтобы при создании элемента в служебной таблице вводились все связи с родительскими папками... хм... не, тогда от рекурсии мы не уходим, он происходит при создании элемента, зато селект упрощается. НО, если элемент необходимо будет перетащить в другую папку (сменить родителя), необходмо предусмотреть перезаполнение служебной таблицы... Это усложняет дело. Хотя большое спасибо за идейку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2012, 22:58 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
vlads2тогда от рекурсии мы не уходим С чего бы вдруг?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2012, 23:04 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovvlads2тогда от рекурсии мы не уходим С чего бы вдруг?.. А когда мы заполняем подчинённую таблицу - рекурсии не будет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2012, 23:49 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
vlads2А когда мы заполняем подчинённую таблицу - рекурсии не будет? Нет, конечно. Эта схема принципиально предназначена для исключения рекурсии в деревьях неограниченной высоты/глубины. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2012, 00:25 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovvlads2А когда мы заполняем подчинённую таблицу - рекурсии не будет? Нет, конечно. Эта схема принципиально предназначена для исключения рекурсии в деревьях неограниченной высоты/глубины. Создаём элемент в родителе. Мы должны сначала сделать связь в служебной таблице: Родитель - Элемент ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2012, 08:43 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
продолжу... Создаём элемент в родителе. Мы должны сначала сделать связь в служебной таблице: Родитель - Элемент, Затем Родитель.Родитель - Элемент, затем Родитель.Родитель.Родитель - Элемент и т.д. Почему это не рекурсия. Али что то я не допетрю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2012, 08:44 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
vlads2Почему это не рекурсия. Али что то я не допетрю? Потому что все связи для родителя уже созданы. Достаточно их скопировать: Код: sql 1. 2. Где тут рекурсия? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2012, 11:13 |
|
||
|
Остаток товара
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Дмитрий, снимаю шляпу!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2012, 12:40 |
|
||
|
|

start [/forum/topic.php?all=1&fid=32&tid=1541690]: |
0ms |
get settings: |
5ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
56ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
76ms |
get tp. blocked users: |
1ms |
| others: | 195ms |
| total: | 361ms |

| 0 / 0 |
