Как провести документ, если он создается программно

1. alw-1 27.10.11 12:26 Сейчас в теме
Создаю документ програмно, далее проожу:
Док.Записать(РежимЗаписиДокумента.Проведение);
Но такой способ только записывает документ с установкой флага проведено в истину.
А мне нужны движения в рег. накопления. Конечно можно прописать движения по рег. в процедуре программного создания, а нельзя ли как-то проще?
EvgeniyOlxovskiy; +1 Ответить
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. x2z7yy 27.10.11 12:38 Сейчас в теме
(1),

Вообще то должно все проводится нормально. И движения должны делаться.

Если все правильно с формирование движений.
3. alw-1 27.10.11 12:54 Сейчас в теме
(2) x2z7yy,
"Если все правильно с формирование движений" - конфигурация типовая УТ и все движения документа прописаны в модуле док. Есть ли необходимость прописывать движения еще раз в том месте где документ создается програмно?
5. Stalnoff 27.10.11 12:57 Сейчас в теме
(3) alw-1,
При записи документа в режиме проведения, из модуля документа автоматически вызываются необходимые процедуры. Например "ОбработкаПроведения()".
7. alw-1 27.10.11 15:24 Сейчас в теме
(5) Stalnoff,
Спасибо, вы точно объяснили то в чем я сомневался.
4. Stalnoff 27.10.11 12:55 Сейчас в теме
(1) alw-1,
Указанный способ равнозначен проведению из контекстного меню (правой кнопкой мыши на документ в списке - "Провести"). Если при проведении из контекстного меню проблемы с движениями, то нужно править документ.
6. x2z7yy 27.10.11 13:05 Сейчас в теме
(4) Абсолютно прав на счет контекстного меню.
попробуйте поставить точку остановки в обработке проведения документа и посмотреть отрабатывает ли вообще код этой процедуры.
34. Alexey26 2 07.12.15 16:54 Сейчас в теме
(1) alw-1, это совершенно нормально. Перечитал ваше сообщение несколько раз, но так и не смог понять, в чём ваша проблема.
35. x2z7yy 08.12.15 09:07 Сейчас в теме
(34) за 2 года человек скорее всего уже разобрался;)
8. Psylocibine 27.10.11 19:30 Сейчас в теме
Возможно какой то из реквизитов не заполнен?
От этого тоже зависит, какие движения будут сделаны, а какие - нет.
10. alw-1 28.10.11 14:21 Сейчас в теме
(8) Psylocibine,
У меня УТ , если что-то не заполнено то сразу выскакивает ошибка, но ее нет.Просто не двигает регистр и все.(9) PetrPervuy,
Ну я и переписывал. Только ничего на тему запрета проведения.

Кстати, док того же типа созданный вручную регистр двигает. Созданные програмно нет(как через комнду Записать(...), так и при ручном проведении. У меня УТ 10 ,понятно ,что ошибка в какой-то проверке но ответа не нахожу,запускал отладчик но в типовой что то найти не просто. если кто-то сталкиваля с чем-то конкретным, то подскажите.
16. Stalnoff 28.10.11 16:26 Сейчас в теме
(10) alw-1,
Как правило ошибка о незаполненности реквизита только в форме.
При программном создании документа никакие проверки описанные в форме не вызываются.
Отсутствие движений в документе созданном программно похоже на отсутствие информации для этих движений.
При ручном создании, скорее всего, в форме заполняются некоторые реквизиты "по умолчанию", при открытии формы. Когда Вы создаете документ программно, возможно не заполняете какой-то реквизит...
попробуйте такой алгоритм:

Объект = Документы.<НаименованиеДокумента>.СоздатьДокумент();
Форма = Объект.ПолучитьФорму(<"имя формы" из конфигуратора или "ФормаДокумента" если форма не добавлена");
// Здесь заполняете все необходимые реквизиты
Форма.ЗаписатьВФорме(РежимЗаписиДокумента.Проведение);


Этот код равнозначен ручному созданию/проведению.
Либо напишет ошибку какой реквизит не заполнен - тогда исправите первоначальный код,
Либо проведется и создаст проводки - тогда посмотрите под отладчиком - какой реквизит форма заполняет "по умолчанию".
kida1; EvgeniyOlxovskiy; +2 Ответить
9. PetrPervuy 27.10.11 21:03 Сейчас в теме
документ которы проводите переписан программистами?
11. Lokiy 136 28.10.11 15:34 Сейчас в теме
Может быть ВидОперации забыли указать документу, вот и не двигает :)
12. N!ghtmare 28.10.11 15:45 Сейчас в теме
1.Заверни вызов программного проведения документа
в попытку исключение
Примерно так
Попытка
Док.Записать(РежимЗаписиДокумента.Проведение);
Исключение
Сообщить(""+ОписаниеОшибки());
КОнецПопытки;

И посмотреть что будет выдано в окне сообщений.
2. Поставить точку останова внутри процедуры ОбработкаПроведения модуля документа и по шагам пройти посмотреть где происходит формирование движений, а где может быть при невыполнении каких либо условий они стираются без уведомления пользователя, что-то пошло не так.
Удачи в расследовании.
NicolasCage; EvgeniyOlxovskiy; +2 Ответить
13. Trise 139 28.10.11 16:00 Сейчас в теме
Попробуй следующим образом:
Всесто записи документа получить его форму и открыть сам документ и провести его в ручную.
Далее проверь есть ли движения, возможно ошибка как раз таки не в коде проведения, а где-то еще например при его создании.
EvgeniyOlxovskiy; +1 Ответить
14. nenashev77 28.10.11 16:22 Сейчас в теме
А что собственно за документ? Если в конфигураторе у документа не указано свойство проведение как разрешить, то врятли он будет проводится по коду Док.Записать(РежимЗаписиДокумента.Проведение). Точнее точно не будет.
EvgeniyOlxovskiy; +1 Ответить
15. palm1c 28.10.11 16:24 Сейчас в теме
Движения должны тоже создаваться. Что-то не так делаете.
17. u_prog 26.11.13 18:27 Сейчас в теме
Столкнулся с подобной проблемой. В подписке на событие проведение одного документа нужно создать и провести другой. Документ создается и записывается с признаком Проведен, но проводок нет. Самое интересное - вызываю эту же процедуру из внешней обработки - все проводки формируются. Получается нельзя при проведении одного документа проводить другой документ?
18. mrmasson 57 27.11.13 07:25 Сейчас в теме
(17) u_prog, можно проводить. у меня такая конструкция нормально работает
19. u_prog 27.11.13 09:58 Сейчас в теме
(18) mrmasson, попробовал код создания и проведения другого документа написать непосредственно в обработке проведения первого - та же проблема. Подскажите, что не так я делаю.
20. mrmasson 57 27.11.13 14:38 Сейчас в теме
(17) u_prog,(19) u_prog, Привожу отрывок из кода процедуры подписки на событие ОбработкаПроведения первого документа. ДокСсылка и ДокОб соответственно ссылка и объект второго документа
///////сначала идут определенные действия по проверке Источника, т.е. первого документа, 
                   ............
                //тут начались действия со вторым документом
                Если Не ДокСсылка.Проведен Тогда
		     Попытка
		       ДокОб.Записать(РежимЗаписиДокумента.Проведение);
	             Исключение
		        Сообщить(ОписаниеОшибки());
		    КонецПопытки;	
                КонецЕсли
Показать
21. besometr 28.11.13 09:23 Сейчас в теме
А может стоит еще и режим проведения документа указать? Еще лучше, если для данного типа документов разрешено оперативное проведение.

Попытка
ДокШтраф.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Оперативный);
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
22. SaschaL 28.11.13 09:51 Сейчас в теме
Нужно просто установить программно признак проведения. У документа есть такой реквизит, вродев большинстве случаев прокатывало
24. kot26rus 28.11.13 14:30 Сейчас в теме
(22) SaschaL, неправильно. Не будет проводок точно.
25. u_prog 29.11.13 15:45 Сейчас в теме
(24) kotloff, а что не так, почему не будет?
26. kot26rus 30.11.13 12:53 Сейчас в теме
(25) u_prog, потому что для проведения документа недостаточно поставить реквизит "Проведен" в значение "Истина", нужно выполнить ряд процедур. Зелененький флажочек вы увидите, а проводок не будет.
EvgeniyOlxovskiy; +1 Ответить
23. u_prog 28.11.13 09:54 Сейчас в теме
У меня конфигурация УПП 1.3 для Украины. Мне необходимо при создании и проведении документа БюджетнаяОперация создавать и проводить док. КонтролируемыеЗначенияПоБюджетам. Вот привожу весь код
КонтрЗнач = Документы.КонтролируемыеЗначенияПоБюджетам.СоздатьДокумент();
	
	КонтрЗнач.Сценарий = ПараметрыСеанса.СтруктураРесурсовДополнительныхПараметров.КонтрольБюджетов_СценарийФакт;
	КонтрЗнач.ВидКонтролируемыхЗначений = Перечисления.ВидыКонтролируемогоЗначенияБюджета.Ограничивающее;
	КонтрЗнач.ИспользованиеКонтролируемыхЗначений = Перечисления.ИспользованиеКонтролируемыхЗначенийБюджетов.ПриИсполнении;
	КонтрЗнач.ВидОграниченияОборотов = Перечисления.ВидыОграниченийОборотовБюджета.КонтролирующийСценарийВыборочно;
	КонтрЗнач.КонтролирующийСценарий = Источник.Сценарий;
	КонтрЗнач.Состояние = Источник.Состояние;
	КонтрЗнач.Ответственный = Источник.Ответственный;
	КонтрЗнач.Дата = ТекущаяДата();
	//конец заполения шапки документа
	
	//заполнение табличной части документа
	КонтрЗнач.ГраницыЗначений.Очистить();
	ТабЧасть = КонтрЗнач.ГраницыЗначений.Добавить();
	ТабЧасть.Период = Источник.ПериодПланирования;
	ТабЧасть.ВидОтклоненияКонтролируемыхЗначений = Перечисления.ВидыОтклоненийКонтролируемыхЗначенийБюджетов.Относительное;
	ТабЧасть.СтатьяОборотов = Источник.СтатьяОборотов;
	ТабЧасть.ЦФО = Источник.ЦФО;
	//конец заполениея табличной части документа
	КонтрЗнач.Записать(РежимЗаписиДокумента.Проведение);
Показать


пробовал играться с режимом проведения. пробовал переносить код из подписки на событие непосредственно в модуль документа, в обработчик проведения. уже незнаю что и пробовать
27. umberto_nobile 5 03.12.13 15:46 Сейчас в теме
Если не заполнен какой то реквизит при программном создании документа, тогда я бы сделал Записать(РежимЗаписиДокумента.Запись); а потом бы открыл и попытался провести документ вручную, что бы сработали все проверки и мне указали на все ошибки...
28. u_prog 03.12.13 15:51 Сейчас в теме
(27) uriah_heep, если созданный указанным способом документ провести вручную - он отлично проводится без ошибок и формирует проводки
29. umberto_nobile 5 03.12.13 16:25 Сейчас в теме
ммм... а программное создание и проведение "нашего" документа происходит внутри процедуры "Обработка проведения" другого документа. Насколько я знаю, пока работает процедура "Обработка проведения" работает и транзакция. и ни какая другая транзакция не может наступить до тех пор пока не закончится эта.
30. u_prog 03.12.13 16:31 Сейчас в теме
(29) uriah_heep, вполне может быть. но как тогда выкрутиться? нужно создать и провести новый док2 именно при проведении док1. если док1 просто записали - создавать док2 не нужно.
32. m-serg74 46 03.12.13 17:36 Сейчас в теме
(29) uriah_heep,
пока работает процедура "Обработка проведения" работает и транзакция. и ни какая другая транзакция не может наступить до тех пор пока не закончится эта


с чего бы это вдруг?
31. umberto_nobile 5 03.12.13 16:53 Сейчас в теме
ммм... ну, тут только одно. при нажатии кнопки "ОК" не должна срабатывать процедура ОбработкаПроведения, а должна открываться обработка в которой создаются, записываются оба документа а потом последовательно проводятся...
но что в таком случае делать при отмене проведения документа.... я затрудняюсь ответить. потому что при срабатывании процедуры "ОбработкаУдаленияПроведения" скорее всего получится обратная картина - документ не удалится. но можно попробовать запустить процедуру удаления в обработчике "ПередУдалением"
33. umberto_nobile 5 03.12.13 17:48 Сейчас в теме
а можно возразить аргументированно? мы здесь не понтами кидаемся, а пытаемся друг другу помочь.
36. прантуш 16.02.16 17:12 Сейчас в теме
Так для движений есть менеджерДвижений. от этого и нада полясать: Регистр...создать менеджерДвижения... записатьДвижения...
37. soldatkin 11 19.05.23 12:13 Сейчас в теме
Установить режим проведения в форме
Записать(Новый Структура("РежимЗаписи", РежимЗаписиДокумента.Проведение));
38. user1315490 23.07.23 19:20 Сейчас в теме
(37) Спасибо, добрый человек! Очень помогло
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот