Joined: 13 Apr 2007 Posts: 18 Location: Нехаев Валерий Сергеевич Occupation: Программист Interests: Калининград
Posted: 23 Apr 2007 11:58 Post subject: Следующий номер накладной?!!!
Добрый день Уважаемые. (БЭСТ 4+ Удаленный магазин (12.01 SP31))
Помогите мне пожалуйста с таким вопросом:
Я написал код для спецфункции в реестре акладных Бэста, который позволяет автоматически создавать накладную и импортировать строки из dbf в БЭСТ, так же она настолько интеллектуальна что по поставщику может определить в какую операцию ее засунуть... Все хорошо, но вот с номером накладной как-то не допонял... При импорте создается накладная, строки импортируются, поставщик определяеться, но ... когда оператор начинает вводить следующий номер...Увы номер может пересечься....
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
Posted: 23 Apr 2007 12:17 Post subject:
Да вроде правильно берете.
Просто как я понял Вы пишете не тут же а позже.
И в это вемя вручную могут создать документ с этим номером..
разделите по видам движения ввод ручных накладных от автоматических
Joined: 13 Apr 2007 Posts: 18 Location: Нехаев Валерий Сергеевич Occupation: Программист Interests: Калининград
Posted: 23 Apr 2007 12:24 Post subject:
nordk wrote:
Да вроде правильно берете.
Просто как я понял Вы пишете не тут же а позже.
И в это вемя вручную могут создать документ с этим номером..
разделите по видам движения ввод ручных накладных от автоматических
Это будет сложно... Не во всх магазинах стоит данная спецфункция...
Я так понимаю, если два рабочих места в сети и один пользователь создает наладную, а второй пользователь мпортирует, то они могут пересечься? А можно этого как-то избежать?
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
Posted: 23 Apr 2007 12:47 Post subject:
Они могут пересечься, даже если несколько пользователей в сети простонакладные сосздают.
БЭСТ это отслеживает при создании документа.
В данном случае это проблемы Вашего импорта, чтобы он перед импортом прослеживал и менял на другой.
А вообще есть теперь событие "прайс-лист" и необходимость такого импорта сходит на "нет"
Joined: 27 Aug 2002 Posts: 501 Location: Кондрина Марина Александровна Occupation: ОАО БКО программист Interests: Боровичи Новгородской обл
Posted: 23 Apr 2007 13:01 Post subject:
А мне как-то показалось из описания проблемы , что номер пересекается, когда этот же оператор сразу вводит вторую накладную, до всякого импорта. Это так?
Joined: 13 Apr 2007 Posts: 18 Location: Нехаев Валерий Сергеевич Occupation: Программист Interests: Калининград
Posted: 23 Apr 2007 13:43 Post subject:
Марина wrote:
А мне как-то показалось из описания проблемы , что номер пересекается, когда этот же оператор сразу вводит вторую накладную, до всякого импорта. Это так?
ДА и до импорта и после номера ИНОГДА пересекаються...(( В этом и проблемма. Процесс формирования номера накладной по стандарту не учитывет процесс формирования номера по спецфункции. Открыл MEMDAT.dbf и вижу такую картину:
появилась новая строчка:
memdat.Ident=NOM_DOC
memdat.Value=b59328... и т.д.
т.е. Это поле нумерует накладные по импорту, однако стандартный ввод накладной нумерует другая строчка MEMDAT:
memdat.Ident=SR0000000000000000000011КОД СУММЫ В РЕЕСТРЕ
memdat.Value=!!!Ё?
Joined: 27 Aug 2002 Posts: 501 Location: Кондрина Марина Александровна Occupation: ОАО БКО программист Interests: Боровичи Новгородской обл
Posted: 23 Apr 2007 13:59 Post subject:
Когда я писала свои накладные из спецфункции, у меня была такая проблема, сейчас я вам дам код, как у меня работает, но что и почему сделала именно так, сейчас точно не помню. Видите, у меня memdat еще используется и почему-то свои альясы для memdat и mdoc открыты. Попробуйте сделать в этом роде, может получится, у меня ошибок не происходит
FUNCTION New1NumDoc(cSclad,cVid,cType,cCodeDoc)
//----------------------------------------------------------------------------//
// Генерация уникального номера документа
LOCAL cNumDoc
MDOC1->(dbPush(),SetScope())
Joined: 13 Apr 2007 Posts: 18 Location: Нехаев Валерий Сергеевич Occupation: Программист Interests: Калининград
Posted: 23 Apr 2007 14:02 Post subject:
Марина wrote:
Когда я писала свои накладные из спецфункции, у меня была такая проблема, сейчас я вам дам код, как у меня работает, но что и почему сделала именно так, сейчас точно не помню. Видите, у меня memdat еще используется и почему-то свои альясы для memdat и mdoc открыты. Попробуйте сделать в этом роде, может получится, у меня ошибок не происходит
Joined: 13 Apr 2007 Posts: 18 Location: Нехаев Валерий Сергеевич Occupation: Программист Interests: Калининград
Posted: 23 Apr 2007 14:19 Post subject:
Марина wrote:
Так может вам надо при вызове вместо NOM_DOC забухать это ужасное SR0000...
Страшно...опасная это штука...
Если вводить в ручную...то это пойдет индивидуально для одной рабочей станции...а если их 20...это под каждую станцию подстраиваться надо... нее. На другой станции,например у меня,другое поле задействовано: SR00000000000000AUTO1011КОД СУММЫ В РЕЕСТРЕ... нужен смысл этих SR0000... Может кто подскажет???
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
Posted: 23 Apr 2007 14:46 Post subject:
Ну вобщем понятно.
Вы функцю вызываете не из реестра документов удаленного склада а извне, соотвественно она не знает что это какой-то конкретный вид движения удаленного склада и заполняет оответствующим образом.
Как я и писал раньше нумерация привязана к конкретному виду движения и отличает склад от удаленного....
У Вас в Вашей задаче это неучтено
Joined: 13 Apr 2007 Posts: 18 Location: Нехаев Валерий Сергеевич Occupation: Программист Interests: Калининград
Posted: 23 Apr 2007 14:48 Post subject:
Марина wrote:
Когда я писала свои накладные из спецфункции, у меня была такая проблема, сейчас я вам дам код, как у меня работает, но что и почему сделала именно так, сейчас точно не помню. Видите, у меня memdat еще используется и почему-то свои альясы для memdat и mdoc открыты. Попробуйте сделать в этом роде, может получится, у меня ошибок не происходит
FUNCTION New1NumDoc(cSclad,cVid,cType,cCodeDoc)
//----------------------------------------------------------------------------//
// Генерация уникального номера документа
LOCAL cNumDoc
MDOC1->(dbPush(),SetScope())
К стати. С этим кодом номер документа меняеться в зависимости от типа, вида и кода операции Type=1, Vid=1, codeoper=01. А в бэсте идет генерация номеров накладных только от типа и вида движения. Или я ошибаю
Joined: 13 Apr 2007 Posts: 18 Location: Нехаев Валерий Сергеевич Occupation: Программист Interests: Калининград
Posted: 23 Apr 2007 14:52 Post subject:
nordk wrote:
Ну вобщем понятно.
Вы функцю вызываете не из реестра документов удаленного склада а извне, соотвественно она не знает что это какой-то конкретный вид движения удаленного склада и заполняет оответствующим образом.
Как я и писал раньше нумерация привязана к конкретному виду движения и отличает склад от удаленного....
У Вас в Вашей задаче это неучтено
В общем-то так и было задумано , что спецфункция будет вызываться извне, однако у меня возникли трудности и время поджимало, и поэтому спецфункция запускаеться из РЕЕСТРА накладных, а в зависимости от поставщиков она записывает накладные в устангвленный тип и вид движения, даже если открыт не тот реестр с видом и типом движения
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum