Добрый вечер!
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();
КонецПроцедуры