Получение некоторых данных в момент создания документа

Добрый день.

Цель: Необходимо получить GUID документа, договора, продажи в момент его СОЗДАНИЯ. Далее запомнить его как текущую актуальную глобальную переменную, при перемещении в другой документ она заменяется на GUID объекта в который был осуществлен переход ... Ну как бы система постоянно в курсе, какой объект открыт в данный момент и в любой момент (даже сразу после создания) можно получить это значение.

Все как бы не плохо, когда есть такая запись:

DocumentID = FilesDetailGridArea.Dataset.Values('ItemID');

Но если ты только создал документ, то она возвращает null, а когда ты по документы кликаешь - вот тут она отдает кпримеру: {7E589C94-B7A8-42CD-B54D-EE620343C787} Ура. НО как быть, когда нужна она сразу после создания?

помогите пожалуйста

Нравится

5 комментариев

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

Выход - сразу после открытия карточки записи, заполнения значений по умолчанию и отработки базовых обработчиков выполнить dlData.Dataset.Post(). После этого Вы сможете использовать ID данной записи для добавления в другие таблицы.

Но прежде, чем это делать, нужно хорошенько обдумать все возможные моменты реализации, в том числе и такой: что делать, если после открытия карточки документа пользователь передумал и нажал кнопку "Отмена"? Запись-то уже в базе сохранена...

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

Хорошо. Допустим мы созлаем новый договор. кликаем добавить ... Окно начальных данных. Называем документ и кликаем ОК. Теперь выбираю Файлы ... Добавить .... В общем в этот момент еще не доступен GUID... если кликнуть на другой договор, а потом обратно на новый - все будет работать ...
из этого возникает вопрос - где же то заветное МЕСТО куда нужно вставить dlData.Dataset.Post() ??????????? :)

В принципе, если Вы уже нажали "OK", ID договора в базе уже существует. Надо смотреть на вызов Вашей функции, в которую Вы передаёте ContractID. Можете выложить код? Либо, если есть возможность подсоединиться к Вашей машине через удалённый доступ, отправьте запрос на support@tscrm.com с параметрами доступа.

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

Олег. Большое спасибо.
Вопрос разрешен.
решение крылось в методе извлечения GUID/

Правильно было так:

DocumentID = FilesDetailGridArea.ParentItemID;

Всегда пожалуйста :).

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

Показать все комментарии