Имя: Пароль:
1C
1С v8
Не определен владелец справочника
,
0 amadeus2010
 
05.09.13
17:21
Добрый вечер столкнулся с такой ситуацией. Из екселя записываю в справочник кпкТорговыеТочки данные.Вот Код
//////////////////////////////////////////////////////////////////
ТорговыеТочки = Справочники.кпкТорговыеТочки.СоздатьЭлемент();
    ТорговыеТочки.Агент = Справочники.ФизическиеЛица.НайтиПоНаименованию(Строка.Экспедитор).Ссылка;
    ТорговыеТочки.Адрес = Строка.Адрес;
    ТорговыеТочки.Владелец = Справочники.Контрагенты;
    ТорговыеТочки.Договор =  Справочники.ДоговорыКонтрагентов.НайтиПоНаименованию("Основной договор").Ссылка;
    ТорговыеТочки.Категория  = Справочники.кпкКатегорииКонтрагентов.НайтиПоНаименованию("покупатель").Ссылка;
    ТорговыеТочки.КонтактноеЛицо = Справочники.КонтактныеЛицаКонтрагентов.НайтиПоНаименованию(Строка.КонтактноеЛицо).Ссылка;
    ТорговыеТочки.Наименование = Справочники.Контрагенты.НайтиПоНаименованию(Строка.Наименование).Ссылка;
    ТорговыеТочки.НаименованиеПолное = Справочники.Контрагенты.НайтиПоНаименованию(Строка.Наименование).Ссылка;
    ТорговыеТочки.ОсновнойТипЦены= Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Розничная").Ссылка;
    ТорговыеТочки.Регионы =Справочники.Регионы.НайтиПоНаименованию(Строка.Регион).Ссылка;
    ТорговыеТочки.Телефоны = Строка.Телефоны;
    ТорговыеТочки.ТипТочки = Справочники.кпкТипыТорговыхТочек.НайтиПоНаименованию("Marketler").Ссылка;
    ТорговыеТочки.Записать();
///////////////////////////////////////////////////////////////////
При попытке Записать справочник ругается на то что не определен или неправильно определен Владелец справочника, т.е ошибка в
ТорговыеТочки.Владелец = Справочники.Контрагенты;
Как правильно получить ссылку на владельца справочника?
1 ДенисЧ
 
05.09.13
17:26
"ТорговыеТочки.Владелец = Справочники.Контрагенты; "

При таком коде правильней всего будет получить на складе метлу и применять её по назначению...
2 Любопытная
 
05.09.13
17:26
Справочники.Контрагенты - это справочник-менеджер, а тебе туда ссылку надо указать
3 amadeus2010
 
05.09.13
17:28
я понимаю что ссылку надо указать, поэтому и спрашиваю как можно получить ссылку
4 Euguln
 
05.09.13
17:29
(1) + 1 там весь код - ТорговыеТочки.Владелец = Справочники.Контрагенты.НайтиПоНаименованию(Строка.Наименование).Ссылка;
А дальше вообще какая-то ересь:
ТорговыеТочки.Наименование = Справочники.Контрагенты.НайтиПоНаименованию(Строка.Наименование).Ссылка;
    ТорговыеТочки.НаименованиеПолное = Справочники.Контрагенты.НайтиПоНаименованию(Строка.Наименование).Ссылка;
5 amadeus2010
 
05.09.13
17:34
(4) в том то и дело
ТорговыеТочки.Наименование = Справочники.Контрагенты.НайтиПоНаименованию(Строка.Наименование).Ссылка;
    ТорговыеТочки.НаименованиеПолное = Справочники.Контрагенты.НайтиПоНаименованию(Строка.Наименование).Ссылка;

срабатывает
6 Euguln
 
05.09.13
17:35
(5) да, и что туда пишется? Представление контрагента?
7 amadeus2010
 
05.09.13
17:39
сделал добавление по владельцу данные записались, только пока не сел тип цены-розничная
8 Dmitrith
 
05.09.13
17:39
Ссылка на объект нужна. Т.е. непосредственно некий контрагент.

ЗЫ: узнаю Агент+
9 Любопытная
 
05.09.13
17:41
(8) а если не найдет по наименованию?
10 amadeus2010
 
06.09.13
10:52
Утро доброе в продолжении темы
ТорговыеТочки.Владелец = Справочники.Контрагенты.НайтиПоНаименованию(Строка.Наименование).Ссылка; записывает несколько точек, потом выдает ошибку что не заполнен владелец точки или заполнен не правильно.Есть ли какой способ указать владельца справочника по-другому?
11 amadeus2010
 
06.09.13
11:35
есть кто?
12 Любопытная
 
06.09.13
11:36
(11) как-то по-другому его находить.
13 Wobland
 
06.09.13
11:37
(11) именно этим вопросом следует задаваться при каждом употреблении НайтиПоНаименованию()
14 amadeus2010
 
06.09.13
12:04
(13) предположим, а как все таки можно указать владельца справочника?
15 Wobland
 
06.09.13
12:07
(14) присвоить ссылку в соответствующее поле
16 Dен
 
06.09.13
12:16
(14) Владелец элемента справочника назанчается присваиванием:

ЭлементСправочникаОбъект.Владелец = ВладлецЭлементаСправочникаСсылка;

Что такое "ВладелецЭлементаСправочникаСсылка" это кроме тебя никому не известно.
17 amadeus2010
 
06.09.13
12:17
(14) исходя из (10) ссылка на владельца уже и так установлена, что-то пока не совсем понятно в какое поле присвоить ссылку.
18 Wobland
 
06.09.13
12:17
(17) в (10) ты запросто можешь влететь в пустую ссылку
19 amadeus2010
 
06.09.13
12:20
у меня сейчас такой код
//////////////////////////////////////////////////////
ТорговыеТочки = Справочники.кпкТорговыеТочки.СоздатьЭлемент();
    ТорговыеТочки.Агент = Справочники.ФизическиеЛица.НайтиПоНаименованию(Строка.Экспедитор).Ссылка;
    ТорговыеТочки.Адрес = Строка.Адрес;
    ТорговыеТочки.Владелец = Справочники.Контрагенты.НайтиПоНаименованию(Строка.Наименование).Ссылка;
    
    ТорговыеТочки.Договор =  Справочники.ДоговорыКонтрагентов.НайтиПоНаименованию("Основной договор").Ссылка;
    ТорговыеТочки.Категория  = Справочники.кпкКатегорииКонтрагентов.НайтиПоНаименованию("покупатель").Ссылка;
    ТорговыеТочки.КонтактноеЛицо = Справочники.КонтактныеЛицаКонтрагентов.НайтиПоНаименованию(Строка.КонтактноеЛицо).Ссылка;
    ТорговыеТочки.Наименование = Справочники.Контрагенты.НайтиПоНаименованию(Строка.Наименование).Ссылка;
    ТорговыеТочки.НаименованиеПолное = Справочники.Контрагенты.НайтиПоНаименованию(Строка.Наименование).Ссылка;
    ТорговыеТочки.ОсновнойТипЦены= Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Розничная").Ссылка;
    ТорговыеТочки.Регионы =Справочники.Регионы.НайтиПоНаименованию(Строка.Регион).Ссылка;
    ТорговыеТочки.Телефоны = Строка.Телефоны;
    ТорговыеТочки.ТипТочки = Справочники.кпкТипыТорговыхТочек.НайтиПоНаименованию("Marketler").Ссылка;
    
    
    ТТ = ТорговыеТочки.ТипыЦен.Добавить();
    ТТ.ТипЦены = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Розничная").Ссылка;
    
    ТорговыеТочки.Записать();
////////////////////////////////////////////////////////////\
20 amadeus2010
 
06.09.13
12:21
что нужно поменять чтобы получить ссылку на владельца справочника
21 Wobland
 
06.09.13
12:22
(20) помедитируй над (12) и (13)
22 amadeus2010
 
06.09.13
12:30
медитировать можно сколь угодно долго, не в этом суть, если есть предложения по решению вопроса,тогда с благодарностью приму варианты
23 Wobland
 
06.09.13
12:31
(22) передаю по буквам: проверяй найденность своего владельца
24 amadeus2010
 
06.09.13
12:42
т.е сделать проверку есть или нет такого контрагента в справочнике родитель?
25 Wobland
 
06.09.13
12:43
Возвращаемое значение:

Тип: СправочникСсылка.<Имя справочника>; Неопределено.
Ссылка на найденный элемент справочника.
Если не существует ни одного элемента с требуемым наименованием, то будет возвращена пустая ссылка.
Если для справочника наименование не задано (длина = 0), то будет возвращено Неопределено.
26 amadeus2010
 
06.09.13
12:49
(25) не совсем понял, можно конкретнее так сказать на примере
27 Wobland
 
06.09.13
13:02
(26) а нет примеров. что собираешься делать, если контрагент не найдётся?
28 amadeus2010
 
06.09.13
13:07
для заполнения справочника торговые точки, контрагент обязателен как владелец, можно сделать проверку что если Справочники.Контрагенты.ПустаяСсылка() Тогда
ТоргвыеТочки.Владелец=
Иначе   ТорговыеТочки.Владелец = Справочники.Контрагенты.НайтиПоНаименованию(Строка.Наименование).Ссылка;
я думаю как-то так
29 Любопытная
 
06.09.13
13:10
(28) там не пустая ссылка. Там неопределено вернется. Отсюда и  ошибки
30 Wobland
 
06.09.13
13:10
(29) контрагенты без наименований?
31 Wobland
 
06.09.13
13:11
(30) не, допустимо, конечно. но я не верю
32 amadeus2010
 
06.09.13
14:07
Контрагенты не могут быть без наименований, это нонсенс, а как все таки можно решить этот вопрос. Я пока не знаю что вписать в ТоргвыеТочки.Владелец=
33 Web00001
 
06.09.13
14:12
(29) Там именно пустая ссылка :) накололся так пару раз, привык что по дефолту, возвращается неопределено. Вобланд в (25) как раз об этом и сказал.
34 Wobland
 
06.09.13
14:16
(32) это не нонсенс, я себе таких контрагентов вполне представляю

прдумай, что ты будешь делать при ненайденности сначала
35 amadeus2010
 
06.09.13
14:24
///////////////////////////////////////////////////////\\
Контрагент = Справочники.Контрагенты.СоздатьЭлемент();
    Если Контрагент.Наименование = Неопределено Тогда
        Контрагент.Наименование = Строка.Наименование;
    КонецЕсли;
    Контрагент.Записать();
    
    ТорговыеТочки.Владелец = Контрагент.Ссылка;

///////////////////////////////////////////////////\
пока что нашел такой выход, можно если написать и так
Если ТорговыеТочки.Владелец = Неопределено Тогда
ТорговыеТочки.Владелец = Строка.Наименование;
Иначе ТорговыеТочки.Владелец = Справочники.Контрагенты.НайтиПоНаименованию(Строка.Наименование).Ссылка;
КонецЕсли;

Как считаете такой вариант сработает?
36 Wobland
 
06.09.13
14:27
нет
37 amadeus2010
 
06.09.13
14:30
какой из 2 вариантов неправильный? В 1-ом создается справочник,хотя я сделал неправильно, надо создать справочник с записью наименования если владелец=неопределенно и потом уже получать ссылку на владельца. А 2 вариант как?
38 amadeus2010
 
06.09.13
15:14
Я сейчас сделал так
///////////////////////////////////////////////
Если ТорговыеТочки.Владелец = Справочники.Контрагенты.ПустаяСсылка() Тогда
        ТорговыеТочки.Владелец = Строка.Наименование;
      Иначе
        ТорговыеТочки.Владелец = Справочники.Контрагенты.НайтиПоНаименованию(Строка.Наименование).Ссылка;
    КонецЕсли;    
//////////////////////////////////////////////////
исходя из (33)
39 Wobland
 
06.09.13
15:33
(38) владелец может быть строкой?
40 Wobland
 
06.09.13
15:33
+(39) что будет, если таки не найдётся?
41 amadeus2010
 
06.09.13
15:51
По сути Контрагент в Торговой точке это ссылка на справочник контрагенты.наименование. Сейчас проверил (38) опять ругается на ошибка при вызове метода контекста (Записать)
    ТорговыеТочки.Записать();
по причине:
Значение поля "Владелец" не заполнено или заполнено неверно

уже даже не осталось вариантов как заполнить владелец
42 amadeus2010
 
06.09.13
16:03
есть варианты?
43 hhhh
 
06.09.13
16:04
(42) создать в базе нового контрагента, чтобы у него было такое наименование
44 amadeus2010
 
06.09.13
16:25
(43) мне тогда придется создать контрагента в группе имеющей уже номер и наименование плюс создать кучу всех договоров, контактов и т.п
45 hhhh
 
06.09.13
16:26
(44) ну а вы как хотели? Контрагента нет, значит надо его создать. Естественно с контактами.
46 amadeus2010
 
06.09.13
16:33
Это надо создать в поле проверки Если ТорговаяТочка.Владелец.Пустая() Тогда

Создать ................
Спр.Записать();
и в конце ТорговыеТочки.Записать();?
47 amadeus2010
 
06.09.13
16:49
пришлось объединить 2 обработки загрузка контрагентов и создание торговых точек
48 Wobland
 
06.09.13
18:57
(45) можно просто материться и пропускать
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.