#0
by Ayvengo
Вот текст кода: За запрос не кусайте больно :P Почему так? Видимо я опять чего-то недопонимаю :( УПП 1.3.13.1. Добавил подписку при проведении и при записи, результат везде один и тот же ... :( ЧЯДНТ?
#2
by Ayvengo
Дааа! Движения по регистру ТоварыНаСкладах присутствуют ;) т.е. Источник.Движения.ТоварыНаСкладах.Количество = N
#3
by Lys
Потому, что на момент выполнения твоего кода движения документа по этому регистру уже ЗАПИСАНЫ в базу. А коллекция Движения - содержит только незаписанные наборы движений документа.
#8
by Живой Ископаемый
2 ваш ответ противоречит тому, что имеет автор - в Движениях у него 0 а в запросе - не 0... ==== 2 давай ты расскажешь что тебе нужно ==== 2 он даже читать про прочитать не хочет, не то что писать
#9
by Axel2009
потому что один регистр добавляли через Документ.Движения.ТоварыНаСкладах, а другой через РегистрыНакопления.ПартииТоваровНаСкладах.СоздатьНаборЗаписей
#13
by Ayvengo
Всем спасибо, Прочитать помогло, но все-равно как-то не правильно .. в одном месте движения есть а в другом нету ... мне кажется Вы не правы = 3
#14
by Lys
Потому что движения в процессе проведения документа можно записать "принудительно", кодом. Что и делается в типовых, много где. Кроме того, подписка "ПриПроведении" выполняется ПОСЛЕ отработки основной "ОбработкиПроведения". А вот "Прочитать" - не надо советовать автору... использование этого метода внутри транзакции проведения таит в себе столько подводных камней, что лучше - нуегонафик...
#17
by Lys
А ты пробегись по "ОбработкеПроведения", найди место, в котором формируются движения по ПартиямТоваровНаСкладах... затем сравни, как формируются движения по ТоварамНаСкладах. Тогда и поглядим, кто прав=)
#18
by Ayvengo
и что лучше использовать? если все так плохо ... извиняюсь, не обратил внимания на ник :(
#20
by Lys
Гм... у меня есть обратный пример, когда действия одного моего неопытного коллеги с использованием Прочитать привели к "пропаже" движений у проведенных документов при перепроведении.
#28
by Ayvengo
2 Lys, Вы говорите о том, что если мы прочитаем ... допустим в моем случае (есть движения по регистру ТоварыНаСкладах) прочитаем ТоварыНаСкладах, то они очистятся? Попробовал, вроде бы все нормально .. ничего никуда не пропало ...
#29
by Живой Ископаемый
2 ну... это вы мелко копнули, я думаю это из-за того что просто с утра испортил себе как-нить образом карму... Потому что corralation is not a causation. B без объяснения конкретных причин мы такие заявления отметаем как голословные.
#34
by Живой Ископаемый
2 дядька, это Миста-форум... если ты не описываешь подробную механику, то это все равно что просто сотрясаешь воздух - тут никто никому на слово не верит
#35
by Axel2009
подробная механика состояла в том, что небыло прочитать, а потом пользовалась записать, и в итоге старые данные потирались, так как по умолчанию стоит <Замещать> как истина =)
#36
by Lys
Ок, спорить не буду - проверю сам. В памяти обратное сидит. Возможно, что-то путаю. Там как раз был другой случай: использовалось Прочитать + автоматическая запись движений при проведении.
#39
by Lys
+ Подробнее: ДокументОбъект, движения по регистрам формируются как в - часть непосредственно через заполнение Движения, часть - через СоздатьНаборЗаписей. Подписка - "ПриПроведении". Внутри подписки мой коллега бездумно использовал конструкцию Для Каждого Движение Из Источник.Движения Цикл .... Далее - завершение транзакции проведения, и соответственно - запись наборов движений из коллекции Движения. Автоматическая. Естественно, в итоге движения у проведенного документ отсутствуют.
#40
by Axel2009
понятно что у коллеги подводный камень. и каково же было решение данной проблемы? =)
#42
by Lys
- Решение - не использовать Прочитать в подписке ПриПроведении. Задача коллеги в итоге решилась другим способом.
#45
by Lys
Ну, если тот факт, что заполненные наборы записей в коллекции "Движения" при окончании проведения документа фиксируются в БД автоматически, без вызова метода Записать - тогда да, отстал.
#47
by Axel2009
факт в том, что они фиксируются, если у объекта (регистра накопления) взводится флаг "Модифицированность". для этого достаточно изменить набор записей, но не "прочитать". поэтому понятий как "автоматическая" или "не автоматическая" запись нет. набор модифицирован - записываем, не модифицирован - пропускаем.
#49
by Axel2009
+ ну и в добавок - "задача решилась ... другим способом" написана так, что ее решили способом ноухау. хотя достаточно было добавить КонецЕсли; я конечно не знаю что там нужно было, но пафос меня убил =)
#51
by Lys
Я где-то говорил про флажок "автоматический"? Не надо придумывать за меня то, чего я не говорил.
#52
by Axel2009
ну нету в 1с понятия как автоматическая запись. есть документ. по нему есть движения Товар - Количество 4. код проведения: после проведения документа, строка с "Количество = 4" осталась.
#53
by Lys
А что стало с добавленной строкой с Количество=2? И когда появилась строка с Количество=4 - в этой же транзакции проведения, или это "старое" движение ранее проведенного документа? И каков режим удаления движений при перепроведении? А то сдается мне, что мы пытаемся разными словами говорить об одном и том же.
#54
by Axel2009
я говорю лишь то что автоматической записи нету. движения были до проведения. движения не удаляются автоматически. но после "прочитать" движения не удаляются "автоматически". потому как после прочитать "Модифицированность" ставится в ложь. если к коду добавить Движения.Товары.Очистить; то все, старые движения удалятся. потому как была модифицированность Движения.
#55
by Lys
А теперь измени режим удаления движений при перепроведении на "автоматически" и посмотри, что будет...
#56
by Axel2009
"автоматически" движения записываться от этого не начнут. данные удалились до процедуры "обработка проведения". после прочитать Модифицированность сбрасывается в ложь. и никакой записи не произойдет.
#57
by Ayvengo
Эх, хорошо, что мне не приходится записывать движения документа, который я читаю :D Так что проблем никаких не будет :Р
#58
by Lys
Ну не будем спорить о понятиях... если ты считаешь, что то, что после кода в обработке проведения: в итоге у проведенного документа будет движение с Количество=2, без вызова метода Движения.Товары.Записать - это не "автоматическая запись заполненных в модуле проведения наборов движений", то это твое право=) Давай теперь обсудим мой случай на примере твоего документа. Допустим, имеется проведенный документ. Удаление движений при перепроведении - автоматическое. Допустим, в его обработке проведения написан код, как в этом посте выше. Запускаем документ на перепроведение. Что с ним происходит? 1) До вызова "ОбработкаПроведения" все существовавшие ранее движения очищаются, в БД ничего нет. 2) Отрабатывает ОбработкаПроведения, в итоге в Движения.Товары содержится строка с Количество=2 3) Отрабатывает подписка ПриПроведении, внутри нее бездумно вызывается Движения.Товары.Прочитать (упрощаю, без промежуточных переменных). Теперь в Движения.Товары у нас пусто. 4) В итоге, после записи имеем отсутствие движений документа по регистру Товары. Неважно даже, по какой причине - хоть из-за пустоты Движения.Товары, хоть из-за отсутствия модифицированности. Согласен, в этом и есть подводный камень?
#59
by Axel2009
по пункту "а", если у документа стоит "не очищать движения автоматически". документ проведен и по нему уже существует движение с "количество" = 2, тогда записи в базу данных как таковой не будет. 1ска сверится, что данные совпадают, и перезаписывать их не будет. по пункту "б", при данном допущении (который уже не пример моего документа), в данной расшифровке все правильно. автоматическое бывает "удаление" движений, а не "запись". только один момент, на который опять же ставишь акцент "бездумно". если "бездумно" создать набор записей по регистру сведений без регистратора и записать, то удалятся все движения. поэтому все надо делать "думно", а если чтото не так, то значит скорее не знал "нюансов".
#60
by Lys
Вот и я про то же, насчет пункта "б". Нюансы в данном случае - как раз в и отчасти в . Без их знания твой совет в как раз и может привести автора к подводным камням. Так что нечего на амбразуру кидаться почем зря;)
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Как прочитать старые движения в регистр при перепроведении документа?
- v8.почему не обязательно записывать движения по регистрам
- v8: Движения по регистрам датой, отличной от даты дока
- Почему у меня в документе на закладке Движения не появляется регистр свед.
- Как получить движения документа используя свойство Движения?
- Выборка Движения по регистрам
- Как перенести движения по регистрам между базами. Конфигурации одинаковые.
В этой группе 1С
- Перенос Спр по условии.(КД 2.1.5.1)
- УТ 11. Учет основных средств
- В каком каталоге кэш картинок у браузера Хром?
- Сумма прописью БП 2.0
- Ввод начальных остатков по 60 счету
- Единицы измерения в Комплексной конфигурации
- Количество субконто в плане счетов
- УТ11 На что влияет статус отгрузки в реализации?
- авто обмен 1с7.7 ТиС
- Несворачивает строки в табл. документе
- v8: Как отражается больничный за счет работодателя?
- КД Значение не является значением объектного типа (Приемник)
- При проведении документа программно не формируются проводки
- странное при печати табличного документа
- СКД, как проверить, перед формированием отчета, что параметр заполнен
- Как перезаполнить документ основание
- Как лучше в ут завести иностранного контрагента?
- Как обратиться к реквизиту (УТ 11, v8.2)
- Вызов метода внешней компоненты по расписанию
- Как программно в СКД загрузить настройки по умолчанию