Имя: Пароль:
1C
 
v7: ищу красивый способ проводить (+распроводить и т.д.) подчинённые доки одноврем..
0 jyupiter
 
22.06.10
05:18
v7.7
хочется, чтобы при проведении накладной на расход,
если в ней обнаруживается товар, поставляемый в возвратной таре (например, кежное пиво), создавалась накладная на возвратную тару (это я сделал), и тут же проводилась (тут я затупил, потому что в модуле документа не разрешают использовать метод "Провести"):

докНакл.Провести();
{Документ.Накладная.Модуль Документа(316)}: Данная операция недоступна при проведении документа!

в то же время, формировать и проводить её при записи основной накладной несколько преждевременно, потому что неизвестно заранее, проведётся основная накладная или там сработает какой-нить блок по дебиторке или по остаткам на складе, или ещё что-нить

может, где-то реализовано что-то похожее и можно посмотреть?
1 VitGun
 
22.06.10
05:25
(0) вынеси создание и проведение накладной на возвратную тару в обработку и в случае успешного проведения расходной накладной вызывай эту обработку.
2 jyupiter
 
22.06.10
06:12
(1) спасибо
я, правда, об этом думал
а нельзя обойтись без нормального пути нормальных бармалеев (ну, то есть, не идти в обход?)
3 evGenius
 
22.06.10
06:16
Подменить действия по кнопке "ОК" и "Провести"

НачатьТранзакцию();
Рез = ДокНакладная.Провести();
Если Рез = 1 Тогда
  Рез = ДокВозврТара.Провести();
  Если Рез = 1 Тогда
     ЗафиксироватьТранзакцию();
  Иначе
     ОтменитьТранзакцию();
  КонецЕсли;
Иначе
  ОтменитьТранзакцию();
КонецЕсли;
4 evGenius
 
22.06.10
06:18
Хотя тут косячок, если ДокВозврТара не проведётся, ДокНакладная не откатится.
5 VitGun
 
22.06.10
06:21
(2) увы. в 7-ке часто приходится устраивать закат солнца вручную.
6 jyupiter
 
22.06.10
06:38
(4) да уж, а если учесть, что хочется их не только проводить, но и распроводить, и помечать на удаление, и снимать пометку на, - всё одновременно,
и что у подчинённой накладной есть свой подчинённый документ, и что я тут не один, и следом за мной кто-то попытается понять эту конструкцию... вопщем, всё сложно

(5) увы :(
скорее всего, придётся просто открывать формы введённых на основании документов, а проведение/распечатку оставлять на произвол оператора
7 skunk
 
22.06.10
06:39

процедура ОбработкаПроведения()
   //Здесь следует написать алгоритм проведения документа
   ...
   ...
   открытьформу("Документ.ТвойДокумент","Провести",);
конецпроцедуры


Модуль формы Твоего документа

процедура ПриОткрытии()
   если Форма.Параметр = "Провести" тогда
       Провести();
       статусвозврата(0);
       возврат;
   конецесли;
   //Здесь следует написать алгоритм при открытии документа
   ...
   ...
конецпроцедуры
8 Mikeware
 
22.06.10
06:47
во-первых, не стоит так часто упоминать "одновременно".
во-вторых, некоторым шаманством такого добиться можно - но вот нужно ли? это еще вопрос. (то,что "хочется" - не означает "нужно")
9 jyupiter
 
22.06.10
07:04
(8) ну, задача такая поставлена, я исследую способы её решения
если выясню, что они сложнее или ненадёжнее, чем простая человеческая деятельность, я так и скажу работодателям

(7) - das ist fantastisch!
реально красиво, обязательно попробую, большое спасибо!!!
10 Злопчинский
 
22.06.10
07:44
(7) а не зациклит?
11 2S
 
22.06.10
07:54
(10)
документы же разные, с чего это вдруг должно зациклить?
12 Злопчинский
 
22.06.10
07:59
(11) спсб, не втыкнул
13 FN
 
22.06.10
08:14
Интенсивное использование (7) может привести к косякам в базе. Сам пользовался 5 лет :(
14 2S
 
22.06.10
08:16
(13) рассказывай
15 FN
 
22.06.10
08:20
(14)
SQL: Появляются неправильные движения у документов
есть похожая тема на 1с++ в Курилке
16 orefkov
 
22.06.10
09:31
Особо красивого решения нет. Имхо приемлемый вариант - имтировать формы обоих доков обработками с ТП из 1С++ (класс ПоставщикДанных уже содержит практически все нужное для этого). Сами штатные формы доков открывать не давать.
17 Жан Пердежон
 
22.06.10
11:31
чем не красивое решение: забить на второй документ, а его движения делать в накладной на расход, ну и печатную форму подцепить.
18 orefkov
 
22.06.10
11:58
(17)
Плохо нумерацией. Хотя, можно разные префиксы завести, ну тут уже зависит от деталей/специфики работы.
19 skunk
 
23.06.10
06:58
(15)сдается в этой теме фича из (7) вообще не причем
20 FN
 
23.06.10
14:00
(19) Причем - это я уже позже осознал. Убрал проводку документа из транзакции, открытой другим доком и глюки перестали появляться. Вот в (15) как раз догадки об этом глюке и обсуждались - просто причина была найдена позднее.
21 Sj
 
23.06.10
14:03
делай как в (7) - само то.