Имя: Пароль:
1C
1С v8
Не перезаписывает реквизиты тонкий клиент
0 manti
 
16.05.13
12:43
В процедуре ПриЗаписи() документа перезаписываю реквизиты контрагент и пользователь

ЭтотОбъект.Пользователь = Справочники.Пользователи.НайтиПоНаименованию(Результат.Пользователь);    
ЭтотОбъект.Контрагент = Справочники.Контрагенты.НайтиПоНаименованию(Результат.Контрагент);

Реквизиты типа СправочникСсылка.Пользователи и СправочникСсылка.Контрагенты соответственно. Результат.Контрагент и Результат.Пользователь имеют такой же тип.
В итоге при записи на форме отображается перезаписанный сотрудник, закрываю, открываю фрму документа - поля пусты.
Как это исправить?
1 5 Элемент
 
16.05.13
12:44
Описание:

Возникает при записи объекта. Процедура-обработчик вызывается после записи объекта в базу данных, но до окончания транзакции записи.
2 manti
 
16.05.13
12:45
(1) И как это применить к моему случаю?
3 5 Элемент
 
16.05.13
12:46
Используй ПередЗаписью
4 ale-sarin
 
16.05.13
12:46
(2) Чти внимательно. ПередЗаписью() надо.
5 manti
 
16.05.13
12:47
(3) (4) не могу перед записью - там еще нет ссылки на документ, а у мен запрос пстроен на документе целиком((
6 5 Элемент
 
16.05.13
12:49
Опиши какую задачу решаешь
7 manti
 
16.05.13
15:11
(6) Отлучался))

При записи документа перед проведением нужно получить пользоателя и контрагента из соответствующего документа. Запросом я беру номер пользователя и номер контрагента из документа. Получется при даннм раскладе нужно переделывать запрос, что не хотелось бы))

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)

Запрос = Новый Запрос;
               Запрос.УстановитьПараметр("Ссылка",    СсылкаНаОбъект);                
               Запрос.УстановитьПараметр("Тип",    Перечисления.ТипыКонтактнойИнформации.Телефон);                
               
               Запрос.Текст = "ВЫБРАТЬ
               |    Вызов.Ссылка,
               |    Вызов.Номер1,
               |    Вызов.Номер2,
               |    Вызов.CallerID1,
               |    ""%"" + Вызов.CallerID2 КАК CallerID2
               |ПОМЕСТИТЬ ДокументВызов
               |ИЗ
               |    Документ.Вызов КАК Вызов
               |ГДЕ
               |    Вызов.Ссылка = &Ссылка
               |;
               |
               |////////////////////////////////////////////////////////////////////////////////
               |ВЫБРАТЬ
               |    ""%"" + (ВЫРАЗИТЬ(КонтактнаяИнформация.Представление КАК СТРОКА(15))) КАК Контакт,
               |    КонтактнаяИнформация.Объект
               |ПОМЕСТИТЬ РегистрКонтакты
               |ИЗ
               |    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
               |ГДЕ
               |    КонтактнаяИнформация.Тип = &Тип
               |;
               |
               |////////////////////////////////////////////////////////////////////////////////
               |ВЫБРАТЬ
               |    Линии.Пользователь,
               |    Линии.Наименование,
               |    Вызов.Номер1,
               |    Вызов.Ссылка
               |ПОМЕСТИТЬ Ном
               |ИЗ
               |    Документ.Вызов КАК Вызов
               |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Линии КАК Линии
               |        ПО (Линии.Наименование = Вызов.CallerID1)
               |ГДЕ
               |    Вызов.Ссылка = &Ссылка
               |;
               |
               |////////////////////////////////////////////////////////////////////////////////
               |ВЫБРАТЬ
               |    Ном.Ссылка,
               |    ДокументВызов.Номер2,
               |    ДокументВызов.CallerID1,
               |    ДокументВызов.CallerID2,
               |    РегистрКонтакты.Объект КАК Контрагент,
               |    РегистрКонтакты.Контакт,
               |    Ном.Пользователь,
               |    Ном.Номер1
               |ИЗ
               |    ДокументВызов КАК ДокументВызов
               |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрКонтакты КАК РегистрКонтакты
               |        ПО (ДокументВызов.CallerID2 ПОДОБНО РегистрКонтакты.Контакт
               |                ИЛИ РегистрКонтакты.Контакт ПОДОБНО ДокументВызов.CallerID2),
               |    Ном КАК Ном
               |
               |СГРУППИРОВАТЬ ПО
               |    РегистрКонтакты.Объект,
               |    Ном.Ссылка,
               |    ДокументВызов.Номер2,
               |    ДокументВызов.CallerID1,
               |    ДокументВызов.CallerID2,
               |    РегистрКонтакты.Контакт,
               |    Ном.Пользователь,
               |    Ном.Номер1";
               
               Результат = Запрос.Выполнить().Выбрать();
8 Borteg
 
16.05.13
15:28
Наверное лучше использовать ПриЗаписиНаСервере и использовать ТекущийОбъект
но могу ошибаться)
9 drongo-god
 
16.05.13
15:34
ПриЗаписи

Возникает при записи объекта. Процедура-обработчик вызывается после записи объекта в базу данных, но до окончания транзакции записи.
10 drongo-god
 
16.05.13
15:34
Ты пытаешся изменить реквизит после того как объект уже записан?
11 manti
 
16.05.13
15:42
(10) нет еще нет как такоой записи объекта - ссылки на него, которая используется в запросе.
12 manti
 
16.05.13
15:43
(8) тут модуль объекта, а не моуль формы
13 Borteg
 
16.05.13
15:48
(12) Я бы использовал именно его или передзаписьюнасервере.
В последней процедуре есть сам объект, и то что будет записано(передается в текущий объект). Если новый элемент то например в этот момент объект.ссылка=пустая, а текущийобъект.ссылка = уже ссылка на объект который будет записываться в базу.
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой