Вход | Регистрация


1С:Предприятие ::

Метки:документы

Как обеспечить атомарность проведения двух связанных документов

Я
   Gorr
 
18.11.04 - 19:12
что требуется: если проводить так два или не одного причем как интерактивно, так и при групповом проведении.
Например Расходная накладная и ПКО при тн быстрой продаже.
вот мой фрагмент из обработки проведения расходной

        док = создатьобъект("Документ.ПКО");
        док.НайтиДокумент(ПКО);
         док.Провести();
        если 0 = док.Проведен() тогда
            СтатусВозврата(0);
            возврат;
       конецесли;
т.е. если парный документ по каким то причинам не провелся то и собрат не проводится...
все вроде логично, правда метод Провести() в процедуре ОбработкаПроведения не доступен...
 
 
   Лошадка в пальто
 
1 - 18.11.04 - 19:14
Может Док.Проведен()=0?
   Gorr
 
2 - 18.11.04 - 19:17
хех его ж НУЖНО провести!
   Gorr
 
3 - 18.11.04 - 19:17
надо чотб провести оба или не одного
   Лошадка в пальто
 
4 - 18.11.04 - 19:18
Талпаоп... проверь если расходная проведена, тогда проводи ПКО.
   Gorr
 
5 - 18.11.04 - 19:22
если расходная проведна уже, а ПКО нет это уже противоречит концепции атомарности!
можно конечно их проводить извне как в документе быстрой продажи ТИС, но как обработать ситуацию когда распроводятся и проводятся заново системой или пользователем по отдельности...
   Бивень
 
6 - 18.11.04 - 19:26
А я всегда думал, что атомарность - это из химии, атомная масса вещества ...
   France
 
8 - 18.11.04 - 19:28
а оказалось, что это неделимость
   Gorr
 
13 - 18.11.04 - 19:40
каких только "программеров 1с" тут не встретишь:))
   Лошадка в пальто
 
14 - 18.11.04 - 19:42
13. И не говори...
   Программер
15 - 18.11.04 - 19:43
(13) Да никаких ты тут не встретишь.
   poi
 
16 - 18.11.04 - 19:44
(0) Сделай Обработку в котором отражается и ПКО и Накладная.
Вид точно такой-же как и у документов.
При нажатии "провести" создается 2 документа програмно.
   deoron
17 - 18.11.04 - 21:53
Встречался с таким.
Единственный выход переделывать групповое проведение (обработку).
а код на проведение вставлять в модуль формы.
...
В ОбработкеПроведения другой документ провести нельзя,но можно создать новую Операцию (документ). Может это как-то поможет если нужны только проводки?
Для любителей поизвращаться : Если нужна Печатная форма Второго документа то на форму Операции бросаешь кнопку типа "Напечатать Кассовый ордер" или типа этого.
   Asmody
 
18 - 18.11.04 - 23:19
(17) уверен, что нельзя? может вот это поможет: http://www.sinor.ru/~my1c/knowhow/post_drd.html
   poi
 
19 - 20.11.04 - 20:34
(0) Тут в голову пришло.
Можно просто создать документ. Назвать его ПКОРеализацияАтомарно.
В нем будут и ПКО и Реализация одновременно.
В модуле этого документа проведение настроить соответственно.
Тогда никаких проблем с восстановлением последовательностей и др.
   France
 
20 - 20.11.04 - 20:40
а посмотреть в типовой комплексной что нибудь типа "Розничный пакет документов" не пробовали?
   Asmody
 
21 - 20.11.04 - 21:25
(20) идея не та... тута надо, как я поныл, чтоб два (или более) дока _одновременно_ были либо проведены, либо нет.
   NiGMa
 
22 - 20.11.04 - 21:30
Такая конструкция есть... транзакция называется...
Разве не поможет?
   Asmody
 
23 - 20.11.04 - 21:37
фига! транзакций вложенных в 1с как бы нет. а проведение дока тожа есть транзакция... и провести другой документ из проведения как то в общем неполучитсф
   NiGMa
 
24 - 20.11.04 - 21:39
(23) Ты уверен? Пробовал?
   France
 
25 - 20.11.04 - 21:44
(23) я вот щаз тоже пытаюсь подобное (0) сделать использую то, что предложил в (20)
Битва идет с переменным успехом..
   427
 
26 - 20.11.04 - 21:52
(25)
Без проблем - посмотри БыструюПродажу в ТиС.
Только там надо добавить проверку проведения...
Если типа док в цепочке не провелся - откатываем все взад....
   Asmody
 
27 - 20.11.04 - 22:00
заипися, плять!!!
кагда я пару лет назад на т1с про вложенные транзакции спросил, меня пару дней рожей по асфальту катали, млять! теперь оказывается, "не уверен"...
   427
 
28 - 20.11.04 - 22:07
откатывать не обязательно через транзакцию...
   Asmody
 
29 - 20.11.04 - 22:14
чего откатывать? если бабло покупателям, так это вообще без транзакции делается >;))

ЗЫ: был тут у нас както спор: на каком счете учитывать откаты...
   NiGMa
 
30 - 20.11.04 - 22:21
Кстати - только что проверил - транзакция прекрасно откатывает групповое проведение!
   poi
 
31 - 20.11.04 - 22:21
(всем) я так понял, что один док на Релизацию и ПКО это глупость?
   NiGMa
 
32 - 20.11.04 - 22:24
Вот код:
Процедура Сформировать()
    
    Док = СоздатьОбъект("Документ.ПриходныйОрдер");
    Док.ВыбратьДокументы(ДатаН,ДатаК);
    
    НачатьТранзакцию();
    Пока Док.ПолучитьДокумент() = 1 Цикл
            Док.Провести();
    КонецЦикла;
    ОтменитьТранзакцию();
    
    Предупреждение("Финиш!");
    
КонецПроцедуры
   NiGMa
 
33 - 20.11.04 - 22:25
(31) Нет, не глупость - просто лишняя работа.
 
 



Список тем форума
Рекламное место пустует   Рекламное место пустует
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Фредерик Брукс-младший
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует