Почему нельзя во время проведения документа, перепровести автоматом другой док.? #116515


#0 by EvgeniuXP
Почему нельзя во время проведения документа, перепровести автоматом другой документ? (версия 7.7)
#1 by iova
RTFM
#3 by iova
Читайте документацию
#4 by Макс 1С
почему нельзя? можно... только так сказать неявно.... читай поиск
#5 by Alexaha
как понимать "только так сказать неявно"?
#6 by Денис2
это значит, что нельзя открытым текстом сказать док.Провести. Но есть способы сказать это по-другому. Правда, это проведение будет не во время проведения текущего документа, а после завершения оного.
#7 by Мудрила Страшный
Почему после завершения? А через ОткрытьФорму... Ну и там при открытии с определенным параметром провести тот документ
#8 by Макс 1С
точно...ну пока одно действие не закончится, другое тоже не начнется... если уж мы так глубоко копаем... смсыл же в инициировании одного процесса из другого
#9 by Денис2
Дык, по-любому. Пока проводится один документ, второй не проведётся. Поэтому надо после.
#10 by Alexaha
если вызов "неявного" проведения осуществляется в ОбработкеПроведения это считается "во время проведения текущего документа" или после?
#11 by Макс 1С
все равно сначала закончиться проводиться первый док (родитель, если можно так выразится)... а уж потом наследник...
#12 by Денис2
"неявно" он не вызовется по-любому. Надо ставить в очередь :-)
#13 by Alexaha
(8, 12) честно говоря я не заморачивался никогда на эту тему, просто делал это через ОткрытьФорму
#14 by Денис2
код показал бы
#15 by Денис2
код показал бы
#16 by Alexaha
.....КонецПроцедуры
#17 by Мудрила Страшный
Ну дык и я про тоже...
#18 by Alexaha
просто я задумался, насколько корректным будет такой способ проведения "при проведении", если второй док будет опираться на результат проведения первого.....по логике вещей будет не то что ожидается, ведь транзакция первого дока еще не завершена..
#19 by Денис2
Хм, странно... проводится... Правда, движения не проверял...
#20 by Макс 1С
а автор то как обычно пропал..... развод?
#21 by Frog
Есть вот еще предложение http://www.sinor.ru/~my1c/knowhow/post_drd.html
#22 by Макс 1С
проводится проводится... куда же ему дется.... говорю же вариантов несколько... каждый выбирает сам :-)
#23 by Макс 1С
что значит еще одно? ОНО ЖЕ В описано?
#24 by Frog
Я сильно не разглядывал, тогда для закрепления :-)
#25 by Alexaha
движения в порядке, не сомневайся....(всем) с общего позволения продолжу размышлять: учитывая, что при не завершенной транзакции ИБ еще не обновлена, то для корректного проведения второго дока (с использованием движений первого) можно передавать в него эти реультаты, так наверно должно получиться...
#26 by Макс 1С
если тебе надо точно после проведения используй обработкуожидания
#27 by Alexaha
тоже вариант, в принципе, только надо поймать тот момент когда зафиксировалась транзакция первого дока
#28 by Наркотики
to allа зачем могут быть нужны подобные действия?
#29 by Макс 1С
запускай через 2-3 секунды... а вообще зависит от базы..... опять же можно и проверку поставить проведен док или нет бывают моменты, мало ли........
#30 by Alexaha
например, когда есть два связанных документа, при проведении одного должен проводиться и другой
#31 by Alexaha
это то понятно, но! кто знает сколько будет фиксироваться транзакция? сам понимаешь - зависит от дока и базы, а проверка на "проведен" может прокатить только для нового дока а при перепроведении надо цепляться за что то другое
#32 by Morrison
2 можно только лучше этого не делать.
#33 by Макс 1С
ну передавай тогда ТекДок и докДляПроведения....а потом проверяй если ТекДок.Проведен = 0 тогда ждем еще чуть-чуть....а вообще вызывай обработку ожидания передКонецПроцедуры //ОбработкаПроведения2 сек. будет достаточно т.к. все движения сделаны
#34 by vitlick
А пучему нельзя весь цикл проведения скажем "подчиненых документов" реализовать в "родительском"?
#35 by Наркотики
пример, если не трудно, пожалуйста...
#36 by Макс 1С
почему нельзя, можно, об этом и ветка... читай внимательнее хватит тебе, ну хочется челу, пускай делает, я сейчас так тоже не делаю... а раньше приходилось (через обработку ожидания)... мало ли какие ситуации бываютзы. а автор то где? погряс в ЖКК? ;-)
#37 by vitlick
Сори. Но я имел ввиду код проведения "подчиненного" дока реализовать в процедуре проведения "родительского".
#38 by KVIK
Не извращатесь. практически стандартный вариант, автору думаю подойдёт, если он появится :)
#39 by Макс 1С
надо сделать движения двумя разными датами... например.... изменение уже существующего дока в результате введения текущего..... и т.д.
#40 by Drufa
+16 Желательно проверить еще и ПриПовторномОткрытииПотому как док может быть открыт и Процедура ПриОткрытии не сработает. Есть док "распоряжение на выплату", на основании делаем Платежку, и при проведении Выписки должн быть провеен и док "распоряжение на выплату".
#41 by NS
Денис2 - как-то странно...Посты (9,12,19) Ну никак не стыкуются с советами вhttp://forum.mista.ru/topic.php?id=114905&
#42 by Morrison
2 зачем такие сложности? почему бы не воспользоваться ДругойДокумент.Провести?
#43 by Макс 1С
в модуле документа?
#44 by KVIK
А ты попробуй, потом спрашивай ;)
#45 by Alexaha
в обработке проведения????? сразу будет ошибка
#46 by Morrison
проблема в том, что создается транзакция в транзакции, а хорошего в этом ничего нет. делать так не стоит. возможно была допущена ошибка при проектировании системы, раз приходится такие вещи применять. кстати на итс описаны проблемы транзакций, когда я устроился на новое место, в наследство досталась конфигурация, в которой при проведении формировались партии, о чем думал разработчик сего чуда не знаю, но в результате появилась ошибка которую никто в том числе и разработчик объяснить не мог, хотя на итс она описана, а именно, приходные документы тмц начали "цеплять" чужие партии при определенных обстоятельствах, и этом приводило к очень нехорошим последствиям.
#47 by Макс 1С
брррр сегодня же пятница, имей совесть.... ниасилил... ;-)
#48 by Morrison
2 действительно. давно уже такую конструкцию не встречал, действительно решается только через открытьформу.
#49 by NS
Создание партии при проведении ты считаешь ошибкой?
#50 by Макс 1С
что значит давно не встречал в СП же написано..."Замечание:Метод нельзя использовать в теле предопределенной процедуры ОбработкаПроведения."
#51 by Alexaha
стОит или не стОит это уже другой вопрос
#52 by NS
Решается не только через ОткрытьФорму
#53 by Morrison
2 все очень просто, допустим две приходные накладные, первая начинает проводится и создает партии с ид. 1,2,3,4,5, однако транзакция отменяется в результате ошибки который содержит документ. в этот момент проводится вторая накладная, создает партии и конечно же ид. этих партий 1,2,3,4,5, однако когда в первом документе исправляется ошибка и он проводится, он так же ставит своим партиям ид. 1,2,3,4,5.
#54 by Morrison
2 возможно, я не углублялся в этот вопрос :) как еще можно решить эту задачу? или вы имеете ввиду ОбработкаОжидания?
#55 by NS
Теперь уже я ниасилил.Первый документ при ошибке в момент проведения всё-таки создал партии, или нет? Ежели нет, то почему при втором проведении он делает ИД партий 1,2,3,4,5 ?
#56 by Alexaha
есть такая замечательная весчь как проверка статуса возврата, проводить другой док надо только в том случае если статус возврата = 1
#57 by Макс 1С
это не я спрашивал... во вторых как-то непонятно у тебя написано.... не должно так работать... корявый код.... НО в типовой, на сколько я помню,.. партии создаются до проведения.... а при проведении просто заполняются реквизиты
#58 by topasha
А в какой ситуации возникает необходимость операции проведения одного документа из другого? Приведите пример такой хозоперации.
#59 by Макс 1С
см. 39!!!!
#60 by topasha
Это я видел. Но не убедили. Изменения надо регистрировать тогда, когда они получены. Изменение существующего документа- это отдельная операция. Похоже, что просто база криво спроектирована. Или я не прав?
#61 by Morrison
2 не создал, но ссылки на них сохранил. в результате ссылки начинают указывать на партии указанные в другом документе. т.е. при ошибке при проведении надо чистить ссылки реквизита "партия", иначе данный реквизит будет ссылатся на партии чужого документа, проведенного позже.2 ничего не понял, что со статусом возврата?2 я о типовой и не говорил, я привел пример, нужно быть очень осторожным при использовании подобных конструкций.
#62 by Morrison
2 например автоматическая переоценка всех партий на остатке по новому приходу. подходит? :) это лень пользователей или проектировщиков к таким вот вещам приводит.
#63 by Макс 1С
блин ну 1С-же используют не тольок для ведения складского и бух. учета... кто документооборот на ней пишет, кто ЦБ да что угодно на ней можно писать (относительно конечно).... поэтому возможны ситауции..... про ссылки все равно не понял... а по поводу осторожно то тут согласен, хотя когда пишешь программу за деньги, надо быть во всем осторожным, а не только в этом..... поэтому ИМХО - корявый код...
#64 by NS
Так ничего и не понял - понял только одно - очень кривые руки программера, а партии, в проведении создавать - ошибкой не является.
#65 by Tereann
Не совсем прав, ну просто не встречал таких задач, где надо два документа вместе проводить.Только непонятно, зачем именно в момент проведения из ОбработкаПроведения второй документ проводить?Я на кнопку Провести вешал процедуру, которая последовательно проводила 2 или сколько там надо было документов.
#66 by Alexaha
если при проведении дока возникают траблы то хороший тон завершать код проц методом СтатусВозврата, так вот перед тем как инициировать проведение другого дока не мешает проверить Если СтатусВозврата = 1 тогда проводим
#67 by NS
Всё понял...........ВыбратьСтроки;СтатусВозврата;В документе остаются левые ссылки...Это как раз и называется кривые руки.
#68 by Morrison
может быть так будет понятней:есть док1 у котрого есть реквизит партия, типа справочник.партиипри проведении данный документ заполняет данный реквизит только что созданными им же партиями в справочнике "партии". созданные элементы в базе имеют идентификаторы: 1,2,3,4,5 (пусть в документе 5 строк)однако в момент провдеения возникает какая-либо ситуация приводяшая к отмене транзакции, в резултате элементы в справочнике "партии" 1,2,3,4,5 исчезают однако ссылки в документе остаются. пока пользователь устраняет причину по котрой не проводится документ, второй проводит другой документ док2, либо это делает первый просто отложив разбирательство проблемы с док1 на более позднее время, док2 имеет допустим 3 строки, в результате он создаст при проведении партии с идентификаторами 1,2,3 на которые (!) ссылаются три первых строки первого документа.
#69 by Morrison
2 наконец-то смог объяснить :) видимо плохой из меня лектор :) согласен с вами - это кривые руки. однако вы не представляете сколько времени просуществовала данная ошибка и "специалист" совершивший ее просто разводил руками :)
#70 by NS
Да сколько я такого видел...Например у человека стоит в ПриЗаписи записать, а он удивляется почему документ два раза проводится, и доказывает, что это ошибка платформы...а всего лишь - в приоткрытии - ПриЗаписиПерепроводитьНо это не говорит о том, что плохо Записать в ПриЗаписи, или ПриЗаписиПерепроводить...
#71 by Morrison
2 теперь я ничего не понял :) или вы про ситуацию при которой из модуля проведения одного документа вызывается проведение другого документа?2 NS вы так и не рассказали какой способ имели ввиду в , расскажете?
#72 by Morrison
2 я согласен, но мне кажется не совсем правильным, создавать транзакцию в транзакции. как правило действия описаные в совершаются в угоду ленивому пользователю, который в очередной раз нажаловался руководству, в результате таких действий теряется логика бизнес-процедуры и контроль за действиями пользователя, а также, как это ни странно, контроль операции самим пользователем.
#73 by NS
1) Глобальная Обработка Ожидания.2) Процедура ПриЗакрытии3) Проведение и провести для самого документа, в котором сидим из модуля формы.Для случая который я описал -КонецПроцедурыЗаписанный и проведенный документ по#Записать #Провестипроведется есно два раза
#74 by Morrison
2 об этом способе я и подумал в :) про случай я все понял еще в , спасибо :)
#75 by NS
Это три разных способа.
#76 by Morrison
2сопсоб 2: процедура ПриЗакрытии для документа из которого вызываем проведение другого? такой способ не подойдет т.к. ПриЗакрытии будет вызвана раньше нежели чем управление будет передано модулю документа.способ 3: не понял к сожалению, можно подробней?
#77 by Макс 1С
ух и я тогда тоже....только сперва давайте определимся... что надо проводить "грубо говоря" из модуля проведения? или до?... если до... то вопросов не возникает..... а вот если в модуле... т.е. вновь созданный и проведенный документ будет после текущего... тогда:1. вариант... открывать вновь созданный с передачей параметра, в зависимости от параметра вновь созданный проводиться - это уже относиится к модулю формы вновь созданного2. вариант обработка ожидания... в процедуру передаем вновь созданный документ (или список)... через несколько секунд после проведения текущего запускает процедура и проводит переданные её документы....что еще?
#78 by NS
Способ2: Что позже чего будет вызвано? ;-)))     Способ3:
#79 by Morrison
2 я тоже пришел к выводу, что возможны только два варианта. конечно лишь в том случае если необходимо вызвать проведение другого документа именно по окончанию проведения первого, а не в какой либо другой момент.
#80 by Макс 1С
вот можно и так...но тут тот же минус что и моего 2... т.е. при групповом перепроведении этот вообще не отработает а мой может сбойнуть (хотя если это предусмотреть... то прокатит)
#81 by NS
Еще раз - всё-таки в каком порядке будут выполнятся процедуры?
#82 by Morrison
2способ2: а вы что имели ввиду? :))))способ3: запутался. 1) в каком месте это все находится? 2) когда и где формируется список? 3) для чего нужна переменная Док? 4) зачем происходит вызов ПриЗаписии откуда он производится?что-то не складывается разговор :))2 интересно как быстро вы поняли о каком способе идет речь :)
#83 by Morrison
я так полагаю что порядок следующий:1) передача управления в модуль документа в процедуру ОбработкаПроведения2) передача управления из процедуры ОбработкаПроведения в процедуру ОбработкаПроведения модуля другого документа
#84 by NS
Насколько я понимаю - разговор действительно не складывается.Способ2 -При Проведении Документа иЗ его формы - Провести Запускается ДО ПРИЗАКРЫТИИ.Способ3 - процедура ПровестиДокумент - ес-но на кнопке "Провести" в документе.Спис Может формироваться где угодно. Хоть До проведения самого документа, хоть после, хоть в Модуле Документа (Поясняю - у метода провести могут быть параметры, и через них можно передавать что угодно, хотя передать из него список можно как угодно)
#85 by Alexaha
а автора как ветром сдуло, все небось РТФМ читает:))
#86 by Коротков
Интересно, как в случае реализации такого перепроведения отреагирует платформа при восстановлении последовательности, если перепроведем более ранний документ и он будет в этой же последовательности? Вечный цикл? ;))
#87 by NS
Ежу понятно, что проведение подчиненных (связанных, как угодно) документов - в случае пакетного проведения делать не надо... Да и не получится.
#88 by Morrison
2 теперь понятно.
#89 by EvgeniuXP
Сделал... во время проведения открываю форму другого документа, перепровожу его и закрываю его форму, затем текущий проводится...Когда документ уволить нажимают, он должен был поднять приказ о приеме и срок договора (бесрочного=30.12.9999) установить на дату увольнения автоматом, чтобы пользователю не беспокоиться...
#90 by Bolik
Как раз начал писать партионый учет - не подскажешь как тогда создавать партии при прходе товара? Как в типовой ТиС - при вводе новой строки?
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

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