Часто задают вопросы "Как узнать для чего нужен этот пункт меню в Аксапте?". Или "Что делает данная кнопка?" В этом совете постараюсь дать методику, как самостоятельно получать ответы на подобные вопросы.

 

 

Но, сказать тебе по дружбе,
Это — службишка, не служба;
Служба всё, брат, впереди.

(С) Ершов. Конек-Горбунок

Методику покажу на примере вопроса, который прозвучал на axForum. Вопрос звучал так: "Для чего нужна форма "Внутренние заказы" в запросах модуля "Расчеты с клиентами" и как ее использовать".

Что ж, все очень просто. Открываем репозитарий смотрим на это меню и открываем используемый пункт.

Открыть используемый пукнт меню

Получаем этот пункт. Смотрим на его свойства. Обращаем внимание, что пункт меню передает параметр InterCompany форме SalesTable. Кстати, само название параметра уже о многом говорит.

Пункт меню и его свойства

Также при помощи правой кнопки мыши и Add-Ins открываем форму SalesTable. Параметры обычно разбираются в методе init формы. Да предчувствия нас не обманули.

Метод init

Устанавливаем курсор в слово construct и выполняем команду "Просмотр определения" (Crtl+Shift+Пробел). Аксапта открывает окошко с этим методом.

Конструктор

Что ж, как и следовало ожидать, этот конструктор в зависимости от получаемого параметра создает экземпляр класса наследника. Устанавливаем курсор на название класса и снова выполняем команду "Просмотр определения".

Класс SalesTableForm_InterCompany

Снова, согласно всем рекомендациям объектно-ориентированного программирования, класс-наследник небольшой. Он изменяет только некоторые аспекты поведения базового класса. В частности: он запрещает редактирование типа заказа и добавляет критерий в запрос формы по полю InterCompanyOrder.

Вот собственно мы и получили ответ на программистском языке - пункт "Внутренние заказы" показывает только те заказы, у которых установлен признак InterCompanyOrder.

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

Снова открываем репозитарий. Теперь смотрим на поле InterCompanyOrder в таблице SalesTable. Открываем перекрестные ссылки и просим Аксапту показать, где используется данное поле.

Перекрестные ссылки - чем используется

Аксапта бодро выдает список объектов, где это поле упоминается.

Список перекрестных ссылок

Обратите внимание, что в первой колонке Аксапта сообщает в каком режиме объекты используют данное поле. Некоторые объекты изменяют значение InterCompanyOrder. Отлично, это то, что нужно. Отфильтровываем список по значению Wrire и...

Методы, которые изменяют значение поля interCompanyOrder

остается только два места во всей Аксапте, где изменяется значение этого "хитрого" поля. Остается только нажать на кнопку "Правка". Аксапта откроет окно с текстом программы прямо в том месте, где устанавливается значение этого поля. Для очистки совести поищем еще в тексте метода и...

...получаем вывод, что пукнт "Внутренние заказы" показывает заказы с включенным полем InterCompanyOrder. Это поле устанавливается системой, если клиент перечислен среди в списке организаций модуля Gateway Commerce или если заказ был автоматически создан при передаче из другой компании при помощи модуля CommerceGateway.

Для полного счастья остается только узнать как пользователь сам без средств разработки сможет узнать значение этого "хитрого" поля. Возвращаемся к списку объектов, которые используют поле InterCompanyOrder. Отфильтровываем по полю "путь к объекту". Задаем критерий "\\Forms*", чтобы увидеть все формы, где показывается данное поле.

Обратите внимание: в критерии, чтобы найти одну черточку "\" надо указать две черточки "\\".

Формы, которые показывают поле interCompanyOrder

Что ж все ясно. Пользователь может посмотреть значение данного поля в форме заказов на закладке Прочее в верхней части. Поле называется "Внутр. расчеты". Именно здесь пользователь может отследить "хитрое" значение. Если здесь галочка установлена, то такой заказ будет показан в пункте меню "Внутренние заказы".

Поле Внутр. расчеты

 

Что ж, подведем некоторые итоги.

  1. В большинстве случаев, в Аксапте можно легко найти что и как используется. Для этого надо воспользоваться средствами разработки и перекрестными ссылками.
  2. В большинстве случаев, очень небольшое число классов изменяет интересующее поле. Так например, в этом случае было только два класса, которые изменяют поле InterCompanyOrder. Готов утверждать, что в подавляющем числе случаев классов будет немного. Поэтому перекрестные ссылки действительно дают быструю возможность понять как и что происходит.

 

 

Вот уж служба, так уж служба!
Тут нужна моя вся дружба..

(С) Ершов. Конек-Горбунок

И наконец, на какие вопросы предложенный способ не дает ответов.

Предложенный в этом совете способ неприменим, если вопрос касается API классов. Таких классов немного, но эти классы составляют основу Аксапты. Эти классы очень сильно зависят друг от друга. Поэтому перекрестные ссылки не уменьшают количество объектов для разбора.

Список API классов можно найти в Best Practices, если сделать поиск по ключевому слову "API".

Кроме того, предложенный в данном совете способ отвечает только на вопросы "Как?" и "Что?". Этот способ не даст ответ на вопрос "Почему?". Чтобы понять "Почему?" надо действительно знать систему и хорошо представлять что в ней происходит.

 

Буду рад Вашим замечаниям и предложениям.
E-Mail: mazzy@mazzy.ru, Мазуркин Сергей