classic писал(а) 02. Ноября 2010 :: 13:34:Купил, наконец-то 8.2 - версию для обучения программированию. Читаю. Думаю. И натыкаюсь на такой пассаж:
Мы, в восьмерках, будем делать по новому: при списании со склада - вначале списывать, а потом проверять - не списали-ли мы лишнего. И если вдруг списали - тогда откатывать назад.
А в чем смысл, в чем выгода? Нафига это?
1. Вначале запросом получаем остатки товаров с себестоимостью.
2. Проводим.
3. Потом еще раз таким же запросом - ищем отрицательные остатки.
Так же дольше? На один запрос дольше, однозначно. Ведь сравнение на больше/меньше при проведение фактически бесплатное...
Или я чего-то не понимаю?
идея уводить проверку остатков в конец процедуры проведения связана с:
1. более простым запросом проверки - чем проще запрос, тем лучше ведет себя транслированный SQL запрос, а значит быстрее
2. чем быстрее запрос - тем меньше времени живет блокировка
и кстати по порядку - Артур почти правильно написал:
методика советует нечто следующее, если я правильно помню:
раньше было:
0. делаем всякую расчетную ересь - в том числе себестоимость
1. подготавливаем движения документа и проверяем остатки
одним запросом2. проводим если не было отрицательных остатков
стало:
0. делаем всякую расчетную ересь - в том числе себестоимость
1. подготавливаем движения документа запросом
2. проводим без всяких проверок
3. запросом ищем возникшие отрицательные остатки.
еще раз идея: один запрос со сложным соединением и 2 запроса без всяких JOIN'ов ведут себя совершенно по разному.
P.S. Кстати отдельно говорилось, что в сложных случаях все равно надо включать голову, помня в том числе и о новой методике.