Переключение на Главную Страницу Страницы: 1 2 3 [4] 5 6  ОтправитьПечать
Очень популярная тема (более 25 ответов) часть 7 отрицательные остатки в модуле проведения (число прочтений - 17873 )
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: часть 7 отрицательные остатки в модуле проведения
Ответ #45 - 10. Декабря 2008 :: 09:31
Печать  
Nick писал(а) 10. Декабря 2008 :: 09:29:
Z1 писал(а) 10. Декабря 2008 :: 09:21:
понял о чем ты говоришь.
только что ответил в этом случае если делать это в модуле проведения то при откате мы будем гораздо дальше
от begin tran и откат транзакции нам обойдется  дороже.


Ну тогда сам следи за движениями документа и удаляй их только когда будешь уверен что документ правильный

ну это же не проблема. зачем удалять просто в модуле ПриЗаписи
из движений ТА вычесть текущие движения, а 1с пусть сам удаляет все как и сейчас.
  
Наверх
 
IP записан
 
Boris_1c
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 129
Зарегистрирован: 29. Января 2007
Re: часть 7 отрицательные остатки в модуле проведения
Ответ #46 - 10. Декабря 2008 :: 11:32
Печать  
По моему проверять остатки только в процедуре при записи не Гут. Есть куча ситуаций, когда остатки надо проверять именно при проведении.
Ситуации которые сразу пришли в голову:
1. Выписка счетов с бронированием того товара, который есть на текущий момент на складе.
2. При использовании серого учета, накладная проводится только по упр. плану счетов, если офиц. товара не хватает, она все равно проводится - делаем движения (что надо купить) и т.д.

Я вообще при проведении документа проверяю остаток с учетом проданного до текущей даты. Проведение тяжеловато, но в итоге экономит кучу времени на разгибание всякой хрени.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: часть 7 отрицательные остатки в модуле проведения
Ответ #47 - 10. Декабря 2008 :: 11:55
Печать  
Boris_1c писал(а) 10. Декабря 2008 :: 11:32:
По моему проверять остатки только в процедуре при записи не Гут. Есть куча ситуаций, когда остатки надо проверять именно при проведении.
Ситуации которые сразу пришли в голову:
1. Выписка счетов с бронированием того товара, который есть на текущий момент на складе.
2. При использовании серого учета, накладная проводится только по упр. плану счетов, если офиц. товара не хватает, она все равно проводится - делаем движения (что надо купить) и т.д.

Я вообще при проведении документа проверяю остаток с учетом проданного до текущей даты. Проведение тяжеловато, но в итоге экономит кучу времени на разгибание всякой хрени.


у нас разрешена перевыписка товара. ну ее в принципе невозможно запретить - так как УРБД.
Кстати  УРБД тоже может вносить свою лепту в движение в минус независимо от того делали Вы строгие проверки или нет.

2. Здесь я как бы говорю о реальных складских остатках  ведь именно их и надо контролировать , а не о тех кому они принадлежат.

И моя идея нисколько не протеворечить Вашей просто проверка идет в другом месте вот и все и теоретически проверка будет выполняться быстрее.
  
Наверх
 
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: часть 7 отрицательные остатки в модуле проведения
Ответ #48 - 10. Декабря 2008 :: 12:43
Печать  
Z1 писал(а) 10. Декабря 2008 :: 08:58:
но еще при этом нет блокировки журнала документов

Перечитал еще раз. Есть мнение, что мы друг друга не поняли.
При заходе в процедуру ПриЗаписи() конечно же нет еще транзакции, она открывается при записи документа.
  
Наверх
ICQ  
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: часть 7 отрицательные остатки в модуле проведения
Ответ #49 - 10. Декабря 2008 :: 12:48
Печать  
spock писал(а) 10. Декабря 2008 :: 12:43:
Z1 писал(а) 10. Декабря 2008 :: 08:58:
но еще при этом нет блокировки журнала документов

Перечитал еще раз. Есть мнение, что мы друг друга не поняли.
При заходе в процедуру ПриЗаписи() конечно же нет еще транзакции, она открывается при записи документа.

ну вот тогда там вообще еще нет транзакции и проверка на отриц числа будет еще "дешевле".
Да я и имел ввиду проверять именно в модуле ПриЗаписи()
Ведь наверняка в этом модуле у всех стоят множество проверок на "правильность" документа
  
