Имя: Пароль:
1C
1С v8
КД и ЗначенияСвойствОбъектов.Объект
,
0 Mikhail Volkov
 
24.08.12
17:06
Надо в базу приемника писать РС ЗначенияСвойствОбъектов. В ПКО После загрузки вставил:
   Запрос.Текст = "
   |ВЫБРАТЬ  
   |    ЗначенияСвойствОбъектов.Значение Как ЗначениеСвойства  
   |ИЗ  
   |    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов  
   |ГДЕ  
   |    ЗначенияСвойствОбъектов.Объект = &Объект  
   |    И ЗначенияСвойствОбъектов.Свойство = &Свойство";  
Ну и получил ошибку:
ОписаниеОшибки         =  Ошибка при вызове метода контекста (Выполнить): {(7, 36)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля
неограниченной длины и поля несовместимых типов.
ЗначенияСвойствОбъектов.Объект <<?>>= &Объект
Как обойти проблему?
1 acsent
 
24.08.12
17:07
>>Как обойти?
Закажи такси
2 luckyluke
 
24.08.12
17:08
>>Неверные параметры в операции сравнения
Передать верные параметры для начала попробовать, а что надо я так и не понял.
3 andrewks
 
24.08.12
17:11
телепатирую: передавать надо ссылку
4 Mikhail Volkov
 
24.08.12
17:14
(3) Да, но в конфиге прописано ЗначенияСвойствОбъектов.Объект !
5 luckyluke
 
24.08.12
17:14
(3) меня больше интересует "Надо в базу приемника писать" + "В ПКО После загрузки вставил" и запрос на получение. Так надо писать или получать, что-то не пойму.
6 luckyluke
 
24.08.12
17:15
(4) Как думаешь, это серьёзная недоработка?
7 andrewks
 
24.08.12
17:16
(5) я списал это на пятницу
8 andrewks
 
24.08.12
17:17
+(7) ибо, судя по сообщению об ошибке, запрос-то у него каким-то образом выполнился
9 Mikhail Volkov
 
24.08.12
17:17
(5) Сперва прочитать, получить запись из РС... или сразу писать независимо есть она или нет?
10 luckyluke
 
24.08.12
17:18
(7) тоже верно, у меня то с телепатией дела плохи.
11 luckyluke
 
24.08.12
17:20
(8) я думаю, что он переносит какой-то справочник и в ПослеЗагрузки выполняет запрос без(или с кривыми) параметров на проверку наличия записи судя по (9)
12 andrewks
 
24.08.12
17:24
(9) ты поля поиска укажи правильно, а КД уж сама разберётся - сразу, или не сразу
13 acsent
 
24.08.12
17:26
такси все-таки дешевле будет нанять ))
14 Mikhail Volkov
 
24.08.12
17:27
+(9) сейчас у меня:
Если ЗначениеЗаполнено(Объект.Партнер) Тогда

   Запрос = Новый Запрос;  
   Запрос.Текст = "
   |ВЫБРАТЬ  
   |    ЗначенияСвойствОбъектов.Значение Как ЗначениеСвойства  
   |ИЗ  
   |    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов  
   |ГДЕ  
   |    ЗначенияСвойствОбъектов.Объект = &Объект  
   |    И ЗначенияСвойствОбъектов.Свойство = &Свойство";  
             
   Свойство = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Партнер УТ11");  
             
   Запрос.УстановитьПараметр("Объект", Объект);  
   Запрос.УстановитьПараметр("Свойство", Свойство);  
   Результат = Запрос.Выполнить();  
   Выборка = Результат.Выбрать();  
   
   Партнер = Неопределено;
   Пока Выборка.Следующий() Цикл  
       Партнер = Выборка.ЗначениеСвойства;
   КонецЦикла;
   
   Если Партнер <> Объект.Партнер Тогда
       Если Партнер = Неопределено Тогда
           ЗаписьСвойство = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи();
           ЗаписьСвойство.Объект = Объект;
       Иначе
           ЗаписьСвойство = Выборка.ПолучитьОбъект();
       КонецЕсли;
       ЗаписьСвойство.Свойство = Свойство;
       ЗаписьСвойство.Значение = Объект.Партнер;
       Попытка  
           ЗаписьСвойство.Записать();
       Исключение    
           Сообщить("Не удалось записать партнера  " + СокрЛП(Объект.Партнер) + " в свойство договора " + Объект, СтатусСообщения.Внимание);
       КонецПопытки;
   КонецЕсли;
КонецЕсли;  

Можно сразу писать?
15 Mikhail Volkov
 
