Имя: Пароль:
1C
1C 7.7
v7: Строковое значение в ячейке таблицы
0 namazi74
 
18.08.13
16:59
Добрый день. Знаю, что будете ругаться, но мозг себе уже сломал дорабатывая печатную форму. Необходимо в методе "УстановитьЗначение" добавить ячейку со строковым значением. Сейчас, всё что не добавляю, 1С преобразовывает в число, а строки, например, "111d" обрезает до "111". Строка кода:
ТаблицаТоваров.УстановитьЗначение(Стр,КолонкаТовара+"НДС",ЯПрНДС);

Переменная "ЯПрНДС" имеет строковый тип, но в отчёте выдаётся число. В Помощнике выдаётся, что можно преобразовать в Строку, прямо внутри скобок:
http://i46.fastpic.ru/big/2013/0818/6e/c3c57ee5f3042801be0714e00048476e.jpg
1 Злопчинский
 
18.08.13
17:00
Колонка КолонкаТовара+"НДС" имеет явный числовой тип. поэтому все что возможно преобразуется к числу
2 namazi74
 
18.08.13
17:10
но ведь число можно преобразовать в строку
3 namazi74
 
18.08.13
17:11
почитал во встроенном Синтаксис-помощнике:
УстановитьЗначение(<Строка>,<Колонка>,<Знач>)
Параметры:
<Строка> - номер строки.
<Колонка> - номер или идентификатор колонки.
<Знач> - устанавливаемое значение в ячейке таблицы.

т.е. КолонкаТовара+"НДС" - это ИД, вот только как <Знач> сделать строковым ?
4 Rie
 
18.08.13
17:17
(3) Посмотри, как создана эта таблица значений.
При создании колонки можно ограничить допустимые для неё типы.
Например,
ТЗ.НоваяКолонка("Кол2","Число");
и тогда в этой колонке - только числа будут.
(Судя по тому, что колонки у тебя называются ...НДС - вполне может оказаться, что там как раз и предполагалось хранить только числа).
5 namazi74
 
18.08.13
17:54
посмотрел - нигде нет задания параметров для новой колонки. причём если ввожу ЯПрНДс="1тест", оставляет "1", если - "тест1" - выводит пустую ячейку. Формат для чисел берёт вот такой: 123.00
6 Rie
 
18.08.13
17:59
(5) А откуда таблица эта взялась?
Может, её скопировали из другой таблицы, а там колонки были типизированы?
Как были созданы колонки для ...НДС? (Если ещё и формат вот такой - то явно параметры типа, длины и точности при создании колонки указывались).
7 ADirks
 
18.08.13
18:12
может, ТаблицаТоваров.УстановитьЗначение(Стр, ""+КолонкаТовара+"НДС",ЯПрНДС);
?
8 namazi74
 
18.08.13
18:30
(7) спасибо за содействие, но - нет. Т.К. КолонкаТовара+"НДС" это ИД колонки. Там сложный алгоритм формирования...

П.С. Фигово разбираться в чужом коде, да ещё и в 7.7, после 8.2...
9 namazi74
 
18.08.13
18:35
(6) нет, она не копировалась... Такое ощущение, что 1С сама тип формирует, но менять не даёт. Уже кипит серое вещество... Rie, не знаю, так делается или нет, но я могу Вам скинуть обработку на электронку ? Думаю, человеку с опытом там работы на 20 минут... Любая работа будет вознаграждена. Если честное слово в Интернете что-то значит конечно...
10 ADirks
 
18.08.13
18:43
смотри, как эти колонки создаются
ну, и поменяй типизацию с "Число" на "Строка"
11 Rie
 
18.08.13
18:43
(9) Код покажи, которым таблица значений создана.
12 namazi74
 
18.08.13
19:02
(11) ТаблицаТоваров.УстановитьЗначение(Стр,КолонкаТовара+"Оборот",РасчетныйОборот);
ТаблицаТоваров.УстановитьЗначение(Стр,КолонкаТовара+"Себестоимость",Себест_Т);
ТаблицаТоваров.УстановитьЗначение(Стр,КолонкаТовара+"НДС","1тест");  
//Установка значений. Для НДС уже добавил строковую константу (пусть выведет мне в каждой ячейке одно и тоже значение.
СписокВозможныхРезультатов = СоздатьОбъект("СписокЗначений");    СписокВозможныхРезультатов.ДобавитьЗначение("Оборот");     СписокВозможныхРезультатов.ДобавитьЗначение("Себестоимость");     СписокВозможныхРезультатов.ДобавитьЗначение("НДС");    
    СписокВсехРезультатов = СоздатьОбъект("СписокЗначений");
    СтрПР = 1;    
Пока СтрПР <= ПорядокРезультатов.РазмерСписка()  Цикл
    ИскЗнач = "";
    ИскЗнач = Строка(ПорядокРезультатов.ПолучитьЗначение(СтрПР));        СписокВсехРезультатов.ДобавитьЗначение(ИскЗнач);
СписокВозможныхРезультатов.УдалитьЗначение(СписокВозможныхРезультатов.НайтиЗначение(ИскЗнач));
СтрПР = СтрПР+1 ;
КонецЦикла;
13 Rie
 
18.08.13
19:06
(12) Которым таблица _создана_.
ТаблицаТоваров = СоздатьОбъект("ТаблицаЗначений");
а дальше что идёт?
Возможно, что было где-то
ВыгрузитьТабличнуюЧасть(ТаблицаТовары);
В этом случае колонки таблицы значений будут иметь те типы, что и соответствующие им реквизиты табличной части.
Ну и почитай о методе УстановитьПараметрыКолонки().
14 Злопчинский
 
18.08.13
21:20
(12) автор, елы-палы, ты понимаешь разницу между созданием таблицы 9то есть описанием ее структуры) и заполнением созданной таблицы данными..?
15 Злопчинский
 
18.08.13
21:22
скорее всего у автора наследие ТиСа
и таблица создается выгрузукой табличной части и добавлением нужных колонок в структуру таблицы...
.
а суда по (8) автор относится к "расстовлятелям галочек", поэтому и не может в 7.7 расколупаться, которая все-таки попроще чем 8-ка...
16 aka AMIGO
 
18.08.13
21:37
(5) ""посмотрел - нигде нет задания параметров для новой колонки.""

вроде ведь всё просто..

создаешь ТЗ, в следующих операторах создаешь колонки
ТаблицаТоваров = СоздатьОбъект("ТаблицаЗначений");
ТаблицаТоваров.НоваяКолонка("НДС", "Строка"); // по умолчанию - число, а явно - задаем тип - строка
ТаблицаТоваров.НоваяКолонка("Оборот"); // ту то-же самое, будет число
...
ТаблицаТоваров.ДобавитьЗначение(Стр, "НДС", "1тест");

ЗЫ. могу и ошибаться.. прошу заранее извинить :)
17 aka AMIGO
 
18.08.13
21:38
Всё-таки ошибся:
ТаблицаТоваров.УстановитьЗначение(Стр, "НДС", "1тест");
18 aka AMIGO
 
18.08.13
21:41
Параметры колонки можно посмотреть в отладчике
ТаблицаТоваров.ПолучитьПараметрыКолонки(... [смотрим СП])
19 namazi74
 
18.08.13
21:53
(18) (13) (14) спасибо за критику и советы. делаю, пробую, отпишусь о результатах
20 aka AMIGO
 
19.08.13
10:29
(19) вот этот оператор для меня непонятен, присоединяюсь к вопросу (13)
ТаблицаТоваров.УстановитьЗначение(Стр,КолонкаТовара+"НДС","1тест");

"КолонкаТовара" - это что?

"УстановитьЗначение" - это оператор присвоения, а не создания колонки.
По правилу обращения к этому оператору, во втором операнде должно быть наименование колонки (или номер)
и вот, чтобы к нему обратиться, колонка с наименованием КолонкаТовара+"НДС" - должна уже существовать.. Т.е. её, эту колонку, надо создать в начале процедуры (или в ином месте, до присвоения значения элементу ТЗ)

вот этот код тебя и просили показать
21 Rie
 
19.08.13
11:37
(0) "Дорабатывая печатную форму"!!!
"Не туда ты, отрок, колокольцы повесил" (c) старый неприличный анекдот
Не надо в _таблицу значений_ ничего пихать. Из неё берёшь данные, а свой значок "%" дописываешь уже при выводе в печатную форму.