Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Загрузка из файла .xls в 1С. 2 страниц V  < 1 2          
MH.z Подменю пользователя
сообщение 29.05.12, 11:03
Сообщение #21

Говорящий
***
Группа: Пользователи
Сообщений: 75
Из: Харьков
Спасибо сказали: 0 раз
Рейтинг: 0

Все равно все переигралось sad.gif
Клиент подумал и передумал. Теперь ему нужно, что бы при открытии Внешней обработки при нажатии кнопки, открывался пустой макет в котором будет кнопка Заполнить из эксель, ну и там уже выбирать файл sad.gif
Еще раз спасибо всем!

MH.z Подменю пользователя
сообщение 31.05.12, 10:29
Сообщение #22

Говорящий
***
Группа: Пользователи
Сообщений: 75
Из: Харьков
Спасибо сказали: 0 раз
Рейтинг: 0

Уважаемые помогите пожалуйста! Не могу разобраться в чем проблема!
Все в той же внешней обработке с той же табличной частью. В пользовательском режиме,пользователь в ручную копирует данные из экселя и вставляет в табличную часть формы. Но выводится следующее сообщение : "Строка №Х количество имеет не числовой формат!" И так по всем строкам в колонке КоличествоВУпаковкеПоУмолчанию. Сначала думал, что из-за того, что там нет чисел, т.е. колонка полностью пустая, но проставил там числа и то же сообщение выводится! Вот код :
&НаСервере
Процедура ПолучитьТаблицуДанных(ТабличныйДокумент)
    
    Объект.ЕстьОшибки = Ложь;
    Для ТекущаяСтрока = 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").Примечание.Текст = "Цена имеет не числовой формат!";
        КонецПопытки;
        
                        
        НоваяСтрока = Объект.Таблица.Добавить();
        НоваяСтрока.Группа                         = Группа;
        НоваяСтрока.Код                            = Код;
        НоваяСтрока.Артикул                        = Артикул;
        НоваяСтрока.РабочееНаименование            = РабочееНаименование;
        НоваяСтрока.НаименованиеДляПечати          = НаименованиеДляПечати;
        НоваяСтрока.Новинка                        = Новинка;
        НоваяСтрока.СтавкаНДС                      = СтавкаНДС;
        НоваяСтрока.ВидНоменклатуры                = ВидНоменклатуры;
        НоваяСтрока.ТипНоменклатуры                = ТипНоменклатуры;
        НоваяСтрока.ЕдиницаХранения                = ЕдиницаХранения;
        НоваяСтрока.ВестиУчетПоГТД                 = ВестиУчетПоГТД;
        НоваяСтрока.Поставщик                      = Поставщик;
        НоваяСтрока.Бренд                          = Бренд;
        НоваяСтрока.КоличествоВУпаковкеПоУмолчанию = КоличествоВУпаковкеПоУмолчанию;
        НоваяСтрока.МинимальныйЗаказ               = МинимальныйЗаказ;
        НоваяСтрока.ЦенаПоступления                = ЦенаПоступления;
        НоваяСтрока.ЦенаБазовая                    = ЦенаБазовая;
        НоваяСтрока.Штрихкод                       = Штрихкод;
        НоваяСтрока.Склад                          = Склад;
        НоваяСтрока.СпособПополненияЗапаса         = СпособПополненияЗапаса;
        НоваяСтрока.ВремяТранспортировки           = ВремяТранспортировки;
        НоваяСтрока.Календарь                      = Календарь;
        НоваяСтрока.ПорядокПрименения              = ПорядокПрименения;
        НоваяСтрока.АртикулА                       = АртикулА;
        НоваяСтрока.Наименование                   = Наименование;
        НоваяСтрока.Цена                           = Цена;
    
    
    КонецЦикла;
    
КонецПроцедуры

Спасибо!

logist Подменю пользователя
сообщение 31.05.12, 11:38
Сообщение #23

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(MH.z @ 31.05.12, 11:29) *
пользователь в ручную копирует данные из экселя и вставляет в табличную часть формы

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


Signature
Личные бесплатные консультации не даю, для этого есть форум!

MH.z Подменю пользователя
сообщение 31.05.12, 12:01
Сообщение #24

Говорящий
***
Группа: Пользователи
Сообщений: 75
Из: Харьков
Спасибо сказали: 0 раз
Рейтинг: 0

Спасибо! Уже все исправил, нашел ошибку. как всегда паникую раньше времени sad.gif

Vofka Подменю пользователя
сообщение 31.05.12, 12:04
Сообщение #25

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13956
Из: Киев
Спасибо сказали: 4523 раз
Рейтинг: 3646.4

Цитата(MH.z @ 31.05.12, 13:01) *
как всегда паникую раньше времени

И как всегда решение никто не узнает 05040.gif

MH.z Подменю пользователя
сообщение 31.05.12, 12:13
Сообщение #26

Говорящий
***
Группа: Пользователи
Сообщений: 75
Из: Харьков
Спасибо сказали: 0 раз
Рейтинг: 0

Пардон!
Переписал строку
 КоличествоВУпаковкеПоУмолчанию = Число(СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"С14").Текст));


И все стало на свои места. Так же в случае если из экселя при копировании будут пустые колонки закоментировал строки:
 Сообщить("Строка№"+ТекущаяСтрока+". Цена имеет не числовой формат!");

Vofka Подменю пользователя
сообщение 31.05.12, 12:47
Сообщение #27

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13956
Из: Киев
Спасибо сказали: 4523 раз
Рейтинг: 3646.4

Цитата(MH.z @ 31.05.12, 13:13) *
И все стало на свои места. Так же в случае если из экселя при копировании будут пустые колонки закоментировал строки:

Я бы не комментировал. Вдруг каким-то образом в эксэле в какой-то числовой колонке кто-то букву вставит 05034.gif

MH.z Подменю пользователя
сообщение 08.06.12, 13:55
Сообщение #28

Говорящий
***
Группа: Пользователи
Сообщений: 75
Из: Харьков
Спасибо сказали: 0 раз
Рейтинг: 0

Вот вернулся снова к этой обработке. Только она уже не внешняя. Ситуация следующая. При копировании из экселя в табчасть формы данных при нажатии на кнопку Загрузить, данные записываются в справочник Номенклатура. Вот код :
&НаСервере
Процедура М_Присвоение()
    
    Для каждого ТЧ из Объект.Таблица Цикл
        Спр = Справочники.Номенклатура.СоздатьЭлемент();
        Спр.Артикул = ТЧ.Артикул;
        Спр.Родитель = Справочники.Номенклатура.НайтиПоНаименованию("Новинки Весна 2012");
        Спр.Наименование = ТЧ.РабочееНаименование;      
        Спр.НаименованиеПолное = ТЧ.НаименованиеДляПечати;
        
        Если ТЧ.СтавкаНДС = "СтавкаНДС" Тогда
            Спр.СтавкаНДС = Перечисления.СтавкаНДС.НДС18;
        КонецЕсли;
        
        Спр.ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("ТЧ.ВидНоменклатуры");
        
        Если  ТЧ.ТипНоменклатуры = "Товар" Тогда
            Спр.ТипНоменклатуры = Истина;
        ИначеЕсли ТЧ.ТипНоменклатуры = "Услуга" Тогда
            Спр.ТипНоменклатуры = Ложь;
            
        КонецЕсли;
        
        Спр.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("ТЧ.ЕдиницаХранения");
        
        Если ТЧ.ВестиУчетПоГТД = "Да" Тогда
            Спр.ВестиУчетПоГТД = Истина;
        ИначеЕсли ТЧ.ВестиУчетПоГТД = "Нет" Тогда
            Спр.ВестиУчетПоГТД = Ложь;
        КонецЕсли;
        Спр.Записать();
        
        
        Для каждого Стр ИЗ Спр.ДополнительныеРеквизиты Цикл
            Если Стр.Свойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Бренд") Тогда
                Стр.Значение = Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию("ТЧ.Бренд");
                Если ТЧ.Новинка = "Да" Тогда
                    Спр.Новинка = Истина;
                ИначеЕсли ТЧ.Новинка ="нет" тогда
                    Спр.Новинка = Ложь;
                КонецЕсли;
                
            КонецЕсли;
            Спр.МинимальныйЗаказ = ТЧ.МинимальныйЗаказ;
            Спр.Записать();
        КонецЦикла;
    КонецЦикла;
КонецПроцедуры

Не записывает дополнительные реквизиты , Бренд, новинка и минимальный заказ. Не могу понять почему, и ошибки нет и записи тоже. Помогите пожалуйста! Спасибо!

Сообщение отредактировал MH.z - 08.06.12, 14:02

MATEVI Подменю пользователя
сообщение 08.06.12, 14:20
Сообщение #29

Отдыхающий
Иконка группы
Ветеран троянской войныМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 2201
Из: Одесса
Спасибо сказали: 958 раз
Рейтинг: 0

А шо это такое?
Спр.ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("ТЧ.ВидНоменклатуры");
//и это
Спр.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("ТЧ.ЕдиницаХранения");


Сообщение отредактировал MATEVI - 08.06.12, 14:21

MH.z Подменю пользователя
сообщение 11.06.12, 13:22
Сообщение #30

Говорящий
***
Группа: Пользователи
Сообщений: 75
Из: Харьков
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(MATEVI @ 08.06.12, 15:20) *
А шо это такое?


Эти строки их там нет) Не правильно скопировал.
Подскажите пожалуйста. Такая ситуация, при загрузке в справочник номенклатура задваиваются строки. Вообще расчитано единоразово загружать из документа новый товар. Но мне надо проверять же при загрузке. Как сделать, что бы каждый раз когда я открываю справочник до того как в него загружаю данные, он был пуст? А то как-то не весело смотреть на один и тот же товар в 20 строках...


 i 

Правила п.13
 


Сообщение отредактировал MATEVI - 11.06.12, 13:43

MATEVI Подменю пользователя
сообщение 11.06.12, 13:42
Сообщение #31

Отдыхающий
Иконка группы
Ветеран троянской войныМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 2201
Из: Одесса
Спасибо сказали: 958 раз
Рейтинг: 0

Что то последний пост вообще не понятен. Что значит пуст? Зачем в него загружать? Вы же создаете новые элементы справочников и записываете их как он может быть пуст? Или Вам нужен дополнительный поиск по кодам, артикулам (наименованиям) для того что бы не было 20 одинаковых справочников?

MH.z Подменю пользователя
сообщение 11.06.12, 13:48
Сообщение #32

Говорящий
***
Группа: Пользователи
Сообщений: 75
Из: Харьков
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(MATEVI @ 11.06.12, 14:42) *
Или Вам нужен дополнительный поиск по кодам, артикулам (наименованиям) для того что бы не было 20 одинаковых справочников?


Да именно так и нужно. По наименованиям!

MATEVI Подменю пользователя
сообщение 11.06.12, 14:31
Сообщение #33

Отдыхающий
Иконка группы
Ветеран троянской войныМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 2201
Из: Одесса
Спасибо сказали: 958 раз
Рейтинг: 0

Цитата(MH.z @ 11.06.12, 14:48) *
Да именно так и нужно. По наименованиям!

Ну приблизительно вот так
// вместо Спр = Справочники.Номенклатура.СоздатьЭлемент();
ТекНоменклатура = Справочники.Номенклатура.НайтиПоНаименованию("Мое наименование");
Если ТекНоменклатура.ПустаяСсылка() Тогда        
        Сообщить("Не найдена номенклатура! Создаем новый элемент");
        Спр = Справочники.Номенклатура.СоздатьЭлемент();
Иначе
        Спр = ТекНоменклатура.ПолучитьОбъект();//дальше пишем в него
КонецЕсли;

ЗЫ По наименованиям искать плохо.... А если кто то изменит название в экселе или справочнике?

Сообщение отредактировал MATEVI - 11.06.12, 15:48

Спасибо сказали: MH.z,

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


2 страниц V  < 1 2
Ответить Новая тема
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 02.06.24, 0:15
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!