Все равно все переигралось Клиент подумал и передумал. Теперь ему нужно, что бы при открытии Внешней обработки при нажатии кнопки, открывался пустой макет в котором будет кнопка Заполнить из эксель, ну и там уже выбирать файл Еще раз спасибо всем!
Уважаемые помогите пожалуйста! Не могу разобраться в чем проблема! Все в той же внешней обработке с той же табличной частью. В пользовательском режиме,пользователь в ручную копирует данные из экселя и вставляет в табличную часть формы. Но выводится следующее сообщение : "Строка №Х количество имеет не числовой формат!" И так по всем строкам в колонке КоличествоВУпаковкеПоУмолчанию. Сначала думал, что из-за того, что там нет чисел, т.е. колонка полностью пустая, но проставил там числа и то же сообщение выводится! Вот код :
Объект.ЕстьОшибки = Ложь; Для ТекущаяСтрока = 2 По ТабличныйДокумент.ВысотаТаблицы Цикл Группа = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C1").Текст); Код = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C2").Текст); Артикул = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C3").Текст); РабочееНаименование = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C4").Текст); НаименованиеДляПечати = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C5").Текст); Новинка = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C6").Текст); СтавкаНДС = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C7").Текст); ВидНоменклатуры = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C8").Текст); ТипНоменклатуры = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C9").Текст); ЕдиницаХранения = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C10").Текст); ВестиУчетПоГТД = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C11").Текст); Поставщик = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C12").Текст); Бренд = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C13").Текст);
Попытка
КоличествоВУпаковкеПоУмолчанию = Число(СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"С14").Текст)); Исключение КоличествоВУпаковкеПоУмолчанию = 0; Объект.ЕстьОшибки = Истина; Сообщить("Строка №"+ТекущаяСтрока+". Количество имеет не числовой формат!"); ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C14").Примечание.Текст = "Количество имеет не числовой формат!";
КонецПопытки;
МинимальныйЗаказ = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C15").Текст); Попытка ЦенаПоступления = Число(СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C16").Текст)); Исключение ЦенаПоступления = 0; Объект.ЕстьОшибки = Истина; Сообщить("Строка №"+ТекущаяСтрока+". Цена имеет не числовой формат!"); ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C16").Примечание.Текст = "Цена имеет не числовой формат!"; КонецПопытки; Попытка ЦенаБазовая = Число(СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C17").Текст)); Исключение ЦенаБазовая = 0; Объект.ЕстьОшибки = Истина; Сообщить("Строка №"+ТекущаяСтрока+". Цена имеет не числовой формат!"); ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C17").Примечание.Текст = "Цена имеет не числовой формат!"; КонецПопытки; ШтрихКод = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C18").Текст); Склад = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C19").Текст); СпособПополненияЗапаса = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C20").Текст); ВремяТранспортировки = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C21").Текст); Календарь = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C22").Текст); ПорядокПрименения = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C23").Текст); АртикулА = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C24").Текст); Наименование = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C25").Текст); Попытка Цена = Число(СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C26").Текст)); Исключение Цена = 0; Объект.ЕстьОшибки = Истина; Сообщить("Строка№"+ТекущаяСтрока+". Цена имеет не числовой формат!"); ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C26").Примечание.Текст = "Цена имеет не числовой формат!"; КонецПопытки;
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0
Цитата(MH.z @ 31.05.12, 11:29)
пользователь в ручную копирует данные из экселя и вставляет в табличную часть формы
Есть подозрение что при ручном копировании формат ячеек не переносится, и воспринимается как текст. Попробуйте до преобразования в число удалить из строки пробелы.
Личные бесплатные консультации не даю, для этого есть форум!
Вот вернулся снова к этой обработке. Только она уже не внешняя. Ситуация следующая. При копировании из экселя в табчасть формы данных при нажатии на кнопку Загрузить, данные записываются в справочник Номенклатура. Вот код :
&НаСервере Процедура М_Присвоение()
Для каждого ТЧ из Объект.Таблица Цикл Спр = Справочники.Номенклатура.СоздатьЭлемент(); Спр.Артикул = ТЧ.Артикул; Спр.Родитель = Справочники.Номенклатура.НайтиПоНаименованию("Новинки Весна 2012"); Спр.Наименование = ТЧ.РабочееНаименование; Спр.НаименованиеПолное = ТЧ.НаименованиеДляПечати;
Если ТЧ.СтавкаНДС = "СтавкаНДС" Тогда Спр.СтавкаНДС = Перечисления.СтавкаНДС.НДС18; КонецЕсли;
Если ТЧ.ВестиУчетПоГТД = "Да" Тогда Спр.ВестиУчетПоГТД = Истина; ИначеЕсли ТЧ.ВестиУчетПоГТД = "Нет" Тогда Спр.ВестиУчетПоГТД = Ложь; КонецЕсли; Спр.Записать();
Для каждого Стр ИЗ Спр.ДополнительныеРеквизиты Цикл Если Стр.Свойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Бренд") Тогда Стр.Значение = Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию("ТЧ.Бренд"); Если ТЧ.Новинка = "Да" Тогда Спр.Новинка = Истина; ИначеЕсли ТЧ.Новинка ="нет" тогда Спр.Новинка = Ложь; КонецЕсли;
Не записывает дополнительные реквизиты , Бренд, новинка и минимальный заказ. Не могу понять почему, и ошибки нет и записи тоже. Помогите пожалуйста! Спасибо!
Эти строки их там нет) Не правильно скопировал. Подскажите пожалуйста. Такая ситуация, при загрузке в справочник номенклатура задваиваются строки. Вообще расчитано единоразово загружать из документа новый товар. Но мне надо проверять же при загрузке. Как сделать, что бы каждый раз когда я открываю справочник до того как в него загружаю данные, он был пуст? А то как-то не весело смотреть на один и тот же товар в 20 строках...
Что то последний пост вообще не понятен. Что значит пуст? Зачем в него загружать? Вы же создаете новые элементы справочников и записываете их как он может быть пуст? Или Вам нужен дополнительный поиск по кодам, артикулам (наименованиям) для того что бы не было 20 одинаковых справочников?
// вместо Спр = Справочники.Номенклатура.СоздатьЭлемент(); ТекНоменклатура = Справочники.Номенклатура.НайтиПоНаименованию("Мое наименование"); Если ТекНоменклатура.ПустаяСсылка() Тогда Сообщить("Не найдена номенклатура! Создаем новый элемент"); Спр = Справочники.Номенклатура.СоздатьЭлемент(); Иначе Спр = ТекНоменклатура.ПолучитьОбъект();//дальше пишем в него КонецЕсли;
ЗЫ По наименованиям искать плохо.... А если кто то изменит название в экселе или справочнике?
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!