Имя: Пароль:
1C
1С v8
1С 8.3 Использование результата проведения документа при его проведении
,
0 Sasha_1CK
 
05.02.15
14:44
Раньше в 7.7 была команда "Операция.ЗаписатьПроводки()" и после нее в модуле проведения можно было снова обращаться к БухИтогам с учетом уже сформированных проводок.

В 8.3 есть аналог? Просто судя по модулю регламентных документов - 1С расчитывает все движения с учетом самих движений и потом формирует двжиения целиком за 1 проход без промежуточных сохранений.
1 kosts
 
05.02.15
14:45
(0) Тебе показалось. Там есть промежуточное сохранение.
2 Sasha_1CK
 
05.02.15
14:57
(1) Возможно
И как его выполнить?
3 kosts
 
05.02.15
15:10
При проведении просто записать (в середине проведения имеется ввиду).
4 kosts
 
05.02.15
15:11
(3) По моему так делается контроль остатков в последних версиях. сперва запись, потом контроль, если мало, то откат транзакции.
По крайней мере так заявляли делать.
5 Sasha_1CK
 
05.02.15
15:44
(4)  спс попробую
6 Sasha_1CK
 
18.02.15
10:57
Апну. Че то не взлетает.
7 Demetres
 
18.02.15
11:05
А что в событии ПриЗаписи не получается?
8 Sasha_1CK
 
18.02.15
11:07
надо сначала оприходовать ТМЦ.
Записать операцию, затем списать ТМЦ, с учетом оприходованных этим же документом
9 Demetres
 
18.02.15
11:11
(8) И какие проблемы кодом это сделать в событии ПриЗаписи, если честно пока не понимаю.
10 Sasha_1CK
 
18.02.15
11:20
ну выполняется процедура ОбработкаПроведения.
В документе ОтчетПроизводстваЗаСмену.
Сначала приходуется ПФ и ГП 21/40 и 43/40.

Затем выполняется списание Сырья и ПФ  проводками 20/10 и 20/21.
В модуле проведения это выполняется двумя последовательными процедурами.

УчетПроизводства.СформироватьДвиженияПлановаяСтоимостьВыпущеннойПродукции()

Затем выполняется  списание
УчетТоваров.СформироватьДвиженияСписаниеТоваров()

Соответственно то что выпустилось 21/40 и должно быть сразу списано дальше 20/21 списывается без суммы. потому что весь набор движений формируется целиком и потом записывается.

Я как бы вставил между выпуском и списанием команду Двжиения.Записать();
Но реакции нет.

Но тут есть еще один скользкий момент - списание остатков выполняется на момент времени равный моменту времени документа. - включены ли в этот момент времени сами движения документа не ясно.
А то может проводки сохранились, но на момент времени не учитываются и я не туда смотрю.
11 Demetres
 
18.02.15
11:30
Вот это почитайте, так вам будет легче допилить свой алгоритм, там все просто и понятно написано:
http://1c.chistov.pro/2010/06/1-82.html
12 Demetres
 
18.02.15
11:37
13 Sasha_1CK
 
18.02.15
11:39
(11)  Спасибо.
Все таки промежуточное сохранение осуществляется командой Движения.Записать(); или Движения.Хозрасчетный.Записать();

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

МоментВремени = Новый Граница(Новый МоментВремени(Реквизиты.Период, Реквизиты.Регистратор), ВидГраницы.Включая);

Остатки считаются с проводками документа.

Есть у меня определенные сомнения как это будет работать в случае если много документов запихают в 23.59.59.
Но поскольку предполагается один сводный документ за месяц - то наверное и не стоит заморачиваться
14 Sasha_1CK
 
18.02.15
11:42
(12)  Да именно так - автор тоже точку итогов считает через границу.

жаль что в синтакс помощнике про  МоментВремени не указано, что он считается на начало документа.

Большое спасибо за помощь
15 Demetres
 
18.02.15
11:44
:)
16 Dmitrii
 
гуру
18.02.15
11:55
(14) > в синтакс помощнике про  МоментВремени не указано, что он считается на начало документа.

Всё там написано.
Читать надо не в описание МоментВремени, а в описании того как работает виртуальная таблица Остатки регистров.
Остатки получаются всегда на момент ДО (или ПЕРЕД) тем значением, которое указано в качестве параметра "Период" виртуальной таблицы. Если только в качестве параметра "Период" не передать Границу с ВидГраницы.Включая.
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой