AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 25.12.2005, 09:50   #1  
Arahnid is offline
Arahnid
Участник
 
880 / 60 (4) ++++
Регистрация: 09.08.2005
Адрес: Moscow
У нас есть кассиры, которые создают ПКО/РКО через журнал ордеров. Кассиры каждый день меняются. Хочу, чтобы по имени пользователя определялся кассир для печати ордеров. В каком месте это лучше делать: либо прописать в методе инсерт к таблице ордеров, либо в каком-то классе/методе, который ответственнен за инициализацию базы (компании) при открытии? Если последнее, то где это надо делать.
Старый 25.12.2005, 10:32   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Ссылки на текущих официальных лиц хранятся в таблице OfficialsTable_RU
А для контактные лица при создании каждого документа хранятся в OfficialsTrans_RU

Ваша задача - при помощи перекрестных ссылок отловить те места, где вставляются записи в OfficialsTrans_RU и подменить алгоритм на ваш "smart" алгоритм.

ЗЫ Учтите, что работа с таблицами официальных лиц - антипаттерн. Разберитесь и никогда так не делайте.
__________________
полезное на axForum, github, vk, coub.
Старый 25.12.2005, 13:16   #3  
Arahnid is offline
Arahnid
Участник
 
880 / 60 (4) ++++
Регистрация: 09.08.2005
Адрес: Moscow
Я нашла в какой момент вставляются официальные лица в форму (метод датасоурс executeQuery). После того как они вставятся идет супер, затем я хочу добавить свое. Получить связь в официалтранс (это я и так уже поняла пока искала, не такая я уж и глупая) - т.е. идентификатор связи с официальными лицами и подставить ФИО кассира.

Только вот самое забавное не могу найти таблицу с именами пользователей. Идентификатор есть, а имен таблиц, куда ссылается таблица с пользователями, нет.

Последний абзац неразборчивый читать не надо. Уже нашла. А вот первый, правильно ли я вас поняла маззи
Старый 25.12.2005, 13:23   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Arahnid Посмотреть сообщение
Я нашла в какой момент вставляются официальные лица в форму (метод датасоурс executeQuery). После того как они вставятся идет супер, затем я хочу добавить свое. Получить связь в официалтранс (это я и так уже поняла пока искала, не такая я уж и глупая) - т.е. идентификатор связи с официальными лицами и подставить ФИО кассира.

Только вот самое забавное не могу найти таблицу с именами пользователей. Идентификатор есть, а имен таблиц, куда ссылается таблица с пользователями, нет.
RHRMVirtualNetworkTable

Цитата:
Сообщение от Arahnid Посмотреть сообщение
Последний абзац неразборчивый читать не надо. Уже нашла. А вот первый, правильно ли я вас поняла маззи
Хм... Не понял. Что нужно сделать с первым обацем?
__________________
полезное на axForum, github, vk, coub.
Старый 25.12.2005, 13:33   #5  
Arahnid is offline
Arahnid
Участник
 
880 / 60 (4) ++++
Регистрация: 09.08.2005
Адрес: Moscow
А почему не в форму LedgerJournalTransCasher или как она там называется
Старый 25.12.2005, 14:13   #6  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Хм... Таки не понял вопрос.
Но открыл Аксапту и начал вспоминать.

Похоже, я был неправ насчет RHRMVirtualNetworkTable

посмотрите на метод OfficialsTrans_RU::nameLookup
Имя подписавшего берется из списка:
= сотрудников EmplTalbe
= контактных лиц ContactPerson
__________________
полезное на axForum, github, vk, coub.
Старый 25.12.2005, 14:23   #7  
Arahnid is offline
Arahnid
Участник
 
880 / 60 (4) ++++
Регистрация: 09.08.2005
Адрес: Moscow
Вообщем, правильно ли я понимаю, что надо вставить в ds OfficialTrans_ru формы LedgerJournalTransCasher .

Если правильно, то почему он ругается в методе init?
Старый 25.12.2005, 14:35   #8  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
1. Нет такой формы в стандартном функционале. Есть LedgerJournalTransRCash
2. Я не понимаю, что вы хотите вставить и какой init ругается.
3. А если ругается, то не могли бы вы привести текст ошибки.
__________________
полезное на axForum, github, vk, coub.
Старый 25.12.2005, 14:52   #9  
Arahnid is offline
Arahnid
Участник
 
