Имя: Пароль:
1C
1С v8
Перенос Остатков в помощью КД
0 luter-89
 
29.04.14
10:23
Добрый день.
Вопрос в следующем.

В ПКО создал правило без источника, приемник - Документ.
В ПКС создал свойства с галочкой - получать из входящих данных.

В Правилах выгрузки для этого ПКО указал произвольный алгоритм. Написал код в обработчике ПередОбработкой.

В плане обмена в состав входят все необходимые объекты.

При попытке выгрузить происходит ошибка:

{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(14628)}: Ошибка при вызове метода контекста (НайтиПоТипу)
            СтрокаТаблицы.ОбъектВыборкиМетаданные = Метаданные.НайтиПоТипу(СтрокаТаблицы.ОбъектВыборки);
по причине:
Несоответствие типов (параметр номер '1')

Она возникает потому что алгоритм следующий: Выбирается каждый источник из каждого правила, далее происходит поиск источника объекта в метаданных.

Но в моем правиле нет источника - соответственно, ошибка будет всегда возникать.

Как правильно сделать правило без источника, чтобы обойти эту ошибку?
1 Господин ПЖ
 
29.04.14
10:26
>Как правильно сделать правило без источника

ж.па есть а слова нет
2 Godofsin
 
29.04.14
10:26
Не пнял, как это должно работать
3 Жан Пердежон
 
29.04.14
10:27
возьми любые правила для переноса остатков из 77 в 80, там будут ответы на все твои вопросы по КД, в том числе еще не заданные
4 Господин ПЖ
 
29.04.14
10:27
(2) уличной магией... собрал запросом все дерьмо по базе и запихал в кд, а дальше пусть оно само думает
5 luter-89
 
30.04.14
15:04
Кто-нибудь может конструктивно объяснить?
6 ЧашкаЧая
 
30.04.14
15:33
Ошибка возникает потому что какой-то из выгружаемых типов метаданных не указан в составе плана обмена.
7 luter-89
 
30.04.14
16:31
В xml для правила не создается тег <ОбъектВыборки>
8 luter-89
 
30.04.14
16:32
9 luter-89
 
30.04.14
16:34
У меня выгружаются Классификатор, Номенклатура, в план обмена они включены. И одно ПКО без источника.
10 ЧашкаЧая
 
30.04.14
16:34
(7) Ошибка в (0) не из-за того что нет источника в правилах.
(8) Картинка на файлобменнике... вы хотите помощи или поиздеваться?
11 luter-89
 
30.04.14
16:43
12 luter-89
 
30.04.14
16:47
КодВыгрузки
13 luter-89
 
30.04.14
16:47
Запрос = Новый запрос();
Запрос.текст = "ВЫБРАТЬ
    |ЗапасыНаСкладахОстатки.Номенклатура,
    |ЗапасыНаСкладахОстатки.КоличествоОстаток КАК Количество
    |ИЗ
    |РегистрНакопления.ЗапасыНаСкладах.Остатки КАК ЗапасыНаСкладахОстатки";

Выборка = запрос.Выполнить().Выбрать();

ТоварыНаСкладах = Новый ТаблицаЗначений();
ТоварыНаСкладах.Колонки.Добавить("Номенклатура");
ТоварыНаСкладах.Колонки.Добавить("Количество");

ДатаВыгрузки = ТекущаяДата();

Пока Выборка.Следующий() Цикл
    
    СтрокаТоваров = ТоварыНаСкладах.Добавить();
    СтрокаТоваров.Номенклатура = Выборка.Номенклатура;
    СтрокаТоваров.Количество = Выборка.Количество;
    
КонецЦикла;

ТаблицаИменРегистров = Новый ТаблицаЗначений();
ТаблицаИменРегистров.Колонки.Добавить("Имя");
ТаблицаИменРегистров.Колонки.Добавить("Представление");

СтрокаТаблицы = ТаблицаИменРегистров.Добавить();
СтрокаТаблицы.Имя = "ЗапасыНаСкладахОстатки";
СтрокаТаблицы.Представление = "Остатки товаров на складах";


ИсходящиеДанные = Новый Структура;
ИсходящиеДанные.Вставить("Номер", "001");
ИсходящиеДанные.Вставить("Дата", ДатаВыгрузки);
ИсходящиеДанные.Вставить("Комментарий", "Перенос остатков товаров на " + Строка(ДатаВыгрузки));

ИсходящиеДанные.Вставить("ТаблицаРегистровНакопления", ТаблицаИменРегистров);
ИсходящиеДанные.Вставить("ОстаткиТоваровНаСкладах", ТоварыНаСкладах);


ВыгрузитьПоПравилу(, , ИсходящиеДанные, , "ВводНачальныхОстатков");
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.