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

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


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

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


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

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