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


1С:Предприятие ::

Метки: 

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

Я
   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
в обработке КонвертацияОбъектовИнформационныхБаз можно было конечно не комментировать, а добавить проверку на Вид табличной части, может кто допишет...



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