|
Как копировать два дока? | ☑ | ||
---|---|---|---|---|
0
Роуден
23.10.15
✎
11:29
|
Такой вопрос возник(потом выложу код и прикол, почему этот ко пришлось писать) . Имеем модуль в 4 тыс строк по копированию документов ,(все доки перебираются преебираются реквизиты , ТЧ , реквизиты тч и назначаются другому документу, новому. С отличием в том, что в новом доке новая ОРганизация,Подразделение и договор)
Я всю эту систему хочу заменить одной общей процедурой. С методами НовыйДокумент = СтарыйДокумент.Скопировать(); НовыйДокумент.Организация = НужнаяОрганизация; НовыйДокумент.Номер = "ТМ"+прав(Регистратор.Номер,9); НовыйДокумент.Записать(РежимЗаписиДокумента.Запись); НО!!!!! Это все хорошо для нового дока(копии исходного) Но если на основании Исходного уже создана копия как быть? ведь нельзя написать же ДокументКопия = ИсходныйДокумент.Скопировать(); // тк будет создан новый, а мне надо перезаполнить текущий ДокументКопия = ИсходныйДокумент.Скопировать(); // Тож нельзя тк вызывается обработка заполнения а там нужен ДокументОснование- типовой реквизит |
|||
1
Роуден
23.10.15
✎
11:31
|
* Последняя строчка
ДокументКопия = ИсходныйДокумент.Заполнить(); |
|||
2
Роуден
23.10.15
✎
11:32
|
ДокументКопия.Заполнить(ИсходныйДокумент);
|
|||
3
anatoly
23.10.15
✎
11:37
|
в чем проблема, поискать сначала документ у которого основание = исходный?
если найден - перезаполнить, если нет - создать новый. |
|||
4
Роуден
23.10.15
✎
11:39
|
(3) Всымсле ты хочешь добавить новый документ к реквизиту "ДокументОснование"? Но мне кажется это неочень как-то. Там прочто есть Реквизит "Документ" у тех доков, которые надо копировать, я думал ч ним поработать
|
|||
5
Роуден
23.10.15
✎
11:42
|
(3) Как найти уже заполненный на основании, это легко а вот как его перезаполнить?
|
|||
6
Роуден
23.10.15
✎
11:49
|
Товарищи, подскажите идею какую-нить
|
|||
7
Wirtuozzz
23.10.15
✎
11:49
|
Это клюшки или 8.2?
|
|||
8
Альбатрос
23.10.15
✎
11:50
|
(4) Вот называть реквизит "Документ" не очень. А сделать реквизит документОснование очень даже ничего.
|
|||
9
Wirtuozzz
23.10.15
✎
11:50
|
А прична замены в чем?
ps Золотое правило: работает - не трогай! |
|||
10
Роуден
23.10.15
✎
11:52
|
(7) 8.2
(9) Причина - модернизация, тк такой код Если ТипЗнч(Регистратор) = Тип("ДокументСсылка.СчетФактураВыданный") Тогда Док=Документы.СчетФактураВыданный; Если (Документ = Документы.СчетФактураВыданный.ПустаяСсылка()) или (Документ.ПометкаУдаления) Тогда Док=Документы.СчетФактураВыданный.СоздатьДокумент(); Док.Номер="AS"+прав(Регистратор.Номер,9); Док.Организация=УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глТекущийПользователь, "ДопОрганизация"); Док.Дата=Регистратор.Дата; Док.Автор=Регистратор.Автор; Док.Поставщик=Регистратор.Поставщик; Док.Покупатель=Регистратор.Покупатель; Док.Контрагент=Регистратор.Контрагент недопустим |
|||
11
Роуден
23.10.15
✎
11:53
|
(8) Есть типовой документ "ДокументОснование"
|
|||
12
Роуден
23.10.15
✎
11:53
|
Но вот как грамотно перезаполнить чето не допру
|
|||
13
anatoly
23.10.15
✎
12:00
|
есть секретная функция ЗаполнитьЗначенияСвойств()
для однотипных объектов очень полезна. |
|||
14
Роуден
23.10.15
✎
12:05
|
(13) О, спасибо щас ее попробую, плюс нашел процедуру, общую дл всех ЗаполнитьПодокументуОснования
|
|||
15
palpetrovich
23.10.15
✎
12:20
|
меня терзают смутные сомнень, а не LivingStar-ли случайно этот Роуден? ...больно-уж стиль похож :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |