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

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


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


ВНИМАНИЕ!

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



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

Зарегистрирован:
Ср, окт 04 2006, 09:08
Сообщения: 204
Всем привет.

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

Но на каждый документ не создашь по объекту нумерации. Соответственно, хочется чего-то вроде объекта нумерации, позволюящего вести нумерацию в разрезе некоторого ID (номер документа в моем случае).

В стандартных объектах нумерации вроде есть какие-то подобъекты, но там, кажется, длина ограничена 6 символами - этого маловато для номера документа.

Думал уже свой "объект нумерации" на базе табилцы написать, но там проблема есть - обязательно после генерации нового номера должен быть commit. Но такой commit помешает в рамках основной программы.

Какие могут быть решения?


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

Зарегистрирован:
Чт, мар 09 2006, 10:12
Сообщения: 565
Откуда: Волгодонск
Пол: Мужской
profiteer написал(а):
Думал уже свой "объект нумерации" на базе табилцы написать, но там проблема есть - обязательно после генерации нового номера должен быть commit. Но такой commit помешает в рамках основной программы.


вызывай ФМ DB_COMMIT. собственно когда number_get_next делается, тоже неявный commit происходит

хотя на мой взгляд постановка задачи странновата...

_________________
Изображение Попытка не пытка


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

Зарегистрирован:
Ср, окт 04 2006, 09:08
Сообщения: 204
DKiyanov написал:
profiteer написал(а):
Думал уже свой "объект нумерации" на базе табилцы написать, но там проблема есть - обязательно после генерации нового номера должен быть commit. Но такой commit помешает в рамках основной программы.


вызывай ФМ DB_COMMIT. собственно когда number_get_next делается, тоже неявный commit происходит

хотя на мой взгляд постановка задачи странновата...


Постановка странновата, но уж какая есть, такая есть. Сейчас это не изменить.

А что DB_COMMIT изменит? Я ж говорю, мне нужно чтобы commit-а при генерации нового номера не было.
Насчет number_get_next, пр-моему нет там commit. Нужно проверить.


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

Зарегистрирован:
Чт, мар 09 2006, 10:12
Сообщения: 565
Откуда: Волгодонск
Пол: Мужской
при выполнении DB_COMMIT не запускаются отложенные обновления, соотв. если вы при создании документа используете отложенные обновления (а для документов это очень рекомендуется) то DB_COMMIT вашей проге. не повредит :D

если number_get_next будете тестировать учтите надо брать объект без буферизации

ещё есть такая идея:
Цитата:
В стандартных объектах нумерации вроде есть какие-то подобъекты, но там, кажется, длина ограничена 6 символами - этого маловато для номера документа.

так вот слегка извратившись в символьное поле длиной 6 можно затолкать 12 цифр, для этого в сапе спец тип данных придуман - P

_________________
Изображение Попытка не пытка


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

Зарегистрирован:
Ср, окт 04 2006, 09:08
Сообщения: 204
Вообще, db_commit тоже хотелось бы избежать.
А не знаете, можно ли вызывать ФМ в отдельном процессе (RFC) синхронно и при это чтобы не было неявного commit при вызове?


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

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
profiteer написал(а):
Всем привет.

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

Но на каждый документ не создашь по объекту нумерации. Соответственно, хочется чего-то вроде объекта нумерации, позволюящего вести нумерацию в разрезе некоторого ID (номер документа в моем случае).

Если самих документов немного, то можно автоматически создавать объекты (и диапазоны) нумерации с помощью групп функций SNR1 и SNR2

_________________
С уважением,
Удав.


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

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
DKiyanov написал:
собственно когда number_get_next делается, тоже неявный commit происходит

Это с какой стати неявный commit происходит? :shock:

_________________
С уважением,
Удав.


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

Зарегистрирован:
Ср, окт 04 2006, 09:08
Сообщения: 204
Удав написал(а):
profiteer написал(а):
Всем привет.

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

Но на каждый документ не создашь по объекту нумерации. Соответственно, хочется чего-то вроде объекта нумерации, позволюящего вести нумерацию в разрезе некоторого ID (номер документа в моем случае).

Если самих документов немного, то можно автоматически создавать объекты (и диапазоны) нумерации с помощью групп функций SNR1 и SNR2


Самих документов много.
Я уже думаю, что написать свой потокобезопасный счетчик - хорошее решение, но надо придумать способ вынести его в отдельный процесс, чтобы commit при генерации нового номера никак не влиял на основную программу.
И вызов, естественно, должен быть синхронным.


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

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
profiteer написал(а):
Если самих документов немного, то можно автоматически создавать объекты (и диапазоны) нумерации с помощью групп функций SNR1 и SNR2


Самих документов много.
Я уже думаю, что написать свой потокобезопасный счетчик - хорошее решение, но надо придумать способ вынести его в отдельный процесс, чтобы commit при генерации нового номера никак не влиял на основную программу.
И вызов, естественно, должен быть синхронным.[/quote]
Почему бы тогда просто не использовать GUID для позиций?

_________________
"После" - не значит "вследствие"


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

Зарегистрирован:
Ср, окт 04 2006, 09:08
Сообщения: 204
sy-uname написал(а):
Почему бы тогда просто не использовать GUID для позиций?


Для позиций нужен внешний "красивый" номер, идущий по порядку и более-менее неразрывно.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Объект нумерации в разрезе некоторого ID
СообщениеДобавлено: Пн, июл 05 2010, 13:00 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Чт, мар 09 2006, 10:12
Сообщения: 565
Откуда: Волгодонск
Пол: Мужской
Удав написал(а):
DKiyanov написал:
собственно когда number_get_next делается, тоже неявный commit происходит

Это с какой стати неявный commit происходит? :shock:

Действительно был не прав.

_________________
Изображение Попытка не пытка


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

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
profiteer написал(а):

Для позиций нужен внешний "красивый" номер, идущий по порядку и более-менее неразрывно.

А смысл в этом номере какой?
Как вариант решения:
Для вывода на экран просто нумеруйте позиции от 1 и так далее, а для ссылок используйте GUID или просто счётчик.

_________________
"После" - не значит "вследствие"


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

Зарегистрирован:
Ср, окт 04 2006, 09:08
Сообщения: 204
sy-uname написал(а):
А смысл в этом номере какой?
Как вариант решения:
Для вывода на экран просто нумеруйте позиции от 1 и так далее, а для ссылок используйте GUID или просто счётчик.


Технически смысла никакого. Я мог бы использовать и обычный счетчик. Но на такой вариант 100% будет замечание. Пользователи любят красивую нумерацио по порядку.

Вариант с нумерацией перед выводом не подходит - нужно чтобы номер не прыгал (позиция, раз получив номер, больше его не меняла).


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

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
profiteer написал(а):
Технически смысла никакого. Я мог бы использовать и обычный счетчик. Но на такой вариант 100% будет замечание. Пользователи любят красивую нумерацио по порядку.
...

Ну тогда просто используйте принцип MAX NO позиции + 1
Выставляете блокировку позиции. Получилось - продолжаете работу, если нет - ещё плюс 1 и цикл по новой. Без всяких ФМ и отдельных потоков

_________________
"После" - не значит "вследствие"


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

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
Можно еще попробовать использовать shared memory object, где хранить и обновлять максимальный номер позиции.

_________________
Я слышу и забываю,
Я вижу и помню долго,
Я делаю и — понимаю.


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

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


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

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


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

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