880 / 60 (4) ++++
Регистрация: 09.08.2005
Адрес: Moscow
Извините, что так не точно, Аксапта отвалилась и не приваливалась. Теперь по понятиям

форма LedgerJournalTransRCash
ds OfficialsTrans_RU

текст кода из метода executeQuery

<div class='XPPtop'>X++</div><div class='XPP'>[color=:blue]public[/color] [color=:blue]void[/color] executeQuery()
{
[color=:blue]select[/color] OfficialsTrans_RU
[color=:blue]where[/color] OfficialsTrans_RU.ReportType [color=:blue]==[/color] OffReportType_RU::CashSlip &&
OfficialsTrans_RU.OffSessionId [color=:blue]==[/color] ledgerJournalTrans.OffSessionId_RU;

[color=:blue]super[/color]();

[color=:green]//добавлено еще в ClassDeclaration
[/color] [color=:blue]while[/color] [color=:blue]select[/color] [color=:blue]forupdate[/color] OfficialsTrans_RU
[color=:blue]where[/color] OfficialsTrans_RU.ReportType [color=:blue]==[/color] OffReportType_RU::CashSlip &&
OfficialsTrans_RU.OffSessionId [color=:blue]==[/color] ledgerJournalTrans.OffSessionId_RU &&
OfficialsTrans_RU.Position [color=:blue]==[/color] OffPosition_RU::Cashier
{
[color=:blue]while[/color] [color=:blue]select[/color] [color=:blue]firstonly[/color] userInfo [color=:blue]where[/color] userInfo.Id [color=:blue]==[/color] curUserId()
{
EmplNameCashier = Empltable::findByName(userInfo.name).Name;
EmplTitleCashier = Empltable::findByName(userInfo.name).Title;

}
}

}</div>

Помимо этого в класс декларейшен формы добавлено
<div class='XPPtop'>X++</div><div class='XPP'>[color=:green]//Date: 24/12/05
[/color] [color=:green]//Name: Cat
[/color] UserInfo userInfo;
EmplName EmplNameCashier;
TitleId EmplTitleCashier;
[color=:green]//добавилено котенком 24/12/05[/color]</div>



Ошибка Неправильные типы агрументов в операции присвоения значения переменной

forms/LedgerJournalTransRCash/data sourse/ledgerjournaltrans\methods\init - line 5
Старый 25.12.2005, 14:57   #10  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
1. Я не понял что именно вы собираетесь сделать в методе ExcecuteQuery
2. В любом случае, я считаю принципиально неправильным править УЖЕ полученную запись. Этим путем стоит идти только если другого выхода нет
3. Я предлагал вам разобраться как заполняется таблица Officials_RU. В частности разберитесь как работает класс OfficialsServ_RU. И просто заполняйте своими данными. Не мучайтесь с формами, добейтесь правильных данных в таблицах.
__________________
полезное на axForum, github, vk, coub.
Старый 25.12.2005, 15:03   #11  
Arahnid is offline
Arahnid
Участник
 
880 / 60 (4) ++++
Регистрация: 09.08.2005
Адрес: Moscow
Вот в 1с есть такая глобальная процедура, которая запускается, когда входишь в программу. Я там тогда и прописывала кассира в 1с.

А в аксапте такой класс есть?
Старый 25.12.2005, 15:06   #12  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Есть форма
Главное меню \ Основное \ Настройки \ Контакты \ должностные лица.
__________________
полезное на axForum, github, vk, coub.
Старый 25.12.2005, 15:11   #13  
Arahnid is offline
Arahnid
Участник
 
880 / 60 (4) ++++
Регистрация: 09.08.2005
Адрес: Moscow
Да я понимаю это. Просто хочу понять, как при входе в программу присваивать значение кассиру. Этот класс сам по себе не активизируется. ОН ничем не вызывается. Значит , когда пользователь входит в программу, этот класс должен вызываться. Чем его надо вызывать?
Старый 25.12.2005, 15:22   #14  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Arahnid Посмотреть сообщение
Да я понимаю это. Просто хочу понять, как при входе в программу присваивать значение кассиру.
Наверное здесь и кроется источник моего глубочайшего непонимания.
Почему вы хотите присваивать значение ПРИ ВХОДЕ?
__________________
полезное на axForum, github, vk, coub.
Старый 25.12.2005, 15:26   #15  
Arahnid is offline
Arahnid
Участник
 
880 / 60 (4) ++++
Регистрация: 09.08.2005
Адрес: Moscow
Я так делала в 1с. Пользователь входил и он сразу подставлялся в историю значения кассир.

Я так же хочу сделать. Пользовтель входит. Определяется группа прав. Если группа прав кассир, то он должен встать в должность кассира (Контакты).

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

Если не при входе в программу, то при создании строки надо присваивать фамилию кассира. Этот вариант вы горите плох.
Старый 25.12.2005, 15:27   #16  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Arahnid Посмотреть сообщение
У нас есть кассиры, которые создают ПКО/РКО через журнал ордеров. Кассиры каждый день меняются. Хочу, чтобы по имени пользователя определялся кассир для печати ордеров. В каком месте это лучше делать: либо прописать в методе инсерт к таблице ордеров, либо в каком-то классе/методе, который ответственнен за инициализацию базы (компании) при открытии? Если последнее, то где это надо делать.
Хочу напомнить себе и вам, Arhanid, исходный вопрос.

Кассиры, насколько я понимаю, разные пользователи.
1. Это значит, что вы должны расширить таблицу OfficialTable_Ru так, чтобы можно было указывать различные подписи для различных пользователей.
2. Это значит, что вы должны расширить логику создания новых записей в OfficialTrans_Ru так, чтобы при поиске из OfficialTable_Ru учитывался бы и пользователь.
3. Логику скорее всего менять надо в классе OfficialServ_Ru
4. Нужно ли запоминать пользователя в OfficialTrans_Ru - не знаю.

Ни в коем случае вам не надо править формы.
Вам нужно править данные.
__________________
полезное на axForum, github, vk, coub.
Старый 25.12.2005, 15:31   #17  
Arahnid is offline
Arahnid
Участник
 
880 / 60 (4) ++++
Регистрация: 09.08.2005
Адрес: Moscow
Мой вопрос подразумевал следующее. Пользователь входит в программу и если кассир, то подставляется в талицу как кассир. Может я вначале не так написала
Старый 25.12.2005, 15:45   #18  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Ох. Проще сделать...
См. проект.

Главное изменение в методе OfficialsServ_RU.insertOrUpdate()

Было
<div class='XPPtop'>X++</div><div class='XPP'>
officials = OfficialsTable_RU::find(_reportType,
_position,
_relation,
_inventLocation);</div>

Стало
<div class='XPPtop'>X++</div><div class='XPP'>
officials = OfficialsTable_RU::find(_reportType,
_position,
_relation,
_inventLocation, curuserid());</div>

Все остальное предназначено обеспечить работу данного изменения.

Еще раз хочу напомнить, что работа с Officials - антипаттерн.
Никогда так не делайте в своем функционале.

Извините, пропустил проверку validateWrite. Исправился.
Добавил скриншот. Обратите внимание, что:
= если войдет пользователь mazzy, то для него кассир будет Сидоров
= если войдет пользователь admin, то для него кассиром будет Вронский
= для остальных кассиром будет Гладких.
Миниатюры
Нажмите на изображение для увеличения
Название: 1.gif
Просмотров: 224
Размер:	24.2 Кб
ID:	9929  
Вложения
Тип файла: xpo Officials_RU_maz.xpo (228.6 Кб, 170 просмотров)
__________________
полезное на axForum, github, vk, coub.
Старый 25.12.2005, 16:01   #19  
Arahnid is offline
Arahnid
Участник
 
880 / 60 (4) ++++
Регистрация: 09.08.2005
Адрес: Moscow
Боже, какой сложный вариант. Я хочу проще. Есть имя пользователя, оно соответствует имени сотрудника. Если это так, то мы его подставляем как кассира. Новый реквизит то мне зачем? Мне не нужна идентификация пользователя и кассира.

Ладно, вы истинный программист. У меня все идеи сводятся к меньше гадить в коде и все изменения свети к минимуму. Я идею поняла. Дальше буду разбираться сама. Большое спасибо.
Старый 25.12.2005, 16:03   #20  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Arahnid Посмотреть сообщение
Есть имя пользователя, оно соответствует имени сотрудника.
Как вы это собираетесь выяснить?

Как скажете.
__________________
полезное на axForum, github, vk, coub.
 


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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 21:17.