Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: изменение реквизита
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
abuja
помогите разобраться, не работает код. после завершения обработки не сохраняются результаты вот код:

Банк=СоздатьОбъект("Справочник.БанковскиеСчета");
    Банк.ВыбратьЭлементы();
    Банк.НайтиПоНаименованию("Онего");
    Онего = Банк.ТекущийЭлемент();
    Банк.НайтиПоНаименованию("Балтийский");
    Балт = Банк.ТекущийЭлемент();
    
    Дог=СоздатьОбъект("Справочник.рДоговорРасчетов");
    Контр=СоздатьОбъект("Справочник.Контрагенты");
    
    Контр.ВыбратьЭлементы();
    Пока Контр.ПолучитьЭлемент()>0 Цикл
        ТекКонтр = Контр.ТекущийЭлемент();
        Если (Лев(ТекКонтр.Код,1)<>"ч") и (Лев(ТекКонтр.Код,1)<>"п") Тогда
            Дог.ИспользоватьВладельца(ТекКонтр);
            Дог.ВыбратьЭлементы();
            Пока Дог.ПолучитьЭлемент()>0 Цикл
                ТекДог = Дог.ТекущийЭлемент();
                Если ТекДог.Код = ТекКонтр.Код тогда
                    Если (ТекДог.Бюджет.Код = "4") и (ТекДог.Банк = Онего) тогда
                        ТекДог.Банк = Балт;
                        Дог.Записать();
                    КонецЕсли;
                КонецЕсли;
            КонецЦикла;
            Контр.Записать();
        КонецЕсли;
    КонецЦикла;
Batchir
В отладчике попадаете на команды Записать()?
Пробывали
вместо Дог.Записать(); исрользовать ТекДог.Записать();
вместо Контр.Записать(); исрользовать ТекКонтр.Записать();
?
abuja
Да, суть в том, что команда метод Записать() - используется только для созданных объектов. В отладчике на команду попадает. Пока ТекДок не принимает другое значение, реквизит "Банк" остается таким как нужно, а потом - меняется обратно. Даже после метода "Записать()"
Batchir
Когда получаете ссылку на договор или контрагента попробуйте заново создать объект и найти элемент этого объекта, а потом изменять его
т.е.
ТекКонтр = Контр.ТекущийЭлемент();
попробуйте заменить на что то типа
ТекКонтр = СоздатьОбъект("Справочник.Контрагенты");
ТекКонтр.НайтиЭлемент(Контр.ТекущийЭлемент());
....
ТекКонтр.Записать();

И тоже самое для договоров.
Batchir
Хотя хз, я уже давно на 7.7 не программировал, подзабыл уже. Смысл в том что вы возможно сами дали ответ. Нужно получить договор(котрагента) с помощью СоздатьОбъект, а потом его записать.
abuja
Если так сделать, то получается слдующее: после того, как переменная ТекДог принимает значение "Справочник.рДоговорРасчетов", текущий элемент справочника меняет значение реквизита на то, которые было и не сохраняется. (это по отладчику), поэтому последующая команда "Записать()" смысла не имеет...
Vofka
А может ТекКонтр и ТекДог записать, а не Контр и Дог?
Batchir
Имелось ввиду следующее
Пока Дог.ПолучитьЭлемент()>0 Цикл
   ТекДог = СоздатьОбъект("Справочник.рДоговорРасчетов");
   ТекДог.НайтиЭлемент(Дог.ТекущийЭлемент());
   Если ТекДог.Код = ТекКонтр.Код тогда
       Если (ТекДог.Бюджет.Код = "4") и (ТекДог.Банк = Онего) тогда
            ТекДог.Банк = Балт;
            ТекДог.Записать();
       КонецЕсли;
   КонецЕсли;
КонецЦикла;
dmiter
попробуйТЕ так
Цитата(abuja @ 21.10.10, 14:12) необходимо зарегистрироваться для просмотра ссылки
    Банк=СоздатьОбъект("Справочник.БанковскиеСчета");
    Банк.ВыбратьЭлементы();
    Банк.НайтиПоНаименованию("Онего");
    Онего = Банк.ТекущийЭлемент();
    Банк.НайтиПоНаименованию("Балтийский");
    Балт = Банк.ТекущийЭлемент();
    
    Дог=СоздатьОбъект("Справочник.рДоговорРасчетов");
    Контр=СоздатьОбъект("Справочник.Контрагенты");
    
    Контр.ВыбратьЭлементы();
    Пока Контр.ПолучитьЭлемент()>0 Цикл
        Если (Лев(Контр.Код,1)<>"ч") и (Лев(Контр.Код,1)<>"п") Тогда
            Дог.ИспользоватьВладельца(Контр);
            Дог.ВыбратьЭлементы();
            Пока Дог.ПолучитьЭлемент()>0 Цикл
                Если Дог.Код = Контр.Код тогда
                    Если (Дог.Бюджет.Код = "4") и (Дог.Банк = Онего) тогда
                        Дог.Банк = Балт;
                        Дог.Записать();
                    КонецЕсли;
                КонецЕсли;
            КонецЦикла;
        КонецЕсли;
    КонецЦикла;
abuja
Спасибо всем огромное за помощь! DMITER - Вам, спасибо, так заработало!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.