|
![]() |
#1 |
Участник
|
И стоило городить всё это ради такой ерунды? Ну да ладно, как говорится, опыт - сын ошибок трудных.
Для решения поставленной задачи вам необходимо в момент смены даты в InvetJournalTable (а совершенно гарантированно этот момент можно отловить в методе update() таблицы InvetJournalTable) синхронно (т.е. в одной транцакции) менять значения даты и в таблице InvetJournalTrans. Например так: X++: public void update() { InventJournalTrans InventJournalTrans; ; ttsbegin; if (this.TransDate != this.orig().TransDate) { update_recordset InventJournalTrans setting TransDate = this.TransDate where InventJournalTrans.JournalId == this.JournalId; } super(); ttscommit; } |
|
![]() |
#2 |
Участник
|
Цитата:
Сообщение от S.Kuskov
![]() И стоило городить всё это ради такой ерунды? Ну да ладно, как говорится, опыт - сын ошибок трудных....................
....................................... Обратите внимание. Метод InvetJournalTable.update() будет вызываться как при штатном сохранении записи CTRL+S, так и при аварийном выходе при нажатии ESC. Более того, если по каким-нибудь причинам у пользователя появится возможность изменить дату журнала с како-либо другой формы, этот код также отработает. Т.е. синхранизация данных обеспечивается на уровне тригеров таблиц и не зависит от пользовательского интерфейса |
|
![]() |
#3 |
Ищущий знания...
|
Цитата:
Сообщение от pwp
![]() Ну я так и знал. Поехали тогда немного в детали. Это нужно не для всех журналов, а только Проводки,Приб\Убытки\Перенос+еще 2.(т.е.хорошо бы в этом методе иметь установленный параметр с формы, чтобы не нести этот код в метод таблицы.) При update в Trans нужно отработать еще ряд методов по другим таблицам(посмотрите update Transdate при изменении даты в Grid) Кроме того, update на Trans в нашей реализации идет с параметром(но он не selectforupdate). + прямой update этой даты в Table не находит своего своего отражения на форме (возможно нужно где-то (?) вставить research() на DS формы)+ нужен еще и диалог по изменению даты(где его затеять, тогда?), вдруг это кто то сел на клавиатуру).Но по любому, спасибо за совет, попробую и его тоже, если получится.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
|
За это сообщение автора поблагодарили: pwp (1). |
![]() |
#4 |
Участник
|
Да у меня сейчас вроде так и сделано, только вместо класса я сделал метод в классе JournalFormTable. Но стоит требование конса делать это не по кнопке, а по редактированию даты(я этого не поддерживаю) отсюда проблема с ESC (см.выше)
|
|
![]() |
#5 |
Участник
|
Возможно действительно не стоит так серьёзно заморачиваться с синхронизацией дат в шапке и строках. А просто учесть возможность появления разсогласованных данных. И Добавить соответствующую проверку перед разноской, что мол даты в строках и шапке не совпадают. Поправить? Да. Нет.
|
|
![]() |
#6 |
Участник
|
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Сообщение от S.Kuskov
![]() Возможно действительно не стоит так серьёзно заморачиваться с синхронизацией дат в шапке и строках. А просто учесть возможность появления разсогласованных данных. И Добавить соответствующую проверку перед разноской, что мол даты в строках и шапке не совпадают. Поправить? Да. Нет.
|
|
![]() |
#7 |
Участник
|
Цитата:
Неа.Идя в том чтобы по максимому изолироваться от интерфейса пользователя. В данном случае таблицы содержат всю необходимую для работы информацию. Так зачем же логику переносить в методы источника данных какой-то конкретной формы. X++: InventJournalData = JournalTableData::construct(this);
InventJournalTransData = new JournalTransData(InventJournalTrans, InventJournalData); |
|
![]() |
#8 |
Участник
|
![]() Цитата:
Отрабатывайте. Перекрывайте аналогичным образом InventJournalTrans.update() и отрабатывайте. Да, возможно с update_recordset я погоричичлся. Можно добавить как минимум X++: while select InventJournalTrans where InventJournalTrans.JournalId == this.JournalId inventJournalTrans.inventMovement().journalSetTransDate(); Цитата:
Цитата:
Не понял вас. Нужен диалог который сможет влиять на что? изменение даты в InventJournalTable? Ну так это совершенно другая задача. Она никак не связана с последствиями смены этой даты. Вызывайте его например в методе validateWrite источника данных InentJournalTable. |
|
|
|