24.08.12
17:29
С УПП обмен, партнер с св-вах договора
16 echo77
 
24.08.12
17:37
Тип значения, хранящегося в переменной объект какой?

Можно посмотреть так:

Сообщить("Объект: "+Объект+"("+ТипЗнч(Объект)+")");
17 Mikhail Volkov
 
24.08.12
17:49
(16) обычная ссылка, но в запросе прописал: ЗначенияСвойствОбъектов.Объект = &Объект - как в конфиге, а в КД нельзя писать Объект!
18 GenV
 
24.08.12
18:03
(17) Уверен, что объект это обычная ссылка, а не обычный объект?
19 Mikhail Volkov
 
25.08.12
04:21
(18) В УПП1.3 РС ЗначенияСвойствОбъектов имеет 2 измерения: Объект и Свойство, где Объект - ссылка на объект, название измерения так прописано в конфигураторе. А для КД Объект - ключевое слово его языка. Поэтому выкидывает ошибку.
20 Йохохо
 
25.08.12
08:41
(19) "Запрос.УстановитьПараметр("Объект", Объект.Ссылка)" сколько в этой фразе ключевых слов "Объект" в УПП 1.3 для КД 2.1?
вообще, по твоему коду, РС избыточен и нафиг не нужен, т.к. данные есть в реквизите объекта-Х
и ваще, объект не всегда вот прямо Объект, а иногда лука мешок
21 Mikhail Volkov
 
25.08.12
14:31
(20) Неудачный пример, в строке "Запрос.УстановитьПараметр("Объект", Объект);" Объект как раз Объект КД загруженный из базы источника (а Объект.Ссылка - Объект базы приемника).
А вот в строке запроса "ЗначенияСвойствОбъектов.Объект = &Объект" Объект - имя ссылки заданное конфигуратором, и КД его не правильно воспринимает. В этом проблема.
Насчет избыточности согласен. Для старого варианта обмена Партнер был реквизитом. Потом решили его (и не только его) сунут в свойства. Но вот при конвертации реквизита (в источники) в свойство (в приемнике) проблемы возникли.
22 Mikhail Volkov
 
28.08.12
13:40
А вот еще ошибку выдало при обмене РС, теперь КИ:

Ошибка при загрузке данных: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(4795)}: Ошибка записи объекта

           ТипОбъекта             =  Виды контактной информации

           Объект                 =  Телефон физ.лица служебный

           ОписаниеОшибки         =  Ошибка при вызове метода контекста (Записать): Ошибка при попытке вставки записи с неуникальным значением ссылки.

Microsoft OLE DB Provider for SQL Server: Нарушено "PK___Referen__AC8ED0C40F7C1D9B" ограничения PRIMARY KEY. Не удается вставить повторяющийся ключ в объект "dbo._Reference49". Повторяющееся значение ключа: (0xb9493d07ec2909514bd24a29a071e1b7).

HRESULT=80040E2F, SQLSrvr: SQLSTATE=23000, state=1, Severity=E, native=2627, line=1

Хотел в ПКО КонтактнаяИнформация поставить галочку "Искать по ГУИД", говорит:
По идентификаторам могут синхронизироваться только объекты ссылочных типов!
Синхронизация по идентификаторам ОТКЛЮЧЕНА!
Что предпринять в этом случае?
23 Mikhail Volkov
 
28.08.12
17:03
Отбой! Это дубль не РС, а справочника Виды контактной информации.
24 Mikhail Volkov
 
28.08.12
18:03
Еще проблемка образовалась. Надо алкогольную декларацию формировать по пиву за 1 и 2 кварталы. Тогда пиво не считалось алкоголем, продавалось из обычной УТ10.3. Теперь все что с пивом надо в УТАП перекинуть. Перекинул, с накладными поступления все ОК - там только пиво. А с продажами хреново, там не только пиво. Можно как-то в КД прописать, чтобы сигареты и прочие презервативы из накладной реализации выкидывались, оставалось только пиво?
25 Йохохо
 
28.08.12
18:08
в ПКГС Товары
если Презерватив(элементколлекции.номенклатура) = Да Тогда
Отказ = Истина;
конецесли;
только перед записью придется пересчет тч сделать
26 Mikhail Volkov
 
29.08.12
08:14
(25) Во всех доках Процедура ПередЗаписью() это делает, но там вписано:

   Если ОбменДанными.Загрузка  Тогда
       Возврат;
   КонецЕсли;

Как-то можно сбросить ОбменДанными.Загрузка в КД? Или лучше пересчет табличных частей переписать в КД "После записи"?
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший