Имя: Пароль:
1C
1С v8
Ссылка на еще не записанный элемент справочника
0 Buterbrod
 
15.04.14
18:08
Добрый день! Проблема следующая: есть справочник единица измерения и его владелец справочник номенклатура. Пытаюсь программно создать
номенклатуру, обязательно требуется единица измерения. Пытаюсь создать единицу измерения требуется указать владельца - номенклатуру.

Делал так:

НоваяУслуга = Справочники.Номенклатура.СоздатьЭлемент();    НоваяУслуга.Наименование = Лист.Cells(НомерСтроки,2).Value;                                                        //делаем ссылку еще незаписанного справочника для новой единицы измерения                            СсылкаНаНовуюУслугу = Справочники.Номенклатура.ПолучитьСсылку();                            НоваяУслуга.УстановитьСсылкуНового(СсылкаНаНовуюУслугу);

НоваяЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.СоздатьЭлемент();
НоваяЕдиницаИзмерения.Владелец = СсылкаНаНовуюУслугу;
НоваяЕдиницаИзмерения.Записать();

Пишет неправильный владелец. Замкнутый круг какой-то.
1 sherstnev
 
15.04.14
18:15
записать владельца
2 jsmith82
 
15.04.14
18:16
записать владельца. программно можно иначе, но методологически неверно
3 Maxus43
 
15.04.14
18:17
в транзакции записывай, сначала владельца, потом всё остальное
4 fisher
 
15.04.14
18:18
"Неправильный владелец" - это проверка в ПередЗаписью ругается? Ну, отключи её:
НоваяЕдиницаИзменения.ОбменДанными.Загрузка = Истина;
Только в транзакцию возьми всё это шаманство.
(3) Тогда владельца дважды надо будет записывать
5 jsmith82
 
15.04.14
18:20
правильней вообще отказаться от незаписанных объектов
нажаал создать - записал
6 jsmith82
 
15.04.14
18:20
в этом плане 1ска исповедует некошерную методу
7 jsmith82
 
15.04.14
18:20
либо идентификатор на уровне платформы сразу сажать
8 Buterbrod
 
15.04.14
18:26
(4) в конфигурации исходные тексты модуля скрыты (защищены :( )
9 fisher
 
15.04.14
18:29
(8) Еще раз.
Попробуй перед записью новой единицы измерения воткнуть строчку
НоваяЕдиницаИзменения.ОбменДанными.Загрузка = Истина;
Если не взлетит, тогда пробуй первой записывать номенклатуру, применив тот же фокус:
НоваяУслуга.ОбменДанными.Загрузка = Истина;
10 jsmith82
 
15.04.14
18:30
(9) а ни хрена не будет
11 Buterbrod
 
15.04.14
18:33
(9) У меня нет доступа к модулю справочников(где процедура перед записью), они защищены (исходный текст модуля отсутствует), конфигурация не типовая. Ломать очень не хотелось бы, неизвестно где аукнется.
12 fisher
 
15.04.14
18:35
(11) Чукча писатель? ГДЕ я предлагаю в модули справочников лезть? В СВОЁМ коде пиши!
13 Buterbrod
 
15.04.14
18:36
(12)
СправочникОбъект.<Имя справочника>.ОбменДанными CatalogObject.<Имя справочника>.DataExchange)
СправочникОбъект.<Имя справочника> (CatalogObject.<Имя справочника>)
ОбменДанными (DataExchange)
Использование: Только чтение.

Соответственно изменить не могу
14 fisher
 
15.04.14
18:37
(13) У меня слова кончились. Мне тебя еще учить СП правильно понимать? Просто попробуй, наконец!
15 ДенисЧ
 
15.04.14
18:38
(13) обменДанными.Загрузка = Истина
16 Buterbrod
 
15.04.14
18:39
(14) Так я же попробовал, в отладчике обмен данными остался ложь, результат тот же - не указан владелец
17 fisher
 
15.04.14
18:39
(13)
ПараметрыОбменаДанными.Загрузка (DataExchangeParameters.Load)
ПараметрыОбменаДанными (DataExchangeParameters)
Загрузка (Load)
Использование:
Чтение и запись.
18 fisher
 
15.04.14
18:40
(16) Фигня какая-то.
19 Buterbrod
 
15.04.14
18:43
Ну как вариант записывать с другим владельцем, а потом менять, но это вообще через попу
20 fisher
 
15.04.14
18:45
"Так я же попробовал, в отладчике обмен данными остался ложь"
Не верю. То ли криво смотришь, то ли криво делаешь.
21 fisher
 
15.04.14
18:51
Попробуй запустить на поиск в текстах модулей "Справочники.Номенклатура.СоздатьЭлемент()"
Авось где-то в открытых модулях делается. Подсмотришь, где косячишь.
22 Зойч
 
15.04.14
19:31
лучше сначала записывай номенклатуру с новой незаписаной ссылкой единицы, а потом записывай единицу
23 SUA
 
15.04.14
19:37
(16)вызвать специалиста уже было?
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан