|
Как дозаписать реквизит документа после его проведения? | ☑ | ||
---|---|---|---|---|
0
Prog111
20.04.16
✎
11:57
|
Нужно после проведения документа реализации (после того, как сформируются его движения), на основании этих движений дозаписать один из реквизитов документа. Как методически правильно это сделать? Конфигурация УТ 10.3
|
|||
1
aleks_default
20.04.16
✎
11:58
|
ПослеЗаписи()
|
|||
2
Господин ПЖ
20.04.16
✎
11:58
|
(1) это событие есть только в форме
|
|||
3
Fragster
гуру
20.04.16
✎
11:59
|
чтобы все было правильно - надо писать в РС
|
|||
4
1Сергей
20.04.16
✎
12:02
|
методически правильно высчитать этот реквизит при формировании движений и записать его
|
|||
5
Prog111
20.04.16
✎
12:04
|
В какой момент работает подписка на событие с событием "ОбработкаПроведения"? Возможно ли использование подписки на событие для такого случая?
|
|||
6
DomovoiVShoke
20.04.16
✎
12:05
|
(0)В подписке лучше всего с учетом (3). Но еще лучше вообще никогда так не делать.
|
|||
7
PR пять
20.04.16
✎
12:06
|
(5) Будет цикл
|
|||
8
Prog111
20.04.16
✎
12:06
|
(4) Там достаточно сложный подсчёт по себестоимости, лучше считывать уже готовые результаты проведения.
|
|||
9
Fragster
гуру
20.04.16
✎
12:06
|
||||
10
PR пять
20.04.16
✎
12:06
|
(0) А что за задача-то?
|
|||
11
Sabbath
20.04.16
✎
12:07
|
(0) По мне так слегка странная задача. Я так понял, реквизит не типовой. Можно было сделать доп. свойство или РС, где хранить это значение, а писать туда подпиской на события
|
|||
12
Prog111
20.04.16
✎
12:09
|
(10) Сумма вознаграждения менеджера, зависящее от прибыли документа. Да, реквизит нетиповой.
|
|||
13
Sabbath
20.04.16
✎
12:11
|
(12) А зачем тебе это в документе хранить? Сумма вознаграждения, наверно, нужна в какой-то обработке или отчете раз в месяц. Считай ее там, а не в документе.
Всю задачу не знаю, но выглядит так. |
|||
14
DomovoiVShoke
20.04.16
✎
12:12
|
(12)В подписке и в отдельный регистр записывать.
|
|||
15
PR пять
20.04.16
✎
12:13
|
(12) Пипец. Такие вещи в регистры пишутся. Накопления.
|
|||
16
lxndr
20.04.16
✎
12:15
|
(0) >> методически правильно
никак. Сумма вознаграждения менеджера зависит от марьванны, которая вколотит документы до обеда или после обеда? |
|||
17
Prog111
20.04.16
✎
12:16
|
(16) А какая разница - до обеда или после обеда?)
|
|||
18
lxndr
20.04.16
✎
12:17
|
(17) потому что менеджер торгует в обед
|
|||
19
Prog111
20.04.16
✎
12:20
|
Хотелось бы делать это непосредственно в документе ещё и потому, чтобы была возможность вручную менять эту сумму. То есть провели документ - сумма автоматически просчиталась и записалась в реквизит, отображаемый на форме. При необходимости руководитель менеджеров может отредактировать эту сумму и записать документ заново.
|
|||
20
Prog111
20.04.16
✎
12:21
|
(18) И? Как это повлияет на документ?
|
|||
21
PR пять
20.04.16
✎
12:24
|
(19) Ну так меняй через форму документа запись в регистре
|
|||
22
PR пять
20.04.16
✎
12:25
|
+(21) В регистре сведений, на основании чего уже делается запись в регистр накопления
|
|||
23
DomovoiVShoke
20.04.16
✎
12:28
|
(19)Привыкайте документы проводить только оперативно, соответственно изменять проведенные нельзя.
Вообще какая схема подсчета вознаграждения? Может оно должно считаться сразу при наборе ТЧ? И менять тогда в документе до проведения. |
|||
24
aleks_default
20.04.16
✎
12:30
|
"При необходимости руководитель менеджеров может отредактировать эту сумму и записать документ заново."
потом руководитель записывает проведенный документ - движения рассчитываются заново - сумма опять становится прежней. |
|||
25
Prog111
20.04.16
✎
12:30
|
(23) Грубо говоря, процент менеджера, умноженный на разницу между суммой продажи и себестоимостью товаров по документу.
|
|||
26
AneJIbcuH
20.04.16
✎
12:30
|
(24) Только хотел сказать :))
|
|||
27
varyag
20.04.16
✎
12:31
|
если не париться, то ОбменДанными = Истина ))) но это не правильно
|
|||
28
Prog111
20.04.16
✎
12:31
|
(24) Ну здесь уже галочка влияет на то, рассчитывать ли сумму из движений документа или брать уже вручную установленную сумму.
|
|||
29
AneJIbcuH
20.04.16
✎
12:31
|
(0) Подход крайне не верный, а почему уже всё сказали.
|
|||
30
DomovoiVShoke
20.04.16
✎
12:33
|
(25)Это стандартная схема, считается сразу до проведения документа и меняется руководителем до проведения.
|
|||
31
Prog111
20.04.16
✎
12:33
|
(22) Зачем 2 регистра использовать? По идее, если использовать внешний регистр - то достаточно будет РС или РН, чтобы записать и считыть в дальнейшем всю необходимую информацию.
|
|||
32
gae
20.04.16
✎
12:34
|
Надо сделать отдельный документ, который на основе первички и её движений соберет все за период и посчитает и запишет себе в ТЧ эти суммы, ну и если надо в регистр какой-нибудь.
В этом же документе можно и поменять результаты расчета вручную. Если вдруг себестоимость поплывет, это же по всем документам пересчет надо будет делать, а при помощи отдельного документа - зашли в него и пресчитали-перезаполнили. И права доступа на этот документ можно только уполномоченному дать. |
|||
33
Prog111
20.04.16
✎
12:35
|
(30) Мне гораздо проще считать из уже готовых движений по себестоимости, чем рассчитывать, какая выйдет себестоимость ДО проведения документа.
|
|||
34
Vanilla26
20.04.16
✎
12:35
|
(33) Если без заморочек
ОбъектДокумента.Записать(РежимЗаписиДокумента.Проведение); Для каждого СтрокаДвижений из ОбъектДокумента.Движения.Регистр Цикл Если НЕ ЗначениеЗаполенено(ОбъектДокумента.ТвойРеквизит) Тогда ОбъектДокумента.ТвойРеквизит = СтрокаДвижений.Сумма; КонецЕсли; КонецЦикла; ОбъектДокумента.Записать(РежимЗаписиДокумента.Запись); |
|||
35
Prog111
20.04.16
✎
12:37
|
(32) Сейчас наоборот от этой схемы решили уйти, ибо не хотят лишних телодвижений по формированию отдельного итогового документа. К тому же, результаты по вознаграждению желают видеть актуальные, а не ждать, пока ответственное лицо просчитает промежуточные результаты в отдельном документе.
|
|||
36
DomovoiVShoke
20.04.16
✎
12:38
|
(33)Ну тебе говорят как надо, а ты уже сам себе костылей добавляй) Ты не представляешь как люди проклянают БП в которой разрабы избрали принцип как у тебя. Мало того что работать с этим очень сложно, так грейдануть документ в разы усложняется.
|
|||
37
Prog111
20.04.16
✎
12:39
|
(34) Это куда именно засунуть? В модуле документа в процедуре обработки проведения?
|
|||
38
Vanilla26
20.04.16
✎
12:41
|
(37) лучше никуда) херню я написал
|
|||
39
Prog111
20.04.16
✎
12:42
|
(38) Ну вроде выглядит симпатично)
|
|||
40
Лефмихалыч
20.04.16
✎
12:43
|
О = Ссылка.ПолучитьОбъект();
О.Реквизит = Значение; О.ОбменДанными.Загрузка = Истина; О.Записать(); |
|||
41
aleks_default
20.04.16
✎
12:43
|
(35) ну да ну да им проще облазить сотню документов и сложить по каждому сумму, чем получить данные отчетом по одному регистру... че за бред
|
|||
42
PR пять
20.04.16
✎
12:44
|
(31) По идее для расчета вознаграждения менеджера используется отдельный документ и никому не трахается мозг на тему своих копроидей.
|
|||
43
PR пять
20.04.16
✎
12:45
|
+(42) Ну то есть (32)
|
|||
44
elCust
20.04.16
✎
12:45
|
(0) В чем проблема, если документ сделает еще одно движение в регистр сведений.
|
|||
45
PR пять
20.04.16
✎
12:46
|
(35) Кому какое дело, куда вы там решили уйти?
Придумали какую-то хрень, сами и расхлебывайте свои геморрои. |
|||
46
PR пять
20.04.16
✎
12:47
|
(40) И все это в обработке проведения, ага.
|
|||
47
gae
20.04.16
✎
12:48
|
(35) Цеплять к первичке кучу всякой хрени - хреново.
Конечно, если процесс требует - то можно и извратиться, только надо понимать последствия и сложности. |
|||
48
Prog111
20.04.16
✎
12:54
|
Уговорили...) Теперь расскажите, как православно записать данные в регистр сведений? В подписке на события с событием "ОбработкаПроведения"?
Далее, если эту сумму необходимо видеть и менять в форме документа - то просто создаю поле в форме и в ней отображаю данные из РС. |
|||
49
PR пять
20.04.16
✎
12:54
|
(47) Цеплять к первичке кучу всякой хрени — нормально.
Но только когда она нормально цепляется. |
|||
50
gae
20.04.16
✎
12:55
|
Корректнее всего, если уж нужна типа оперативность, было бы в процедурах проведения выловить момент, когда себестоимость посчитана и лежит в переменных, и готова к записи в регистр (или может быть уже записана), и записать её ее в свой регистр "Вознаграждение".
|
|||
51
Лефмихалыч
20.04.16
✎
12:56
|
а методически правильно записывать все реквизиты до проведения
|
|||
52
gae
20.04.16
✎
12:56
|
(49) нормально цеплять нормальные вещи, а хрень цеплять хреново :) логика.
|
|||
53
lxndr
20.04.16
✎
12:58
|
(50) она может быть совсем не посчитана и не готова
|
|||
54
gae
20.04.16
✎
12:59
|
(53) Я предполагаю, то у них по среднескользящей или ФИФО считается. Если исходные остатки есть - то будет посчитана.
|
|||
55
aleks_default
20.04.16
✎
13:01
|
Делаешь регистр накопления с измерениями менеджер, документ и ресусами сумма и ручное изменение и описываешь проведение по этому регистру своего документа
|
|||
56
DomovoiVShoke
20.04.16
✎
13:03
|
(54)В реализации есть партии, в партиях есть себестоимость. Тут даже гадать не надо как считать прибыль.
|
|||
57
Prog111
20.04.16
✎
13:07
|
(50) В документе "Реализация" в типовой процедуре ОбработкаПроведения есть такой момент, с которым не могу разобраться: в конце процедуры делается следующее:
// Движения по документу Если Не Отказ Тогда // Подготовим таблицу скидок для проведения. ТаблицаПоСкидкам = ПодготовитьТаблицуСкидок(ТаблицаПоТоварам, ТаблицаПоУслугам, СтруктураШапкиДокумента); ДвиженияПоРегистрам(РежимПроведения, СтруктураШапкиДокумента, ТаблицаПоТоварам, ТаблицаПоСкидкам, ТаблицаПоТаре, ТаблицаПоУслугам, ТаблицаПоВзаиморасчетам, ТаблицаПоРасчетам, Отказ, Заголовок); КонецЕсли; Сообщить(ЭтотОбъект); КонецПроцедуры // ОбработкаПроведения() Когда в отладчике останавливаюсь на Сообщить(ЭтотОбъект), то движения по некоторым регистрам документа уже есть (например, РН "Продажи"), а по РН "ПродажиСебестоимость" движений ещё нет. А в следующем шаге, когда вроде ничего уже и не происходит - то движения появляются. |
|||
58
gae
20.04.16
✎
13:13
|
(57) Движения могут быть записаны где-то в общих модулях без использования ЭтотОбъект.Движения. А какие-то записываются по окончании Обработки проведения.
|
|||
59
Prog111
20.04.16
✎
13:28
|
(58) А как-то можно отловить в отладчике момент записи в регистр "ПродажиСебестоимость"? Ведь что-то же происходит в конце процедуры ОбработкаПроведения, только в отладчик не попадает...
|
|||
60
DomovoiVShoke
20.04.16
✎
13:59
|
Тогда дам последний совет: напишите документацию на такие велосипеды, а то программист, который придет после вас - проклянет.
|
|||
61
zak555
20.04.16
✎
14:43
|
Пишите в рс дополнительные свед
|
|||
62
FIXXXL
20.04.16
✎
15:10
|
(59) а чего бы регЗаданием не воспользоваться для такого расчета? пусть движения пишет в РН твой
|
|||
63
Serg_1960
20.04.16
✎
16:09
|
"Нормальные герои всегда идут в обход"(с) :( вредные советы :)
В обработчике подписки на событие "ПередЗаписьюРегистраНакопленияПродажиСебестоимости": Процедура ПередЗаписьюРегистраНакопленияПродажиСебестоимости(Источник, Отказ, Замещение) Если Отказ ИЛИ Источник.ОбменДанными.Загрузка ИЛИ Источник.Количество() = 0 Тогда Возврат; КонецЕсли; ДокСсылка = Источник.Отбор.Регистратор.Значение; Если ТипЗнч(ДокСсылка) <> Тип("ДокументСсылка.ТипТвоегоДокумента") Тогда Возврат; КонецЕсли ТекЗначение = ТвояФункцияРасчетаЗначенияДляРеквизитаДокумента(Источник); Если ТекЗначение <> ДокСсылка.ТвойРеквизит Тогда ДокОбъект = ДокСсылка.ПолучитьОбъект(); ДокОбъект.ТвойРеквизит = ТекЗначение; Докбъект.ОбменДанными.Загрузка = Истина; ДокОбъект.Записать(); ДокОбъект = Неопределено; КонецЕсли; Возврат; КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |