Имя: Пароль:
1C
 
Как копировать два дока?
,
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-ли случайно этот Роуден?  ...больно-уж стиль похож  :)