Имя: Пароль:
1C
1C 7.7
v7: Передача данных в "ОбработкаПроведения()"
0 never_sleep
 
16.04.14
09:38
Прошу помощи у опытных коллег.
Зайду издалека. Ситуация следующая. Есть документ. В нем в "ОбработкаПроведения()" есть расчет БИ и некоторые другие действия, которых по дефолту там не было. Так вот, мне необходимо сократить время, которые тратится на отработку "ОбработкаПроведения()". Я могу эти БИ рассчитать и вне этой процедуры. Но вопрос в том, как передать эти данные в "ОбработкуПроведения".
Передавать эти данные мне нужно в 2х случаях.
1. Когда я провожу документ из модуля формы. Т.е. у этого дока есть 2 кнопки "Провести" и "ОК", обе отрабатываются процедурой "ОК()". И мне после нажатия любой из этих кнопок нужно рассчитать БИ и передать их в модуль документа в "ОбработкаПроведения()".
2. Есть еще один док, который массово проводит первые доки. через "Док.Провести()" Здесь я тоже перед вызовом пересчитаю БИ, но как их передать в "ОбработкаПроведения()" я хз.
Очень рассчитываю на вашу помощь.
1 Рэйв
 
16.04.14
09:41
Что мешает рассчитать итоги в процедуре проведения?
2 ДенисЧ
 
16.04.14
09:43
ПРодам СП. Поскольку раритет - за безумные деньги.
3 VladZ
 
16.04.14
09:44
Провести(<?>,);
Синтаксис:
Провести(<Режим>,<Знач>)
Назначение:
Выполнить проведение документа.
Возвращает: 1 - если проведение документа выполнено, 0 - иначе.
Параметры:
<Режим> - необязательный параметр. Число: 0 - проводить документ без сдвига ТА; 1 - проводить непроведенный документ реальным временем (со сдвигом ТА); 2 - перепроводить проведенный документ реальным временем (со сдвигом ТА); 3 - проводить любой (непроведенный, проведенный) документ реальным временем (со сдвигом ТА). Значение по умолчанию - 0.
<Знач> - выражение произвольного типа, которое передается при запуске предопределенной процедуры ОбработкаПроведения (необязателен, по умолчанию - пусто).
4 never_sleep
 
16.04.14
09:49
(1) Половинки мое филейной части медленно расходятся в разные стороны из-за давления коллег и в частности директора. Работа базы стоит из-за ошибки транзакции при обращении к 1sjourn. 1sjourn блокируется, когда отрабатывается "ОбработкаПроведения". Куча людей бьют эти доки, а БИ отрабатывает достаточно долго. Поэтому хочу как можно больше сократить время обработки этой транзакции.
ЗЫ. База ДБФ - блокируется вся таблица.
5 never_sleep
 
16.04.14
09:50
(3) Господи, я ведь читал её пятнадцать минут назад ((( куда смотрел((((.
6 VladZ
 
16.04.14
09:51
(4) "БИ отрабатывает достаточно долго" - Причины?
7 VladZ
 
16.04.14
09:51
+6 Может имеет смысл их устранить?
8 never_sleep
 
16.04.14
10:01
(6) Если честно, то я не могу со стопроцентной точностью ответить.
В марте забили кучу доков. с 15го по 31. На каждый день по 140 МестХранения и в среднем по 10 доков в день на каждое МестоХранения. По ряду причин их не проводили. Теперь массово проводим. Причем операторов человек 15, бьют каждые свои учреждения, но не так, что все сегодня 17 число, а потом все 18. А берут одно МестоХранения и проводят все доки с 15го по 31. Потом другое МестоХранения.
База Общепит 6. Проф. Там все в проводках хранится. От проводок не могу уйти. Да и смысла нет ИМХО.
Я уже актуальность БИ пересчитал на первый квартал. Все равно все долго работает. Да и времени нет сеть и спокойно разобраться. Ор стоит. (
9 never_sleep
 
16.04.14
10:03
(6) VladZ, я понял как сделать когда я вызываю "док.Провести()"
Но я не до конца понимаю, где передается выполенение в процедуру "ОбработкаПроведения()"когда нажимаю на кнопки "ОК" и "провести". Как уже сказал их отрабатывает одна процедура "ОК()". И в ней нет вызова "ОбработкаПроведения()". Как тут поступить?
10 never_sleep
 
16.04.14
10:13
(2) Денис, спрошу для общего развития, я правильно понял, ты имел ввиду желтую книжонку? )
11 Godofsin
 
16.04.14
10:15
(10) Синтаксис помощник
12 never_sleep
 
16.04.14
10:17
(11) ааа. :)
13 Boroda
 
16.04.14
10:18
По кнопке ОК разве не вызывается процедура Провести()?
14 Bigbro
 
16.04.14
10:18
поскольку конфа нетиповая что мешает добавить в документ все необходимые реквизиты, заполнять их чем угодно и как угодно с любыми расчетами а при проведении использовать сохраненные в реквизитах значения?
15 ДенисЧ
 
16.04.14
10:19
(10) нет
16 never_sleep
 
16.04.14
10:21
(14) Я правильно понял, вы предлагаете для передачи параметра в "ОбработкаПроведения()" использовать специально созданный для это реквизит документа?
17 never_sleep
 
16.04.14
10:24
(13) Вызывается следующая процедура
"Процедура ОК(Закрыть = 0)"
И вопрос сразу. Там есть строка
"Если Провести() = 1 Тогда".
Может это и есть вызов "ОбработкиПроведения()"?
18 never_sleep
 
16.04.14
10:25
я что-то просто не заметил её сразу.
19 Bigbro
 
16.04.14
10:26
16 да, если вам необходимо разделить во времени расчеты и проведение использующее результаты расчетов - это вариант.
20 Boroda
 
16.04.14
10:27
Провести(,КакойТоПараметр)

ОбработкаПроведения(ПереданныйПараметрИЗПровести)

>>> КакойТоПараметр = ПереданныйПараметрИЗПровести


так понятно?
21 never_sleep
 
16.04.14
10:32
(20) да понял спасибо. Я просто не заметил той строчки которую указал. И не мог понять как выполнение из кода модуля формы передается в модуль дока в "ОбработкаПроведения()".
22 never_sleep
 
16.04.14
10:32
(20) только в наешм случае это будет наверное как
ОбработкаПроведения(,ПереданныйПараметрИЗПровести) а не ОбработкаПроведения(ПереданныйПараметрИЗПровести)
Я прав?
23 never_sleep
 
16.04.14
10:35
Хотя неправ.
24 never_sleep
 
16.04.14
23:58
Все сделал. Провел небольшой стресс-тест, и вроде как есть положительный результат. Буду тестить сегодня в полевых условиях. Для выяснения того, как ускорить мои проводки, создам, пожалуй, отдельный топик.
Всем огромное спасибо за помощь!!!
25 VladZ
 
17.04.14
09:59
(8) "Да и времени нет сеть и спокойно разобраться."

Угу.. Есть такой способ работы. Называется "думать некогда, нужно работать". Ни к чему хорошему не приводит.
26 Torquader
 
17.04.14
10:23
Вообще-то, можно на ночь робота запустить -  и пусть он всё проводит - тогда тормозов не будет.
Потом, самое главное, чтобы все документы проводил только один процесс.
27 never_sleep
 
21.04.14
07:41
(25) Так и живем.
(26) Не вариант. Ибо, чтобы составить общее меню на день, им приходится по несколько раз то проводить, то распроводить доки. И тормозит сам этот процесс.
Короче, провел я тест в полевых условиях. Программа стала работать гораздо стабильнее. Вылеты с ошибками транзакций почти прекратились. Калькуляторы сказали, что за день набили больше, чем за последние пять. Так что считаю, что вопрос по усовершенствованию проведения закрыт в этой ветке закрыт. Всем еще раз огромное человеческое спасибо!!!
28 ДенисЧ
 
21.04.14
07:48
"чтобы составить общее меню на день, им приходится по несколько раз то проводить, то распроводить доки"

Руко*опие детектед.
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой