#0
by йцукен
В обработке проведения цикл по строкам документа, а в цикле запрос по регистру и выполение движений по этому регистру в зависимости от результатов запроса. Так вот если документ проводится Непроведенный документ, то он в запросе на видит только что сделанные им движения. А если перепроводится уже проведенный документ, то все ок. Где копать?
#5
by SleepyHead
Если бы ты с проводками работал, то тебе бы помог метод ЗаписатьПроводки... А вот с регистрами я не работал практически, помочь не могу.
#9
by Anton R
Копать бесполезно. Проведение выполняется в транзакции, поэтому пока оно (проведение) не закончится, запрос никаких изменений не увидит. Нужно использовать "РассчитатьРегистры..." + "Актуальность".
#10
by saper
>Копать бесполезно. Проведение выполняется в транзакцииСкорее это косяк 1С. Первый раз напоролся на 21 релизеПотому что если документ перепроводится, он свои движения видит.А если проводится непроведенный документ не видит.Т.е. система ведет себя по разному а так быть не должно...
#14
by USSR
Как в анекдоте "а че думать, трясти надо". У тебя скорее всего не проводятс и ранее проведенный и непроведенный. Движения ранее проведенного не удаляются. А у непроведенного только в психушке могут быть движения
#15
by saper
11,12галка Автоматически удалять движения не стоитВ начале проведения движения чистятся// Удаление движений по регистрам. КонецЦикла;Речь идет о считывании в конце модуля проведения вновь созданных движенийЕсли документ изначально не был проведен движения не читаютсяЕсли документ перепроводится движения читаются.Причем тут автоматическое удаление движений ? Повторяю ВНОВЬ СОЗДАННЫХ ДВИЖЕНИЙ
#18
by saper
новые естественно старые то потерли смотри выше Алгоритм бывает зависит от вновь созданных движений.Например нужно в конце проведения узнать какие партии списались.И сделать еще движения на свой регистр. Сопровождать движение записыванием в таблицу значений довольно много кода.
#19
by Джинн
Коран запрещает складывать с переменной (СЗ,ТЗ и т.п.) данные. Разрешается только чтение из регистра.
#20
by йцукен
галка "Автоматическое удаление движений" естественно стоитА вообще чтобы всем было понятно приведу пример:Документ делает приход по регистру, измерениями которого являются НачНомер и КонНомер. Задача в том чтобы не было персекающихся диапазонов. Т.е. если в однйо строчке документа стоит 1000-2000, а в другой 1500-2500, то документ не должен проводиться. Это отслеживается запросом по данному регистру в каждой итерации по строкам документа. После запроса делается приход по данному интервалу. Соответственно когда проводится непроведенный документ, то запрос во второй итерации не видит движения сделанного первой итерацией. А когда документ перепроводится , то вторая итерация видит движения сделанные первой итерацией. Вопрос почему так? Если бы и проведенный документ при перепроведении не видел движений, то вопроса не было бы.
#23
by Джинн
Хм... Как бы оценить решение, чтобы ты не обиделся... Короче читай диагноз выше.Какая на фиг религия запрещает при запаси проверить документ на корректность? На фиг при каждом перепроведении заново "перепроверять" документ?И что за бред в измерениях хранится?
#25
by йцукен
в записанном непроведенном документе может хранится все что угодно. Тем более как быть при перепроведени базы?З.Ы. а конфа действительно замороченная, только не в этом вопрос, вопрос в том, почему разница при проведении и перепроведении?
#26
by saper
Диагносты блин. Т.е. это нормально что проведенный и непроведенный документ при проведении ведет себя по разному. Всегда можно списать на кривые руки
#27
by Anton R
Не тормози. Говорят же тебе, что запрос видит только движения ДО проведения документа. Поэтому при перепроведении ты видишь движения ранее проведенного документа, а при новом проведении не видишь ничего.А получить свои движения очень просто:
#28
by WWWolfy
2 года четыре назад описывал эту проблему. существует. обходил только ТаблицейЗначений - т.е. "складывал" в неё уже сделанные движения по регистрам.
#29
by Rovan
можно создать ТЗ в модуле проведения для временного хранения ранее записанных этим документом записей в регистр.да, И что за бред в измерениях хранится?
#32
by WWWolfy
28+ хотя я больше с проблемой неработоспособности "ОчиститьДвижения" столкнулся.А по движениям чёто не помню.2 А пример кода можешь привести? В смысле - как именно запрос делаешь?
#33
by Джинн
Млин, читай доку в конце концов! Про метод Актуальность регистра в частности. Она применима исключительно для регистра, участвующего во ВРЕМЕННОМ РАСЧЕТЕ.
#34
by lalex23
практически во всех типовых конфигурациях и документах есть первые строки в обработке проведения: КонецЕсли;какая религия запрещает сделать аналогично???
#36
by Джинн
Теперь пишу открытым текстом (раз намеки не понимаешь) - задача решается кривыми руками. Нет необходимости устраивать проверки в модуле проведения. Делать это нужно при записи. Проверка в модуле проведения выполняется КАЖДЫЙ РАЗ. При групповом или программном перепроведении тоже. Хотя в этом случае есть ГАРАНТИЯ, что документ не менялся. Проверка происходит в рамках транзакции и все курять, пока она идет.
#37
by Anton R
Внимательнее читать нужно тебе. Объясняю еще раз: когда ты делаешь запрос из модуля проведения, то этому запросу недоступны изменения уже сделанные при проведении. В том числе удаление движений (по галочке, или методом ОчиститьДвижения - неважно). Транзакция то еще не завершена!!!Поэтому:1. Если документ не был проведен, то запрос никаких движений не увидит.2. Если документ перепроводится, то запрос увидит движения документа ДО ПЕРЕПРОВЕДЕНИЯ.Отсюда вывод: запрос использовать нельзя. Можно использовать "Рег.ВыратьДвиженияДокумента" и "Рег.ПолучитьДвижение".
#38
by saper
я не запросом читал а именно "Рег.ВыратьДвиженияДокумента" и "Рег.ПолучитьДвижение"Еще на раз.1. Проводим не проведенный документ2. делаем движения3. читаем движения в конце проведения - пусто нет движенийТеперь проводим документ с пустой таб. частьют.е. документ проведен а движений нет1. делаем движения2. читаем движения. Все ОК
#39
by coloboc
2а что там трудоемкого?КонецЦикла;а работать-то будет насколько быстрее нежели чтение из прегистра. В сотни раз наверное :)
#40
by Parcan
так документ же проводится в транзакции и пока она не завершилась изменения в базе данных отсутствуют, а выборка движений регистров по документам обращается как раз к данным хранящимся сейчас в базе, допустим при тойже поддержке актальности итогов мы берем итоги не прямо из базы а из рассчитанных-расчитываемых в памяти итогов, в бухгалтерии когда мы хотим обращатся к созданным проводкам мы же пишем сначала записатьпроводки так что поведение вполне нормальное.
#41
by Rovan
лично я не вижу особой трудоемкости, у меня и потрудоемкке алгоритмв работали (типа установки период. реквизитов с точностью до секунды из любого документа)
#42
by Anton R
Взял типовую торговлю. В документе "ПоступлениеТМЦ" в модуле проведения добавил 5 строк. Выводит правильный результат и при новом проведении и при перепроведении. Релиз 25.
#43
by saper
Однако в проведенном документе все ОК. Хорошо более трудоемко, чем читать напрямую. Пойдет ?
#44
by Parcan
так в проведенном ты выбираешь старые движения, которые удалятся только по завершении транзакции.
#49
by Джинн
Чушь! Логика не менялась никогда. Транзакция и актуальность временного набора была с начала жизни v7. Точнее Актуальность, вероятно, чуть позже появилась. Вроде в первых релизах не было такого метода. Но могу ошибаться.
#50
by saper
сейчас проверил на 21 тоже работает. А старее у меня нетЛогика не менялась а вот списка исправлений ошибок по релизам тоже нигде не было
#52
by saper
Так что ошибка в одном из 17,19 или 20 релизе. То что она была - гарантированно слишком много проблем это вызвало. Я тестил на проведенных документах. При втором проведении уже все ОК было. И мне долго не могли ошибку показать
#55
by 0xFFFFFF
Результат запроса - это результат записей в базе данных, которые появляются ПОСЛЕ завершения транзакции.А в ВыбратьДвиженияДокумента передается значение типа Документ, который хранится в оперативной памяти.Разницу чуешь?
#56
by 0xFFFFFF
Попробуй для проведенного уже дока в обработке проведения ОчиститьДвижения и выполнить запрос к регистру. По твоей логике в результате искомый документ фигурировать не должен. Но имхается мне, что он там останется.
#58
by saper
Это тоже косяк. Но не поправленный. Иначе этот запрос не захватывал бы новые движения у проведенного документа. Хотя конечно не знаю почему бы не пользоваться выбрать движения получить движения.
#59
by 0xFFFFFF
Открою страшшную тайну. На заре одноэсничества я сделал по простому, по топорному. На кнопки Провести и ОК навесил свои процедуры, которые для уже проведенного дока делают все как обычно, а вот для непроведенного выполняют "Провести" дважды (ну там со всякими транзакциями, исключениями естессна). Сейчас вспоминаю - что не сделал бы тогда для того, чтобы не разбираться 12 часов :)
#61
by Z11
(saper) 17, 19 релиз выбрось. Используй или 25 или 15.(51 ) Твой текст должен выглядеть так КонецЦикла;Надо исходить из постулата :Во время проведения документа его движения, проводки НЕОПРЕДЕЛЕНЫ.В нет постановки задачи. Какой тип измерения ( и структура регистра)непонятен.Вероятность того что регистр не будет закрываться очень большая. Телепаты в отпуске.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- SQL: при выполнении транзакции произошла ошибка...
- Каждое утро "Аварийно завершена работа!"
- Подскажите вид деятельности при открытии ИП для дилера 1с.
- Партии списанных товаров
- свод 104 по мол
- v8: Как программно добавить в справочник Контрагенты, банковский счет?
- переходник с Com на RG45 (витая пара).
- v7: Номер платежно-расчетного документа в сф
- Вопрос: Как программно расширить легенду диаграммы?
- Запрос к шапке документа и его табличной части. Абстрактный пример
- Печать из 1С по командной строке файлов PDF
- Фигурные скобки в периоде запроса.
- Бух.-> ОС-> Откуда загрузить Шифры по ЕНАОФ.
- Удалить строки в открытом документе
- Нужна свежая идея. Пароль на дату запрета редактирования.
- Как выгрузить ТЗ в Табличный документ?
- Обновить ТЗ на форме...
- Где взять каркасную конфигурацию для 1С Специалист?
- Рарус CRM Управление продажами 7.7
- не сохраняются настройки сканера штрих-кода