|
v7: Строковое значение в ячейке таблицы | ☑ | ||
---|---|---|---|---|
0
namazi74
18.08.13
✎
16:59
|
Добрый день. Знаю, что будете ругаться, но мозг себе уже сломал дорабатывая печатную форму. Необходимо в методе "УстановитьЗначение" добавить ячейку со строковым значением. Сейчас, всё что не добавляю, 1С преобразовывает в число, а строки, например, "111d" обрезает до "111". Строка кода:
ТаблицаТоваров.УстановитьЗначение(Стр,КолонкаТовара+"НДС",ЯПрНДС); Переменная "ЯПрНДС" имеет строковый тип, но в отчёте выдаётся число. В Помощнике выдаётся, что можно преобразовать в Строку, прямо внутри скобок: http://i46.fastpic.ru/big/2013/0818/6e/c3c57ee5f3042801be0714e00048476e.jpg |
21 |
||
1
Злопчинский
18.08.13
✎
17:00
|
Колонка КолонкаТовара+"НДС" имеет явный числовой тип. поэтому все что возможно преобразуется к числу
|
|||
2
namazi74
18.08.13
✎
17:10
|
но ведь число можно преобразовать в строку
|
|||
3
namazi74
18.08.13
✎
17:11
|
почитал во встроенном Синтаксис-помощнике:
УстановитьЗначение(<Строка>,<Колонка>,<Знач>) Параметры: <Строка> - номер строки. <Колонка> - номер или идентификатор колонки. <Знач> - устанавливаемое значение в ячейке таблицы. т.е. КолонкаТовара+"НДС" - это ИД, вот только как <Знач> сделать строковым ? |
4 |
||
4
Rie
18.08.13
✎
17:17
|
(3) Посмотри, как создана эта таблица значений.
При создании колонки можно ограничить допустимые для неё типы. Например, ТЗ.НоваяКолонка("Кол2","Число"); и тогда в этой колонке - только числа будут. (Судя по тому, что колонки у тебя называются ...НДС - вполне может оказаться, что там как раз и предполагалось хранить только числа). |
|||
5
namazi74
18.08.13
✎
17:54
|
посмотрел - нигде нет задания параметров для новой колонки. причём если ввожу ЯПрНДс="1тест", оставляет "1", если - "тест1" - выводит пустую ячейку. Формат для чисел берёт вот такой: 123.00
|
6 16 |
||
6
Rie
18.08.13
✎
17:59
|
(5) А откуда таблица эта взялась?
Может, её скопировали из другой таблицы, а там колонки были типизированы? Как были созданы колонки для ...НДС? (Если ещё и формат вот такой - то явно параметры типа, длины и точности при создании колонки указывались). |
9 |
||
7
ADirks
18.08.13
✎
18:12
|
может, ТаблицаТоваров.УстановитьЗначение(Стр, ""+КолонкаТовара+"НДС",ЯПрНДС);
? |
8 |
||
8
namazi74
18.08.13
✎
18:30
|
(7) спасибо за содействие, но - нет. Т.К. КолонкаТовара+"НДС" это ИД колонки. Там сложный алгоритм формирования...
П.С. Фигово разбираться в чужом коде, да ещё и в 7.7, после 8.2... |
15 |
||
9
namazi74
18.08.13
✎
18:35
|
(6) нет, она не копировалась... Такое ощущение, что 1С сама тип формирует, но менять не даёт. Уже кипит серое вещество... Rie, не знаю, так делается или нет, но я могу Вам скинуть обработку на электронку ? Думаю, человеку с опытом там работы на 20 минут... Любая работа будет вознаграждена. Если честное слово в Интернете что-то значит конечно...
|
11 |
||
10
ADirks
18.08.13
✎
18:43
|
смотри, как эти колонки создаются
ну, и поменяй типизацию с "Число" на "Строка" |
|||
11
Rie
18.08.13
✎
18:43
|
(9) Код покажи, которым таблица значений создана.
|
12 |
||
12
namazi74
18.08.13
✎
19:02
|
(11) ТаблицаТоваров.УстановитьЗначение(Стр,КолонкаТовара+"Оборот",РасчетныйОборот);
ТаблицаТоваров.УстановитьЗначение(Стр,КолонкаТовара+"Себестоимость",Себест_Т); ТаблицаТоваров.УстановитьЗначение(Стр,КолонкаТовара+"НДС","1тест"); //Установка значений. Для НДС уже добавил строковую константу (пусть выведет мне в каждой ячейке одно и тоже значение. СписокВозможныхРезультатов = СоздатьОбъект("СписокЗначений"); СписокВозможныхРезультатов.ДобавитьЗначение("Оборот"); СписокВозможныхРезультатов.ДобавитьЗначение("Себестоимость"); СписокВозможныхРезультатов.ДобавитьЗначение("НДС"); СписокВсехРезультатов = СоздатьОбъект("СписокЗначений"); СтрПР = 1; Пока СтрПР <= ПорядокРезультатов.РазмерСписка() Цикл ИскЗнач = ""; ИскЗнач = Строка(ПорядокРезультатов.ПолучитьЗначение(СтрПР)); СписокВсехРезультатов.ДобавитьЗначение(ИскЗнач); СписокВозможныхРезультатов.УдалитьЗначение(СписокВозможныхРезультатов.НайтиЗначение(ИскЗнач)); СтрПР = СтрПР+1 ; КонецЦикла; |
13 14 |
||
13
Rie
18.08.13
✎
19:06
|
(12) Которым таблица _создана_.
ТаблицаТоваров = СоздатьОбъект("ТаблицаЗначений"); а дальше что идёт? Возможно, что было где-то ВыгрузитьТабличнуюЧасть(ТаблицаТовары); В этом случае колонки таблицы значений будут иметь те типы, что и соответствующие им реквизиты табличной части. Ну и почитай о методе УстановитьПараметрыКолонки(). |
19 20 |
||
14
Злопчинский
18.08.13
✎
21:20
|
(12) автор, елы-палы, ты понимаешь разницу между созданием таблицы 9то есть описанием ее структуры) и заполнением созданной таблицы данными..?
|
19 |
||
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 |
||
19
namazi74
18.08.13
✎
21:53
|
20 |
|||
20
aka AMIGO
19.08.13
✎
10:29
|
(19) вот этот оператор для меня непонятен, присоединяюсь к вопросу (13)
ТаблицаТоваров.УстановитьЗначение(Стр,КолонкаТовара+"НДС","1тест"); "КолонкаТовара" - это что? "УстановитьЗначение" - это оператор присвоения, а не создания колонки. По правилу обращения к этому оператору, во втором операнде должно быть наименование колонки (или номер) и вот, чтобы к нему обратиться, колонка с наименованием КолонкаТовара+"НДС" - должна уже существовать.. Т.е. её, эту колонку, надо создать в начале процедуры (или в ином месте, до присвоения значения элементу ТЗ) вот этот код тебя и просили показать |
|||
21
Rie
19.08.13
✎
11:37
|
(0) "Дорабатывая печатную форму"!!!
"Не туда ты, отрок, колокольцы повесил" (c) старый неприличный анекдот Не надо в _таблицу значений_ ничего пихать. Из неё берёшь данные, а свой значок "%" дописываешь уже при выводе в печатную форму. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |