Имя: Пароль:
1C
1С v8
Программный ввод на основании
0 Lannia
 
31.05.17
12:32
Доброго времени суток. Стандартный ввод на основании не подходит потому, что нужно открывать разные формы документов, а в стандартном обработчике он открывает главную форму документа.
Вот часть кода, которая открывает нужную форму:

Код:
&НаСервере
Процедура СоздатьДокумент()
     ДО = Документы.ЗаказНаряд.СоздатьДокумент();
КонецПроцедуры

&НаКлиенте
Процедура ЗаказНаряд(Команда, Элемент)
      СоздатьДокумент();
        
      ЗначенияЗаполнения = Новый Структура;
      ЗначенияЗаполнения.Вставить("Владелец", Объект.Ссылка);
      ПараметрыФормы = Новый Структура;
      ПараметрыФормы.Вставить("ЗначенияЗаполнения", ЗначенияЗаполнения);
      ОткрытьФорму("Документ.ЗаказНаряд.Форма.ФормаДокументаБН", ПараметрыФормы, Элемент);
КонецПроцедуры


Форма, где заполняются пришедшие данные:
Код:
Если ДанныеЗаполнения <> Неопределено И ТипЗнч(ДанныеЗаполнения)= Тип("Структура") Тогда
        // Заполнение шапки
        Автомобиль = ДанныеЗаполнения.Автомобиль;
        Автор = ДанныеЗаполнения.Автор;
        ВидРемонта = ДанныеЗаполнения.ВидРемонта;


И собственно сама ошибка:
{Документ.ЗаявкаНаРемонт.Форма.ФормаДокументаБН.Форма(223)}: Ошибка при вызове метода контекста (ОткрытьФорму)
      ОткрытьФорму("Документ.ЗаказНаряд.Форма.ФормаДокументаБН", ПараметрыФормы, Элемент);
по причине:
Ошибка при выполнении обработчика - 'ОбработкаЗаполнения'
по причине:
{Документ.ЗаказНаряд.МодульОбъекта(27)}: Поле объекта не обнаружено (Автомобиль)
      Автомобиль = ДанныеЗаполнения.Автомобиль;

Хотя такой реквизит в документе имеется.
1 Lexey_
 
31.05.17
12:34
(0) "Поле объекта не обнаружено (Автомобиль)"
Поле Автомобиль объекта ДанныеЗаполнения не обнаружено
2 Lannia
 
31.05.17
12:36
По отладке было видно что структура передалась. Тогда что неверно в следующем коде?:

ЗначенияЗаполнения = Новый Структура;
      ЗначенияЗаполнения.Вставить("Владелец", Объект.Ссылка);
      ПараметрыФормы = Новый Структура;
      ПараметрыФормы.Вставить("ЗначенияЗаполнения", ЗначенияЗаполнения);
      ОткрытьФорму("Документ.ЗаказНаряд.Форма.ФормаДокументаБН", ПараметрыФормы, Элемент);
3 Lexey_
 
31.05.17
12:37
(2) нет поля Автомобиль
4 Lannia
 
31.05.17
12:42
Я написала выше, что такой реквизит точно есть в документе. Что в одном, что в другом. Значит, получается, он просто не передает данные для заполнения на другую форму.
Но ошибку в коде я не вижу.
5 Lexey_
 
31.05.17
12:49
(4) я написал выше, что дело не в реквизите
6 Lannia
 
31.05.17
12:51
Вопрос остается тем же, где тогда искать ошибку?
Ясно что он никакие данные не передал. Объект этот сохранила и все равно та же ошибка.
7 Lexey_
 
31.05.17
12:54
(6) еще раз: ошибка здесь: ДанныеЗаполнения.Автомобиль, смотри отладчиком
8 Ц_У
 
31.05.17
12:57
ЗначенияЗаполнения тут равно ДанныеЗаполения там, ты передаешь структуру с ключом "Владелец" но там нет ключа "Автомобиль"
Или пиши в заполнении с проверкой свойств:
Если ДанныеЗаполнения.Свойство("Автомобиль") Тогда
Автомобиль = ДанныеЗаполнения.Автомобиль;
9 Buster007
 
31.05.17
12:58
автор в танке )
Lexey_, скоро пробьет броню..
10 Мимохожий Однако
 
31.05.17
12:58
(6) Ищи там, где собираешь параметры для заполнения на основании Отладчик
11 Lannia
 
31.05.17
12:58
Да приходит ему Структура и стопорится дальше на реквизите ДанныеЗаполнения.Автомобиль, при этом там отладчик ничего не показывает.
12 Lannia
 
31.05.17
12:59
Ц_У, спасибо за нормальное объяснение.
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн