Имя: Пароль:
1C
 
Какая максимальная длина строки в ТЗ?
0 lisss
 
15.02.06
17:05
Собственно, сабж....
ТЗ - таблица значений.
1 Simod
 
15.02.06
17:06
(0) А что собрался помещать?
2 Парижская фанера
 
15.02.06
17:07
А самому попробывать?.. Она еще вроде разная, в зависимости от тоо - привел ты ее к типу "Строка" или просто колонка.
3 lisss
 
15.02.06
17:08
(1)полное наименование номенклатуры.... Пишет: "Получаемая строка превысит допустимые размеры"....
4 АЛьФ
 
модератор
15.02.06
17:10
2(3) 1С это пишет не когда ты пытаешься строку в ТЗ записать, а когда ты эту строку выводишь куда-то (например, в окно сообщений).
5 lisss
 
15.02.06
17:11
(4)фича в том, что если не выводить, то в ТЗ тоже не записывает....
6 Simod
 
15.02.06
17:12
(3) Строка? Длина какая?
7 lisss
 
15.02.06
17:13
В общем, сделал в справочнике строковый реквизит, длину задал 900, туда записал несколько значений, но всего по 10 символов.... при попытке вывести или в ТЗ записать получается эта байда.
8 АЛьФ
 
модератор
15.02.06
17:13
2(5) Значит что-то не так делаешь.
9 lisss
 
15.02.06
17:16
хм... а если в отладчике глянуть, то получается ПустоеЗначение(Спр.Комент)=1... это капец базе приходит, да?
10 Simod
 
15.02.06
17:18
(9) А может ты туда ничего не записал?
11 lisss
 
15.02.06
17:20
(10) и поэтому  "Получаемая строка превысит допустимые размеры"?
12 Heckfy
 
15.02.06
17:20
Код в студию
13 lisss
 
15.02.06
17:20
(12)код чего? заполнения? вывода?
14 Heckfy
 
15.02.06
17:21
Давай и то и то
15 Ветеран
 
15.02.06
17:21
(9) Мдя ...
16 АЛьФ
 
модератор
15.02.06
17:23
2(11) Если ты задал строковый реквизит с длиной 900, то там будет 900 пробелов.
Скорее всего у тебя присвоение идет по типу:
Спр.Рек = "";
Спр.Рек = Спр.Рек + "что-то";
(где "Рек" - это строковый реквизит длиной 900)
Так вот это неправильно. У тебя там всегда будет 900 пробелов вместо строки.
Надо делать так:
Спр.Рек = СокрЛП(Спр.Рек) + "что-то";
17 lisss
 
15.02.06
17:25
Процедура Сформировать()
   Спр = СоздатьОбъект("Справочник.Запчасти");
   Спр.ВыбратьЭлементы();          
   НМ = 0;
   Пока Спр.ПолучитьЭлемент()=1 Цикл        
       НМ = НМ+1;
       Спр.Комментарий1 ="ПоДшИпНиК"+Строка(НМ) ;
       Спр.Записать();  
       если НМ=500 тогда
           прервать
       конецесли;
   КонецЦикла;
КонецПроцедуры

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

Только не надо говорит, что надо "Для" в первом примере....
18 lisss
 
15.02.06
17:26
+(17)во втором примере "Справочник.Запчасти"...
19 lisss
 
15.02.06
17:26
(16)я знаю.... так и делаю...
20 Иде я
 
15.02.06
17:27
Я наверное а танке...а где здесь таблица значений?
21 lisss
 
15.02.06
17:30
(20)вместо "Сообщить(Спр.Комментарий1);" напиши "ТЗ.НоваяСтрока(); ТЗ.Ком = Спр.Комментарий1;"
22 lisss
 
15.02.06
17:31
я извиняюсь за неровный почерк, просто пишу с ноута, причем не со своего...
23 Иде я
 
15.02.06
17:32
А как в ТЗ столбец определили ?
24 lisss
 
15.02.06
17:34
пробовал вобще не определять... пробовал строкой....
25 lisss
 
15.02.06
17:34
+(24)длину правда не указывал...
26 lisss
 
15.02.06
17:38
+(25)а все-равно не записывает, даже если длину указать....
27 Ветеран
 
15.02.06
17:40
Ты (4) читал? Внимательно?
28 АЛьФ
 
модератор
15.02.06
17:44
Почему ты заполняешь справочник "Запчасти", а выводишь из справочника "Номенклатура"?
29 Dupon
 
15.02.06
17:46
Зачем такую длину задавать? Поставь для строкового неогр.
Попробуй вывести без условия Если ПустоеЗначение()... посмотреть что получиться!
30 lisss
 
15.02.06
17:50
(27)да, так и есть, но если записывать в ТЗ, то ТЗ не заполняется.
(28)я поправился в (18) и извинился в (22)
(29)не надо неограниченного, нужна длина определенная.
31 lisss
 
15.02.06
17:52
ладно, извините за беспокойство... если разберусь - отпишу сюда... всем спасибо...
32 АЛьФ
 
модератор
15.02.06
17:54
2(30) Ты бы показал реальный код, на котором у тебя это происходит, а не придумывал бы на ходу примеры.
33 lisss
 
15.02.06
18:06
(32)
Процедура Сформировать()
   Спр = СоздатьОбъект("Справочник.Запчасти");
   Спр.ВыбратьЭлементы();          
   НМ = 0;
   Пока Спр.ПолучитьЭлемент()=1 Цикл        
     Если Спр.Заказ = 1 Тогда  
       НМ = НМ+1;
       Спр.Комментарий1 ="ПоДшИпНиК"+Строка(НМ) ;
       Спр.Записать();  
     КонецЕсли;
   КонецЦикла;
КонецПроцедуры

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

вот так было изначально.... в результате: в ТЗ есть строки но колонка Ком остается пустой...
Реквизит Комментарий1 имеет тип "Строка", длина 900....
34 Heckfy
 
15.02.06
18:18
(33) попробуй так:


Процедура Вывести()
Сч=0;
   ТЗ = СоздатьОбъект("ТаблицаЗначений");
   ТЗ.НоваяКолонка("Ком",,,,,,,);
   Спр = СоздатьОбъект("Справочник.Запчасти");
   Спр.ВыбратьЭлементы();          
   Пока Спр.ПолучитьЭлемент()=1 Цикл
      Если ПустоеЗначение(Спр.Комментарий1)=0 Тогда
Сч=Сч+1;
                   ТЗ.НоваяСтрока(Сч);
       ТЗ.УстановитьЗначение(Сч,"Ком",Спр.Комментарий1);
       КонецЕсли;
   КонецЦикла;
КонецПроцедуры
35 Dupon
 
15.02.06
18:34
Вопрос: Как у тебя получился реквизит строка с длиною 900?
У меня в Конфигураторе либо 99 либо неогр.
36 Dupon
 
15.02.06
18:41
У меня все выводится.
Процедура Сформировать()
   Спр = СоздатьОбъект("Справочник.Номенклатура");
   Спр.ВыбратьЭлементы();          
   НМ = 0;
   Пока Спр.ПолучитьЭлемент()=1 Цикл        
     //Если Спр.Заказ = 1 Тогда  
       НМ = НМ+1;
       Спр.Коментарий1 ="ПоДшИпНиК"+Строка(НМ) ;
       Спр.Записать();  
     //КонецЕсли;
   КонецЦикла;
КонецПроцедуры

Процедура Вывести()
   //ТЗ = СоздатьОбъект("ТаблицаЗначений");
   ТЗ.НоваяКолонка("Ком");
   Спр = СоздатьОбъект("Справочник.Номенклатура");
   Спр.ВыбратьЭлементы();          
   Пока Спр.ПолучитьЭлемент()=1 Цикл        
       Если ПустоеЗначение(Спр.Коментарий1)=0 Тогда
           ТЗ.НоваяСтрока();
           ТЗ.Ком = Спр.Коментарий1;
           Сообщить(Спр.Коментарий1);
       КонецЕсли;
   КонецЦикла;
КонецПроцедуры
37 Dupon
 
15.02.06
18:45
Все ясно! У тебя нет в справочнике Запчасти никакого реквизита Комментарий1 с типом строка, т.к. в реквизите длина строки может быть только 99 или неограниченная. Если же в форму элемента ввести поле для ввода с типом строка, то для него можно установить длину в 999 символов, но тогда ты не сможешь обратиться к нему как к реквизиту справочника!
38 lisss
 
16.02.06
09:09
Под пытками было вырвано признание у чела, что поле в таблице добавлялось с помощью Microsoft Access. Проблема была решена восстановлением из резервной копии и добавлением нормальными штатными средствами 1С.
(37)прислать скрин где у меня реквизит с типом строка и длиной 900?
Основная теорема систематики: Новые системы плодят новые проблемы.