Модераторы: stron
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ошибка при заполнении справочника в цикле, почему? 
V
    Опции темы
sergey_85
Дата 5.8.2009, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 445
Регистрация: 17.4.2007
Где: Россия, Челябинск

Репутация: нет
Всего: 1



Привет!

Возникла проблема в простой ф-ции заполнения собственного справочника.
Так вот в коде нет ничего такого просто заносятся в справочник новые эл-ты и все!

причем если закоментить строки из цикла код работает, но если их раскоментить, то программа вылетает на 1 или 2 итерации!!!

Код

        //новое
        спрСписокИзм.Новый();
       
        спрСписокИзм.Владелец       = спрДетализация.ТекущийЭлемент();
        спрСписокИзм.ИмяРеквизита   = ид;
        спрСписокИзм.ВидДействия    = 0;  // 0 - нов. 1 - ред. 2 - удал.
         спрСписокИзм.СтароеЗначение = СокрЛП(значение);
        спрСписокИзм.НовоеЗначение  = СокрЛП(Док.ПолучитьАтрибут(ид));
    
        спрСписокИзм.Записать();   


Не пойму вроде здесь мудреного ничего нет! В чем может быть дело?? 

Код

//*************************************************************
Процедура СохранитьЛогШапкиДокументаВБазуДанных(спрЛогДокта, Док, сзСтараяШапка)

            перем ид;
    перем значение;
    
    ид       = "";
    значение = "";

    спрДетализация     = СоздатьОбъект("Справочник.ЛогДетализацияДокументов");    
    спрДетализация.Новый();
       
    спрДетализация.Владелец        = спрЛогДокта.ТекущийЭлемент();
    спрДетализация.ВидДетализации  = 1; // 1 - шапка 2 - табл. часть  
    спрДетализация.ВидДействия     = 1; // 0 - нов. 1 - ред. 2 - удал. 3 - перем
    спрДетализация.Примечание      = "СохранитьЛогШапкиДокументаВБазуДанных";
    
    спрДетализация.Записать();  
    
    спрСписокИзм = СоздатьОбъект("Справочник.ЛогСписокИзмененийДокументов");
    сообщить("Запись лога шапки док-та");  

    Для к = 1 По сзСтараяШапка.РазмерСписка() Цикл    
        значение = сзСтараяШапка.ПолучитьЗначение(к, ид);               
         
        сообщить("ИД - " + ид + ", БЫЛО - " + значение + ", СТАЛО - " + СокрЛП(Док.ПолучитьАтрибут(ид)));
        
        //новое
        спрСписокИзм.Новый();
       
        спрСписокИзм.Владелец       = спрДетализация.ТекущийЭлемент();
        спрСписокИзм.ИмяРеквизита   = ид;
        спрСписокИзм.ВидДействия    = 0;  // 0 - нов. 1 - ред. 2 - удал.
         спрСписокИзм.СтароеЗначение = СокрЛП(значение);
        спрСписокИзм.НовоеЗначение  = СокрЛП(Док.ПолучитьАтрибут(ид));
    
        спрСписокИзм.Записать();   
        
    КонецЦикла;        
КонецПроцедуры


Заранее спасибо!


--------------------
A good design always pays off.
PM MAIL   Вверх
Naghual
Дата 5.8.2009, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 5
Всего: 49



А с какой ошибкой то вылетает?


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
sergey_85
Дата 5.8.2009, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 445
Регистрация: 17.4.2007
Где: Россия, Челябинск

Репутация: нет
Всего: 1



а не с какой, ниче не вылетает! 
просто записей в справочнике не создается, 

я эту ф-нкцию вызываю в блоке
Код

попытка
исключение
конец попытки

вот в ней и вылетает (вылетает на исключение), но если тут же закоментить код создания нового эл-та справочника, то код полностью рабочий!

Добавлено через 9 минут и 39 секунд
а и вот еще странно, но когда я выполняю код вне цикла, то ошибки нет!
Код

 //новое
        спрСписокИзм.Новый();
       
        спрСписокИзм.Владелец       = спрДетализация.ТекущийЭлемент();
        спрСписокИзм.ИмяРеквизита   = ид;
        спрСписокИзм.ВидДействия    = 0;  // 0 - нов. 1 - ред. 2 - удал.
         спрСписокИзм.СтароеЗначение = СокрЛП(значение);
        спрСписокИзм.НовоеЗначение  = СокрЛП(Док.ПолучитьАтрибут(ид));
    
        спрСписокИзм.Записать();   


Это сообщение отредактировал(а) sergey_85 - 5.8.2009, 13:24


--------------------
A good design always pays off.
PM MAIL   Вверх
SaschaL
Дата 6.8.2009, 05:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 880
Регистрация: 13.12.2006
Где: Челябинская обл г .Нязепетровcк

Репутация: 8
Всего: 9



Скорее всего причина в том что в справочнике есть периодические реквизиты. Иной причины я не вижу пока, хотя если порыться возможно еще что будет видно!

Стукнись в аску если что ближе 12 часам по местному времени, к этому времени у меня обычно есть свободное пообщаться, тем более с земляками ;)

icq: 300-015-642
PM MAIL ICQ   Вверх
sergey_85
Дата 6.8.2009, 06:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 445
Регистрация: 17.4.2007
Где: Россия, Челябинск

Репутация: нет
Всего: 1



Спасибо, SaschaL!

Проблему я уже нашел, теперь осталось её решить.
Вот в чем дело у меня есть несколько зависимых справочников, они подчинены так: 

Код

лог->детализация->список изменений


в справочнике детализация есть поле(число) виддетализации, у него поставлен атрибут сортировать 
Код

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


Ну вот, если я убираю атрибут сортировать, то никаких ошибок - все записи заносятся в справочник список изменений корректно, ставлю атрибут реквизиту ВидДетализации сортировать и пошло-поехало (вылетает, записи не заносятся)!

Код

 //новое
        спрСписокИзм.Новый();
       
        спрСписокИзм.Владелец       = спрДетализация.ТекущийЭлемент();
        спрСписокИзм.ИмяРеквизита   = ид;
        спрСписокИзм.ВидДействия    = 0;  // 0 - нов. 1 - ред. 2 - удал.
         спрСписокИзм.СтароеЗначение = СокрЛП(значение);
        спрСписокИзм.НовоеЗначение  = СокрЛП(Док.ПолучитьАтрибут(ид));
    
        спрСписокИзм.Записать();   


От чего может быть такое? 
PS: периодических реквизитов в справочниках НЕТ!



--------------------
A good design always pays off.
PM MAIL   Вверх
SaschaL
Дата 6.8.2009, 08:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 880
Регистрация: 13.12.2006
Где: Челябинская обл г .Нязепетровcк

Репутация: 8
Всего: 9



Функция Сортировать используется для Списка и Таблицы значений. А в твоем случае это что?
PM MAIL ICQ   Вверх
sergey_85
Дата 6.8.2009, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 445
Регистрация: 17.4.2007
Где: Россия, Челябинск

Репутация: нет
Всего: 1



все вопрос решил!
это не функция, а сортировка - в св-во реквизита справочника


--------------------
A good design always pays off.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "1C: Предприятие, SAP, ERP и учётные системы"
stron

Запрещается!

1. Обсуждение крэков, кейгенов и других подобных программ

Пробуйте искать сами или обращайтесь в приват к участникам форума.

Темы с подобными вещами будут немедленно удаляться, а нарушители - получать предупреждения.

Также запрещается обсуждение проблем работы этих программ (что куда вписать, куда что скопировать и т.п...)

2. Давать ссылки на взломанные продукты

  • Пожалуйста, пользуйтесь поиском перед тем, как задать вопрос - возможно ответ уже есть на форуме.
  • Название темы должно отражать её суть
  • Действия модераторов можно обсудить здесь

С уважением, stron, Pegas.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | 1C: Предприятие, SAP, ERP и учётные системы | Следующая тема »


 




[ Время генерации скрипта: 0.0554 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.