Наверх
 
IP записан
 
Boris_1c
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 129
Зарегистрирован: 29. Января 2007
Re: часть 7 отрицательные остатки в модуле проведения
Ответ #50 - 10. Декабря 2008 :: 13:48
Печать  
По поводу УРБД - всем переферийным базам выделяем свои склады с которыми они работают, проблему с минусами почти решает.

По поводу проверки остатков в процедуре приЗаписи() - однозначно транзакцию по времени сократит.
Огромный минус в таком варианте - это нервы работников и программистов (я в основном жалею себя), документ на 100 строк - чего-то не хватает - он не записывается, по тому, что нет остатка. Яду выплеснут... Карма страдает Улыбка
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: часть 7 отрицательные остатки в модуле проведения
Ответ #51 - 10. Декабря 2008 :: 14:14
Печать  
Boris_1c писал(а) 10. Декабря 2008 :: 13:48:
По поводу УРБД - всем переферийным базам выделяем свои склады с которыми они работают, проблему с минусами почти решает.

По поводу проверки остатков в процедуре приЗаписи() - однозначно транзакцию по времени сократит.
Огромный минус в таком варианте - это нервы работников и программистов (я в основном жалею себя), документ на 100 строк - чего-то не хватает - он не записывается, по тому, что нет остатка. Яду выплеснут... Карма страдает Улыбка

Ну у нас нет таких позиций 10-20 строк.
Во вторых если минусы это итак что-то чрезвычайное.
Ну и кто сказал что по каким-то причинам в другом филиале
или в Москве не могут ( хотя и не должны ) трогать документ рн.
Вообщем время это сократит. Вот это я и хотел услышать в принципе.
Да можно даже и записать когда минус но при этом отослать письмо начальнику склада у Вас проблемы-с.
Как бы не зацикливайтесь как реагировать на событие, а то
идея что будет программа чуть лучше работать

  
Наверх
 
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: часть 7 отрицательные остатки в модуле проведения
Ответ #52 - 11. Декабря 2008 :: 06:29
Печать  
Время есть, можно пообсуждать Улыбка

Пользовательские блокировки - это замечательно, но они не панацея и ни чем не лучше родных блокировок в нашем случае.
Ты предлагаешь в процедуре ПриЗаписи делать проверки остатков - хорошо, но только с первого взгляда.
Твоя пользовательская блокировка условно накладывает блокировку на работу со складом, документа который сейчас записывается. Но в подавляющем большинстве случаев фирмы используют для основной отгрузки один склад. Получается, что в один момент времени можно записывать все так же один документ.
Конечно, если в компании у каждого сотрудника, выписывающего накладные, свои склад, то это будет хорошим подспорьем Улыбка

Теперь дальше, ты предлагаешь считать записанный документ правильным и всем записанным документам должно хватать товара (если я правильно понял). Но как определять свободный остаток при работе задним числом или в случаях, когда единовременно имеется несколько записанных правильных документов, но они еще не проведены? Брать остатки из регистра и суммировать с итогами по табличным частям документов? Или в твоей концепции не должно быть в базе вообще никогда записанных и непроведенных документов?

В динамике:
0. Нажали кнопку Провести (#Записать #Провести);
1. Запись документа;
1.1. Попали в ПриЗаписи();
1.2. Проверили свободный остаток (при помощи пользовательской блокировки) - хватает;
1.3. Вышли из ПриЗаписи();
1.4. Открывается неявная транзакция;
1.5. Записывается документ;
1.6. Фиксируется неявная транзакция;
2. Проведение документа;
2.1. Открывается неявная транзакция;
2.2. Попали в ОбработкаПроведения();
2.3. Выполнили движения регистров на основании данных табличной части документа;
2.4. Вышли из ОбработкаПроведения();
2.5. Фиксируется неявная транзакция;

Для твоей концепции узким местом будет огромный промежуток времени между 1.6 и 2.1:
- документ записался, транзакция зафиксировалась, все блокировки сняты (здесь закончился п. 1.6);
- здесь попадаем в промежуток времени, когда другие пользователи (при интенсивной работе) могут вклиниться (т.е. между 1.6 и 2.1) со своими проверками в ПриЗаписи();
- начался п. 2.1 ...
- ...
- ...

Про "дорогие транзакции": в нашей работе (1с) они редко, когда являются дорогими. Объемы изменяемых данных при записи/проведении документов незначительные. В случае отката транзакции все не очень страшно. А вот когда нужно откатить транзакцию с таблицы в 40 с лишним лямов строк, то вот это "дорогая транзакция"  Плачущий
  
Наверх
ICQ  
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: часть 7 отрицательные остатки в модуле проведения
Ответ #53 - 11. Декабря 2008 :: 06:39
Печать  
Цитата:
А вот когда нужно откатить транзакцию с таблицы в 40 с лишним лямов строк, то вот это "дорогая транзакция"

Ужас, это где так?
  
Наверх
ICQ  
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: часть 7 отрицательные остатки в модуле проведения
Ответ #54 - 11. Декабря 2008 :: 06:39
Печать  
spock писал(а) 11. Декабря 2008 :: 06:29:
Время есть, можно пообсуждать Улыбка

Но в подавляющем большинстве случаев фирмы используют для основной отгрузки один склад. Получается, что в один момент времени можно записывать все так же один документ.
Конечно, если в компании у каждого сотрудника, выписывающего накладные, свои склад, то это будет хорошим подспорьем Улыбка

У нас 20 складов и значит для моей конфигурации это будет хорошо
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: часть 7 отрицательные остатки в модуле проведения
Ответ #55 - 11. Декабря 2008 :: 06:47
Печать  
spock писал(а) 11. Декабря 2008 :: 06:29:
Время есть, можно пообсуждать Улыбка
Теперь дальше, ты предлагаешь считать записанный документ правильным и всем записанным документам должно хватать товара (если я правильно понял). Но как определять свободный остаток при работе задним числом или в случаях, когда единовременно имеется несколько записанных правильных документов, но они еще не проведены? Брать остатки из регистра и суммировать с итогами по табличным частям документов? Или в твоей концепции не должно быть в базе вообще никогда записанных и непроведенных документов?

у нас документы-речь о расходных накладных- отгружаются (проводяться) только текущим числом. Все изменения документов задним числом непринципиальны для регистра ОстаткиТоваров. Никто не имеет права задним числом отменить что-либо затрагивающее количество. У нас проверка отрицат. остатков страх#ет от невнимательности пользователя ( вбил не тот товар)
или от реальной пересортицы реальных складских остатков и с этой точки зрения неважно где делать эти проверки.
(Для других конфигураций, других методик учета конечно все написанное здесь может быть и неверным ).
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: часть 7 отрицательные остатки в модуле проведения
Ответ #56 - 11. Декабря 2008 :: 06:50
Печать  
Опять же если где то разрешено работать задним числом с документами меняющие складские остатки то и изменение приходных накладных ( в приходе уменьшили количество со 100
до 10 ) может привести к минусам остатков - все ли поверяют такую ситуацию ?
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: часть 7 отрицательные остатки в модуле проведения
Ответ #57 - 11. Декабря 2008 :: 06:53
Печать  
Цитата:
1.6. Фиксируется неявная транзакция;

Не совсем понятна эта фраза. это какой оператор на t-qsl.
  
Наверх
 
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: часть 7 отрицательные остатки в модуле проведения
Ответ #58 - 11. Декабря 2008 :: 06:56
Печать  
Z1 писал(а) 11. Декабря 2008 :: 06:53:
Цитата:
1.6. Фиксируется неявная транзакция;

Не совсем понятна эта фраза. это какой оператор на t-qsl.

COMMIT TRAN
  
Наверх
ICQ  
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: часть 7 отрицательные остатки в модуле проведения
Ответ #59 - 11. Декабря 2008 :: 06:59
Печать  
Цитата:
Для твоей концепции узким местом будет огромный промежуток времени между 1.6 и 2.1:

Да согласен промежуток огромный но чтобы в него попали две реальные отгрузки для проверки почти "фантастический шанс"
хотя согласен попасть может т.к. одна расх накладная висит на блокировке вот после освобождения мы и попали на эту ситуацию.
получается в этом случае что и теоретически можно и без своей блокировки проверять считая почти невозможными реальные одновременные отгрузки.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 2 3 [4] 5 6 
ОтправитьПечать