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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.04.2012, 12:36   #1  
Cathome is offline
Cathome
Участник
Аватар для Cathome
 
54 / 23 (1) +++
Регистрация: 10.11.2010
Адрес: Москва
? Ошибка при копировании/вставке строк таблицы
Добрый день, уважаемые программисты.
Стоит такая задача: однократно скопировать строки таблицы в неё же, заменив значение 1 поля. Использую для этого buf2buf и получаю сообщение о том, что "Запись не может быть вставлена, запись уже существует". Причем сообщение это вываливается не на всех копируемых строках, а только на некоторых.
Индекс на таблице состоит из 3 полей. Проверила - сочетание их значений во вставляемой мной "проблемной" записи уникально. Ума не приложу, в чем проблема. Чем еще воспользоваться для своей задачи, не знаю.
Прочитала следующие темы:
Копирование строк таблицы с помощью DictTable
копирование строки в таблице
И некоторые другие, более бесполезные для моей задачи, темы.
DAX ядро 4.0.2503.454, приложение 4.0.2501.122, СУБД не знаю.
А вот код:
X++:
static void Job49(Args _args)
{
    LedgerRRGESectionProperties_W       prs, prt;
    LedgerRRGEPropertyCells_W           cells, cellt;
    ;
    ttsbegin;
    while select cells
        join prs where prs.TemplateId == 'БухОт_2011' &&
                       prs.RecId == cells.PropertyRefRecId
    {
        select prt where prt.TemplateId == 'БухОт_2012' &&
                         prt.SectionId == prs.SectionId &&
                         prt.PropertyId == prs.PropertyId;

        buf2buf(cells,cellt);
        cellt.PropertyRefRecId = prt.RecId;
        cellt.insert();
    }
    ttsabort;
}
__________________
"казалось бы, зачем виртуализировать виртуализаторы виртуализаторов виртуальных ява-машин, но Оракл было уже не остановить..." © Башорг
Старый 12.04.2012, 13:12   #2  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Cathome Посмотреть сообщение
Проверила - сочетание их значений во вставляемой мной "проблемной" записи уникально.
А как проверяли? Попробуйте на тестовой базе убрать проверку уникальности с индекса и после отработки джоба поискать дубликаты
За это сообщение автора поблагодарили: Cathome (1).
Старый 12.04.2012, 13:15   #3  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
X++:
void copyLedgerJournalTrans()
{
    LedgerJournalTrans  ledgerJournalTrans, ledgerJournalTransNew;
    NumberSeq                       numSeq;
    ;
    while select ledgerJournalTrans
        where ledgerJournalTrans.JournalNum == .LedgerJournalNum
    {
        ledgerJournalTransNew.clear();
        ledgerJournalTransNew.data(ledgerJournalTrans);
        ledgerJournalTransNew.JournalNum = ledgerJournalTable.JournalNum;
        ledgerJournalTransNew.AmountCurCredit = -ledgerJournalTransNew.AmountCurCredit;
        numSeq = NumberSeq::newGetVoucherFromCode(ledgerJournalTable.VoucherSeries, false);
        ledgerJournalTransNew.voucher = numSeq.voucher();
        ledgerJournalTransNew.insert();
    }
}
оно так красивее и наверное быстрее

Последний раз редактировалось Sada; 12.04.2012 в 13:18.
Старый 12.04.2012, 13:25   #4  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 868 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
я так понимаю, что проблема не в том КАК копируется, а в том что копируется.

вы уверены, что у вас всегда есть prt. И кстати, связь между prs и cells по двум полям - смотрите relations

И вообще, может лучше кнопками на форме шаблонов выполнить копирование или экспорт-импорт?
Старый 12.04.2012, 16:14   #5  
Cathome is offline
Cathome
Участник
Аватар для Cathome
 
54 / 23 (1) +++
Регистрация: 10.11.2010
Адрес: Москва
Всем спасибо! Почему-то, когда пытаешься обсудить проблему с кем-то, начинаешь думать. До этого несколько дней не было никаких мыслей, а сейчас нашла, в чем была загвоздка. И с индексом, и с копированием - все в порядке. Проблема была в наложенных ограничениях, а вот туда мне как-то не приходило в голову посмотреть.
Цитата:
Сообщение от Wamr Посмотреть сообщение
я так понимаю, что проблема не в том КАК копируется, а в том что копируется.
вы уверены, что у вас всегда есть prt. И кстати, связь между prs и cells по двум полям - смотрите relations
И вообще, может лучше кнопками на форме шаблонов выполнить копирование или экспорт-импорт?
Связь есть. Ну, если бы и не было - на это-то как раз легко наткнуться и воткнуть проверку.
Кнопками на форме не проще. Стандартное копирование копирует всю структуру шаблона. Смысл как раз в том, что реквизиты практически все те же остались, да вот организованы в новую структуру.
Дело оказалось в том, что записи в prs, prt оказались не уникальны. Надо проверять, чтобы у одинаковых реквизитов еще и все дерево разделов совпадало. В общем, буду думать, как лучше это провернуть.. (и стоит ли оно таких мучений )
__________________
"казалось бы, зачем виртуализировать виртуализаторы виртуализаторов виртуальных ява-машин, но Оракл было уже не остановить..." © Башорг
Теги
buf2buf, вставка, записи таблицы, копирование

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Что попадает в буфер обмена при стандартном копировании строк grid'а? Gustav DAX: Программирование 6 03.03.2013 11:06
Произошла ошибка при получении нового значения RecId для таблицы. Poleax DAX: Администрирование 20 20.06.2012 05:25
Вставка строк в таблицы Аксапты сторонними средствами Андре DAX: База знаний и проекты 1 07.05.2009 16:49
Ошибка при синхронизации таблицы Eldar9x DAX: Программирование 2 27.02.2009 15:19
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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