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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.02.2015, 11:36   #1  
at5454 is offline
at5454
Участник
 
61 / 10 (1) +
Регистрация: 29.05.2014
есть ли готовый метод docuref.create(айди таблицы,refrecid,путь к файлу) ?
То есть стоит задача некоторым документам посадить в docuref такой же файлик как у данного документа. Причем:
И Чтобы эта функция и в docuvalue тоже садила свою запись для каждого документа тоже (иначе файлик пропадет у всех при удалении у кого то одного )
В методах таблицы похожего ничего не нашел ничего. может класс есть какой нибудь.
Заранее спасибо
Старый 13.02.2015, 12:59   #2  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Обычно используют Docu::copy(), при этом DocuValue остается одна на всех.
Старый 27.08.2021, 11:36   #3  
RVS is offline
RVS
Сенбернар
Аватар для RVS
Злыдни
 
696 / 130 (6) +++++
Регистрация: 27.02.2003
Адрес: Королев МО
Цитата:
Сообщение от gl00mie Посмотреть сообщение
Обычно используют Docu::copy(), при этом DocuValue остается одна на всех.
Подниму тему... задача та же - "копирование привязки документа", проблем в том, что копирование - между компаниями.

То есть sourceDataAreaId != targetDataAreaId.

Как-то оно у меня пока не получается, any idea?
__________________
Best Regards,
Roman
Старый 27.08.2021, 18:19   #4  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
X++:
static void eglaItemAttachment(Args _args)
{
    DocuRef             docuRef,docuRefCur;
    InventTable         inventTable,inventTableCur;
    DocuValue           docuValue,docuValueCur;
    str                 filePath;
    int                 record;
    ;

    try
    {

        while select inventTableCur
        where inventTableCur.dataAreaId == '116' && inventTableCur.ItemId like "610*"
        {
            while select docuRefCur
                where docuRefCur.RefRecId  == inventTableCur.RecId
                && docuRefCur.RefCompanyId == inventTableCur.dataAreaId
                && docuRefCur.RefTableId   == inventTableCur.TableId
            {
                select firstOnly docuValueCur
                        where docuValueCur.RecId == docuRefCur.ValueRecId;

                filePath = docuRefCur.completeFilename();
                changeCompany('101')
                {
                    select firstOnly inventTable
                    where inventTable.ItemId == inventTableCur.ItemId
                    && inventTable.dataAreaId == '101';

                    if (inventTable.RecId)
                    {
                        ttsBegin;
                        docuRef.clear();
                        buf2Buf(docuRefCur , docuRef );
                        docuRef.RefRecId        = inventTable.RecId;
                        docuRef.RefTableId      = inventTable.TableId;
                        docuRef.RefCompanyId    = inventTable.dataAreaId;
                        docuRef.ActualCompanyId = inventTable.dataAreaId;
                        docuRef.insert();
                        record++;

                        if (docuRef.RecId && docuValueCur.RecId)
                        {
                            docuValue.clear();
                            buf2Buf(docuValueCur , docuValue);

                            docuValue.insert();

                           if(docuValue.RecId)
                           {
                               ttsBegin;
                               docuRef.selectForUpdate(true);
                               docuRef.ValueRecId = docuValue.RecId;
                               docuRef.update();

                               docuValue.selectForUpdate(true);
                               docuValue =  DocuValue::writeDocuValue(docuref,filePath);
                               docuValue.update();
                               ttsCommit;
                            }
                        }
                        ttsCommit;
                    }
                }
            }
        }
        info(strFmt("Total attachments = %1",record));
    }
    catch (Exception::Error)
    {
        warning("An attachement could not be added to this item - %1", inventTableCur.ItemId);
    }
}
За это сообщение автора поблагодарили: RVS (3).
Старый 28.08.2021, 06:27   #5  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1293 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Тут бы еще в запрос по InventTable добавить crossCompany. Иначе, если запускаем не из компании '116', то ничего не найдется.
Если же запускаем из '116' и без crosscompany, то смысла указывать компанию нет. Ну а компанию '101' вообще в запрос добавлять не нужно - мы на неё переключились явно. Ну, так как есть while select, то после переключения компании желательно обнулить переменную inventTable, иначе бывают "сюрпризы".
Правда это так, замечания, чтобы поворчать. Вопрос про DocuRef, а не про общий подход работы с компаниями.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Пересоздание таблицы при синхронизации Serg16 DAX: Администрирование 1 26.08.2009 13:55
Вставка строк в таблицы Аксапты сторонними средствами Андре DAX: База знаний и проекты 1 07.05.2009 16:49
Получение из поля Map кода поля реальной таблицы, к ней привязанной (Mappings) vey DAX: Функционал 5 16.03.2005 11:16
использование create() ds sassas DAX: Программирование 5 11.11.2004 15:22
В браузере таблицы информация есть Natashka DAX: Функционал 10 12.02.2003 15:59

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

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

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