Имя: Пароль:
1C
1C 7.7
v7: А мужики-то не знали... verstamp и пердельная бздительность...
,
0 Злопчинский
 
01.08.23
22:52
чисто информационно, а то некоторые клюшечники не знают...
.
//*******************************************
Процедура Сформировать()

    Док1 = СоздатьОбъект("Документ");
    Док2 = СоздатьОбъект("Документ");
    
    Док1.НайтиДокумент(ВыбДок);
    Док2.НайтиДокумент(ВыбДок);
    
    Док2.Комментарий = "Док2"; Док2.Записать();
    Док2 = ""; //подстрахуемся типа даже Если
                                            
    //Док1.НайтиДокумент(ВыбДок); //если расскомментарить то ничего ломаться не будет
    Док1.Комментарий = "Док1"; Док1.Записать(); // тут сломается если строка выше закомментарена
    
КонецПроцедуры // Сформировать()
1 DGorgoN
 
01.08.23
23:01
//если расскомментарить то ничего ломаться не будет
и
// тут сломается если строка выше закомментарена
тут вроде какая то логическая несостыковка по моему.
2 Garykom
 
гуру
01.08.23
23:08
Намного интересней что выдаст
Сообщить(Док1.Комментарий)
сразу после Док2.Записать();
3 Garykom
 
гуру
01.08.23
23:10
(0) Это такой же изврат как иметь в одном коде две переменные ссылающиеся на один объект
И по очереди вперемешку через них хреначить ))

Разрабы платформы просто не подумали о таком изврате
4 p-soft
 
01.08.23
23:22
однажды, во время своего первого серьезного проекта, я сделал механизм резервирования товара при подборе.
торгашей тогда перло, тыща заказов в день - ни о чем..
так вот, реализовал я его через проведение одного документа в транзакции проведения другого.
на второй день работы, не сказать, что меня сильно били, но было поучительно)
5 Злопчинский
 
01.08.23
23:59
(1) а если подумать? ;-)
6 Злопчинский
 
02.08.23
00:08
(2) Арямнское радио отвечает: ;-)
.
//*******************************************
Процедура Сформировать()

    Док1 = СоздатьОбъект("Документ");
    Док2 = СоздатьОбъект("Документ");
    
    Док1.НайтиДокумент(ВыбДок);
    Док2.НайтиДокумент(ВыбДок);
    
    Док2.Комментарий = "Док2"; Док2.Записать();
    Сообщить("После записи Док2: Док1.Комментарий = "+Док1.Комментарий);
    Сообщить("После записи Док2: Док2.Комментарий = "+Док2.Комментарий);
    
    //Док2 = ""; //подстраХУЕМся типа даже Если
                                            
    Док1.НайтиДокумент(ВыбДок); //если расскомментарить то ничего ломаться не будет
    Док1.Комментарий = "Док1"; Док1.Записать(); // тут сломается если строка выше закомментарена
    Сообщить("После записи Док1: Док1.Комментарий = "+Док1.Комментарий);
    Сообщить("После записи Док1: Док2.Комментарий = "+Док2.Комментарий);

КонецПроцедуры // Сформировать()
.
После записи Док2: Док1.Комментарий = Док2
После записи Док2: Док2.Комментарий = Док2
После записи Док1: Док1.Комментарий = Док1
После записи Док1: Док2.Комментарий = Док2
7 Злопчинский
 
02.08.23
00:10
и это понятно почему
.
ибо
.
//*******************************************
Процедура Сформировать()

    Док1 = СоздатьОбъект("Документ");
    Док2 = СоздатьОбъект("Документ");
    
    Док1.НайтиДокумент(ВыбДок);
    Док2.НайтиДокумент(ВыбДок);
    
    Док2.Комментарий = "Док2"; Док2.Записать();
    Сообщить("После записи Док2: Док1.Комментарий = "+Док1.Комментарий);
    Сообщить("После записи Док2: Док2.Комментарий = "+Док2.Комментарий);
    
    //Док2 = ""; //подстраХУЕМся типа даже Если
                                            
    Док1.НайтиДокумент(ВыбДок); //если расскомментарить то ничего ломаться не будет
    Док1.Комментарий = "Док1"; Док1.Записать(); // тут сломается если строка выше закомментарена
    Сообщить("После записи Док1: Док1.Комментарий = "+Док1.Комментарий);
    Сообщить("После записи Док1: Док2.Комментарий = "+Док2.Комментарий);

    Док2.НайтиДокумент(ВыбДок);
    Сообщить("После записи Док1 (перепозиционировали Док2): Док1.Комментарий = "+Док1.Комментарий);
    Сообщить("После записи Док1 (перепозиционировали Док2): Док2.Комментарий = "+Док2.Комментарий);

КонецПроцедуры // Сформировать()
.
После записи Док2: Док1.Комментарий = Док2
После записи Док2: Док2.Комментарий = Док2
После записи Док1: Док1.Комментарий = Док1
После записи Док1: Док2.Комментарий = Док2
После записи Док1 (перепозиционировали Док2): Док1.Комментарий = Док1
После записи Док1 (перепозиционировали Док2): Док2.Комментарий = Док1
8 Злопчинский
 
02.08.23
00:13
...или актуализируемся
    Док1.НайтиДокумент(ВыбДок); //если расскомментарить то ничего ломаться не будет
    Док1.Комментарий = "Док1"; Док1.Записать(); // тут сломается если строка выше закомментарена
    Сообщить("После записи Док1: Док1.Комментарий = "+Док1.Комментарий);
    Сообщить("После записи Док1: Док2.Комментарий = "+Док2.Комментарий);

    Сообщить("После записи Док1 (через текущийдокумент): Док1.ТекущийДокумент().Комментарий = "+Док1.ТекущийДокумент().Комментарий);
    Сообщить("После записи Док1 (через текущийдокумент): Док2.ТекущийДокумент().Комментарий = "+Док2.ТекущийДокумент().Комментарий);

КонецПроцедуры // Сформировать()
.
После записи Док2: Док1.Комментарий = Док2
После записи Док2: Док2.Комментарий = Док2
После записи Док1: Док1.Комментарий = Док1
После записи Док1: Док2.Комментарий = Док2
После записи Док1 (через текущийдокумент): Док1.ТекущийДокумент().Комментарий = Док1
После записи Док1 (через текущийдокумент): Док2.ТекущийДокумент().Комментарий = Док1
9 Bigbro
 
02.08.23
06:25
ничего не понял. а в чем странность, это всегда так работало.
10 Злопчинский
 
02.08.23
09:39
(9) странностей нет, информационно, для невтемешных
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший