Показать сообщение отдельно
  #33  
Старый 17.10.2013, 15:47
Аватар для Freeman
Freeman Freeman вне форума
Местный
 
Регистрация: 05.10.2012
Адрес: Санкт-Петербург
Сообщения: 576
Версия Delphi: 6
Репутация: выкл
По умолчанию

Цитата:
Сообщение от Uniq!
Как реализовать вызов из диалога другого диалога? Ведь в той же 1c можно вызвать справочник товаров или клиентов, для заполнения соответствующих полей основного документа?
Это уже архитектурный вопрос.

Если справочники считаются временными сущностями, их наборы данных хранятся прямо в диалогах и создаются/уничтожаются по мере надобности вместе с самими диалогами. В этом случае списки клиентов на главной форме и в диалогах могут выводиться разными наборами данных. На то и СУБД, в конце концов.

Если же перечитывание справочников при каждом вызове диалога считается затратной операцией, придумывается что-то вроде диспетчера ресурсов, разделяющего однажды прочитанные данные между многими вызовами диалогов. В простом случае в роли диспетчера может выступить и модуль данных, и даже глобальная переменная.

Развитие идет по спирали, и осознанное использование спорных инструментов -- сознательный выбор, пусть даже они и были признаны "плохими" на предыдущем шаге. Инструменты ведь не бывают плохими или хорошими, они всего лишь инструменты. Сравни свои теперешние знания о глобальных переменных и модулях данных с культом карго, который был раньше.

Если вместо "проброса" справочников сделать объект "окружение", в его роли вполне может выступить модуль данных с дополнительными публичными методами по принципу Execute, если нужно.

Цитата:
Сообщение от Uniq!
Только тогда на mrOK нужно повесть CommitTrans, а на mrCancel RollbackTrans. Вместо Post и Cancel. Я прав?
Я бы предусмотрел два вида диалогов -- простой и подчиненными данными, тогда Execute становится виртуальной.
__________________
Не стоит путать форумы с богадельнями. © Bargest
Ответить с цитированием