Текущее время: Пн, июл 21 2025, 14:58

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Объект нумерации в разрезе некоторого ID
СообщениеДобавлено: Ср, июл 07 2010, 13:28 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
profiteer написал(а):
sy-uname написал(а):
Ну тогда просто используйте принцип MAX NO позиции + 1
Выставляете блокировку позиции. Получилось - продолжаете работу, если нет - ещё плюс 1 и цикл по новой. Без всяких ФМ и отдельных потоков


Да, видимо так и придется сделать. Только блокировать не позицию, а заголовок документа (позиции мы нумеруем внутри документа). Маленький косячок есть у такого решения - это можно делать толтько в момент сохранения документа, т.к. одно из условий - одновременное редактирование одного и того же документа разными пользователями. Поэтому позиции до сохранения документа не будут иметь номера.

Я просто хотел какой-то более простой в использовании способ придумать.

Как раз блокировать нужно позицию.
Алгоритм для создания новой позиции примерно такой:
1. Выяснить максимальный номер позиции в текущем документе, пусть например на данный момент в документе 5 позиций
2. Увеличить этот максимальный номер на 1 - значит будем добавлять позицию номер 6
3. Установить блокировку на позицию 6
3.1 Если заблокировать не удалось - значит кто то успел раньше, добавил позицию номер 6 и редактирует ее
3.1.1 Берем следующий номер позиции - теперь 7, и все повторяем с пункта 3
4. Добавляем позицию, едем дальше
Вот, примерно так

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Объект нумерации в разрезе некоторого ID
СообщениеДобавлено: Ср, июл 07 2010, 19:25 
Президент
Президент

Зарегистрирован:
Пт, апр 28 2006, 22:39
Сообщения: 2514
Откуда: North Taxolina, USA
Пол: Женский
profiteer написал(а):
Только блокировать не позицию, а заголовок документа (позиции мы нумеруем внутри документа). Маленький косячок есть у такого решения - это можно делать толтько в момент сохранения документа, т.к. одно из условий - одновременное редактирование одного и того же документа разными пользователями. Поэтому позиции до сохранения документа не будут иметь номера.

ArmAnn правильно расписал алгоритм, но вы правы в том, что позиции не должны иметь номер до момента сохранения, т.к. пользователь может просто передумать и ничего не сохранить. Если же номера присваивать до сохранения, то это может привести к образованию "дырок" в нумерации в случае rollback.

B стандартных транзакциях (например VF01) тоже номера документов могут выглядеть как $$$$1, $$$$2 и т.д. до момента сохранения, так что это ничего особенного.

_________________
"One of the symptoms of an approaching nervous breakdown is the belief that one's work is terribly important." Bertrand Russell


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Объект нумерации в разрезе некоторого ID
СообщениеДобавлено: Ср, июл 07 2010, 21:30 
Специалист
Специалист

Зарегистрирован:
Ср, окт 04 2006, 09:08
Сообщения: 204
ArmAnn написал:
Как раз блокировать нужно позицию.
Алгоритм для создания новой позиции примерно такой:
1. Выяснить максимальный номер позиции в текущем документе, пусть например на данный момент в документе 5 позиций
2. Увеличить этот максимальный номер на 1 - значит будем добавлять позицию номер 6
3. Установить блокировку на позицию 6
3.1 Если заблокировать не удалось - значит кто то успел раньше, добавил позицию номер 6 и редактирует ее
3.1.1 Берем следующий номер позиции - теперь 7, и все повторяем с пункта 3
4. Добавляем позицию, едем дальше
Вот, примерно так


Спасибо, интересная идея. Надо над ней подумать.


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB