Имя: Пароль:
1C
1С v8
Альтернативы синхронному проведению документов есть?
,
0 GAVe
 
29.08.11
15:06
В случае наличия двух проведённых документов (имеется ссылка в реквизитах одного на другого) нужно делать движения в регистре накопления по обоим документам с указанием автора проведения. Так как эти документе имеют силу только в паре.
 Пробовал разные методы, сложность заключается в следующем: при обработке отмены проведения из других документов этот документ отмечен как проведённый, что мешает перепроведению связанного документа.
 У меня есть рабочий метод решения: ввести дополнительный документ, который будет автоматически проводиться при наличии проведённых двух документов. Что будет прописано в обработчике проведения одного из них, а у второго будет прописано перепроведение проводящего дополнительный документ. Этот дополнительный документ будет распроводиться при отмене проведения любого из них. Но я считаю этот корявым и хочу рассмотреть альтернативные методы решения этой задачи.
1 Defender aka LINN
 
29.08.11
15:12
Задача сам корявая.
2 Defender aka LINN
 
29.08.11
15:13
*сама
3 Reaper_1c
 
29.08.11
15:13
"Документы имеют силу только в паре" - это один документ в терминах 1С
4 GAVe
 
29.08.11
15:15
(1) Какая есть...
(3) Только в контексте данной задачи "имеют силу только в паре", а в другом контексте они очень даже два документа. Проблема в учёте их парой.
5 MRAK
 
29.08.11
15:17
(0) а почему именно такое решение?
6 GAVe
 
29.08.11
15:20
(5) Какое такое?
  Что два документа имеют силу только вместе - это решение экономически обосновано, так как за пару получаем денежку.
  Как я решил, это так получилось. Но я думаю можно красивее написать.
7 Живой Ископаемый
 
29.08.11
15:23
"Пробовал разные методы, сложность заключается в следующем: при обработке отмены проведения из других документов этот документ отмечен как проведённый, что мешает перепроведению связанного документа. " - не понял... почему так?
8 unregistered
 
29.08.11
15:26
Задача может и вполне актуальная, но только непонятно почему записи в этот волшебный регистр должны делаться обоими документами?

ИМХО, тут кривизна задумки регистра.
9 GAVe
 
29.08.11
15:31
(7) По факту тестирования.
В Первом документе Договор1:
Процедура ОбработкаУдаленияПроведения(Отказ)
//...
Договор2.Записать(РежимЗаписиДокумента.Проведение);
//...
КонецПроцедуры;

Во втором документе Договор2:
Процедура ОбработкаПроведения(Отказ)
//...
Если (Договор1.Проведен) Тогда //Точка останова вычиляем выражение Договор1.Проведен, получаем истина.
 //Создать движения по регистру
Иначе
 /Отменить движения по регистру
КонецЕсли;
//...
КонецПроцедуры;
10 GAVe
 
29.08.11
15:33
(8) Это всё равно: хоть одним, хоть двумя, хоть новым, но
главное что только при проведении двух указанных (оба документа проведены - есть движение, один без проведения - нет движения).
Пример правильного регистра, пожалуйста, в студию...
11 Reaper_1c
 
29.08.11
15:37
(4) А это 3 документа.
12 unregistered
 
29.08.11
15:40
(10) Проводить один документ при проведении другого неправильно.

"оба документа проведены - есть движение, один без проведения - нет движения"

Обычное обусловленное проведение. Какой пример ты хочешь? При проведении документа проверяются нужные условия (наличие остатка товара, наличие других документов, проведение этих документов и т.д. и т.п. всё что душе угодно). Если все условия соблюдаются - проводимся, если нет - Отказ = Истина.

Только вот нафига проверив условия лезть в другие документы и там что-то менять?...
13 GAVe
 
29.08.11
15:45
(11) Отлично! Так я и решил когда начинал делать, но третий документ получается виртуальный без физического носителя или любой иной сущности в реальном мире. Меня это смущает. А тебя?
14 GAVe
 
29.08.11
15:50
(12) В примере кода я написал проблему создания записей в регистре при проведении этих двух документов без использования третьего, который может создавать движения.
 Для каждого из документов есть куча других условий по проведению. Они применимы к каждому по отдельности. А здесь условия таковы, что каждый из документов должен проводиться отдельно, а при проведении обоих - создаются дополнительные движения в общем для них регистре.
15 IamAlexy
 
29.08.11
15:50
(0) кури пример из типовой "Реализация  и СФ"
16 unregistered
 
29.08.11
15:54
(14) И что? Я не вижу проблемы.

Всё равно один из них будет проводиться позже другого. таким образом при проведении первого твоё условие не выполниться и записи в этот твой общий регистр не будет. А при проведении второго (более позднего) твоё условие выполниться и можно будет делать запись в регистр. Остаётся вопрос: какого хрена нам надо лезть и править движения первого документа? По-моему ответ очевиден: криворукость автора регистра.

Или описывай конкретнее задачу, а не общими словами.
17 GAVe
 
29.08.11
15:57
(16) Правильно написал, но проблема появляется при отмене проведения первого из этих документов: движения в регистре должны быть отменены. Как этого добиться?
18 unregistered
 
29.08.11
16:03
(17) Фига ты задачи ставишь: заглядывать в будущее?

Где ты видел, чтобы при отмене проведения документа "Поступление" одновременно отменялось бы проведение всех документов "Реализация", где встречается товар, который был оприходован этим Поступлением?
19 Живой Ископаемый
 
29.08.11
16:05
2(18) ну... я так понял что он как раз не хочет отменять проведение, а только отменить движения по одному из регистров, но сам документ оставить проведенным - разве нет? Потому что я точно делал что при отмене одного отменялся и другой - и  все выходило...
20 GAVe
 
29.08.11
16:09
(18),(19) Второй документ действительно остаётся проведённым, а движения должны уйти. Я сделал, что при отмене проведения одного из двух отменяется проведения третьего, который и делает движения по нужному регистру. Всё работает, но меня коробит от лишнего документа.
21 Живой Ископаемый
 
29.08.11
16:12
2(20) тогда при отмене проведения первого документа, найди по ссылкам второй документ, создай наборЗаписей нужного тебе регистра, установи отбор по регистраторы - укажи в его качестве второй документ и скажи НаборЗаписей.Записать().
разве движения не уйдут?
22 GAVe
 
29.08.11
16:15
(21) Сейчас испытаю.
23 unregistered
 
29.08.11
16:15
(19) >> не хочет отменять проведение

Ну я не точно выразился. Я имел ввиду в (18) отмену проведения только по определенным товарам.

(21) +1 Как вариант.
24 unregistered
 
29.08.11
16:25
Кстати почему нельзя сделать одним документом движение в приход, а другим в расход. Тогда получится, что все условия выполняются только при нулевых остатках, а при отрицательных или положительных - какое-то из условий не выполнено. Причем на любой момент времени это можно проверить.
25 Reaper_1c
 
29.08.11
16:27
(13) Нет. Потому что есть два автономных документа, а есть третий для описания твоего "имеют силу только в паре".
26 GAVe
 
29.08.11
19:55
(24) Очень соблазнительное предложение. У нас есть варианты реализации такого решения. Правда остановила одна наша особенность: не все документы в парах будут проведены, и, соответственно, нужно будет выводить регистр в ноль искусственными методами.
27 vs84
 
29.08.11
22:06
Нужно больше документов! Еще!
28 Лефмихалыч
 
29.08.11
22:22
(0) гениально! Два документа не проводятся, по этому нам необходим третий.
Вот это вот: "при обработке отмены проведения из других документов этот документ отмечен как проведённый, что мешает перепроведению связанного документа" - криво поставленная кривая задача и убогое криворукое решение.

Посоветовать что-либо толковое в этом случае не возможно, поскольку кривую задачу решать смысла нет вообще ни какого. Давай детали, будем подумать:
1. Что это за "документе"?
2. Почему "эти документе имеют силу только в паре"
3. Что за движения, почему и зачем нужны - "нужно делать движения в регистре накопления по обоим документам с указанием автора проведения"
29 Сияющий Асинхраль
 
29.08.11
22:55
А не проще сделать один документ с разными типами операций, чем развлекатьсю с тем гемороем, который изложен в (0)
30 Лефмихалыч
 
29.08.11
22:59
(29) как?! и отказаться от третьего документа?!!111одинодин
еретик...
31 Doomer
 
29.08.11
23:05
(0)Задачу с начала расскажи?
32 Сияющий Асинхраль
 
29.08.11
23:10
(30) третий ладно, так ведь и от второго - это вообще ни в какие ворота :-)
33 vs84
 
29.08.11
23:31
Странные вы ребята... Если есть возможность заклацать три документа - нужно ей пользоваться! Вот выйдут два из строя, а третий будет работать. То то. Нужно как в космолетах - все системы дважды страховать. Надежность...
34 Doomer
 
29.08.11
23:34
+31 100% что задача поставлена не правильно.
35 vde69
 
30.08.11
00:08
(0) делается это одним документом который делает ВСЕ движения и дополнительным (на основании) без проведения а с неким реквизитом (наподобии как раньше было накладная+СФ)

или вариант 2 - это БП в котором реализованы все возмодные варианты
36 GAVe
 
30.08.11
11:12
(28) Отличные вопросы!
1. "документе" есть "документы" с опечаткой.
2. В паре потому, что в паре мы имеем с них прибыль.
3. Движения нужны для расчёта премии за проведение этих документов так как документы может быть проведёны разными авторами проведения,
при этом, по времени эти документы могут быть разделены двумя годами и окончательный рассчёт премии сейчас (за пол года существования этого начисления) занимает около часа. Поэтому нужна таблица остатков для быстрого начисления премии.
37 Scooter
 
30.08.11
11:35
(36)"криво поставленная кривая задача и убогое криворукое решение"

сорри но скорее всего факт

ЗЫЖ опиши задачу поможем тебе с решением
38 GAVe
 
30.08.11
11:49
Полная задача с самого начала.
 Существует два документа.
1. Вводятся территориально разделённо разными операторами.
2. Далее обрабатываются отделом рисков.
3. Далее вводятся дополнительные данные, и эти документы проводятся тоже разными операторами.
4.0. Документы уходят в другие отделения и, в итоге, архив.

4.1. Нам остаётся начислить денежку за каждый проведённый документ по разным тарифам на тип документа.
 Обязательное условие начисления денежек каждому автору проведения: у нас есть два проведённых документа.
 Дополнительное условие: начисление проводится в течении 5 минут. (Сейчас ~1 часа)
39 GAVe
 
30.08.11
12:19
Хочу реализовать следующую схему на 3 документа:
Договор1   Договор2   ДеньгиПридут Движения
Проведён   Проведён   Проведён     есть
Непроведён Проведён   Непроведён   отсутствуют
Проведён   Непроведён Непроведён   отсутствуют
Непроведён Непроведён Непроведён   отсутствуют

Измерения регистра АвторПроведения
Ресурсы Договоров1 Договоров2

В ноль выводится документом НачислениеПремии, вводимом в конце месяца или при увольнении.
40 Scooter
 
30.08.11
12:27
(38)проведение своих двух доков не трогай
создай док "Начисление премии", заполняй каждый месяц на основе этих двух, если будут перерасчеты юзай рег расчета