Имя: Пароль:
1C
1С v8
Не записывается документ в модуле объекта
0 Demanufactyre
 
16.01.23
08:57
В Модуле объекта документа "Реализации"

Процедура ОбработкаПроведения (Отказ, РежимПроведения)
  Док = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
  //Документ заполняется значениями...
  Док.Записать();
КонецПроцедуры;

И далее ничего не происходит. Делал через "Попытка", тоже нет никаких ошибок. Но в списках поступлений нет документа.
Если ОткрытьФорму() и там нажать провести, то все замечательно проводится без ошибок.
Как программно записать документ в модуле объекта?
1 Ryzeman
 
16.01.23
09:00
(0) Ну, как минимум ты его и не проводишь.

Синтаксис:
Записать(<РежимЗаписи>, <РежимПроведения>)
Параметры:
<РежимЗаписи> (необязательный)
Тип: РежимЗаписиДокумента.
Позволяет выбрать один из возможных режимов записи.
Значение по умолчанию: Запись.
<РежимПроведения> (необязательный)
Тип: РежимПроведенияДокумента.
Позволяет выбрать один из возможных режимов проведения.
Значение по умолчанию: Неоперативный.

А так - отладку, точку останова и смотреть что там у тебя происходит.
2 Demanufactyre
 
16.01.23
09:03
(1) Да. Мне надо его записать. Режимы записи не помогают. Пробовал провести, записать. В отладке "Док - Поступление номер такой то, дата такая то - тип Документы.Поступление"
3 Ryzeman
 
16.01.23
09:07
(2) То есть ты встаёшь на строчку

 Док.Записать();

у тебя там заполненный новый объект, ты нажимаешь F11 и у тебя не ругается но документ не записывается?) Не верю.
Либо у тебя всё происходит в одной транзакции и ты её где-то отменяешь.
4 shuhard
 
16.01.23
09:19
(0)[Но в списках поступлений нет документа. ]
если это УТ11 или ERP, то так и должно быть
посмотри в журнале и в консоле запросов
5 Demanufactyre
 
16.01.23
09:21
6 Demanufactyre
 
16.01.23
09:22
(4) БП КОРП 3.0
7 Demanufactyre
 
16.01.23
09:33
8 glover
 
16.01.23
09:34
(0) В списке поступлений нажимали "Обновить"?
9 Ryzeman
 
16.01.23
09:36
(7) Есть консоль запросов?
Выполни простенький запрос в этой базе

ВЫБРАТЬ
Док.Ссылка
ИЗ
Документ.ПоступлениеТоваровУслуг КАК Док
Где
Док.Номер = "КУ00-КУ0009"
10 Обработка
 
16.01.23
09:39
В ОбработкаПроведения  проводить другой док не кошерно.
Подумай как можно обойтись бех этого.
Есть зе перед записью При записи, ну там события после итп.
11 Demanufactyre
 
16.01.23
09:42
(9) Делал. Документа нет. Если несколько раз пытаться проводить то бесконечно назначается номер 009. Если вручную добавить документ 009, то начинает бесконечно назначаться номер 010 и т.д.
12 Demanufactyre
 
16.01.23
09:43
(10) Спасибо. Скорее всего Вы правы. Пойду в "ПриЗаписи". Вопрос закрыт!
13 Ryzeman
 
16.01.23
09:44
(11) Но реализация проводится и ОтменитьТранзакцию() нигде в коде нет?
14 Demanufactyre
 
16.01.23
09:57
(13) Реализация не проводится потому, что там не хватает товара на складе.
15 Dmitrii
 
гуру
16.01.23
10:03
(14) >> Реализация не проводится потому, что там не хватает товара на складе.

Ну вот и ответ.
Запись и проведение производится в одной транзакции.
Если проведение не происходит (из-за нехватки товара, по ошибке или ещё по какой-либо причине), то все транзакции, которые выполнялись внутри (в том числе запись твоего поступления) тоже откатываются.
16 KJlag
 
16.01.23
10:04
а что журнал регистрации говорит?
он видит что вы создали? там пройти по ссылке, или он показывает, что транзакция откатилась?
17 Обработка
 
16.01.23
10:06
(0) Распечатай и повесь рядом с монитором.

https://infostart.ru/1c/articles/1098803/
18 Dmitrii
 
гуру
16.01.23
10:08
+ к (15) В зависимости от сути того, что ты пытаешься делать, тебе следует либо оставить как есть. В таком случае поступление будет записываться при успешном проведении реализации.
Либо создавать и записывать поступление перед записью реализации, до начала транзакции. Тогда поступление будет записываться вне зависимости от того провелась в конечном счёте реализация или нет.
А вообще прав (10) - записывать другие объекты внутри транзакции проведения - не кошерно. Лучше подумать о каком-то ином подходе к решению задачи.
19 Demanufactyre
 
16.01.23
10:12
(18) Спасибо. Уже сделал в "ПриЗаписи".
20 Demanufactyre
 
16.01.23
10:12
(17) Спасибо)
21 Михаил Козлов
 
16.01.23
14:00
(19) Напрасно.
22 Обработка
 
16.01.23
15:05
(21) Понимаю куда клонишь. Обоснуй все-таки.
У меня было так: Создается сотр при проведении документа ТД (прием) а в доке физлицо только было.
Перепел на Передзаписью(). Появилось такая трабла. Иногда Сотрудник стал битой ссылкой (все из-за  блокировок и транзакции).
В итоге я перепроверял и записывал повторно.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший