Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> изменение реквизита          
abuja Подменю пользователя
сообщение 21.10.10, 12:12
Сообщение #1

Молчаливый
*
Группа: Пользователи
Сообщений: 4
Спасибо сказали: 0 раз
Рейтинг: 0

помогите разобраться, не работает код. после завершения обработки не сохраняются результаты вот код:

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

Batchir Подменю пользователя
сообщение 21.10.10, 12:21
Сообщение #2

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1427 раз
Рейтинг: 0

В отладчике попадаете на команды Записать()?
Пробывали
вместо Дог.Записать(); исрользовать ТекДог.Записать();
вместо Контр.Записать(); исрользовать ТекКонтр.Записать();
?

abuja Подменю пользователя
сообщение 21.10.10, 12:26
Сообщение #3

Молчаливый
*
Группа: Пользователи
Сообщений: 4
Спасибо сказали: 0 раз
Рейтинг: 0

Да, суть в том, что команда метод Записать() - используется только для созданных объектов. В отладчике на команду попадает. Пока ТекДок не принимает другое значение, реквизит "Банк" остается таким как нужно, а потом - меняется обратно. Даже после метода "Записать()"

Batchir Подменю пользователя
сообщение 21.10.10, 12:35
Сообщение #4

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1427 раз
Рейтинг: 0

Когда получаете ссылку на договор или контрагента попробуйте заново создать объект и найти элемент этого объекта, а потом изменять его
т.е.
ТекКонтр = Контр.ТекущийЭлемент();
попробуйте заменить на что то типа
ТекКонтр = СоздатьОбъект("Справочник.Контрагенты");
ТекКонтр.НайтиЭлемент(Контр.ТекущийЭлемент());
....
ТекКонтр.Записать();

И тоже самое для договоров.

Batchir Подменю пользователя
сообщение 21.10.10, 12:41
Сообщение #5

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1427 раз
Рейтинг: 0

Хотя хз, я уже давно на 7.7 не программировал, подзабыл уже. Смысл в том что вы возможно сами дали ответ. Нужно получить договор(котрагента) с помощью СоздатьОбъект, а потом его записать.

abuja Подменю пользователя
сообщение 21.10.10, 12:50
Сообщение #6

Молчаливый
*
Группа: Пользователи
Сообщений: 4
Спасибо сказали: 0 раз
Рейтинг: 0

Если так сделать, то получается слдующее: после того, как переменная ТекДог принимает значение "Справочник.рДоговорРасчетов", текущий элемент справочника меняет значение реквизита на то, которые было и не сохраняется. (это по отладчику), поэтому последующая команда "Записать()" смысла не имеет...

Vofka Подменю пользователя
сообщение 21.10.10, 12:59
Сообщение #7

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13960
Из: Киев
Спасибо сказали: 4524 раз
Рейтинг: 3647.7

А может ТекКонтр и ТекДог записать, а не Контр и Дог?

Batchir Подменю пользователя
сообщение 21.10.10, 13:03
Сообщение #8

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1427 раз
Рейтинг: 0

Имелось ввиду следующее
Пока Дог.ПолучитьЭлемент()>0 Цикл
   ТекДог = СоздатьОбъект("Справочник.рДоговорРасчетов");
   ТекДог.НайтиЭлемент(Дог.ТекущийЭлемент());
   Если ТекДог.Код = ТекКонтр.Код тогда
       Если (ТекДог.Бюджет.Код = "4") и (ТекДог.Банк = Онего) тогда
            ТекДог.Банк = Балт;
            ТекДог.Записать();
       КонецЕсли;
   КонецЕсли;
КонецЦикла;

dmiter Подменю пользователя
сообщение 21.10.10, 21:48
Сообщение #9

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 108
Из: Киев
Спасибо сказали: 16 раз
Рейтинг: 0

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

abuja Подменю пользователя
сообщение 22.10.10, 6:31
Сообщение #10

Молчаливый
*
Группа: Пользователи
Сообщений: 4
Спасибо сказали: 0 раз
Рейтинг: 0

Спасибо всем огромное за помощь! DMITER - Вам, спасибо, так заработало!

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 24.06.24, 0:22
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!