Имя: Пароль:
1C
1С v8
Программное создание и проведение документа
, , ,
0 vse_serjezno
 
09.11.13
00:44
Здравствуйте.
Я делаю программное создание документа №2 при проведении документа№1. Док№2 можно ввести на основании Док№1. Но нужна автоматическая реализация создания, заполнения и записи с проведением.

В модуле объекта №1 в обработке проведения делаю
НовыйДок№2 = Документы.Док№2.СоздатьДокумент();
НовыйДок№2.ОбработкаЗаполнения(ЭтотОбъект.Ссылка, Истина);
Попытка
НовыйДок№2.Записать(РежимЗаписиДокумента.Проведение);
Исключение
Сообщить("Сообщения по данному документу не сформированы");
КонецПопытки;

Процедура обработкаЗаполнения собирает данные для заполнения дока№" и в конце содержит строки:  
Получатели.Загрузить(Запрос.ВыполнитьПакет()[1].Выгрузить());
ОбработатьЗаполнениеДокумента();

Получатели - это табчасть Дока№2. В процедуре ОбработатьЗаполнениеДокумента() проставляются в табчасти Дока№2 некоторые реквизиты и т.п.

Программа с ошибкой не вылетает, но и документ не записывает - идет по ветке "Исключение".
Если кто-нибудь что-нибудь из этого понял, будьте добры, подскажите, в чем может быть ошибка.
Тот новый документ, что я создала, процедуры в него данные записывают?.. Ведь он ни в одну из них не передается...
1 User_Agronom
 
09.11.13
00:48
Что-то в первом доке не заполнено... Так, сходу не могу сказать. Попробуй открыть форму документа перед проведением.
2 IamAlexy
 
09.11.13
00:49
(0) убери нафиг попытку и посмотри на что оно ругается непосредственно
3 IamAlexy
 
09.11.13
00:49
например на дату/время
4 pavig
 
09.11.13
01:00
в Сообщить вместо текста вставь "ОписаниеОшибки()" и увидишь в чем ошибка.
5 EvgeniuXP
 
09.11.13
01:30
(1), (2), (3), (4) - фото нет, а вы помогаете :)
6 spleen
 
09.11.13
08:35
(0)  скорее всего дата не указана для 2 документа
Но надо сделать так

НовыйДок№2 = Документы.Док№2.Создатьдокумент();
НовыйДок№2.ОбработкаЗаполнения(ЭтотОбъект.Ссылка, Истина);
Попытка
НовыйДок№2.Записать(РежимЗаписиДокумента.Проведение);
Исключение
Сообщить(ОписаниеОшибки());
Сообщить("Сообщения по данному документу не сформированы");
КонецПопытки;

И тогда станет ясно в чем проблема
7 hhhh
 
09.11.13
10:14
а что за ВыполнитьПакет()[1] ?? почему пакет? и почему [1] ??
8 Maxus43
 
09.11.13
10:19
НовыйДок№2.ОбработкаЗаполнения(
почему так?
НовыйДок.Заполнить(СсылкаНаДокОснование);

ну и Запрос.ВыполнитьПакет()[1] конечно выглядит номрально так:
Запрос.ВыполнитьПакет(1);
9 Maxus43
 
09.11.13
10:20
тьфу, с пакетом всё нормально, отставить
10 hhhh
 
09.11.13
10:22
а почему не 0 или не 2?
11 Maxus43
 
09.11.13
10:23
(10) ну запрос надо увидеть сначала, шоб понять
12 vse_serjezno
 
11.11.13
10:45
(11) С запросом все нормально, этот функционал работает.
13 Wobland
 
11.11.13
10:47
мало того, что фотку не вытянуть, так ещё и ответа на (4) надо добиваться? нет, такой хоккей нам не нужен
14 vse_serjezno
 
11.11.13
11:01
(11) Как только появиться возможность проверить описание ошибки, напишу результат. У нас с доступом в хранилище постоянные проблемы. >:(
15 Wobland
 
11.11.13
11:02
(14) а я умею отключаться от хранилища
16 vse_serjezno
 
12.11.13
13:32
(11) А можно ли при программном создании документа открыть его форму?.. Т.е. вызвать процедуру "ПриОткрытии" модуля формы Документа№2 из модуля объекта этого документа.
Я читаю, так делать не ком иль фо. Т.е. сделать аналог кнопки "Ввод на основании", чтобы посмотреть, верно ли заполняются данные.
17 Wobland
 
12.11.13
13:33
(16) ввод на основании с формой не связан. могу научить смотреть разные штуки прямо в момент исполнения
18 vse_serjezno
 
12.11.13
13:42
(17) ?
Мне нужно понять, какие данные не передаются в моей процедуре из тех, что нормально срабатывают при Вводе на основании.
19 vse_serjezno
 
12.11.13
13:51
При создании дока№2 с помощью "Ввод на основании" происходит:
вызов процедуры ОбработкаЗаполнения() из модуля Документа№2 ->
из нее вызывается проц. ОбработкаЗаполненияДокумента() там же. ->
затем запускается проц. ПриОткрытии модуля формы Документа№2.

В проц. ПриОткрытии есть:

Если НЕ Объект.ТипСообщения = ПредопределенноеЗначение("Перечисление.смсВходящееИсходящееСобытие.Входящее")    Тогда
        СтруктураПараметров = смсРаботаССообщениями.ПолучитьПараметры();
        Если СтруктураПараметров.Свойство("НомераОтправителя") Тогда
            Для Каждого Строка Из смсКоммуникатор.ПолучитьСписокНомеровИзСтроки(СтруктураПараметров.НомераОтправителя) Цикл
                Элементы.НомерОтправителя.СписокВыбора.Добавить(Строка);
            КонецЦикла;
        КонецЕсли;
КонецЕсли;

Причем, когда форма открывается при ВвНаОсн там нет  элемента НомерОтправителя.
Мне, по идее, элементы формы-то и не нужны. По при этом программа ругается на незаполненный НомерОтправителя и не записывает документ.
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.