04.02.2010, 09:44 | #21 |
Участник
|
Он сказал: "Поехали!" и взмахнул рукой..
Цитата:
Отрабатывайте. Перекрывайте аналогичным образом InventJournalTrans.update() и отрабатывайте. Да, возможно с update_recordset я погоричичлся. Можно добавить как минимум X++: while select InventJournalTrans where InventJournalTrans.JournalId == this.JournalId inventJournalTrans.inventMovement().journalSetTransDate(); Цитата:
Цитата:
Не понял вас. Нужен диалог который сможет влиять на что? изменение даты в InventJournalTable? Ну так это совершенно другая задача. Она никак не связана с последствиями смены этой даты. Вызывайте его например в методе validateWrite источника данных InentJournalTable. |
|
04.02.2010, 09:50 | #22 |
Участник
|
Возможно действительно не стоит так серьёзно заморачиваться с синхронизацией дат в шапке и строках. А просто учесть возможность появления разсогласованных данных. И Добавить соответствующую проверку перед разноской, что мол даты в строках и шапке не совпадают. Поправить? Да. Нет.
|
|
04.02.2010, 10:14 | #23 |
Участник
|
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Сообщение от S.Kuskov
Возможно действительно не стоит так серьёзно заморачиваться с синхронизацией дат в шапке и строках. А просто учесть возможность появления разсогласованных данных. И Добавить соответствующую проверку перед разноской, что мол даты в строках и шапке не совпадают. Поправить? Да. Нет.
|
|
04.02.2010, 10:44 | #24 |
Участник
|
Цитата:
Неа.Идя в том чтобы по максимому изолироваться от интерфейса пользователя. В данном случае таблицы содержат всю необходимую для работы информацию. Так зачем же логику переносить в методы источника данных какой-то конкретной формы. X++: InventJournalData = JournalTableData::construct(this);
InventJournalTransData = new JournalTransData(InventJournalTrans, InventJournalData); |
|
04.02.2010, 11:47 | #25 |
Участник
|
Цитата:
Сообщение от pwp
Журналы InvetJournalTable+InvetJournalTrans(Строки). Нужно, чтобы строки одного журнала имели одну дату. Для этого решили эту дату внести в Table (уже неверно). И при изменении поля клиентом в Table необходимо поменять дату и в строках. Решил: в validate этого поля на DS в Table тут же спросить клиента и при ДА заменить дату и в Table и в Trans. Все работает, но: если клиенту придет в голову нажать Esc вместо Save и там отказаться от модификации , то даты разъедутся. Вот и вся проблема(мелочи я опускаю).
Validate() не должен ничего изменять. Его цель - это всего-лишь верификация. Контроль корректности внесенных изменений. Собственно, отсюда и Ваши проблемы. Я уже указал, меняйте в событии write() на DataSource-формы или (как уже сказали) в табличных методах update(). Т.е. в тех методах, которые, собственно, и предназначены для модификации. Другая Ваша ошибка - это диалог с пользователем. Практика показывает, что пользователи диалоги не читают! У них другая задача. Им надо ввести документ. Срочно! Еще вчера! Если интерфейс позволяет это сделать, нажав кнопку "Да"/"Нет", то они и будут нажимать кнопки не обращая внимания на текст. Тем более, в Вашем случае совершенно не важно, какую кнопку они нажмут. Вы должны жестко "прошить" правила, когда измененная дата приводит к изменению даты во всех строках журнала. Возможно, создать дополнительные настройки или настроечные таблицы. Никакого диалога с пользователем быть не должно! |
|
04.02.2010, 12:24 | #26 |
Участник
|
Цитата:
Сообщение от Владимир Максимов
Ошибка не в том, что Вы создали общую дату в шапке документа (это как раз нормально), а в том, что Вы выполняете некую модификацию в Validate(), что принципиально неверно!!
Validate() не должен ничего изменять. Его цель - это всего-лишь верификация. Контроль корректности внесенных изменений. Цитата:
Сообщение от Владимир Максимов
Другая Ваша ошибка - это диалог с пользователем.
Практика показывает, что пользователи диалоги не читают! У них другая задача. Им надо ввести документ. Срочно! Еще вчера! Если интерфейс позволяет это сделать, нажав кнопку "Да"/"Нет", то они и будут нажимать кнопки не обращая внимания на текст. Тем более, в Вашем случае совершенно не важно, какую кнопку они нажмут. Вы должны жестко "прошить" правила, когда измененная дата приводит к изменению даты во всех строках журнала. Возможно, создать дополнительные настройки или настроечные таблицы. Никакого диалога с пользователем быть не должно! "Прошить" правила...без диалога вряд ли получится, клиент ведь может ввести и неправильную дату(например 01.01.2010 вместо 05.01.2010), которую по таблицам не отследить, И вообще нужно было изменение даты (редкая операция) сажать на кнопку, а не вытаскивать это из Грид. Последний раз редактировалось pwp; 04.02.2010 в 12:38. |
|
04.02.2010, 13:01 | #27 |
Участник
|
Цитата:
Сообщение от pwp
То, что не читают-верно и жмут подряд. Но сам факт вопроса должен быть, иначе Вам скажут, что не хотели менять дату, а она сама поменялась. Просто по умолчанию должно все отработать по норме.
"Прошить" правила...без диалога вряд ли получится, клиент ведь может ввести и неправильную дату(например 01.01.2010 вместо 05.01.2010), которую по таблицам не отследить, Если Вы считает, что факт наличия вопроса как-то поможет Вам при "разборе полетов", то не обольщайтесь. Возможно, перед руководством Вы и сможете себе обезопасить, но данные-то все-равно получатся кривыми. Задавали Вы вопрос или нет. Ведь не читают же! Да и исправлять-то кому? По любому, лишние проблемы для СЕБЯ! Здесь возможен только отказ в изменении. Но никаких диалогов! Ну, и настаивайте на этом решении. Объясните консультанту всю глубину его заблуждений |
|
04.02.2010, 13:09 | #28 |
Участник
|
Кстати, никто не мешает вам сделать это. Тем самым вы решите свою проблему централизации источника изменений. Но вопросу совместимости вашего кода по смене даты со стандартным кодом стоит уделить максимум внимания. Я бы сказал встаёт вопрос не где делать изменения, а как их делать.
|
|
04.02.2010, 16:00 | #29 |
Участник
|
Цитата:
Цитата:
Цитата:
Сообщение от S.Kuskov
Кстати, никто не мешает вам сделать это. Тем самым вы решите свою проблему централизации источника изменений. Но вопросу совместимости вашего кода по смене даты со стандартным кодом стоит уделить максимум внимания. Я бы сказал встаёт вопрос не где делать изменения, а как их делать.
Идеология работы с InventJournalTrans. Но поскольку документации нет, нужно открывать исследования на эту тему с тестированием вариантов и построением стандартной методики работы. Стремно, конечно, исследовать такие вещи, но других вариантов не прослеживается.... В общем , по моему, эту тему можно закрывать. Спасибо всем, принявшим участие. |
|
|
|