Имя: Пароль:
1C
1С v8
Преобразование значения к типу Число не может быть выполнено
,
0 vadiusias
 
22.06.16
09:04
http://clip2net.com/s/3zs2kEg

null в переменной не прилетает
1 vde69
 
22.06.16
09:06
ты пытаешься к числу прибавить букву
2 vde69
 
22.06.16
09:06
и потом вставляй код в пост а не дебильными картинками
3 vadiusias
 
22.06.16
09:07
Четн    = Четн   + Сред(ШтрКод, 2 * Индекс, 1);    {(1,43)}: Ошибка в выражении
4 vadiusias
 
22.06.16
09:08
ок
Четн    = 0;
    Нечетн    = 0;
       Если СтрДлина(ШтрКод) = 12 Тогда
        КолвоИтераций = 6;
    Иначе
        КолвоИтераций = 10;
    КонецЕсли;
    
    Для Индекс = 1 По КолвоИтераций Цикл
        Если Индекс = 10 Тогда
            Нечетн    = Нечетн + Сред(ШтрКод, 2 * Индекс - 1, 1);
        Иначе
            Четн    = Четн     + Сред(ШтрКод, 2 * Индекс, 1);
            Нечетн    = Нечетн + Сред(ШтрКод, 2 * Индекс - 1, 1);
        КонецЕсли;
    КонецЦикла;
    
    Если СтрДлина(ШтрКод) = 12 Тогда
        Четн = Четн * 3;
    Иначе
        Нечетн = Нечетн * 3;
    КонецЕсли;
    
    КонтЦифра = 10 - (Четн + Нечетн) % 10;
    Возврат ?(КонтЦифра = 10, "0", Строка(КонтЦифра));
КонецФункции//глАппаратныйКонтрольныйСимвол
5 birkoFFFF
 
22.06.16
09:08
Ты к чему-то прибавляешь строку и что хочешь получить?
6 vde69
 
22.06.16
09:08
представь что штрих код короткий и ты получишь такой оператор:
Четн    = Четн   + "";    

разумеется он не сможет преобразововать пустую строку к числу...
7 vadiusias
 
22.06.16
09:09
контрольное число
8 vde69
 
22.06.16
09:11
сделай функцию:

Функция А(Ч, ШтрКод, Индекс)
  Результат = Ч;
попытка
        Если Индекс = 10 Тогда
            Нечетн    = Нечетн + Сред(ШтрКод, 2 Индекс - 1, 1);
        Иначе
            Четн    = Четн     + Сред(ШтрКод, 2
Индекс, 1);
            Нечетн    = Нечетн + Сред(ШтрКод, 2 * Индекс - 1, 1);
        КонецЕсли;
исключение
конецПопытки

Возврат результатж


конецФункции
9 vadiusias
 
22.06.16
09:12
попрообую
10 vde69
 
22.06.16
09:17
наверно так лучше будет

Функция А(Ч, ШтрКод, Индекс, К)
  Результат = Ч;
  попытка
    Результат  = Ч + Сред(ШтрКод, Индекс, К);
  исключение
  конецПопытки
  Возврат результат;
конецФункции
11 Serg_1960
 
22.06.16
09:19
Наверное надо проверить сначала :)

Если СтроковыеФункцииКлиентСервер.ТолькоЦифрыВСтроке(ШтрКод) Тогда
...
12 vadiusias
 
22.06.16
09:22
Вот полный текст : Я пытаюсь сделать выгрузку. Штрих код состоит из 7-значного когда предприятия+таб.номера работника+контролное число. Затык известен.
Перем Connection;
//Provider=SQLOLEDB.1;Persist Security Info=False;User ID=ms;Initial Catalog=ExchangeFactory;Data Source=FEM-HEADSQL\HEADSQL
Процедура глПодключиться(Connection, Знач Сервер, Знач БазаДанных, Знач Пользователь, Знач Пароль)
    Перем СтрокаПодключения;
    
    //формируем строку подключения
    СтрокаПодключения = "Provider = SQLOLEDB.1;
                         |User ID="            + СокрЛП(Пользователь)    + ";
                         |Pwd="                + СокрЛП(Пароль)        + ";
                         |Initial Catalog="    + СокрЛП(БазаДанных)    + ";
                         |Data Source="        + СокрЛП(Сервер)        + ";";
                        
    //подключаемся к БД                    
    Попытка
        Connection = Новый COMОбъект("ADODB.Connection");
        Connection.Open(СтрокаПодключения);
        Сообщить("Подключились к базе данных " + СтрокаПодключения);
    Исключение
        Сообщить(ОписаниеОшибки());
    КонецПопытки;
КонецПроцедуры

Процедура глОтключиться(Connection)
    
    //отключаемся от БД
    Если Connection.State = 1 Тогда
        Попытка
            Connection.Close();
            Сообщить("Отключились от базы данных ");
        Исключение
            Сообщить(ОписаниеОшибки());
        КонецПопытки;
    КонецЕсли;  
КонецПроцедуры

Функция глАппаратныйКонтрольныйСимвол(
    ШтрКод    //вх    //(строка) 12-символьный или 19-символьный штрихкод (без контрольной цифры)
    )
//.........................................................................
    Четн    = 0;
    Нечетн    = 0;
       Если СтрДлина(ШтрКод) = 12 Тогда
        КолвоИтераций = 6;
    Иначе
        КолвоИтераций = 10;
    КонецЕсли;
    
    Для Индекс = 1 По КолвоИтераций Цикл
        Если Индекс = 10 Тогда
            Нечетн    = Нечетн + Сред(ШтрКод, 2 * Индекс - 1, 1);
        Иначе
            Четн    = Четн     + Сред(ШтрКод, 2 * Индекс, 1);
            Нечетн    = Нечетн + Сред(ШтрКод, 2 * Индекс - 1, 1);
        КонецЕсли;
    КонецЦикла;
    
    Если СтрДлина(ШтрКод) = 12 Тогда
        Четн = Четн * 3;
    Иначе
        Нечетн = Нечетн * 3;
    КонецЕсли;
    
    КонтЦифра = 10 - (Четн + Нечетн) % 10;
    Возврат ?(КонтЦифра = 10, "0", Строка(КонтЦифра));
КонецФункции//глАппаратныйКонтрольныйСимвол
Процедура КнопкаВыполнитьНажатие(Кнопка)
    
    Запрос = новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    СотрудникиОрганизаций.Код КАК ТН,
                   |    СотрудникиОрганизаций.Наименование КАК ФИО,
                   |    СотрудникиОрганизаций.Физлицо.ДатаРождения КАК ДР,
                   |    КонтактнаяИнформацияТел.Представление КАК Телефон,
                   |    КонтактнаяИнформацияАдр.Представление КАК Адрес
                   |ИЗ
                   |    Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
                   |        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                   |            КонтактнаяИнформация.Объект КАК Объект,
                   |            КонтактнаяИнформация.Тип КАК Тип,
                   |            КонтактнаяИнформация.Вид КАК Вид,
                   |            КонтактнаяИнформация.ЗначенияПолей КАК ЗначенияПолей,
                   |            КонтактнаяИнформация.Представление КАК Представление,
                   |            КонтактнаяИнформация.Поле1 КАК Поле1,
                   |            КонтактнаяИнформация.Поле2 КАК Поле2,
                   |            КонтактнаяИнформация.Поле3 КАК Поле3,
                   |            КонтактнаяИнформация.Поле4 КАК Поле4,
                   |            КонтактнаяИнформация.Поле5 КАК Поле5,
                   |            КонтактнаяИнформация.Поле6 КАК Поле6,
                   |            КонтактнаяИнформация.Поле7 КАК Поле7,
                   |            КонтактнаяИнформация.Поле8 КАК Поле8,
                   |            КонтактнаяИнформация.Поле9 КАК Поле9,
                   |            КонтактнаяИнформация.Поле10 КАК Поле10,
                   |            КонтактнаяИнформация.Комментарий КАК Комментарий,
                   |            КонтактнаяИнформация.ЗначениеПоУмолчанию КАК ЗначениеПоУмолчанию,
                   |            КонтактнаяИнформация.Поле11 КАК Поле11,
                   |            КонтактнаяИнформация.Поле12 КАК Поле12,
                   |            КонтактнаяИнформация.Поле13 КАК Поле13,
                   |            КонтактнаяИнформация.ТипДома КАК ТипДома,
                   |            КонтактнаяИнформация.ТипКорпуса КАК ТипКорпуса,
                   |            КонтактнаяИнформация.ТипКвартиры КАК ТипКвартиры,
                   |            КонтактнаяИнформация.ПользовательЛичногоКонтакта КАК ПользовательЛичногоКонтакта
                   |        ИЗ
                   |            РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
                   |        ГДЕ
                   |            КонтактнаяИнформация.Вид = &Вид) КАК КонтактнаяИнформацияТел
                   |        ПО СотрудникиОрганизаций.Физлицо = КонтактнаяИнформацияТел.Объект
                   |        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                   |            КонтактнаяИнформация.Объект КАК Объект,
                   |            КонтактнаяИнформация.Тип КАК Тип,
                   |            КонтактнаяИнформация.Вид КАК Вид,
                   |            КонтактнаяИнформация.ЗначенияПолей КАК ЗначенияПолей,
                   |            КонтактнаяИнформация.Представление КАК Представление,
                   |            КонтактнаяИнформация.Поле1 КАК Поле1,
                   |            КонтактнаяИнформация.Поле2 КАК Поле2,
                   |            КонтактнаяИнформация.Поле3 КАК Поле3,
                   |            КонтактнаяИнформация.Поле4 КАК Поле4,
                   |            КонтактнаяИнформация.Поле5 КАК Поле5,
                   |            КонтактнаяИнформация.Поле6 КАК Поле6,
                   |            КонтактнаяИнформация.Поле7 КАК Поле7,
                   |            КонтактнаяИнформация.Поле8 КАК Поле8,
                   |            КонтактнаяИнформация.Поле9 КАК Поле9,
                   |            КонтактнаяИнформация.Поле10 КАК Поле10,
                   |            КонтактнаяИнформация.Комментарий КАК Комментарий,
                   |            КонтактнаяИнформация.ЗначениеПоУмолчанию КАК ЗначениеПоУмолчанию,
                   |            КонтактнаяИнформация.Поле11 КАК Поле11,
                   |            КонтактнаяИнформация.Поле12 КАК Поле12,
                   |            КонтактнаяИнформация.Поле13 КАК Поле13,
                   |            КонтактнаяИнформация.ТипДома КАК ТипДома,
                   |            КонтактнаяИнформация.ТипКорпуса КАК ТипКорпуса,
                   |            КонтактнаяИнформация.ТипКвартиры КАК ТипКвартиры,
                   |            КонтактнаяИнформация.ПользовательЛичногоКонтакта КАК ПользовательЛичногоКонтакта
                   |        ИЗ
                   |            РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
                   |        ГДЕ
                   |            КонтактнаяИнформация.Вид = &Вид2) КАК КонтактнаяИнформацияАдр
                   |        ПО СотрудникиОрганизаций.Физлицо = КонтактнаяИнформацияАдр.Объект
                   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗП_СостояниеРаботниковОрганизаций.СрезПоследних(&Дата, ) КАК ЗП_СостояниеРаботниковОрганизацийСрезПоследних
                   |        ПО СотрудникиОрганизаций.Ссылка = ЗП_СостояниеРаботниковОрганизацийСрезПоследних.Сотрудник
                   |ГДЕ
                   |    СотрудникиОрганизаций.Наименование ПОДОБНО ""%(осн%""
                   |
                   |УПОРЯДОЧИТЬ ПО
                   |    СотрудникиОрганизаций.Наименование";
    Запрос.УстановитьПараметр("Вид", Справочники.ВидыКонтактнойИнформации.ТелефонФизЛица);
    Запрос.УстановитьПараметр("Вид2", Справочники.ВидыКонтактнойИнформации.НайтиПоКоду("00002"));
    Запрос.УстановитьПараметр("Дата", ТекущаяДата());
    
    ТЗ = Запрос.Выполнить().Выгрузить();
    ЭлементыФормы.ТЗ.СоздатьКолонки();
    //-----Сотавление строки    
    Для Каждого Эл Из ТЗ Цикл
        
        Строчка = "" + Эл.ТН;
        Пока СтрДлина(Строчка) < 5 Цикл
            Строчка = "0" + Строчка;
        КонецЦикла;
        Строчка = "1100269" + Строчка;
        Строчка = Строчка + глАппаратныйКонтрольныйСимвол(Строчка);
        Сообщить (Строчка);
        ТЗ.ТН = "'" + Строчка + "'";
        ТЗ.ФИО = "'" + СокрЛП(ТЗ.ФИО) + "'";
        ТЗ.ДР = "'" + СокрЛП(ТЗ.ДР) + "'";
        ТЗ.Адрес = "'" + Лев(СокрЛП(ТЗ.Адрес), 50) + "'";
        ТЗ.Телефон = "'" + Лев(СокрЛП(ТЗ.Телефон), 15) + "'";
            КонецЦикла;
    
    Для А = 0 По ТЗ.Количество()-1 Цикл
        Состояние("запись в СКЛ №" + А + " из " + ТЗ.Количество());
        Запрос = "UPDATE UserData SET " +  
                        " FIO =" + ТЗ[А].ФИО +
                        ", Birthday =" + ТЗ[А].ДР +
                        ", Address =" + ТЗ[А].Адрес +
                        ", Phone =" + ТЗ[А].Телефон +  
                        " WHERE Number = " + ТЗ[А].ТН;
        //Сообщить(Запрос);
    //    querySQL = serverSQL.Databases(СокрЛП(База)).ExecuteWithResults(Запрос);    
    КонецЦикла;
    Сообщить("Загружено");

    
    
    //Для А = 0 ПО ТЗ.Количество()-1 Цикл
    //    Сообщить("Сотрудник: "+ТЗ[А].СотрудникОрганизации);
    //    Сообщить("ТабНомер: "+ТЗ[А].ТабНомер);
    //    Сообщить("Дата приема: "+Формат(ТЗ[А].ДатаПриемаНаработу,"ДФ=dd.MM.yyyy"));
    //    Сообщить("Дата рождения: "+Формат(ТЗ[А].ДатаРождения,"ДФ=dd.MM.yyyy"));
    //    Если СокрЛП(ТЗ[А].Состояние) = "Уволен" Тогда
    //        Сообщить("Сотрудник уволен "+Формат(ТЗ[А].ДатаСобытия,"ДФ=dd.MM.yyyy"));
    //    Иначе    
    //        Сообщить("Сотрудник на сегодня работает");
    //    КонецЕсли;
    //    Сообщить("==========================================");
    //КонецЦикла;
     //Для А = 0 ПО ТЗ.Количество()-1 Цикл
    //    Сообщить("Сотрудник: "+ТЗ[А].СотрудникОрганизации);
    //    Сообщить("ТабНомер: "+ТЗ[А].ТабНомер);
    //    Сообщить("Дата приема: "+Формат(ТЗ[А].ДатаПриемаНаработу,"ДФ=dd.MM.yyyy"));
    //    Сообщить("Дата рождения: "+Формат(ТЗ[А].ДатаРождения,"ДФ=dd.MM.yyyy"));
    //    Если СокрЛП(ТЗ[А].Состояние) = "Уволен" Тогда
    //        Сообщить("Сотрудник уволен "+Формат(ТЗ[А].ДатаСобытия,"ДФ=dd.MM.yyyy"));
    //    Иначе    
    //        Сообщить("Сотрудник на сегодня работает");
    //    КонецЕсли;
    //    Сообщить("==========================================");
    //КонецЦикла;

    
КонецПроцедуры

Процедура КнопкаПодключитьсяНажатие(Элемент)
    глПодключиться(Connection, Сервер, БазаДанных, Пользователь, Пароль);
КонецПроцедуры

Процедура КнопкаОтключитьсяНажатие(Элемент)
    глОтключиться(Connection);
КонецПроцедуры
13 Serg_1960
 
22.06.16
09:40
PS: спасибо что не озвучили конфигурацию - её листинг я бы не осилил.
14 vadiusias
 
22.06.16
09:47
:)
15 vadiusias
 
22.06.16
13:37
добавил проверку пробелов     
Если СтрДлина(СокрЛП(ШтрКод)) = 12 Тогда
16 Shurjk
 
22.06.16
13:52
Предлагаю за термины типа "прилетает", "слетело", "подтягивает", выжигать клеймо - "Выше эникейщика в ИТ не ставить".
Т.к. весьма ярко они характеризуют специалиста.