Форум программистов, компьютерный форум, киберфорум
Наши страницы
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Phil
Эксперт 1С
404 / 281 / 86
Регистрация: 28.05.2014
Сообщений: 1,138
1

Преобразование реквизита строки тз в число

30.11.2014, 17:08. Просмотров 1830. Ответов 13
Метки нет (Все метки)

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
ТЗреализации = РезультатЗапроса[1].Выгрузить();
 
// пакет запроса доля клиента
ТЗдоля = РезультатЗапроса[2].Выгрузить();
 
//ДоляВЗаказе   = РезультатЗапроса[2].Выгрузить();
Количество=0;
НовыйТЗ = Новый ТаблицаЗначений;
 
НовыйТЗ.Колонки.Добавить("Документ");
НовыйТЗ.Колонки.Добавить("НомерДокумента");
НовыйТЗ.Колонки.Добавить("Номенклатура");
НовыйТЗ.Колонки.Добавить("Сумма");
НовыйТЗ.Колонки.Добавить("Процент");
НовыйТЗ.Колонки.Добавить("Менеджер");
НовыйТЗ.Колонки.Добавить("МаржаСРеализации");
 
Для каждого строка из ТЗреализации Цикл 
    Для каждого строка2 из ТЗдоля  Цикл
        Если (строка.ссылка1 = строка2.РТУ) Тогда
            строка3 = НовыйТЗ.Добавить();
            Для каждого строка3 из НовыйТЗ Цикл
                строка3.Документ=строка.ссылка1;
                строка3.НомерДокумента=строка.Номер;
                строка3.Номенклатура=строка.НоменклатураНаименование;
                строка3.Сумма=строка.сумма;
                Сум= ФОрмат (Число(строка3.Сумма),"ЧГ=0");
                строка3.Процент=строка2.Количество;
                Кол= ФОрмат (Число(строка3.Процент),"ЧГ=0");
                строка3.Менеджер=строка2.Менеджер;          
                   Если (строка3.Номенклатура = "Час работ по абонентскому договору")   Тогда
                    Маржа=0.5*Сум*Кол*0.01;
                строка3.МаржаСРеализации=Маржа;
            КонецЕсли;
            Сообщить (строка3.НомерДокумента + " " + строка3.Номенклатура + " " + строка3.Сумма+ " " + Строка3.маржаСРеализации);
 
        КонецЦикла;
    КонецЕсли;
    //Возврат НовыйТЗ;
 
КонецЦикла;
КонецЦикла;
выдаёт
1C
1
2
{Форма.Форма.Форма(264)}: Преобразование значения к типу Число не может быть выполнено
                Кол= ФОрмат (Число(строка3.Процент),"ЧГ=0");
что я делаю не так?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.11.2014, 17:08
Ответы с готовыми решениями:

Преобразование строки в число
НТовары.Нетто = Число(СокрЛП(Нетто)); не пойму почему не работает при условиях когда число...

Изменение цвета строки(ячейки) в зависимости от свойств реквизита спрв
Как в зависимости от свойств реквизита справочника,документа,ячейки таблицы значений можно...

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

Преобразование строки в число
Здравствуйте. Преобразовываю строку в число с помощью функции atoi(), но есть одна проблема: ...

Преобразование строки в число
задача : реализовать деление двух целых чисел, передаваемых функции в виде строк Всем добрый...

13
duk337
2950 / 1762 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
30.11.2014, 20:09 2
Число() не со всеми типами работает, особенно когда строка3 неопределена. Воспользуйся, например функцией вместо Число

1C
1
2
3
4
5
6
7
8
9
10
11
Функция Намбер(Значение) Экспорт
    Попытка
    Возврат Число(Значение);
    Исключение
        Попытка
        Возврат Число(СокрЛП(""+Значение));
        Исключение
        Возврат 0;
        КонецПопытки;
    КонецПопытки;
КонецФункции
1
Phil
Эксперт 1С
404 / 281 / 86
Регистрация: 28.05.2014
Сообщений: 1,138
30.11.2014, 21:34  [ТС] 3
duk337,

А как в условие воткнуть наименование поля, если оно содержит ""
например
1C
1
если   строка3.Номенклатура = "Продление лицензии на пп "ПП: ред 1.7" на 1 год" Тогда
внутренняя часть выпадает "ПП: ред 1.7"
0
duk337
2950 / 1762 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
30.11.2014, 22:26 4
"Продление лицензии на пп ""ПП: ред 1.7"" на 1 год"

Добавлено через 4 минуты
либо (педагогическое решение)
1C
1
2
ф="""ПП: ред 1.7""";
если строка3.Номенклатура = "Продление лицензии на пп "+ф+" на 1 год" Тогда
Добавлено через 1 минуту
говорят, можно апостроф вместо ""
0
wwall
198 / 192 / 13
Регистрация: 29.05.2014
Сообщений: 1,006
01.12.2014, 08:48 5
Цитата Сообщение от duk337 Посмотреть сообщение
Число() не со всеми типами работает,
но со всеми типами работает ОписаниеТипов

1C
1
2
3
4
Функция ВЧисло(х)
 у = новый ОписаниеТипов("Число");
 возврат у.ПривестиТип(х)
конецфункции
0
duk337
2950 / 1762 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
01.12.2014, 11:34 6
wwall, эт'точно... Только я бы и эту конструкцию сунул бы под попытку
0
wwall
198 / 192 / 13
Регистрация: 29.05.2014
Сообщений: 1,006
01.12.2014, 12:03 7
не надо. В случае если значение не приводимо к типу - вернется пустое значение конструируемого типа
Вся прелесть такого подхода в том что не возникает исключения
1
Dethmontt
Модератор
Эксперт 1С
2657 / 2445 / 420
Регистрация: 10.03.2011
Сообщений: 8,756
Записей в блоге: 1
Завершенные тесты: 1
01.12.2014, 12:17 8
1C
1
2
3
результат = Вчисло("а");
 
Результат = 0;
0
wwall
198 / 192 / 13
Регистрация: 29.05.2014
Сообщений: 1,006
01.12.2014, 12:22 9
а ты что ожидал? 42?
0
Dethmontt
Модератор
Эксперт 1С
2657 / 2445 / 420
Регистрация: 10.03.2011
Сообщений: 8,756
Записей в блоге: 1
Завершенные тесты: 1
01.12.2014, 15:06 10
Цитата Сообщение от wwall Посмотреть сообщение
а ты что ожидал? 42?
почему 42? 43 я ждал =)))
0
wwall
198 / 192 / 13
Регистрация: 29.05.2014
Сообщений: 1,006
01.12.2014, 15:11 11
https://lurkmore.to/42
0
Dethmontt
Модератор
Эксперт 1С
2657 / 2445 / 420
Регистрация: 10.03.2011
Сообщений: 8,756
Записей в блоге: 1
Завершенные тесты: 1
01.12.2014, 18:18 12
wwall,
http://absurdopedia.net/wiki/43
0
Phil
Эксперт 1С
404 / 281 / 86
Регистрация: 28.05.2014
Сообщений: 1,138
02.12.2014, 00:14  [ТС] 13
Дабы не плодить тем напишу здесь

как мне получить разность дат из двух таблиц значений и выразить их в месяцах, если эта разность равна 1, то условие выполняется.
1C
1
2
3
если    (строка3.Контрагент=строка.Контрагент  и строка3.НачалоПодписки-строка.ДатаОкончания=1) Тогда
            Сообщить ("Подходит" + строка3.Контрагент + " " + строка.ДатаОкончания);
        КонецЕсли;
что-то типо такого, только сразу ещё вопрос если предыдущий месяц был декабрь, а текущий январь, то подходит, но вот условие разности в 1 месяц уже не выполняется
0
wwall
198 / 192 / 13
Регистрация: 29.05.2014
Сообщений: 1,006
02.12.2014, 09:00 14
МесцевВПервойДате = Год(Дата1)*12+Месяц(Дата1);
МесяцевВоВторойДате = Год(Дата2)*12+Месяц(Дата2);
Разность = МесяцевВоВторойДате - МесцевВПервойДате;

Примерно так

Добавлено через 2 минуты
Запрос = новый Запрос("Выбрать РазностьДат(&Дата1,&Дата2,Месяц)");
Запрос.УстановитьПараметр("Дата1",Дата1);
Запрос.УстановитьПараметр("Дата2",Дата2);
Результат = Запрос.Выполнить().Выгрузить()[0][0];
1
02.12.2014, 09:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.12.2014, 09:00

Преобразование строки в число
Проблема. Имеется ini файл, в нем записаны цифровые параметры счетчиков Задача : Надо прочитать...

Преобразование строки в число
Есть строка с цифрами разделенная точкой с запятой: 1, 2, 3 string s = "1, 2, 3"; Как мне из этой...

Преобразование строки в число?
Написал функцию, которая введенную преобразует в число. Но при выводе пишет, что она хранит не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru