Имя: Пароль:
1C
1С v8
КД Перенос документа Корректировка Записей регистра
0 uradead
 
03.02.18
23:53
третий день бьюсь не получается перенести документ. конфигурация УПП
Точнее документ переносится а вот записи регистра накопления нет.
Режим  обмена данными
код (пробовал и в ПКО после выгрузки и в ПВД после выгрузки):
Запрос = Новый Запрос;
Запрос.Текст =
        "ВЫБРАТЬ
        |   ВзаиморасчетыСКонтрагентами.Период,
        |   ВзаиморасчетыСКонтрагентами.Регистратор,
        |   ВзаиморасчетыСКонтрагентами.ВидДвижения,
        |   ВзаиморасчетыСКонтрагентами.ДоговорКонтрагента,
        |   ВзаиморасчетыСКонтрагентами.Сделка,
        |   ВзаиморасчетыСКонтрагентами.Сделка КАК Заказ,
        |   ВзаиморасчетыСКонтрагентами.Сделка КАК Документ,
        |   ВзаиморасчетыСКонтрагентами.Организация,
        |   ВзаиморасчетыСКонтрагентами.Контрагент,
        |   ВзаиморасчетыСКонтрагентами.СуммаВзаиморасчетов,
        |   ВзаиморасчетыСКонтрагентами.СуммаВзаиморасчетов КАК Сумма,
        |   ВзаиморасчетыСКонтрагентами.СуммаВзаиморасчетов КАК СуммаВал
        |ИЗ
        |   РегистрНакопления.ВзаиморасчетыСКонтрагентами КАК ВзаиморасчетыСКонтрагентами
        |ГДЕ
        |   ВзаиморасчетыСКонтрагентами.Активность = Истина И
        |   ВзаиморасчетыСКонтрагентами.Регистратор = &Регистратор ";

Запрос.УстановитьПараметр("Регистратор", Объект.Ссылка);

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

Пока Записи.Следующий() Цикл
    ИсходящиеДанные = Новый Структура("ВидДвижения, Документ, Заказ, Контрагент, Организация,Период,Регистратор,СодержаниеПроводки,Сумма,СуммаВал");
    ИсходящиеДанные.ВидДвижения = Записи.ВидДвижения;
    ИсходящиеДанные.Документ = Записи.Сделка;
    ИсходящиеДанные.Заказ = Записи.Сделка;
    ИсходящиеДанные.Контрагент = Записи.Контрагент;
    ИсходящиеДанные.Организация = Записи.Организация;
    ИсходящиеДанные.Период = Записи.Период;
    ИсходящиеДанные.Регистратор = Записи.Регистратор;
    ИсходящиеДанные.СодержаниеПроводки = Объект.Номер + " " +ТипЗнч(Объект);
    ИсходящиеДанные.Сумма = Записи.СуммаВзаиморасчетов;
    ИсходящиеДанные.СуммаВал = Записи.СуммаВзаиморасчетов;
    
    Если Метаданные().Имя = "КонвертацияОбъектовИнформационныхБаз" Тогда
        СтруктураНабораЗаписей = Новый Структура;
        Отбор = Новый Массив;
        ЭлементОтбора = Новый Структура();
        ЭлементОтбора.Вставить("Имя", "Документ");  //
        ЭлементОтбора.Вставить("Использование", Истина);
        ЭлементОтбора.Вставить("Значение", ИсходящиеДанные[ЭлементОтбора.Имя]);//
        Отбор.Добавить(ЭлементОтбора);
        ЭлементОтбора = Новый Структура();
        ЭлементОтбора.Вставить("Имя", "Заказ");
        ЭлементОтбора.Вставить("Использование", Истина);
        ЭлементОтбора.Вставить("Значение", ИсходящиеДанные[ЭлементОтбора.Имя]);//
        Отбор.Добавить(ЭлементОтбора);
        ЭлементОтбора = Новый Структура();
        ЭлементОтбора.Вставить("Имя", "Организация");
        ЭлементОтбора.Вставить("Использование", Истина);
        ЭлементОтбора.Вставить("Значение", ИсходящиеДанные[ЭлементОтбора.Имя]);//
        Отбор.Добавить(ЭлементОтбора);
        ЭлементОтбора = Новый Структура();
        ЭлементОтбора.Вставить("Имя", "Контрагент");
        ЭлементОтбора.Вставить("Использование", Истина);
        ЭлементОтбора.Вставить("Значение", ИсходящиеДанные[ЭлементОтбора.Имя]);//
        Отбор.Добавить(ЭлементОтбора);
        СтруктураНабораЗаписей.Вставить("Отбор", Отбор);
        СтрокиНабораЗаписей = Новый Массив;
        СтрокиНабораЗаписей.Добавить(Неопределено);
        СтруктураНабораЗаписей.Вставить("Строки", СтрокиНабораЗаписей);
        ВыгрузитьРегистр(СтруктураНабораЗаписей,,ИсходящиеДанные,Ложь,"РасчетыСПокупателями");
    Иначе // Видимо, выгрузка обработкой УниверсальныйОбменДаннымиXML
        ВыгрузитьПоПравилу(Объект,,ИсходящиеДанные,,"РасчетыСПокупателями");
    КонецЕсли;
    
КонецЦикла;

Пишет ошибку:
Ошибка в обработчике события ПослеВыгрузкиОбъекта
    ПВД                    =  КорректировкаЗаписейРегистров
    Объект                 =  Корректировка записей регистров УП000000001 от 02.02.2018 16:26:20  (Документ объект: Корректировка записей регистров)
    Обработчик             =  ПослеВыгрузкиОбъектаВыборки
    ОписаниеОшибки         =  Ошибка получения свойства объекта из входящих данных
    ПКО                    =  РасчетыСПокупателями  (:)
    ПКС                    =  3  (--> Документ)
    Объект                 =  Структура  (Структура)
    СвойствоПриемника      =  Документ  ()
    ОписаниеОшибки         =  Получение элемента по индексу для значения не определено
    ПозицияМодуля          =  Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(10186)
    КСообщенияОбОшибках    =  68
    ПозицияМодуля          =  Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(3646)
1 uradead
 
03.02.18
23:54
правило обмена для регистра -
всё из входящих данных
2 Amra
 
03.02.18
23:57
Изврат. Простой перенос движений документа. Безо всякого кода
3 uradead
 
05.02.18
10:04
А как движения выгрузить у этого документа? их ведь надо загрузить ещё в другую конфу (crm). В общем решил пойти с другой стороны, от регистра
4 uradead
 
05.02.18
10:34
Не тут то было. Выгрузилось всё корректно, но при загрузке

{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(9111)}: Поле объекта не обнаружено (РегистрНакопленияЗапись.РасчетыСПокупателями)
                Объект = РегистрыСведений[ИмяРегистра].СоздатьНаборЗаписей();

Какого он хочет писать в регистрСведений? В какую сторону копать? Вообще можно регистры накопления передавать из базы в базу?
5 Йохохо
 
05.02.18
10:36
(4) это такой специфический документ, вот так он и устроен
6 azt-yur
 
05.02.18
10:41
(4) Подчиненные регистры можно переносить только с регистратором.
Настройте структуру ПКО документа с движениями, предварительно структура базы у вас должна быть выгружена с движениями документов. И код действительно писать не надо, все делается одной мышкой.
7 uradead
 
05.02.18
10:49
"выгружена с движениями документов"
Вот, походу, ключевое слово. Сейчас попробую.

Но дальше задача усложняется, мне нужно будет передать документ ВозвратОтПоставщика (в части движения по регистру ВзаиморасчётыСКонтрагентом) в "Корректировку записей регистра". Как в таком случае быть?
8 azt-yur
 
05.02.18
11:20
(7) Настраиваешь ПКО ВозвратОтПоставщика - КорректировкаЗаписейРегистров с переносом движений по нужному регистру и все
9 azt-yur
 
05.02.18
11:21
(8) ну и в корректировке не забываешь заполнить таб.часть ТаблицаРегистровНакопления
10 uradead
 
05.02.18
11:50
Да, увидел, что это модно настроить.
Спасибо.
Но тут новая напасть. При обновлении типовых правил. Ошибка :(

Неправильно указана табличная часть "ВзаиморасчетыСКонтрагентами" объекта "Корректировка записей регистров". Табличная часть не существует.

я так понимаю, он говорит что нету такой табличной части у документа
11 Amra
 
05.02.18
11:52
(10) Когда выгружал структуру конфигурцуии не выгрузил движения документак
12 uradead
 
05.02.18
11:57
выгрузил, как же, иначе он бы мне не дал выбрать этот набор движений.
Что делал: Структуру выгрузил, правило написал. Сохранил в файл. Пото в Плане обмена (своём) заменил ПравилаОбмена на получившиеся - сохранил - запустил. В Операции -> Регистры сведений -> "Правила для обмена данными" нажимаю кнопку "обновить все типовые правила" и вот в это момент ошибка в журнал пишется
13 hhhh
 
05.02.18
12:07
(12) таб.часть ТаблицаРегистровНакопления
14 azt-yur
 
05.02.18
12:11
(10) Для постоянного обмена значит не прокатывает. Через обработку вручную должно работать. Можешь попробовать внести доработки в программу чтобы ошибку не выдавал и проверить перенесет ли.
У меня была похожая задача переноса документов в ERP, вот для операций перенести движения так и не удалось, ошибок у меня не выдавало, сам документ переносился, а движения нет. Они тоже как то должны быть зарегистрированы для переноса. До конца разбираться не стал, операций было не так много
15 uradead
 
05.02.18
12:16
Похоже наступил на все грабли с этим регистром накопления :( (13) С этой табличной частью всё нормально. На неё не ругается
16 Йохохо
 
05.02.18
12:17
(15) а другой там нет
17 uradead
 
05.02.18
12:26
(16) Понятно что нет, цель - выгрузить регистр накопления
Посоветовали через наборы движений
итог ругается на набор движений, что нет такой Табличной части.
И я с ним полностью согласен - нет такой табличной части. Но надеялся, что он по типу прошаритЮ что это не настоящая табличная часть
18 PCcomCat
 
05.02.18
12:31
ВыгрузкаЗагрузкаДанныхXML - без всяких мучений...
19 uradead
 
05.02.18
12:32
(18) Мне постоянный обмен нужен. Через ВыгрузкаЗагрузкаДанныхXML  подозреваю что всё получится
20 uradead
 
05.02.18
13:18
Спасибо други. Всё заработало. Особенное спасибо      azt-yur (вот что значит тёзка)
Так как в инете находил только вопросы на эту проблему, напишу для себя и потомков как победить:
1) Выгружаем структуру с движениями документов
2) В КД настраиваем документ и нужный набор движений
3) Загружаем это всё в ПравилаОбмена в Плане обмена (своём)
4) Комментируем проверку при загрузке правил обмена в обработке КонвертацияОбъектовИнформационныхБаз (искал по Неправильно указана табличная часть)
5) и собственно всё, выгружается, а главное загружается всё на ура.
21 uradead
 
05.02.18
13:20
в обработке КонвертацияОбъектовИнформационныхБаз можно было конечно не комментировать, а добавить проверку на Вид табличной части, может кто допишет...