Имя: Пароль:
1C
1С v8
КД 2.0. ПКС для поля составного типа.
0 poisk87
 
24.05.20
16:02
Доброго времени суток.

Подскажите, пожалуйста, уважаемые, ответ на вопрос. Есть РН ПокупкиНоменклатуры, в нем есть поле Документ составного типа, правила конвертации для регистра 1 в 1, кроме этого поля. В файл выгрузки поле не попадает совсем ни в каком виде, при включенной и отключенной галочке "Не выгружать объекты свойств по ссылкам", разве там ссылка <"Объект не найден"> не должна выгружаться, даже при отсутствующем документе в базе приемника?

Получается что надо для каждого создавать свое правило конвертации объекта??
1 poisk87
 
24.05.20
16:10
если указать пко(по произвольному алгоритму), то происходит вылет на тех документах, в которых реквизит "документ" равен регистратору.
2 poisk87
 
24.05.20
16:15
Текст ошибки
Ошибка записи объекта
    ОписаниеОшибки         =  Ошибка при вызове метода контекста (Записать): Ошибка при попытке вставки записи с неуникальным значением ссылки.
Microsoft SQL Server Native Client 11.0: Нарушено "PK___Documen__AC8ED0C4CF2848B9" ограничения PRIMARY KEY. Не удается вставить повторяющийся ключ в объект "dbo._Document24". Повторяющееся значение ключа: (0x94250cc47a514d5b11e9941483a126b3).
HRESULT=80040E2F, SQLSrvr: SQLSTATE=23000, state=1, Severity=E, native=2627, line=1
3 vicof
 
24.05.20
19:55
У тебя уже есть документы с такими внутренними идентификаторами, вот SQL Server и ругается. И даже пишет тебе об этом.
Как починить? Смотреть правила и что с их помощью они выгружается.
Для составных типов хорошо бы указывать правило, по которому каждый тип будет выгружаться.
4 Сияющий Асинхраль
 
24.05.20
20:00
Ну КД ведь не знает точный тип, по которому надо выгружать, вот она в ступоре и не выгружает вовсе. По хорошему перед выгрузкой ты сам должен анализировать тип объекта, и в зависимости от типа назначать точное имя ПКО, что-то типа того:

Если ТипЗнч(ОбъектКоллекции.Субконто) = Тип("СправочникСсылка.Контрагенты") Тогда
    ИмяПКО = "Контрагенты";
ИначеЕсли ТипЗнч(ОбъектКоллекции.Субконто) = Тип("СправочникСсылка.Склады") Тогда
    ИмяПКО = "Склады";    
ИначеЕсли ТипЗнч(ОбъектКоллекции.Субконто) = Тип("СправочникСсылка.БанковскиеСчета") Тогда
    ИмяПКО = "БанковскиеСчета";
ИначеЕсли ТипЗнч(ОбъектКоллекции.Субконто) = Тип("СправочникСсылка.ФизическиеЛица") Тогда
    ИмяПКО = "ФизическиеЛица";
ИначеЕсли ТипЗнч(ОбъектКоллекции.Субконто) = Тип("СправочникСсылка.ВидыНоменклатуры") Тогда
    ИмяПКО = "ВидыНоменклатуры";
ИначеЕсли ТипЗнч(ОбъектКоллекции.Субконто) = Тип("СправочникСсылка.СтатьиЗатрат") Тогда
    ИмяПКО = "СтатьиЗатрат";
ИначеЕсли ТипЗнч(ОбъектКоллекции.Субконто) = Тип("СправочникСсылка.СтатьиДвиженияДенежныхСредств") Тогда
    ИмяПКО = "СтатьиДвиженияДенежныхСредств";
ИначеЕсли ТипЗнч(ОбъектКоллекции.Субконто) = Тип("СправочникСсылка.НоменклатурныеГруппы") Тогда
    ИмяПКО = "НоменклатурныеГруппы";
ИначеЕсли ТипЗнч(ОбъектКоллекции.Субконто) = Тип("СправочникСсылка.Номенклатура") Тогда
    ИмяПКО = "Номенклатура";
ИначеЕсли ТипЗнч(ОбъектКоллекции.Субконто) = Тип("СправочникСсылка.ДоговорыКонтрагентов") Тогда
    ИмяПКО = "ДоговорыКонтрагентов";
ИначеЕсли ТипЗнч(ОбъектКоллекции.Субконто) = Тип("СправочникСсылка.ВидыНалоговИПлатежейВБюджет") Тогда
    ИмяПКО = "ВидыНалоговИПлатежейВБюджет";
ИначеЕсли ТипЗнч(ОбъектКоллекции.Субконто) = Тип("СправочникСсылка.ПрочиеДоходыИРасходы") Тогда
    ИмяПКО = "ПрочиеДоходыИРасходы";
ИначеЕсли ТипЗнч(ОбъектКоллекции.Субконто) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
    ИмяПКО = "РеализацияТоваровУслуг";
ИначеЕсли ТипЗнч(ОбъектКоллекции.Субконто) = Тип("ДокументСсылка.ПоступлениеТоваровУслуг") Тогда
    ИмяПКО = "ПоступлениеТоваровУслуг";
ИначеЕсли ТипЗнч(ОбъектКоллекции.Субконто) = Тип("ДокументСсылка.СчетФактураВыданный") Тогда
    ИмяПКО = "СчетФактураВыданный";
ИначеЕсли ТипЗнч(ОбъектКоллекции.Субконто) = Тип("ДокументСсылка.ВозвратТоваровОтПокупателя") Тогда
    ИмяПКО = "ВозвратТоваровОтПокупателя";
ИначеЕсли ТипЗнч(ОбъектКоллекции.Субконто) = Тип("ДокументСсылка.ПриходныйКассовыйОрдер") Тогда
    ИмяПКО = "ПриходныйКассовыйОрдер";
ИначеЕсли ТипЗнч(ОбъектКоллекции.Субконто) = Тип("ДокументСсылка.РасходныйКассовыйОрдер") Тогда
    ИмяПКО = "РасходныйКассовыйОрдер";
ИначеЕсли ТипЗнч(ОбъектКоллекции.Субконто) = Тип("ДокументСсылка.ПоступлениеНаРасчетныйСчет") Тогда
    ИмяПКО = "ПоступлениеНаРасчетныйСчет";
ИначеЕсли ТипЗнч(ОбъектКоллекции.Субконто) = Тип("ДокументСсылка.СписаниеСРасчетногоСчета") Тогда
    ИмяПКО = "СписаниеСРасчетногоСчета";
ИначеЕсли ТипЗнч(ОбъектКоллекции.Субконто) = Тип("ДокументСсылка.КорректировкаРеализации") Тогда
    ИмяПКО = "КорректировкаРеализации";
Иначе
    Отказ = Истина;
КонецЕсли;