Имя: Пароль:
1C
1С v8
УстановитьСсылкуНового
0 George Wheels
 
24.10.13
14:33
Создаю новый элемент справочника. В событии ПриИзменении поля Код пытаюсь сделать:

Объект.УстановитьСсылкуНового(Справочники.ФизЛица.ПолучитьСсылку(Новый УникальныйИдентификатор("..."));

Ошибка - метод объекта не обнаружен.

Если так:

о = РеквизитФормыВЗначение("Объект");
о.УстановитьСсылкуНового(Справочники.ФизЛица.ПолучитьСсылку(Новый УникальныйИдентификатор("..."));

то УИД не устанавливается.
1 zak555
 
24.10.13
14:35
потому что событие на клиенте
2 Maxus43
 
24.10.13
14:35
зачем устанавливать ссылку при изменениии кода? не легче ПриСозданииНаСервере всё это сделать сразу?
3 George Wheels
 
24.10.13
14:38
(1) Из этого события вызываю процедуру &НаСервере

(2) При вводе нового ФизЛица набираю его табельный номер, подключаюсь к ЗУП и беру оттуда Должность, Наименование, УИД,...
4 zak555
 
24.10.13
14:40
(3)

1. код покажи
2. перенеси из ЗУП тех, кто тебе нужен вместе с УИД
5 George Wheels
 
24.10.13
14:57
(4) Пожалуйста, но в (0) и так достаточно.


&НаКлиенте
Процедура КодПриИзменении(Элемент)
    СотрудникИзЗУПНаСервере();
КонецПроцедуры

&НаСервере
Процедура СотрудникИзЗУПНаСервере()
    
    
    
    ЗУП = Новый COMОбъект("V82.Application");
    Попытка
        ЗУП.Connect("File=""Путь"";Usr=""User"";Pwd=""Password""");
        
        
        Запрос = ЗУП.NewObject("Запрос");
        
        
        Запрос.Текст =
        "ВЫБРАТЬ
        |    Сотр.Ссылка КАК Сотрудник,
        |    Кадр.Период КАК ПериодНазначения,
        |    Кадр.Должность КАК Должность
        |ИЗ
        |    Справочник.СотрудникиОрганизаций КАК Сотр
        |    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций.СрезПоследних КАК Кадр
        |    ПО Сотр.Ссылка = Кадр.Сотрудник
        |ГДЕ
        |    Сотр.Код = &Код
        |";
        
        Запрос.УстановитьПараметр("Код", Объект.Код);
        
        Выборка = Запрос.Выполнить().Выбрать();
        
        Если Выборка.Следующий() Тогда
            Объект.Наименование = Выборка.Сотрудник.Наименование;
            Если Объект.ссылка.УникальныйИдентификатор() = Новый УникальныйИдентификатор("00000000-0000-0000-0000-000000000000") Тогда
                о = ДанныеФормыВЗначение(Объект, Тип("СправочникОбъект.ФизЛица"));
                о.УстановитьСсылкуНового(Справочники.ФизЛица.ПолучитьСсылку(Новый УникальныйИдентификатор(ЗУП.XMLСтрока(Выборка.Сотрудник.УникальныйИдентификатор()))));
                //ЗначениеВДанныеФормы(о, Объект);
            КонецЕсли;
        Иначе
            Сообщение = Новый СообщениеПользователю;
            Сообщение.Текст = "Не найден сотрудник с табельным номером: " + Объект.Код;
            Сообщение.Сообщить();
        КонецЕсли;
    Исключение
        Сообщение = Новый СообщениеПользователю;
        
        Инфо = ИнформацияОбОшибке();
        
        Сообщение.Текст = "Описание=" + Инфо.Описание;
        Сообщение.Сообщить();
        Сообщение.Текст = "ИмяМодуля=" + Инфо.ИмяМодуля;
        Сообщение.Сообщить();
        Сообщение.Текст = "НомерСтроки=" + Инфо.НомерСтроки;
        Сообщение.Сообщить();
        Сообщение.Текст = "ИсходнаяСтрока=" + Инфо.ИсходнаяСтрока;
        Сообщение.Сообщить();
        Если Инфо.Причина <> Неопределено Тогда
            Сообщение.Текст = "Причина=" + Инфо.Причина;
            Сообщение.Сообщить();
            Сообщение.Текст = "Описание=" + Инфо.Причина.Описание;
            Сообщение.Сообщить();
        КонецЕсли;
        Если ЗУП <> Неопределено Тогда
            ЗУП.ЗавершитьРаботуСистемы(Ложь);
        КонецЕсли;
    КонецПопытки;
    
    Если ЗУП <> Неопределено Тогда
        ЗУП.ЗавершитьРаботуСистемы(Ложь);
        
        //Сообщить("Готово");
    КонецЕсли;

КонецПроцедуры
6 Infsams654
 
24.10.13
15:08
(0) если не секрет, для чего устанавливать ссылку нового?
7 George Wheels
 
24.10.13
15:09
(6) Хочу чтобы в обеих базах были одинаковые идентификаторы.
8 Зойч
 
24.10.13
15:10
ПередЗаписьюНаСервере нужно устанавливать, а до этого хранить где нибудь на форме.
Ибо объекта не существует все время а только в момент УстановитьСсылкуНового
9 Зойч
 
24.10.13
15:10
*в момент РеквизитФормыВЗначение
10 George Wheels
 
24.10.13
15:13
(8) Склонялся к этому варианту, но надеялся, что есть другое решение.
11 Infsams654
 
24.10.13
15:20
(6) опять-же, для чего одинаковые идентификаторы? Не достаточно одинаковых кодов, что ли ?
12 hhhh
 
24.10.13
15:21
(10) а где обратное ЗначениеВДанныеФормы? Что-то в упор не вижу.
13 Maxus43
 
24.10.13
15:22
(12) прав (8), объект на клиенте не живёт, он уничтожается. В следующий раз когда появится - изменений не будет, не хранится он в памяти вобще
14 Зойч
 
24.10.13
15:23
(12) не поможет.
15 George Wheels
 
24.10.13
15:24
(12) Было. Не помогает. Ни ЗначениеВДанныеФормы ни ЗначениеВРеквизитФормы.
16 hhhh
 
24.10.13
15:27
(15) ну значит УИД левый подсовываете. Чудес не бывает.

Проверьте жестко, чтобы УИДЫ самих справочников ФизЛица совпадали.
17 George Wheels
 
24.10.13
15:29
(16) В ПередЗаписьюНаСервере срабатывает. Т.е. УИД не левый.
18 Зойч
 
24.10.13
15:30
(16) не знаешь - помалкивай
19 George Wheels
 
24.10.13
15:37
(11) При изменении в кадрах, вносить изменения в эту базу. А табельные номера уже два раза при мне меняли. Вернее не сами номера, а префиксы.
20 George Wheels
 
24.10.13
15:38
Ладно, закругляюсь. Оставлю в ПередЗаписьюНаСервере.
21 hhhh
 
24.10.13
16:26
(18) чего помалкивай? Объсни тогда, почему в типовых не через ГУИД сделано как у ТС, а Регистр соответствие гуидов они замутили?
22 Зойч
 
24.10.13
16:28
(21) и в типовых через гуид. а регистр для того чтоб не новые базы тоже можно было связать