Конвертация данных в Регистр сведений #453803


#0 by almyaev
Добрый день! Подскажите как выполнить конвертацию: Источник: документ с табличной частью; Приемник: документ и регистр сведений, у которого измерением является ссылка на документ, отстальные измерения соответствуют реквизитам ТЧ источника. ПКО Документ->Документ сделал. А вот как перегнать ТЧ в регистр сведений, и ещё сослаться на документ никак не пойму.
#1 by agarych
1. В базе приемнике при проведении документа делаешь движения по нужному РС. 2. В ПКО после записи делаешь движения по РС. 3. В ПВД для данного документа табличную часть выгружаешь в таблицу значений, записываешь ее в ИсходящиеДанные и вызываешь ВыгрузитьПоПравилу("ВыгрузкаРС",,ИсходящиеДанные) (по поводу синтаксиса не уверен под рукой книжки нет) Имхо самый правильный вариант это №2. Так как в №1 нужно дорабатывать конфигурацию, что может быть нельзя делать. в №3 если у тебя будет выгружаться этот документ по ссылкам, то у тебя не будет выполняться процедуры ПВД для данного документа.
#2 by almyaev
Да, конфу приемник изменять не могу. Я не понял во что мне выгрузить ТЧ, чтобы иметь к этим данным доступ со стороны получателя на обработчиках. "В ПВД для данного документа табличную часть выгружаешь в таблицу значений, записываешь ее в ИсходящиеДанные." А таблица значений нормально выгрузиться и перетащится? На каком событии её потом ловить? В ПКО ПослеЗагрузки не нашел подобного параметра.
#3 by agarych
Ты меня не правильно понял, это три варианта. Вопрос: в базе приемнике у документа есть табличная часть или нет? Если есть, то ты просто передаешь табличную часть и по этой ТЧ делаешь движения. Но скорее всего у тебя у документа нет ТЧ. Тогда выбираем пункт №3. Я буду писать тебе псевдокод, я думаю разберешься. у тебя должно быть два ПКО: 1. ПКО для документа 2. ПКО для РС, у которого все реквизиты имеют флажок "Получать из входящих данных" ПВД для документа, ПередВыгрузкой: Вообщем как то так...
#4 by almyaev
Понял, спасибо! Я уже примерно так и сделал, только в ПВД заполнял не ИсходящиеДанные а создовал отдельную структуру и её выгружал. Примерно так: Это имеет принципиальное значение или нет?
#5 by agarych
В данном случае нет, но если бы у тебя было ПКО, у которого есть свойства с флажком "Получать из входящих данных", то ИсходящиеДанные нужны.
#6 by almyaev
Спасибо за помошь!
#7 by almyaev
Опять проблема, никак не могу побороть, помогите! Таже самая ситуация, переношу данные в РегистрСведений, подчиненный регистратору!!! Всегда переносится только последяя запись, хотя обработчик "ПередЗагрузкой" ПКО вызывается столько раз, сколько строчек в ТЧ. В файле данных на несколько строчек, а грузится только последняя. Думаю проблема в реквизите "НомерСтроки", но незнаю как его заполнить.
#8 by bvn13
проблема в том, что каждая твоя новая запись обнуляет регистр сведений, т.к. нет привязки отбора НабораЗаписей к регистратору
#9 by almyaev
Какже нет привязки к регистратору, есть, см .  Есть привязка к регистратору, только думаю что все строчки вставляются с НомерСтроки = 1, поэтому и перетираются. Проставить НомерСтроки нельзя, он только для чтения. Что делать?
#10 by fisher
У меня аналогичная проблема. А что, если без отбора по регистратору пытаться писать в РС, очищаются все записи по регистратору, даже не попадающие в отбор по измерениям? Странно как-то... Речь, насколько я понял, о том как сама КД осуществляет запись набора записей. Номер строки тут не причем стопудов.
#11 by fisher
Нашел в обработке загрузки КД место, где грузятся наборы записей РС. Там единообразно устанавливается отбор по доступным элементам отбора. Без анализа того, какой РС имеет вид - с подчинением или нет. Т.е. КД не умеет корректно писать регистры сведений, подчиненных регистратору. Вернее, через тип объекта-приемника "РегистрСведенийЗапись" можно только одну запись по регистратору сделать. При загрузке данных объекта этого типа в случае РС подчиненного регистратору, каждый раз устанавливается отбор по регистратору (без вычитывания существующих данных) в результате чего все уже существующие записи этого регистратора очищаются. Т.е. по регистратору остается только последняя сделанная запись, что мы и видим. Увы и ах.
#12 by almyaev
Пипец, блин!!! А есть какой-нибудь способ передать таблицу значений, а на приемнике её обработать?
#13 by bvn13
не поверишь! есть! Это группой зовется. Все таб.части документов так переносятся...
#14 by almyaev
Имеешь ввиду ПКГС?
#15 by bvn13
имею в виду (не знаю, как звать) в нижнем окошке нажать не "Создать ПКС", а "Создать группу", наверное, это и есть ПКГС...
#16 by Живой Ископаемый
2 да, правило конвертации ГРУППЫ свойств
#17 by almyaev
И как мне обработать ПКГС на приёмнике, если у меня там нет такой табличной части. ПКГС нельзя передать в параметр. Если для каждого реквизита ТЧ указываю выгружать в параметр, то они не выгружаются (видимо по тому что нет приёмника у ПКГС табличной части)
#18 by Живой Ископаемый
2 Я не вникал в то что тебе нужно, и всю тему тоже не читал, Но вот какая штука - например с помощью ПКГС я переносил из в77 в в8 проводки документа (у документа нет ТЧ с таким именем, но тем не менее), и я формировал в общем-то программно - в смысле как бы саму виртуальную ТЧ в в77...
#19 by almyaev
В я ошибся, стояла галка "Отключить". Я создал ПКГС, поле "Приемник" ПКГС пусто. Для всех реквизитов ТЧ указал "Передавать данные в параметр" и указал имена параметров. В итоге при выгрузке ошибка "Поле объекта не обнаружено (Сумма)". Правильно ли я формирую виртуальную ТЧ?
#20 by Живой Ископаемый
2 не знаю, лень вникать.. :) а так чтобы слёту вникнуть - наверное еще опыта мало...
#21 by fisher
Не, произвольную таблицу через ПКГС не передашь. Это просто инструмент обработки списковых данных объектов при выгрузке. При загрузке их как таковых уже не существует. Можно добавлять произвольные данные в файл выгрузки и вычитывать их в событиях после загрузки. Но таблицу, да еще если надо её элементы конвертировать по правилам... Проще КД напильником доработать. Или двигать регистр при проведении загружаемых документов.
#22 by fisher
Тем более, что в ты написал, что все нужные данные так или иначе загоняются в табличную часть дока. Можно в "После загрузки" дока тупо писать нужный набор записей по данным из табличной части. Но проще при проведении. Ведь так или иначе при проведении этот регистр двигается. Разве нет?
#23 by Aprobator
ну дык - вроде неясно куда сумму выгружать (или откуда загружать). Судя по описанию ошибки.
#24 by agarych
посмотри, когда делаешь синхронизацию свойств у документа, там случаем нет данного РС, у которого он является регистратором?
#25 by agarych
не знаю как РС, но наборы записей регистров накопления (сформированные на стороне источника) грузит на ура... щас поищу код, но сразу предупреждаю я не знаю как там с РС, но с регистрами накопления была таже самая проблема что и в .
#26 by fisher
Кстати да. Если выгружать структуру метаданных приёмника вместе с движениями (убрать галку "Не выгружать движения документов"), то по идее появится возможность штатно выгружать РС подчиненные регистратору через ПКГС документа-регистратора. У себя не пробовал, т.к. в этом режиме чертовски долго лопатит...
#27 by agarych
нет, РС там нет, есть только РН, РБ, РР (((
#28 by agarych
Короче, стоп... )))) прав, и ты всего в полшаге от правильно решаения. 1. Ты уже создал ПГКС 2. Ты посмтавил флажки у каждого свойста - это делать не надо, оставь только у самой GURC 3. изменяем твой код из
#29 by almyaev
Ты посмтавил флажки у каждого свойста - это делать не надо, оставь только у самой GURC Это речь про какой флажок?
#30 by agarych
Это про это "Если для каждого реквизита ТЧ указываю выгружать в параметр, то они не выгружаются (видимо по тому что нет приёмника у ПКГС табличной части)".
#31 by almyaev
У ПКГС нет галки "Передавать данные в параметр" Так не выйдет! Ты хочешь чтобы в ПКО которое вставляет данные в РС я создал ПКГС. Там нет ТЧ, поэтому и не смогу создать ПКГС. (ух скоко абривеатур, но надеюсь понимаете меня).
#32 by agarych
Да ладно нет... поставь флажок "Получить из входящих данных".
#33 by almyaev
Для ясности, ещё разок объясню задачу. Источник: ДокИст - документ с табличной частью Приёмник: СпрПрием - справочник без ТЧ, реквизиты соответствуют реквизитам ДокИст; ДокРегистр - документ, ссылается реквизитом на СпрПрием; РегСвед - регистристр сведений, подчиненный регистратору ДокРегистр, Измерения соответствуют реквизитам ТЧ ДокИст и измерение СпрПрием
#34 by almyaev
Как сейчас реализовано: ПКО ДокИст->СпрПрием (перегоняются реквизиты, только для него есть ПВД) ПКО ДокИст->ДокРегистр ПКО "пусто"->РегСвед сдесь все измерения беруться из входящих данных ПВД ДокИст->СпрПрием "ПередВыгрузкой" написано Дак вот теперь про решение : в "пусто"->РегСвед я не могу завести ПКГС, тк нечего указать в Приёмнике
#35 by Живой Ископаемый
Все, я понял, Нужно два правила.. Один для документа, другой для ТЧ-набор записей РС...
#36 by Живой Ископаемый
"Дак вот теперь про решение : в "пусто"->РегСвед я не могу завести ПКГС, тк нечего указать в Приёмнике" Просто это правило тебе нужно вызывать не просто так, а подготовив ему входящие данные
#37 by almyaev
Входящие данные - это замена источника, а в поле приемник что указать? Нечего. В написано Структура.Вставить("ИмяТвоейПГКС", ТаблицаДанных); Дак вот "ИмяТвоейПГКС" и должно быть имя приемника, а его нет...
#38 by almyaev
апп
#39 by fisher
Что ап? Через ПКГС не взлетит. не подходит?
#40 by almyaev
В приемнике нет ТЧ, поэтому и не могу после загрузки. Щас пробую через движения
#41 by almyaev
Через движения получилось, спасибо за помошь!! Но я так и не понял можно ли передать произвольную таблицу значений в приемник, чтобы её там обработать?
#42 by fisher
Как получилось-то? Не совсем понял. При проведении движения сделать? А данные откуда берешь? Если ТЧ такой в приемнике нет... Произвольную таблицу значений, как я понимаю, в приемник не передашь. Разве что геморным путем собственноручно пакуя её в XML (в обработчиках можно работать напрямую с файлом выгрузки) и распаковывая на стороне приёмника.
#43 by almyaev
Получилось так: перевыгрузил метаданные пиёмника с движениями и создал в ПКО ДокИст->ДокРегистр ПКГС "ТЧ->Набор движений регистра сведений". Оказалось все очень просто.
#44 by fisher
Значит агарыч в дезинформировал :)
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С