Помогите разобраться с обработкой по модификации данных

1. Alex_$ 10.05.07 09:42 Сейчас в теме
Сначала написал ERT по выгрузке норм в эксел Там изменил стоимость. Теперь пишу обраб.по загрузке стоимости норм расхода обратно в 1с,но данные не меняются Помогите разобраться:

имя1-наименование изделия
имя-стоимость из нормРасхода в номенклатурном СП в экселе



Процедура Сформировать ()
НачатьТранзакцию();
xl=СоздатьОбъект("Excel.Application");
rows=xl.ActiveSheet.UsedRange.Rows.Count;
спр=СоздатьОбъект("Справочник.Номенклатура");
спрнормы=СоздатьОбъект("Справочник.НормыРасходов");
//цикл по строкам

Для row = 1 По rows Цикл
имя=(xl.Cells(row,1).Value);
имя1=(xl.Cells(row,2).Value);
Состояние(""+row+"/"+rows+" "+имя1);
Если спр.НайтиПоНаименованию(имя, 0, 1)=0 Тогда
//если элемент с таким наименованием не найден, то создаем его

спрнормы.Новый();
спрнормы.Стоимость=имя;
спрнормы.Записать();
КонецЕсли;

спрнормы.Записать();
КонецЕсли;
КонецЦикла;
ЗафиксироватьТранзакцию();
КонецПроцедуры



На всякий случай прилагаю прогу по выгрузке,она работает:


//*******************************************

Процедура сформировать()
xl=СоздатьОбъект("Excel.Application");
xl.Caption="ИзменНорматива";
row=1; //первая строка

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

спр.ВыбратьЭлементы(0);
пока спр.получитьэлемент() =1 цикл
спрнормы.использоватьвладельца(спр.текущийэлемент());
спрнормы.выбратьэлементы(1);
пока спрнормы.получитьэлемент(1) = 1 цикл
//xl.Cells(row,1).Value=спр.наименование;
xl.Cells(row,2).Value=спрнормы.стоимость.Получить(текущаядата());
//xl.Cells(row,3).Value=спрнормы.Код;
// xl.Cells(row,4).Value=спр.Код;
// xl.Cells(row,5).Value=спрнормы.наименование;
// xl.Cells(row,6).Value=спр.себестоимость.Получить(текущаядата());

row=row+1;//переходим на следующую строку

КонецЦикла;
КонецЦикла;
КонецПроцедуры
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. z2z5 10.05.07 11:59 Сейчас в теме
Таже фигня, что у тебя была при выгрузке из 1С, ты не можещ просто присвоить значение для периодического реквизита. Пиши так:

спрнормы.Новый();
спрнормы.Наименование=имя;
спрнормы.Записать();
спрнормы.Стоимость.Установить(ТекущаяДата(), имя1);
спрнормы.Записать();
3. O-Planet 6448 10.05.07 14:02 Сейчас в теме
Можно проще. Где-нить напиши
СпрНормы.ИспользоватьДату(...);
и после этого делай, как делаешь.
4. Alex_$ 11.05.07 09:46 Сейчас в теме
А так получится ? Если требуется увеличить стоимость норматив нормРасхода в номенклатурнике


спр=СоздатьОбъект("Справочник.Номенклатура");
спрнормы=СоздатьОбъект("Справочник.НормыРасходов");
СпрНормы.ИспользоватьДату(ТекущаяДата());
спр.ВыбратьЭлементы(0);
пока спр.получитьэлемент() =1 цикл
спрнормы.использоватьвладельца(спр.текущийэлемент());
спрнормы.выбратьэлементы(1);
пока спрнормы.получитьэлемент(1) =1 цикл
спрнормы.Стоимость=спрнормы*1.15;
спрнормы.Записать();
КонецЦикла;
КонецЦикла;

КонецПроцедуры
5. z2z5 11.05.07 10:01 Сейчас в теме
6. Alex_$ 11.05.07 10:15 Сейчас в теме
КонецЦикла;<<?>>
{\\....ert(23)}: Обнаружено логическое завершение исходного текста модуля
При проверке модуля обнаружены синтаксические ошибки!
7. Fixator 10 11.05.07 17:03 Сейчас в теме
Использовал ваш код для обновления спр.Материалы... Все работает...
//*******************************************
Процедура Сформировать()
Перем текМатериал,ТекКПВЭД,ТекКоэфф;

Таб = СоздатьОбъект("Таблица");
НачатьТранзакцию();

xl=СоздатьОбъект("Excel.Application");
rows=xl.ActiveSheet.UsedRange.Rows.Count;


Cпр = СоздатьОбъект("Справочник.Материалы");
КПВЭД=СоздатьОбъект("Справочник.НПВЭД");

спр.ИспользоватьДату(НачГода(РабочаяДата()));
//цикл по строкам

Для row = 2 По rows Цикл
текМатериал = (xl.Cells(row,1).Value);
ТекКПВЭД = (xl.Cells(row,2).Value);
ТекКоэфф = (xl.Cells(row,3).Value);
Состояние(""+row+"/"+rows+" "+текМатериал);

Если спр.НайтиПоКоду(СокрЛП(текМатериал))=0 Тогда
Сообщить("Материал "+ СокрЛП(текМатериал) +" в базе не найден...");
Таб.ВывестиСекцию("Материал");

Продолжить;
КонецЕсли;

Если КПВЭД.НайтиПоКоду(СокрЛП(ТекКПВЭД))=0 Тогда
Сообщить("КПВЭД "+ ТекКПВЭД +" в базе не найден...");
Таб.ВывестиСекцию("КПВЭД");
Продолжить;
КонецЕсли;
Спр.НПВЭДСНС = КПВЭД.ТекущийЭлемент();
Спр.КоэффНПВЭД = ТекКоэфф;
Спр.Записать();
Сообщить("Материал "+Спр.ТекущийЭлемент()+" успешно обновлен...");
КонецЦикла;
ЗафиксироватьТранзакцию();
Таб.Показать();
КонецПроцедуры
8. O-Planet 6448 11.05.07 22:42 Сейчас в теме
Блин! Как можно публиковать огромные куски кода и просить разобраться, что не работает?!
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот