Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как провести документ из модуля проведения другого дока
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
igmig65
Задача: при проведении РН нужно автоматически сформировать, записать и провести другой документ, который изменит остатки, чтоб сама РН их уже увидела. Нужно чтоб он лег на оси времени до самой РН. В обработку проведения вставил вызов процедуры, в которой формируется новый док. Получаю время РН ч-з ПолучитьВремя(...), После записи нового дока УстановитьВремя(...), Потом открываю его ч-з ОткрытьФорму(), и в ПриОткрытии его провожу и закрываю, в отладчике проверяю, все правильно время нового дока меньше РН, но после проведении он записуется всеравно позже РН, да еще несдвигает ТА. Потом, если даже удаляю эти 2 дока, то остатки искажаются. Приходится только в режиме тестирования пересчитывать итоги.
Я с Опер.учетом работал мало, многие вещи может неправильно понимаю, поэтому несудите строго, подскажите, как правильно записать документ до самой РН, чтобы он изменил остатки, и сама РН при проведении уже увидела эти остатки.
MATEVI
Режим проведения в провести() В СП описано.
igmig65
Цитата(MATEVI @ 05.06.12, 15:08) необходимо зарегистрироваться для просмотра ссылки
Режим проведения в провести() В СП описано.

Да читал, ставил все: 0,1,2,3. Все равно немогу его записать до РН, и ТА остается на РН.
MATEVI
3 помогало. Как то натыкался еще что если прописано автовремя() то мжет время не ставиться.
XBrut
можно использовать первый док. просто как источник данных , а все проводки делать во втором smile.gif
igmig65
Что только уже непробовал, и АвтоВремяОтключить() ставил, потом УстановитьВремя(...), в отладчике проверяю сразу ч-з ПолучитьВремя(...) - все правильно, как мне нужно, уже убрал Провести(), просто записую, и всеравно он появляется после РН. Уже незнаю что смотреть.
Буду пытаться записывать из модуля формы, тогда оттуда и Провести() можно, а то Провести() приходится вызывать из самой формы в ПриОткрытии()
XBrut
из модуля формы вроде как можно, только ж при пакетном проведении база будет вести себя по-другому
igmig65
Все, сделал, из модуля формы РН. Если РН новый, тоесть незаписан, то вызываю Док.АвтоВремяТекущее(), записует до РН, если же РН уже записана, то Док.АвтоВремяОтключить(), и Док.УстановитьВремя(....). До метода Док.Записать(). Всем кто отозвался спс.
Mystos
Цитата(XBrut @ 05.06.12, 22:52) необходимо зарегистрироваться для просмотра ссылки
можно использовать первый док. просто как источник данных , а все проводки делать во втором smile.gif

Полностью поддерживаю! Сам бы делал именно так. В противном случае обычно требуется жесткая синхронизация поведения подчиненного документа с основным. Т.е. перепроводить при перепроведении, удалять при удалении и т.п.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.