Очередной пост, совсем не связанный с Ораклом. А всё дело в том, что я в очередной раз наткнулся на документ, написанный хорошим специалистом в своём (техническом) деле, но совершенно несведущим в вопросах оформления документов. Кроме «стандартных» проблем оформления (например, заколовки оформлены не заголовками, а просто шрифтами), так еще и схемы из Visio вставлены растровыми картинками. Нужно ли объяснять, как выглядит распечатанный документ?
В общем так.
Правильная вставка может быть выполнена следующими способами
Внезапно обнаружил, что Visio 2007 считает, что в русском языке письмо происходит справа налево. Точнее, пишется-то слева на право, а вот курсор двигаться должен наоборот. Т.е. нажимаешь стрелку влево - курсор движется вправо. Оказывается связано это с языковыми параметрами - в русских шаблонах зашит атрибут справа-на-левного написания. Честно говоря, я этого всё равно не понимаю - арабы, если нажимают кнопку движения влево (на которой даже нарисована - специально для тупых, - стрелка влево), они что - ожидают, что курсор сдвинется вправо? Бред, вообще. Ну ладно, фиг с ними, с арабами, но мы-то чем провинились? 
В общем, прошвырнувшись по инету, я нашел решение…
В OEBS есть масса вьюшек, внутри которых зашиты пользователе-ориентированные условия, такие как определения языка, например. Т.е. если пользователь залогинился в русском интерфейсе, вьюха будет выдавать результат на русском. При использованнии «в лоб» таких вьюх в SQL-инструментах (developer, navigator, toad и т.п.), они выдают пустой результат (ну оно и понятно). Чтобы всё заработало как надо, необходимо инициализировать сессию. Синтаксис следующий:
-
BEGIN
-
fnd_global.apps_initialize(
-
user_id,
-
resp_id,
-
resp_appl_id,
-
security_group_id,
-
server_id
-
);
-
END;
Под катом небольшая подсказка
На всякий случай, сначала расскажу, что понимается под словом «Картонизация».
Картонизация - это процесс объединения задач набора в наборную тару.
Ну или на пальцах:
Нам нужно набрать заказы клиента, упаковать их и отгрузить. Задач набора — куча, набор происходит с различных складских подразделений, различных номенклатурных позиций и т.п. Теперь нужно решить, какие из позиций в какую тару упаковывать. Например, хрупкие вещи можно упаковывать только в специальные пластиковые лотки, а все остальное - в картонные короба. Это для примера, в реальности несколько иначе. Так вот картонизация - это процесс, в результате которого система предлагает, какие позиции в какой контейнер нужно упаковывать в процессе набора.
В принципе, картонизация в OEBS сделана неплохо, но бывают случаи, с которыми стандартная картонизация не справляется. Самый простой пример - это различный объем одной и той же позиции при наборе с разных складских подразделений (СП). «Что за бред?» - спросите вы, а я скажу, что такое вполне возможно, если одно из этих СП - с ручным набором (т.е. ручная аккуратная укладка в короба), а другое - с автоматическим (т.е. товар закидывается в тару абы как, в результате чего получается более рыхлая укладка). В этом случае (и еще многих других) понадобится кастомизация картонизации.
Читать далее про катомизацию картонизации
В своё время у Oracle была своя система прогнозирования спроса, называлась она «Demand Planning» (DP). Теперь Oracle накупил кучу разных компаний, в результате чего они заменили DP на Demantra. Что это за зверь?
Сразу отмечу, что Demantra имеет существенно более дружественный интерфейс, чем DP, и в совокупности с её возможностями, она внушает некоторый оптимизм.
Но я не ставлю себе цели продать Демантру, поэтому сейчас затрону только некоторые особенности, которые полезно будет знать как консультанту, так и заказчику. Назову их условно так:
- Прогнозирование на низком уровне
- Модель данных
- Подбор модели
- Работа с факторами
- Интеграция в целом, и загрузка данных в частности
Читать далее: особенности прогнозирования в Demantra
Ситуация следующая. В компании заказчика существует множество полномочий OEBS, с которыми работают конечные пользователи. Естественно, это - свои полномочия, а не стандартные вроде Order Management Superuser. Я же, как консультант, пользуюсь именно стандартными полномочиями. И вот, мне нужно, чтобы пользователи в некоторой форме (которую я вижу в стандартных полномочиях) выполнили какие-нибудь действия… Что делать? К кому или в какие полномочия отсылать?
Первое, что приходит в голову - сначала нужно найти пользовательские полномочия, в которых есть эта форма, а потом - найти пользователей с такими полномочиями.
Сделать это простым запросом не получается, т.к. форма (или «функция» - при настройке меню навигации, все конечные пункты назваются именно так) может быть запрятана глубоко в меню и подменю, поэтому придется использовать рекурсию.
Читать: как найти пользователей и полномочия, содержащие функцию
Структура справочника клиентов в OEBS проста и неочевидна одновременно. Еще в самом начале моего знакомства с этой ERP-системой, я пытался получить разъяснения документации у более опытных коллег, но коллеги, как один, не могли внятно объяснить некоторых вещей… сейчас я их, коллег, прекрасно понимаю. А дело все в том, что изначальная идеология (описанная в документации), структура БД и идеология фактическая, реализованная в приложении, существенно отличаются. Кроме того, в документации, по сути, описана изначальная идеология, а ее связь с фактической описана весьма расплывчато. С нее и начнем.
Изначальная идеология структуры справочника клиентов
Вообще, структура клиентов в OEBS довольно замороченная, о ней я расскажу чуть позже.
Сейчас запишу на полях SQL-запрос для выборки всех адресов.
SELECT cas.cust_acct_site_id,
ps.party_site_number,
l.*
FROM hz_cust_acct_sites_all cas,
hz_party_sites ps,
hz_locations l
WHERE ps.party_site_id = cas.party_site_id
AND l.location_id = ps.location_id
Для доступа к БД Oracle из скриптов Visual Basic (в частности - из Excel), необходимо установить Oracle Data Access Components. Скачать можно здесь.
Непосредственно для VB предназначен Oracle Data Control, документацию по которому можно найти здесь.
Я уже писал, как настраивается автоматическое применение блокировок к заказам напродажу. Неочевидно. Также не очевидно отменяется это применение блокировок. Делается это следующим образом:
- Идем в форму Order Organizer
- В форме «Find Orders/Quotes» идем на закладкуHolds Information
- Выбираем в списке нужную блокировку и жмем кнопку «Hold Sources»
- В открывшемся окне выбираем блокировку с введенными ранее критериями, указываем причину, и разлокируем.
После этого должны как разблокироваться заблокированные заказы, так и отменено автоматическое применение этой блокировки в будущем.