02.02.2006, 12:27 | #61 |
злыдень
|
Цитата:
Сообщение от MironovI
To Recoilme - Начиная с версии 3.0 все запросы без хита forupdate на куле выглядят как select from table (nolock) - поэтому для отчетов вотпросы с блокировками на запись чтение не актуальны, поправьте если я не прав..
Но ведь гораздо интересней, если он прочитает ссылки, разберется с этой проблемой и найдет другие пути её решения, разве я не прав?
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/ |
|
02.02.2006, 12:48 | #62 |
Гость
|
Цитата:
Сообщение от kvan
А кому нужно было предложить?
Те кто понимает о чем речь и так знают, только вопрос такой - во сколько вы оцениваете трудозатраты на такую модификацию? кому кому, афтару треда а оценка трудозатрат - это уже второй вопрос, кстати я не считаю, что это такая уж сложная модификация, к тому же аналогичная уже есть, можно содрать оттуда |
|
02.02.2006, 12:51 | #63 |
Участник
|
Цитата:
Сообщение от ahtoh
кому кому, афтару треда
а оценка трудозатрат - это уже второй вопрос, кстати я не считаю, что это такая уж сложная модификация, к тому же аналогичная уже есть, можно содрать оттуда |
|
02.02.2006, 13:06 | #64 |
Участник
|
Цитата:
Сообщение от ahtoh
кому кому, афтару треда
а оценка трудозатрат - это уже второй вопрос, кстати я не считаю, что это такая уж сложная модификация, к тому же аналогичная уже есть, можно содрать оттуда Предложенная модификация породит другие проблемы. и совершенно другой подход к программированию. в частности, промежуточные остатки надо закрывать (сводить к нулю) см. http://1c.mazzy.ru/articles/generation1c/#070 |
|
|
За это сообщение автора поблагодарили: dn (3). |
02.02.2006, 13:18 | #65 |
Гость
|
необязательно закрывать, да, таблица с итогами будет немаленькой, но все равно это будет работать быстрее, чем считать сумму с начала первоздания (или отматывать с конца)
|
|
02.02.2006, 13:23 | #66 |
Гость
|
ну а насчет трудозатрат - тут ведь все относительно, если сильно нужно - то сделать можно
|
|
02.02.2006, 13:32 | #67 |
Участник
|
Цитата:
Сообщение от ahtoh
необязательно закрывать, да, таблица с итогами будет немаленькой, но все равно это будет работать быстрее, чем считать сумму с начала первоздания (или отматывать с конца)
Вы просто не пробовали. Попробуйте. Как? Просто: Например, заведите по 1000 (например) финансовых аналитик и job'иком разнесите проводки со случайными комбинацияем аналитик. А теперь перенесите начальное сальдо на несколько лет с сохранением аналитики. А потом расскажите во сколько раз таблица промежуточных итогов превышает таблицу проводок. Нет, уж... Если вы не предусматриваете механизмы закрытия в ноль, то лучше советуйте получать итоги с начала времен. Кстати: вы никогда не задумывались ЗАЧЕМ нужна галочка "Не учитывать коды аналитики" при переносе начального сальдо? Подумайте... Подумайте почему ее название начинается с НЕ... Люди!!! Думайте! Пожалуйста. |
|
02.02.2006, 13:39 | #68 |
Участник
|
Цитата:
Цитата:
Сообщение от Recoilme
Но ведь гораздо интересней, если он прочитает ссылки, разберется с этой проблемой и найдет другие пути её решения, разве я не прав?
|
|
02.02.2006, 13:56 | #69 |
злыдень
|
Цитата:
Сообщение от chel
Однако, если Вы знаете, как решается эта проблема - может быть, стоит рассказать этот подход. Вдруг здесь не я один такой тупой и не вижу очевидного?
Подходите к менеджерам и объясняете им ЧТО ОСТАТКИ НА ВРЕМЯ - это бред. Т.к. пока они смотрят отчет - остатки меняются. => качаете таблицы в хранилище по ночам и показываете остатки в отчетах из хранилища. Используя ОЛАП или RS. Динамические остатки (на время) - отражаете в формах ввода информации, если это критично им. Например в инвентаризации. На момент разноски/коммита - обновляете. Отчеты такого рода не стоят на "живых базах". Вы просто всё повесите, но никаких некорректностей -не будет. Исключения - для оракл, НО И В ВЕРСИОННОЙ СУБД - вы тоже все повесите. Потому что пока вы будете читать данные - будут плодится версии которые будут тормозить систему. В результате ОРАКЛ/2005 либо отправит вас в сад со своими долгоиграющими запросами, либо Вы снимите Ваш отчет на точку актуальности потратив кучу ресурсов и наплодив кучу мусора. Если конечно у Вас не игрушечная базща данных с миллионом проводок.
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/ Последний раз редактировалось Recoilme; 02.02.2006 в 14:08. |
|
02.02.2006, 14:13 | #70 |
злыдень
|
Цитата:
Сообщение от chel
И чего? К чему эта ссылка и цитата? Мы не можем блокировать InventSum и InventTrans при "пессимистической стратегии", т.к. даже если мы заблокируем изменения, в них легко будут добавляться новые записи (фантомы), от которых уровень изоляции, который применяется в аксапте, не спасет.
0. Выходит я тупой.. потому,что: 1. В одной транзакции читаете с форапдейтом и никаких фантомов у вас не будет. 2. Этот механизм применяется в Аксе повсеместно например при чтении остатков 3. Если бы были какие-то коллизии у вас были бы отрицательные остатки при запрещенном отрицательном складе и т.п. БРЕД у Вас в базе бы был 4. Если у Вас они и есть - это из-за ошибок в алгоритмах, скорее всего Ваших Ошибок В Ваших Алгоритмах, а не фантомов.
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/ |
|
02.02.2006, 14:34 | #71 |
Участник
|
Цитата:
Сообщение от Recoilme
Блин... писал писал и не сохранилось. 2 раз ниасилю, поэтому пишу кратко.
0. Выходит я тупой.. потому,что: 1. В одной транзакции читаете с форапдейтом и никаких фантомов у вас не будет. 2. Этот механизм применяется в Аксе повсеместно например при чтении остатков 3. Если бы были какие-то коллизии у вас были бы отрицательные остатки при запрещенном отрицательном складе и т.п. БРЕД у Вас в базе бы был 4. Если у Вас они и есть - это из-за ошибок в алгоритмах, скорее всего Ваших Ошибок В Ваших Алгоритмах, а не фантомов. В том подходе, который здесь озвучили (вычитание оборотов с даты получения остатков до текущего момента) нужно сначала запросить InventSum - а потом через некоторое (продолжительное) время InventTrans, в который в момент выполнения запроса к InventSum кто-то третий добавляет записи, т.к. InventTrans пока не блокирован. Да если бы он и был блокирован - то добавлять записи никто бы не помешал - все-таки это не тот уровень изоляции. По поводу повторной шпильки в мой адрес: еще раз говорю - напишите Ваш Корректный Алгоритм, который корректно отработает эту ситуацию. Мне он не очевиден пока. |
|
02.02.2006, 14:37 | #72 |
Участник
|
Цитата:
Сообщение от ahtoh
необязательно закрывать, да, таблица с итогами будет немаленькой, но все равно это будет работать быстрее, чем считать сумму с начала первоздания (или отматывать с конца)
|
|
02.02.2006, 14:42 | #73 |
Участник
|
И может оффтоп конечно - КОМУ ВООБЩЕ НУЖНЫ ОПЕРАТИВНЫЕ ДАНЫЕ ПО ОСТАТКАМ КОТОРЫЕ БЫЛИ ВЧЕРА?? Смотрите наличие, смотрите проводки, нужны АНАЛИТИЧЕСКИЕ отчеты - добропожаловать вон из ТРАНЗАКЦИОННОЙ базы в warehouse, olap и проч. Понимаю конечно что убедить в этом пользователя иногда себе дороже чем по тихому сделать то что он просит и не важно что ему это по сути не нужно.
|
|
|
За это сообщение автора поблагодарили: Recoilme (3). |
02.02.2006, 14:44 | #74 |
Участник
|
Цитата:
Сообщение от MironovI
добропожаловать вон из ТРАНЗАКЦИОННОЙ базы в warehouse, olap и проч.
Но изначальный вопрос был о другом, по-моему. |
|
02.02.2006, 14:52 | #75 |
Участник
|
Цитата:
Сообщение от chel
В том подходе, который здесь озвучили (вычитание оборотов с даты получения остатков до текущего момента) нужно сначала запросить InventSum - а потом через некоторое (продолжительное) время InventTrans, в который в момент выполнения запроса к InventSum кто-то третий добавляет записи...
|
|
02.02.2006, 15:22 | #76 |
злыдень
|
Цитата:
Сообщение от chel
По поводу повторной шпильки в мой адрес: еще раз говорю - напишите Ваш Корректный Алгоритм, который корректно отработает эту ситуацию. Мне он не очевиден пока.
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/ |
|
02.02.2006, 15:53 | #77 |
злыдень
|
Цитата:
Сообщение от chel
В том подходе, который здесь озвучили (вычитание оборотов с даты получения остатков до текущего момента) нужно сначала запросить InventSum - а потом через некоторое (продолжительное) время InventTrans, в который в момент выполнения запроса к InventSum кто-то третий добавляет записи, т.к. InventTrans пока не блокирован. Да если бы он и был блокирован - то добавлять записи никто бы не помешал - все-таки это не тот уровень изоляции.
По поводу повторной шпильки в мой адрес: еще раз говорю - напишите Ваш Корректный Алгоритм, который корректно отработает эту ситуацию. Мне он не очевиден пока. PHP код:
Это просты мы с chel пиписьками меряемся..
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/ |
|
02.02.2006, 15:55 | #78 |
Участник
|
Цитата:
Сообщение от mazzy
Полностью поддерживаю подход.
Но изначальный вопрос был о другом, по-моему. |
|
02.02.2006, 18:06 | #79 |
Участник
|
Цитата:
Сообщение от Recoilme
Люди, не обращайте внимания на этот код, так делать на реляционной базе не стоит!
Это просты мы с chel пиписьками меряемся.. Есть небольшие проблемы в этом запросе 1. Он не учтет ту номенклатуру, по которой сейчас нет остатков. Например, если 31 декабря по "чистой" номенклатуре был сделан приход 5 шт, а 2 января расход -5, то на 1 января остаток не отобразится. 2. Даже, если сделать full outer join этих таблиц, чтобы решить п.1., то к этому никак не прикрутить еще и InventDim с отбором хотя бы по складу (а как жить без этого ) PS. В Вашем случае совсем не обязательно было делать forupdate и тытысы-операции - все равно все одним запросом получаете Цитата:
Сообщение от mazzy
А потом расскажите во сколько раз таблица промежуточных итогов превышает таблицу проводок.
|
|
02.02.2006, 18:07 | #80 |
Участник
|
Цитата:
Сообщение от Recoilme
Люди, не обращайте внимания на этот код, так делать на реляционной базе не стоит!
Последний раз редактировалось Alexius; 02.02.2006 в 18:16. |
|
Теги |
остатки, ax3.0 |
|
Похожие темы | ||||
Тема | Ответов | |||
Остатки на дату InventSumDatePhysical | 6 | |||
Остатки товара на определенную дату | 7 | |||
Скачут остатки | 3 | |||
Цена на дату создания заказа/закупки | 2 | |||
Остатки | 6 |
|