Проведение и отмена проведения (подписка на события) #322821


#0 by dtopenya
1С 8.1 УТ ред. 10.3 Сделал подписку на событие ПриЗаписи для регистра накопления. При проведении документа, изменяющего данный регистр, получаю Источник, который потом кручу в for each и получаю товары, указанные в документе. При отмене проведения документа и пометке на удаление получаемый Источник уже не могу крутить в цикле и получить товары. Как быть?
#1 by nop
А надо крутить при отмене удалении?
#2 by Дуб
А если вместо / кроме "ПриЗаписи" использовать "ПередЗаписью"?
#3 by selenat
ИМХО что-то невразумительное ты делаешь...
#4 by dtopenya
Хочу получить остатки и резервы при проведении документа, отмене проведения и пометке на удаление.
#5 by nop
зачем?
#6 by dtopenya
Для синхронизации работы 1С и MySQL. Если использовать подписку на событие ПередЗаписью, то получу ли я нужные остатки и резервы или получу их на момент до осуществления действия с документом?
#7 by selenat
ох, что-то кривое пишется... посмотри + В УТ все механизмы корректировки резервов есть уже
#8 by Дуб
До действия. Ну и что? Тебе ведь это и нужно было при удалении проведения. Или нет?
#9 by nop
Получишь остатки до создания (удаления) движений документом.
#10 by dtopenya
Мне нужно после совершения действия. Подписки на ПослеЗаписи у регистров накопления нет.
#11 by dtopenya
Если бы при пометке на удаление или отмене проведения Источник приходил бы, как и при проведении, то проблема должна была бы решиться. Какие мысли по этому поводу? Как решить задачу?
#12 by nop
ПередЗаписью + обработкаОжидания
#13 by selenat
мысли - постановка задачи кривая. Еще раз советую почитать ссылку из ...
#14 by dtopenya
ПередЗаписью + обработкаОжидания не поможет, т.к. из Источника циклом не могу взять товары.
#15 by Дуб
А что мешает автору подписаться на события "ОбработкаПроведения" и "ОбработкаУдаленияПроведения" у документов - регистраторов?
#16 by dtopenya
Ссылку из 7 посмотрел. Не мой вариант. Подписка на события документов не катит, т.к. видов документов куча. Ситуация такова: Есть база 1С, с которой работают пользователи. Есть база MySQL. Необходимо синхронизировать MySQL с 1С в реальном времени, чтобы при каждом действии в 1С, актуальные данные записывались бы в MySQL. В 7.7 я все сделал, но в 8.1 нет таких функций и процедур, как там. Как я понял, для получения остатков и резервов нужны 3 регистра накопления (в рознице, на складах и в резерве). У всех есть событие ПриЗаписи. Используя это событие, можно получить остатки и резервы. На текущий момент все уперлось в то, что объект Источник при отмене проведения приходит не такой, как при проведении.
#17 by Дуб
"видов документов куча" - это сколько? Да и к тому же - (опять таки) какая разница? В подписке можно указать произвольное количество документов. А конкретный тип отрабатывать по условию. Кроме того - если уж совсем всё строго - можно обойтись и без подписки: в модуль регистра кинь свою процедуру.
#18 by dtopenya
Если действие с документом изменяет остатки или резервы, то необходимо получить конечные остатки и резервы. При этом вид документа не имеет никакого значения. Если в модуль регистра товаров на складах вне процедур написать message, то сообщение будет выводиться при действиях с этим регистром от 1 до 2 раз в зависимости от действия и при действиях с регистром товаров в рознице. Подписка на событие ПриЗаписи отрабатывает 1 раз для конкретного регистра. Можно ли при отмене проведения документа получить такой же объект Источник, как и при проведении этого документа?
#19 by dtopenya
Если я вставлю свою функцию в модуль регистра, получу ли я остатки и резервы на момент после совершения действия или на момент до?
#20 by dtopenya
Самый простой вариант: при каждом действии получать остатки по всем товарам на всех складах. При большой номенклатуре и нескольким складам это должно быть накладно: при каждой операции записывать все в MySQL. Поэтому необходимо получить из объекта Источник список номенклатуры, по которому будут обновляться данные. Надеюсь, что внятно объяснил. Жду предложений.
#21 by hhhh
У источника где-то должно быть свойство "Отбор". Из него вытащить документ, как регистратор, а из документа табличную часть.
#22 by dtopenya
Проблема состоит еще в том, что у документов структура разная.
#23 by Валерыч
типизировать нужно структуру. Во всех стандартных конфах табличные части одинаковые по смыслу одинаково и называются: Товары, Услуги, ВозвратнаяТара и прочее
#24 by KAZ
Создаешь план обмена, указываешь в нем какие документы регестрировать, регламентной обработкой проверяешь изменения, получаешь из всех ТЧ один список номенклатуры и складов, получаешь остатки из регистров и выгружаешь. Как я понял надо остатки синхронизировать.
#25 by dtopenya
А как взять табличную часть Товары из любого документа? Возможно ли ее получить при пометке на удаление документа?
#26 by Валерыч
легко: 1. запросом "Выбрать * Из Документ."+имяДокумента+".ИмяТабличнойЧасти КАК Состав ГДЕ ...". 2. через объект или ссылку ДокСсылка.ИмяТабличнойЧасти
#27 by Валерыч
в твоем случае ИмяТабличнойЧасти = Товары
#28 by dtopenya
Спасибо, попробую.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям