Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: загрузка свойств номенклатуры из xls
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
Korotkiy
Добрый вечер!
1с7.7 платформа 7.70.027
Типовая конфигурация "Торговля+Склад" редакция 9,2
Оптово-розничная конфигурация 7.70.935

Подскажите что у меня неправильно. Никак непойму чтото , выкидывает ошибку
Цитата
<<?>>Процедура ПоКнопкеЗагрузить() Далее
{H:\загрузка свойств.ert(56)}: Определения процедур и функций должны размещаться перед операторами основной программы

Ну и в целом правильно ли я написал ?
Вообщем нужно в номенклатуре присвоить ряд свойств. в ручную не вариант т.к. номенклатуры 50к позиций
решил сдалать обработку которая загрузит из экселя, в голове понимаю что должно быть , а вот с реализацией не очень ...
Перем НомерСтроки;   
Перем Ид;
Перем Эксель;
Перем Книга;
Перем Лист;
Перем ИмяФайлаЗагрузки;


Запрос = СоздатьОбъект("Запрос");
СпрСвойств = СоздатьОбъект("Справочник.ВидыСвойств");        
СпрЗначСвойств = СоздатьОбъект("Справочник.ЗначенияСвойств");
СпрСвойствНом = СоздатьОбъект("Справочник.СвойстваНоменклатуры");  


//******************************************************************************
// ПоКнопкеЗагрузить()
//
//
// Вызывается из формул элементов диалога:
//  Кнопка "Загрузить".
//
// Описание:  
//    Вызывается при нажатии кнопки "Загрузить". заполняются значения из таблицы эксель
//

Процедура  ПоКнопкеЗагрузить() Далее


//откроем эксель
    
        Попытка
        Эксель = СоздатьОбъект("Excel.Application");
        Исключение
        Сообщить (ОписаниеОшибки() + " Программа Exсel не установлена на данном компьютере!");
        Возврат;
        КонецПопытки;

//откроем наш файл и установим параметры

        Если ПустоеЗначение(ИмяФайлаЗагрузки)=1 Тогда  
            Сообщить ("Не выбран файл для загрузки!");
            Возврат;
        Иначе
            Книга = Эксель.WorkBooks.Open(ИмяФайлаЗагрузки);
            Эксель.Visible=0;
               Эксель.DisplayAlerts=0;
               Эксель.ScreenUpdating = 0;
               Эксель.EnableEvents = 0;  
               Лист = Книга.WorkSheets(1);
           КонецЕсли;

//зациклим чтобы прочитать каждую строку
//получим значение ID из нашей таблицы
        НомерСтроки=1;
        
        Пока ПустоеЗначение (Лист.Cells(НомерСтроки, 1).Value)=0 Цикл    
            НомерСтроки=НомерСтроки+1;
            Ид=  Лист.Cells(НомерСтроки, 1).Value;
//найдем элемент номенклатуры по коду
            СпрСвойствНом.ИспользоватьВладельца(Запрос.Номенклатура);
            СпрСвойствНом.НайтиПоКоду(Ид);
                Если СпрСвойствНом.выбран()=1 Тогда
                СпрСвойствНом = СпрСвойствНом.ТекущийЭлемент();
//проверим совпадают ли артикулы
                    Если Запрос.Номенклатура.Артикул = Лист.Cells(НомерСтроки, 2).Value Тогда
//найдем значение производителя
                          СпрСвойств.НайтиПоКоду("20030");
//проверим заполнено ли оно
                        Если СпрСвойствНом.НайтиПоРеквизиту("ВидСвойства",СпрСвойств.ТекущийЭлемент(),0) = 0 Тогда
//присвоим значение полученое из таблицы
          
                        СпрСвойств.Новый();
                        СпрСвойств.ЗначениеСвойства = Лист.Cells(НомерСтроки, 3).Value;
                        СпрСвойств.ВидСвойства      = СпрСвойств.НайтиПоКоду("20030");
                            СпрСвойств.Записать();
                        КонецЕсли;
//найдем значение модель
                          СпрСвойств.НайтиПоКоду("20034");
//проверим заполнено ли оно
                        Если СпрСвойствНом.НайтиПоРеквизиту("ВидСвойства",СпрСвойств.ТекущийЭлемент(),0) = 0 Тогда
//присвоим значение полученое из таблицы

                        СпрСвойств.Новый();
                        СпрСвойств.ЗначениеСвойства = Лист.Cells(НомерСтроки, 5).Value;
                        СпрСвойств.ВидСвойства      = СпрСвойств.НайтиПоКоду("20034");
                            СпрСвойств.Записать();
                        КонецЕсли;
        
                    КонецЕсли;
                КонецЕсли;
        КонецЦикла;
        Эксель.Quit();  
КонецПроцедуры
1Cv77
Korotkiy @ Сегодня, 20:44 необходимо зарегистрироваться для просмотра ссылки ,
Строки

Запрос = СоздатьОбъект("Запрос"); 
СпрСвойств = СоздатьОбъект("Справочник.ВидыСвойств");        
СпрЗначСвойств = СоздатьОбъект("Справочник.ЗначенияСвойств");
СпрСвойствНом = СоздатьОбъект("Справочник.СвойстваНоменклатуры");


Перенеси ЗА строчку
Процедура  ПоКнопкеЗагрузить() Далее



 ! 

необходимо зарегистрироваться для просмотра ссылки: 9
 
Korotkiy
1Cv77 @ Сегодня, 23:03 необходимо зарегистрироваться для просмотра ссылки ,

тогда становится еще хуже
Цитата
Возврат<<?>>;
{H:\загрузка свойств.ert(67)}: Оператор Return (Возврат) не может употребляться вне процедуры или функции
Эксель.Quit();<<?>>
{H:\загрузка свойств.ert(117)}: Обнаружено логическое завершение исходного текста модуля
<<?>>КонецПроцедуры
{H:\загрузка свойств.ert(118)}: Процедура или функция с указанным именем объявлена, но не определена в текущем модуле (ПоКнопкеЗагрузить)


1Cv77 @ Сегодня, 23:03 необходимо зарегистрироваться для просмотра ссылки ,

нашел , нужно было
Далее
убрать
1Cv77
Korotkiy @ Вчера, 21:29 необходимо зарегистрироваться для просмотра ссылки ,
09000000.gif
Блин, я не внимателен(((((
не обратил внимание на "Далее"
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.