Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Выбор созданного документа  (Прочитано 8655 раз)
0 Пользователей и 3 Гостей смотрят эту тему.
Al777
Гость
« : 09-03-2009 15:57 » 

Имеется внешний отчет, в котором есть кнопка <Создать документ>. При ее нажатии происходит создание нового документа через процедуру:
Процедура СозданиеДок()
   СписПарам = СоздатьОбъект("СписокЗначений");
   СписПарам.ДобавитьЗначение(Фирма);
   ОткрытьФорму("Документ.Акт", СписПарам); (где СписПарам - список параметров, передаваемых в новый документ)
КонецПроцедуры
Пользователь работает с документом, потом записывает и закрывает его, попадая в отчёт, из которого он создавался. При этом отчёт всё время находился в открытом состоянии. В этот момент нужно найти именно этот созданный документ и отобразить его в строке выбора. Как это сделать? Помогите, пожалуйста.
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 09-03-2009 21:00 » 

ОткрытьФорму() во втором параметре (куда передается список значений) возвращает контекст формы. Пробуй работать с ним:
ОткрытьФорму("Документ.Акт", СписПарам);
СписПарам.ТекущийДокумент();

Пока форма открыта - тип значения контекста ТипЗначения(СписПарам)=100, когда уже закрыта - 0. Возможно то-то придется добавить в обработчик ПриЗаписи() в форме документа Акт.
Записан
Al777
Гость
« Ответ #2 : 13-03-2009 07:01 » 

Когда форма открыта, тип значения контекста ТипЗначения(СписПарам)=100. Это понятно. А как мне понять, когда ТипЗначения(СписПарам)=0, если в это время открыт документ? И когда он закрывается, как мне это определить? К тому же, необходимо выяснить, сохранён он или нет? Ведь, когда документ закрывается, в зависимости от того, сохранён он или нет, он должен тут же отобразиться. Как всё это сделать?
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 13-03-2009 14:35 » 

В форме документа возможно вставить процедуру ПриЗаписи(), которая будет вызвана при интерактивной записи документа.
наверное я бы делал так: передавал в документ контекст открывающей его формы, при записи документа анализировал заполнен ли у меня этот параметр и устанавливал бы какой-то флажок, связанный с контекстом открывающей формы.
В форме обработки (когда ТипЗначения(Контекст)=0, т.е. форма документа закрыта) - анализировал бы флажок.
Флажок: в данном случае может быть список или таблица значений в глобальном контексте (с признаком Экспорт), в кторой связываются контекст открывающей формы (формы обработки) и записанный документ.

Один важный момент: если документ новый, то в ПриЗаписи() функция  ТекущийДокумент() будет возвращать пустое значение (т.е. фактически - это функция перед записью). Струкрутра должна быть такая:
Код:
//******************************************************************************
// Предопределенная процедура
//
Процедура ПриЗаписи()
// Проверки возможности записи:
// Например - заполненность нужных полей

Если СтатусВозврата()=0 Тогда Возврат; КонецЕсли; // Был отказ от записи

// Проверка заполненности переменной модуля КонтекстВызова
//  (должна быть объявлена в модуле и инициализорована ПриОткрытии() )
Если ТипЗначения(КонтекстВызова)=100 Тогда
Записать(); // Для новый документов: теперь ТекущийДокумент() возвратит нужный документ
глТаблицаСвязи.НоваяСтрока(); // Глобальная переменная - таблица значений для связи контекстов
глТаблицаСвязи.КонтекстВызова=КонтекстВызова;
глТаблицаСвязи.Документ=ТекущийДокумент();
КонецЕсли;
КонецПроцедуры // ПриЗаписи()
Записан
Al777
Гость
« Ответ #4 : 13-03-2009 14:53 » new

А по другому, без использования глобального модуля, это никак не возможно?
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 13-03-2009 20:39 » 

Попробуй после Записть() в предыдущем примере использовать
КотекстВызова.ВыбДокумент=ТекущийДокумент();
где ВыбДокумент - реквизит формы обработки
(в успехе не уверен - пробуй, экспериментируй)
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines