Текущее время: Вт, июл 22 2025, 19:47

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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