Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

КД Перенос документа Корректировка Записей регистра

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

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

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

        ЭлементОтбора.Вставить("Использование", Истина);
        ЭлементОтбора.Вставить("Значение", ИсходящиеДанные[ЭлементОтбора.Имя])//

        Отбор.Добавить(ЭлементОтбора);
        ЭлементОтбора = Новый Структура();
        ЭлементОтбора.Вставить("Имя", "Заказ");
        ЭлементОтбора.Вставить("Использование", Истина);
        ЭлементОтбора.Вставить("Значение", ИсходящиеДанные[ЭлементОтбора.Имя])//

        Отбор.Добавить(ЭлементОтбора);
        ЭлементОтбора = Новый Структура();
        ЭлементОтбора.Вставить("Имя", "Организация");
        ЭлементОтбора.Вставить("Использование", Истина);
        ЭлементОтбора.Вставить("Значение", ИсходящиеДанные[ЭлементОтбора.Имя])//

        Отбор.Добавить(ЭлементОтбора);
        ЭлементОтбора = Новый Структура();
        ЭлементОтбора.Вставить("Имя", "Контрагент");
        ЭлементОтбора.Вставить("Использование", Истина);
        ЭлементОтбора.Вставить("Значение", ИсходящиеДанные[ЭлементОтбора.Имя])//

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

        ВыгрузитьПоПравилу(Объект,,ИсходящиеДанные,,"РасчетыСПокупателями");
    КонецЕсли;
    
КонецЦикла;

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

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

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

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

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


Список тем форума
Рекламное место пустует  Рекламное место пустует
Программист всегда исправляет последнюю ошибку.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует