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

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

by
Offline Offline

« : 06-09-2010 07:30 » 

Бодрого дня.
Может вопрос и примитивный, но с этим еще не сталкивался, поэтому застрял(
Проблема в следующем:
Создал обработчик, который генерит список документов и автоматом их заполняет по исходным данным из ТЗ.
С заполнением реквизитов документа все ок. Но для заполнения табличной части в нем есть процедура ЗаполнитьВыплаты(), вот с ней и проблемы. Как ее вызвать?
Код:
ДокИнд =  СоздатьОбъект("Документ.Дока");
ДокИнд.Новый();
ДокИнд.ДатаДок = ДатаДок;
...
ДокИнд.ЗаполнитьВыплаты();
ДокИнд.Записать();
Выдается ошибка:
ДокИнд.ЗаполнитьВыплаты();
{Обработка.ДПУ.Форма.Модуль(66)}: Поле агрегатного объекта не обнаружено (ЗаполнитьВыплаты)
« Последнее редактирование: 06-09-2010 08:07 от kiser » Записан
Kivals
Модератор

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

WWW
« Ответ #1 : 06-09-2010 11:19 » 

Простыми методами извне - никак. Только создавать в форме документа обработчик ПриОткрытии, анализировать переданные параметры и выполнять нужные фукнции.
Записан
kiser
Участник

by
Offline Offline

« Ответ #2 : 06-09-2010 11:35 » 

Посмотрел, но получается, что когда из обработчика создаю документ, то в этом документе нет входа в процедуру ПриОткрытии().
Неужели есть доступ только к реквизитам документа, а к процедурам никак не достучаться?
Записан
Kivals
Модератор

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

WWW
« Ответ #3 : 06-09-2010 13:55 » 

kiser, да, именно так. Чтобы доступиться к обработчику ПриОткрытии необходимо:
1. В модуле формы документа приблизительно такой код:
Код:
Процедура ПриОткрытии()
Если ТипЗначения(Форма.Параметр)="СписокЗначений" Тогда // Проверим что мы передали то, что нужно
ТЧ=Форма.Параметр.Получить("ТабличнаяЧасть");
ЗагрузитьТабличнуюЧасть(ТЧ);
ВызватьПроцедуруМодуля();
Записать(); // Запишем документ
Форма.Параметр=ТекущийДокумент(); // Вернем записаный документ
СтатусВозврата(0); // Чтобы форма не открывалась
Возврат;
КонецЕсли;
... // Здесь код при обычном открытии формы
КонецПроцедуры
2. Вызвать это таким образом:
Код:
Конт=СоздатьОбъект("СписокЗначений");
Конт.Установить("ТабличнаяЧасть",ТаблицаЗначений);
ОткрытьФормуМодально("Документ.ВидДокумента",Конт);
Док=СоздатьОбъект("Документ."+Конт.Вид());
Док.НайтиДокумент(Конт);
...// Редактируем прочие реквизиты документа
Док.Записать();
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines