Имя: Пароль:
1C
1С v8
Не получается заполнить данные одного объекта на основании другого
0 Санта
 
18.10.11
12:33
НоменклатураВладелец = ТекСтрокаТабНаборы.Номенклатура;

НоваяНоменклатура = Справочники.Номенклатура.ПолучитьФормуНовогоЭлемента();
           
НоваяНоменклатура.Заполнить(НоменклатураВладелец.ПолучитьОбъект());
НоваяНоменклатура.Открыть();


Открывается не заполненная форма. Ожидаю, что форма заполнится на основании данных из НоменклатураВладелец

Как сделать?
1 Санта
 
18.10.11
12:34
Это прочитано
СправочникОбъект.<Имя справочника> (CatalogObject.<Имя справочника>)
Заполнить (Fill)
Синтаксис:

Заполнить(<ДанныеЗаполнения>)
Параметры:

<ДанныеЗаполнения> (обязательный)

Тип: Произвольный.
Значение, на основании которого выполняется заполнение элемента справочника.
Описание:

Заполняет данные элемента данными из другого объекта. Инициирует событие ОбработкаЗаполнения и вызов его процедуры-обработчика в модуле справочника. В ней может размещаться алгоритм, заполняющий данные элемента из переданного значения.

Доступность:

Сервер, толстый клиент, внешнее соединение.
Примечание:

Для заполнения может использоваться значение любого типа.
Пример:

Объект.Заполнить(ОбъектОснование);
2 Mort
 
18.10.11
12:36
Форма, Ссылка и Объект. Покурить что это за типы, и разобраться что у тебя там в (0) намешано.
3 Жан Пердежон
 
18.10.11
12:36
на типы данных обрати внимание
4 Санта
 
18.10.11
12:37
(3)
НоваяНоменклатура = Справочники.Номенклатура.ПолучитьФормуНовогоЭлемента();
НоваяНоменклатура.Заполнить(НоменклатураВладелец.ПолучитьОбъект());

Получаю форму нового, метод Заполнить()  - метод объекта, который есть в форме.

Не понимаю
5 Санта
 
18.10.11
12:39
Вот так тоже ничего не меняется

       НоваяНоменклатура = Справочники.Номенклатура.СоздатьЭлемент();
           
           НоваяНоменклатура.Заполнить(НоменклатураВладелец.ПолучитьОбъект());
           
           НоваяФорма = НоваяНоменклатура.ПолучитьФорму();
           
           НоваяФорма.Открыть();
6 zladenuw
 
18.10.11
12:40
НоваяНоменклатура = Справочники.Номенклатура.СоздатьЭлемент();
           
           НоваяНоменклатура.Заполнить(НоменклатураВладелец.Ссылка);
           
           НоваяФорма = НоваяНоменклатура.ПолучитьФорму();
           
           НоваяФорма.Открыть();

а так ?
7 Reset
 
18.10.11
12:40
В Заполнить, как правило, ссылку передают (не регламентировано, но это чаще встречается)
Возможно, в обработчике происходит проверка типа и заполнение не выполняется; возможно, там вообще нет заполняющего кода
8 Санта
 
18.10.11
12:41
(6) ничего не изменилось, пустая форма открывается
9 Reset
 
18.10.11
12:41
Посмотри собтие ОбработкаЗаполнения твоего модуля объекта номенклатура
10 zladenuw
 
18.10.11
12:42
та да (9), скорей всего там (7)
11 Санта
 
18.10.11
12:43
(9) Нет такого события в модуле объекта.
Без него работать не будет что-ли? (конфу менять нельзя)
12 Mort
 
18.10.11
12:44
Скопировать()
13 Reset
 
18.10.11
12:44
(11) Нет обработчика => нет заполнения.

Возможно, тебе подойдет создание копированием
14 Санта
 
18.10.11
12:44
+(11) Заполнение что-ли в обработке заполнения прописывать надо? По умолчанию не заполняет?
15 Санта
 
18.10.11
12:45
(13) > создание копированием

По метаданным перебрать поля и заполнить что-ли?
16 Reset
 
18.10.11
12:46
(15) использовать метод (12)
17 zladenuw
 
18.10.11
12:46
читай СП
Заполнить (Fill)
Синтаксис:
Заполнить(<Основание>)
Параметры:
<Основание> (обязательный)
Тип: Произвольный. Значение, на основании которого выполняется заполнение элемента справочника.
Описание:
Заполняет данные элемента данными из другого объекта. Инициирует событие ОбработкаЗаполнения и вызов его процедуры-обработчика в модуле справочника. В ней может размещаться алгоритм, заполняющий данные элемента из переданного значения.
Примечание:
18 Санта
 
18.10.11
12:46
(12)(16) Спасибо большое
19 Санта
 
18.10.11
12:47
(17)> Заполняет данные элемента данными из другого объекта. Инициирует событие ОбработкаЗаполнения и вызов его процедуры-обработчика в модуле справочника.

Из этого не следует, что все должно быть описано в обработке заполнения.
20 zladenuw
 
18.10.11
12:48
ну так написано же,  В ней может размещаться алгоритм, заполняющий данные элемента из переданного значения.
21 Санта
 
18.10.11
12:49
(20) а может и не размещаться :)
22 Жан Пердежон
 
18.10.11
13:56
(21) Внезапно, да?)
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.