|
Преобразование значения к типу Число не может быть выполнено | ☑ | ||
---|---|---|---|---|
0
vadiusias
22.06.16
✎
09:04
|
||||
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
|
Предлагаю за термины типа "прилетает", "слетело", "подтягивает", выжигать клеймо - "Выше эникейщика в ИТ не ставить".
Т.к. весьма ярко они характеризуют специалиста. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |