Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) ИндексированнаяТаблица (число прочтений - 9037 )
Xolod
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 11
Зарегистрирован: 21. Мая 2006
ИндексированнаяТаблица
26. Июля 2006 :: 14:29
Печать  
И так все сначала...
проблема:  при методе показать 1с вылетает напрочь че не так
....

     ИТБ = СоздатьОбъект("ИндексированнаяТаблица");
     ТЗ = СоздатьОбъект("ТаблицаЗначений");
     СчНайден = 0;      
     
     ДокОсн.ВыбратьСтроки();
     
     Пока ДокОСн.ПолучитьСтроку() = 1 Цикл
         Если (СчТовараФИФО.Принадлежит(Строка(ДокОСн.СчетД)) = 1)
              И (ДокОСн.СчетК.Количественный = 1)
              И (ДокОСн.Количество <> 0  )
             Тогда
           СчНайден = 1;      
           Иначе
                 Продолжить;
         КонецЕсли;
     КонецЦикла;       
     
     Если СчНайден <> 0  Тогда
           ДокОсн.выгрузитьТабличнуюЧасть(ТЗ);             
           
           СчТовара = СоздатьОбъект("СписокЗначений");
           СчТовара.ИзСтрокиСРазделителями("""28.7"",""28.3"",""22.1.1"",""22.1.2"", ""20.1.1"",""20.1.2"",""20.2"", ""20.3"", ""20.4"", ""20.5"", ""20.7"", ""20.8"", ""20.9"", ""20.10""");
        
           ИТБ.Загрузить(ТЗ);
           ИТБ.ДобавитьИндекс("ИнСчетДК","#СчетД, СчетК",0);
           ИТБ.УстановитьФильтр(СчТовара,СчТовара,"ИнСчетДК");
     КонецЕсли;
     ИТБ.Показать() //вот тут приходи писец
....
  
Наверх
 
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


1С++ любитель

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: ИндексированнаяТаблица
Ответ #1 - 27. Июля 2006 :: 03:38
Печать  
это конечно нехорошо, что 1С вылетает, но в качестве заплатки, может пока что проверять ИТЗ на предмет наличия в ней строк(или хотя бы колонок) перед методом Показать()?

а так - похоже она у тебя может быть пустой в этом месте
  
Наверх
 
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: ИндексированнаяТаблица
Ответ #2 - 27. Июля 2006 :: 03:46
Печать  
DrACe писал(а) 27. Июля 2006 :: 03:38:
это конечно нехорошо, что 1С вылетает, но в качестве заплатки, может пока что проверять ИТЗ на предмет наличия в ней строк(или хотя бы колонок) перед методом Показать()?

а так - похоже она у тебя может быть пустой в этом месте

Да не, тут что-то другое. Уменя и с пустой всё нормально. И с непустой тоже. В общем, хоть тресни, а у меня этот метод 1С ни разу не валит.

2 Xolod:  ты можешь точно отловить, при каких условиях происходит вылет?  По тому коду что ты привёл нифига не понятно, как ИТБ заполняется.
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ИндексированнаяТаблица
Ответ #3 - 27. Июля 2006 :: 05:58
Печать  
Xolod, а у тебя какая версия 1с++? У меня так было в старых...
  
Наверх
 
IP записан
 
AzagTOT
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 8
Зарегистрирован: 27. Июля 2006
Re: ИндексированнаяТаблица
Ответ #4 - 27. Июля 2006 :: 07:44
Печать  
Это все тот же Xolod (ИМХО на мыло надо высылать пароль а сцылку)
1.таблица не пустая
2. версия 2.0.3.0
3. в какой момент вылетат я указал - если использовтаь метод показать()

ЗЫ код немного кривовайтый, но в момент написания решил исользовать Индексированню таблицу дабы не писать кучу условий и циклов для проверки

ЗЫЫ пачаму не хочет загружать из документа, приходить выгружать в таблицу значений а потом в инд.табл ?
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ИндексированнаяТаблица
Ответ #5 - 27. Июля 2006 :: 07:46
Печать  
AzagTOT писал(а) 27. Июля 2006 :: 07:44:
2. версия 2.0.3.0

Нет такой версии. Есть ночные сборки. Ты последнюю брал?
  

FormEx developer
Наверх
www  
IP записан
 
AzagTOT
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 8
Зарегистрирован: 27. Июля 2006
Re: ИндексированнаяТаблица
Ответ #6 - 27. Июля 2006 :: 07:48
Печать  
ну если взять ночную версую то там будет написано 2.0.3.0!
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ИндексированнаяТаблица
Ответ #7 - 27. Июля 2006 :: 07:54
Печать  
AzagTOT писал(а) 27. Июля 2006 :: 07:48:
ну если взять ночную версую то там будет написано 2.0.3.0!

Нет. Там будет совсем не так написано.
  

FormEx developer
Наверх
www  
IP записан
 
AzagTOT
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 8
Зарегистрирован: 27. Июля 2006
Re: ИндексированнаяТаблица
Ответ #8 - 27. Июля 2006 :: 08:03
Печать  
По твоему я из пальца высосал это?
Свойства файла - версия 2.0.3.0!
  
Наверх
 
IP записан
 
AzagTOT
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 8
Зарегистрирован: 27. Июля 2006
Re: ИндексированнаяТаблица
Ответ #9 - 27. Июля 2006 :: 08:10
Печать  
Показать и версия это фигня
тут интереснее

ТБ_И.ДобавитьИндекс("ИнСчетДК","#СчетД, СчетК",1);
ТБ_И.УстановитьФильтр(СчТовара,СчТовара,"ИнСчетДК");

Если ТБ_И.КоличествоСтрок("ИнСчетДК") <> 0 Тогда   
                                   
КонецЕсли;
Условие не выполниться, но 1 строка  существует (как и в таблице источнике, так и после установка фильтра)
тоже самое в методах;
выбратьстроки()
и
получитьстроку()
если указать имя индекса


  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ИндексированнаяТаблица
Ответ #10 - 27. Июля 2006 :: 08:21
Печать  
AzagTOT писал(а) 27. Июля 2006 :: 08:03:
По твоему я из пальца высосал это?
Свойства файла - версия 2.0.3.0!

Там еще есть "Nightly build ГГГГ-ММ-ДД ".
  

FormEx developer
Наверх
www  
IP записан
 
AzagTOT
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 8
Зарегистрирован: 27. Июля 2006
Re: ИндексированнаяТаблица
Ответ #11 - 27. Июля 2006 :: 08:45
Печать  
Nightly build 2006-07-27

вообщем та же хрень с показать(), удивительно что 1 раз показало, последующие попытки заканчиваються вылотом 1С. Предлолагаю это локальные грабли на ПК.
Остальное не проверял но думаю результат будет тотже
  
Наверх
 
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: ИндексированнаяТаблица
Ответ #12 - 27. Июля 2006 :: 08:58
Печать  
AzagTOT писал(а) 27. Июля 2006 :: 08:10:
Показать и версия это фигня
тут интереснее

ТБ_И.ДобавитьИндекс("ИнСчетДК","#СчетД, СчетК",1);
ТБ_И.УстановитьФильтр(СчТовара,СчТовара,"ИнСчетДК");

Если ТБ_И.КоличествоСтрок("ИнСчетДК") <> 0 Тогда   
                                   
КонецЕсли;
Условие не выполниться, но 1 строка  существует (как и в таблице источнике, так и после установка фильтра)
тоже самое в методах;
выбратьстроки()
и
получитьстроку()
если указать имя индекса

Дык, у тебя в документе небось счета, а в фильте строки. Ясен перец у тебя ничего в выборку с таким фильтром не попадёт. Более того, ты похоже неправильно понимаешь суть фильтров в ИТ. Фильтр - это 2 границы, а не набор допустимых значений. Т.е. фильтр работает по принципу "от 3 до 120", а не "3 либо 7 либо 11 либо 13"

А без промежуточной ТЗ можно обойтись: ТБ_И.Загрузить(ДокОсн);

И ещё, я бы всё же написал  ТБ_И.ДобавитьИндекс("ИнСчетДК","#СчетД, #СчетК",1); а не  ТБ_И.ДобавитьИндекс("ИнСчетДК","#СчетД, СчетК",1);

PS у меня так ничего и не упало
  
Наверх
 
IP записан
 
AzagTOT
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 8
Зарегистрирован: 27. Июля 2006
Re: ИндексированнаяТаблица
Ответ #13 - 27. Июля 2006 :: 09:11
Печать  
"....Если же индекс по нескольким колонкам, то ключ должен быть СписокЗначений, содержащий значения ключевых колонок"  - ничего не сказано про последовательность

ТБ_И.НомерСтроки() <> 0 Тогда
НоваяСтрока();
....
заполняется из той единственной строки которая соотвествует фильтру
а что будет если несколько строк попадут под фильтр?

падает только на методе показать()
  
Наверх
 
IP записан
 
AzagTOT
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 8
Зарегистрирован: 27. Июля 2006
Re: ИндексированнаяТаблица
Ответ #14 - 27. Июля 2006 :: 09:36
Печать  
С фильтром вроде разобрался спасибо ADirks
а вот с методом показать() обидно Смущённый
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать