|
|
|
Остаток товара
|
|||
|---|---|---|---|
|
#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 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=37768019&tid=1541690]: |
0ms |
get settings: |
5ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
66ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 246ms |
| total: | 392ms |

| 0 / 0 |
