Имя: Пароль:
1C
1С v8
Проведение одного документа при проведении другого
,
0 МеталлКор
 
27.05.14
13:08
Коллеги. Вопрос в следующем:
1.Доработанная УПП.
2. В системе есть документы адресного хранения (нетиповые)
3. Каждому из документу адресного хранения сопоставляются определенные типовые документу БУ (поступление, реализация, перемещение и т.д.)
ВОзникла необходимость при проведении документов п.2 проводить АВТОМАТИЧЕСКИ документы п.3.
При этом, если возникает ошибка проведения документов п.3, документ п.2 все равно должен провестись.
Вызов проведения документов п.3 у меня осуществляется в обработчике проведения документов п.2.
1 censored
 
27.05.14
13:11
Вызов проведения документов п.3 у меня осуществляется в обработчике проведения документов п.2.

Это нехорошо
2 butterbean
 
27.05.14
13:12
ппц
3 Kamas
 
27.05.14
13:12
(0) жесть, а в чем вопрос?
4 Kamas
 
27.05.14
13:13
(0) или это так похвастаться??
5 МеталлКор
 
27.05.14
13:13
ПРоцедура проведения документов адресного хранения
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
    
    
    Если НЕ Отказ Тогда
        ДвиженияПоРегистрам(Отказ);
        Если не Отказ Тогда         ТК_КонтрольПравДоступа.ПроведениеСвязанныхДокументовБУ(Ссылка)  ///тут проводится документ БУ
        КонецЕсли;
    КонецЕсли;
    
КонецПроцедуры
6 МеталлКор
 
27.05.14
13:14
вопрос: как организовать правильно процедуры, что бы я смог провести документ адресного хранения, независимо от результатов проведения документа БУ
7 iamnub
 
27.05.14
13:14
А потом эти люди пишут в резюме "Программист" и шлют кому ни попадя.
8 МеталлКор
 
27.05.14
13:15
я смотрю, тут форум народных умников и умниц)))
9 Kamas
 
27.05.14
13:17
(6) А Зачем тогда вообще записывать проведение в обработку проведения?
10 Kamas
 
27.05.14
13:18
(9) если нас вообще не колышит провели мы док или нет??
11 censored
 
27.05.14
13:18
(6) первое что в голову приходит:
- запустить проведение бух. дока в фоне
- отложенное проведение - регистрируешь где угодно данные о том, что провелся адресный док, потом регл. заданием анализируешь изменения и проводишь бух доки
12 МеталлКор
 
27.05.14
13:22
Это нужно, сугубо в информационных целях. Начальник склада провел документ адресного хранения, если при проведении документа БУ выявились какие -либо ошибки, система отобразила их в окне сообщений.  он сообщает их бухгалтеру для исправления. При этом проводимый документ адресного хранения должен провестись, независимо от состояния проведения документа БУ,
13 МеталлКор
 
27.05.14
13:23
Да, мысль с регл. заданием понял. Кроме него, есть какие -то еще варианты?
14 Azverin
 
27.05.14
13:23
(12) убери условие "Если не Отказ Тогда" и радуйся)
15 butterbean
 
27.05.14
13:24
(12) запихни проведение подчиненных документов в Попытка Исключение
16 МеталлКор
 
27.05.14
13:26
Не катит. Документ БУ не проводится, но при этом документ адресного хранения не проводися.
вот код процедуры проведения подчиненного документа
Процедура ПроведениеСвязанныхДокументовБУ(СсылкаАдресноеХранение) Экспорт

    Попытка

        НачатьТранзакцию();
        ДокументБУ =СсылкаАдресноеХранение.ДокументОснования.ПолучитьОБъект();
        ДокументБУ.мРежимАдресногоХранения = истина;
        ДокументБУ.Записать(РежимЗаписиДокумента.Проведение);
        ЗафиксироватьТранзакцию();

    Исключение
        ОтменитьТранзакцию();
    КонецПопытки;
        //Попытка

    
    
КонецПроцедуры
17 censored
 
27.05.14
13:26
(12) ошибки при проведении высылай сразу на почту буху, коль нужно :).
18 censored
 
27.05.14
13:28
(16) Забудь про проведение бух. документа из обработки проведения другого документа. Так делать нельзя.
19 wade25
 
27.05.14
13:28
(0) Уже сказали нехорошо, но делать нада так:
Сначала провести документы адресного хранения перед записью, а потом сам документ. Т.к. если проводить во 2ую очередь, будет отмена т.к. уже пошла транзакция, а вложенных транзакций в 1с нет (точнее приоритета по ним).
20 Azverin
 
27.05.14
13:29
(18) критикуешь? - объясни почему и предложи свой вариант
21 Kamas
 
27.05.14
13:30
подписка на событие не??
22 МеталлКор
 
27.05.14
13:31
(19) Можно подробнее, пример кода? что значит провести документ адресного хранения перед записью?
23 Kamas
 
27.05.14
13:32
(19) оп не прочитал собственно к этому и был задан вопрос (9)
24 Kamas
 
27.05.14
13:34
(22) делаеш подписку после записи документов так как нам абсолютно фиолетово повелись доки или нет. И формируеш свои доки.
25 wade25
 
27.05.14
13:35
(22) ПередЗаписью >> Документ.(какие хошь).Записать(Режим.Проведение). Условие на режим записи еще добавь.
26 Kamas
 
27.05.14
13:36
(25) перед записью у дока ссылки нет
27 censored
 
27.05.14
13:38
(20) как минимум время проведения дока увеличивается в разы. А глубже может появиться масса проблем с блокировками. И будут у вас кладовщики ждать пока бух. документы проанализируют остатки по бух. регистрам, спишут партии и т.д.

свой вариант предложил в (11)
28 2mugik
 
27.05.14
13:47
(0)И как это будет? Бух не провелся - провелись адресные. Потом бух провелся -  адресные изменились?
29 МеталлКор
 
27.05.14
13:52
(25) все верно. но есть одно но. при проведении документа БУ выполняется корректность данных регистров документа адресного хранения и регистров бухгалтерского документа. То есть:
1. Провелся документ адресного хранения и добавил записи в регистры свои.
2. Проводится документ БУ, анализирует данные регистра 1, сообщает об их соответствии.
Предлагаемый вами вариант это не учитывает, впрочем я об этом изначально не указал))
30 МеталлКор
 
27.05.14
13:55
(28) Все дело в том, что одному документу БУ может соответствовать несколько документов адресного хранения.
То есть, проведен документ БУ на 400 штук, а адресное только на 200. При первом проведении адресного хранения на 200, система провела документ АХ и рыгнулась, что документ БУ не проведен. Потом когда будет проведено второе АХ на 200, документ БУ проведется окончательно.
31 Enders
 
27.05.14
15:07
(30) сделай так как предложили в (11)
При проведении АХ, пиши данные в регистр(какие документы должны быть проведены). Допустим состав регистра такой.
"ДокБУ"(ссылка), "НадоПровести"(булево), "Ошибка"(текст)
Потом в фоне проводи все документы из регистра, где НадоПровести=Истина.
Если при проведении возникает ошибка, снимаешь галочку с "НадоПровести" и пишешь текст ошибки в "Ошибка".
Если проведение прошло успешно удаляешь запись из регистра.
32 МеталлКор
 
27.05.14
15:24
Вообщем понял, что при проведении это сделать нельзя.
регл. задание - некий обходной путь.
все спасибо.
33 ignorant
 
27.05.14
15:25
Не совсем в теме что есть документ АХ.
Но если он проводится интерактивно из открытой формы документа, то аналогичную задачу создания/проведения дочрнего документа выполняем в обработчике ПриЗакрытии

Если мОбъектЗаписан    Тогда
    
    Если Проведен Тогда
        срОбработка ( Ссылка, ВидОперации, РежимЗаписиДокумента.Проведение);
    Иначе
        срОбработка ( Ссылка, ВидОперации, РежимЗаписиДокумента.ОтменаПроведения);
    КонецЕсли;
    
КонецЕсли;
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший