Регистрация движений документа для обмена #442544


#0 by illuzia
Добрый день! Подскажите, пжалста...Есть Процедура ПриОтправкеДанныхПодчиненному.Делаю отбор движений документа по регистрам, как мне после отбора эти движения записать в файл обмена. Вот процедура в кратце:
#1 by Vitello
А они у тебя не регистрируются что ли?
#2 by illuzia
нет, это специально, т.к. все движения регистров мне там не нужны, нужны только строго по документам, кот выгружаются...долго думала как лучше сделать, почму-то решила так, если есть более умные мысли как это реализовать, я тока за...
#3 by Vitello
Регистрируй эти движения, и они сами выгрузятся.
#4 by MORRoz
Ну так если стоит выгружать движения документа, то они выгружаются только для тех документов, которые выгружаются. (звучит бредово =), но это нак)
#5 by Rovan
у нас так сделано - если по данному доку движения выгружать не надо тогда
#6 by illuzia
Так вот я и интересуюсь, как мне эти движения зарегистрировать или сразу выгрузить. Да но регистрируются то у меня все доки например "Внутренний заказ", а уже при выгрузке отбираются по конкретному складу, то есть получится что записи регистра зарегистрированы все равно все... Только вот мне наоборот надо выгрузить, заранее они зарегистрированы не были...
#7 by illuzia
если наоборот делать и поставить авторегистрацию на все регистры накопления, а потом отбирать их, то тут 100% можно что-нить пропустить...это придется перебирать все зарегистрированные записи каждого регистра по регистратору...
#8 by MORRoz
Так ты пробовала: у тебя действительно выгружаются движения по документам, которые не выгружаются сами? или ты теоретически подходишь?
#9 by MORRoz
пробовала?
#10 by illuzia
ПланыОбмена.ЗарегистрироватьИзменения(Узел,Движения); запуталась, то есть мне прям эту строку можно вставить вместо "Сообщить(Движение);"? Сейчас пробую, до этого подходила теоретически...
#11 by ptiz
Для Каждого НаборЗаписей Из ЭлементДанных.Движения Цикл
#12 by illuzia
Последний вопрос: У меня допустим начинается выгрузка в какой-либо узел, доходит он до этого места, регистрирует изменения, эти изменения уйдут с этим же файлом обмена, или уже со следующим?
#13 by maxar
зачем делать в момент выгрузки делай в модуле регистра - перед записью тогда в выгрузке уже будет то что необходимо
#14 by illuzia
Если первый вариант не пройдет, тогда буду каждый регистр копошить...
#15 by illuzia
Ошибка при вызове метода контекста (ЗарегистрироватьИзменения): Недопустимое значение параметра (параметр номер '2')
#17 by illuzia
Для Каждого НаборЗаписей Из ЭлементДанных.Движения Цикл                         А что здесь не так?Тот же самый НаборЗаписей...
#18 by illuzia
И ваш вариант тоже такую же ошибку выдает....
#19 by illuzia
Может сегодня у кого умные мысли появятся?
#20 by hhhh
а в регистре разрешен вообще обмен или ент?
#21 by illuzia
да, сейчас обмены идут, но идут не так как хотелось бы...изначально план обмена был настроен не правильно и из-за этого куча ошибок, которые нужно срочно исправлять...
#22 by illuzia
я уже сделала просто внешнюю обработку что бы понять, может он не хочет регистрировать именно при выгрузке какого-либо элемента, но обработка тоже вылетает с этой ошибкой... код обработки: Процедура КнопкаВыполнитьНажатие(Кнопка) В параметре Набор передается значение тип РегистрНакопленияНаборЗаписей, по идее должен регистрировать, но не хочет...
#23 by illuzia
Дошла до маразма, создала новый план обмена, задала все те же самые параметры, в новом плане работает...
#24 by MORRoz
в полне возможно что у данный регистр в старом плане обмена не был включен в обмен.
#25 by illuzia
у меня там были включены все регистры и запрещена авторегистрация...
#26 by illuzia
Интересно, а если пойти другим путем и сделать например вот так: Может это вызвать какие-либо ошибки?кто как думает?
#27 by MORRoz
жесть, проведение документа в разных базах приведет к разным движениям.
#28 by MORRoz
Мое мнение: Опиши проблему подробнее, все эти шаманства до добра не доведут. Что есть, как сейчас работает, как определяется "что выгружать, а что нет", что не нравится, как должно. Так можно будет принять правильное решение, и уже думать о том как его исполнить... вот..
#29 by illuzia
есть несколько магазинов, нужен обмен с ними, но документы туда должны выгружаться не все и только по складу магазина, ну а регистры только тех доков кот. выгрузились...если кратко то вот...
#30 by MORRoz
а как сейчас осуществляется регистрация измерений? При записи?
#31 by MORRoz
конфигурации одинаковые?
#32 by illuzia
сейчас константы, справочники, документы, регистры сведений регистрируются автоматом, регистры накопления не выгружаются вообще, и им приходится все доки перепроводить, а если док был в офисе помечен на удаление, то в их базе все его движения остаются... да конфигурации одинаковые, обычная распределенная база...
#33 by Vitello
Посмотрите ка как в типовых сделана регистрация регистров накопления. Ваши вопросы сразу же отпадут. И не путайте понятия регистрация изменений и непосредственно выгрузка.
#34 by MORRoz
Предлагаю снять авторегистрацию с документов, создать Подписку на событие , "При записи":
#35 by MORRoz
+изменить условие когда у вас что-то выгружается, а когда нет +не забыть что на перефирии код должен быть другой, так что там что-нибудь типа       ..... Иначе       .... КонецЕсли
#36 by illuzia
прошу прощения не поняла про код на периферии...это где должно быть?
#37 by mikecool
и тут повторюсь : не надо использовать ПриОтправке/ПриПолучении для фильтрации данных используй подписки на события для регистрации
#38 by mikecool
авторегистрацию снимать не надо, достаточно грамотно заполнить список получателей
#39 by Vitello
Ну почему, можно если осторожно :) Но не в этом случае.
#40 by mikecool
нашел ветку со своими наработками
#41 by illuzia
спасибо, сейчас буду разбираться...
#42 by MORRoz
в обработчике события "при записи". Ну это я так, на всякий случай.
#43 by Serg_1960
(имхо) "...регистрируются то у меня все доки...а уже при выгрузке отбираются по конкретному складу" - если сделать соответствие складов и узлов, - тогда можно убрать авторегистрацию и регистрировать изменения только для конкретного узла(склада) при изменении документа (через подписку на событие). Для примера - можно смотреть в типовых функционал обмена "по организациям".
#44 by MORRoz
я то и имелл виду, и привел упрощенный вариант кода. Вместо "Источник.Склад = Константы.СкладДляОбмена.Получить" вставить правильное сравнение, а вместо: " НаборДвижений = Источник.Движения.Остатки;" в цикле перебрать движения.
#45 by Serg_1960
Я, так, - мимо проходил. Я - третий кто порекомендовал автору настроить грамотно регистрацию изменений.
#46 by illuzia
Подскажи мне пжалста... А если у меня 2 плана обмена вообще в принципе, по одному идет полный, а вот второй уже по магазинам. Вот этой строкой он по всем планам обмена получателей очистит? Источник.ОбменДанными.Получатели.Очистить;
#47 by illuzia
разобралась.. Но теперь такая проблема, дело в том, что такой реквизит как Организация он всегда один в документе, но у меня то отбор идет по складам, а их может быть несколько(ПеремещениеТоваров), они могут перечисляться в табличной части(УстановкаСкидокНоменклатуры), а может и вообще не быть, если только в документе основании(ОтменаСкидокНоменклатуры), может не быть вообще (УстановкаЦенНоменклатуры, кот используется в ПереоценкеТоваровВРознице), вот как быть с этим? как тогда правильно реализовать отбор?
#48 by illuzia
Подскажите, пожалуйста, где хоть почитать про это, просто с обменами столкнулась первый раз, а делать надо срочно...
#49 by MORRoz
Описывый каждую ситуацию отдельно: 1. Есть реквизит "Склад", "СкладПолучатель", "СкладОрдер","СкладОтправитель" 2. Если есть реквизит в основании 3. Если реквизита нет. Вообще если такая сложная система, то лучше использовать обмен не РИБ, а по правилам обмена, которые надо писать в Конвертации. Если делать надо срочно, то рекомендую следовать моему совету: создать подписку на событие и описать ситуации когда документ регистрируется, а когда нет. Вариант более универсален и правелен с методической точки зрения, но труднее в исполении.
#50 by illuzia
Просто хочется сделать сразу по человечески, а легких путей я не ищу...хочется все таки пусть медленно, но сделать 1 раз и чтоб работало...в мне не понятно только как мне потом запрос делат,ь если у меня будет не 1 СкаладДокумента, а несколько  ведь в той же установке скидок может быть 1 получатель, а может и 50...
#51 by MORRoz
"Делать надо срочно" "хочется все таки пусть медленно, но сделать" Ну если хочешь делать как в , тогда Описывай различные отборы для разных регистров. Раздели на категории и по значению условия выполняй различные действия. Если СпискоРегистровСоСкладом.Найти(Источник.Метаданные.Имя) <> Неопределено Тогда ... ИначеЕсли СпискоРегистровСоСкладомВОсновании.Найти(Источник.Метаданные.Имя) <> Неопределено
#52 by illuzia
Нашла твою статью, она мне оч помогла...но никак не въеду вот в этот кусок: Подскажи что например ты у тебя скрывается вот например под этой функцией: ДокументыТипВсеСсылки
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

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