Имя: Пароль:
1C
1С v8
Выгрузка из DBF
0 infik
 
13.09.11
15:27
Добрый день. Имеем: Есть файл DBF из которого выгружается ID номенклатуры из одной базы, по реквизиту ищу эту номенклатуру в другой базе и подставляю в ТЧ значения. Суть проблемы: Не хочет искать ID по следующей строке DBF файла, а во всех последующих подставляет найденный в первой.

Процедура КнопкаВыполнитьНажатие(Кнопка)
   БД = Новый XBase;
   БД.ОткрытьФайл(Файл);
   БД.Кодировка = КодировкаXBase.OEM;
   БД.АвтоСохранение = Истина;

   
   Если БД.Открыта() Тогда

       БД.Первая();
               
       Попытка
           ЧислоСтрока = Число(БД.ID);
       Исключение
           ЧислоСтрока = СокрЛП(БД.ID);
       КонецПопытки;
       
       ТабЧастьЗагрузка.Очистить();
       
       Пока НЕ БД.ВКонце() Цикл
           НомерЗаписи = БД.НомерЗаписи();
           Номен = Справочники.Номенклатура.НайтиПоРеквизиту("ID",ЧислоСтрока);
           
           НоваяСтрокаТЧ = ТабЧастьЗагрузка.Добавить();
           НоваяСтрокаТЧ.Наименование = Номен;
           НоваяСтрокаТЧ.НомерДок = БД.number;
           НоваяСтрокаТЧ.ID = ЧислоСтрока;
           НоваяСтрокаТЧ.Количество = БД.amount;
           НоваяСтрокаТЧ.ДатаПоступления = БД.date;
           
           НайденЯчХран = Справочники.РарусЯчейкиХранения.НайтиПоНаименованию(БД.cell);
           
           Если НайденЯчХран = Справочники.РарусЯчейкиХранения.ПустаяСсылка() Тогда
               НовЯчХран = Справочники.РарусЯчейкиХранения.СоздатьЭлемент();
               НовЯчХран.УстановитьНовыйКод();
               НовЯчХран.Наименование = БД.cell;        
               НовЯчХран.Записать();    
               НайденЯчХран = НовЯчХран.Ссылка;
           КонецЕсли;
           
           Если Номен.ЯчейкаХранения <> НайденЯчХран Тогда
               НоменОбъект = Номен.ПолучитьОбъект();
               НоменОбъект.ЯчейкаХранения = НайденЯчХран;
               НоменОбъект.Записать();
           КонецЕсли;
           
           НоваяСтрокаТЧ.ЯчейкаХранения = Номен.ЯчейкаХранения;
           НоваяСтрокаТЧ.Артикул = Номен.Артикул;
           НоваяСтрокаТЧ.Поставщик = Номен.ДокументРеестрЗапчастей.Поставщик1;
           НоваяСтрокаТЧ.ТехническаяКомпания = Номен.ДокументРеестрЗапчастей.Покупатель1;
           НоваяСтрокаТЧ.Цена1 = Номен.ДокументРеестрЗапчастей.Цена1;
           НоваяСтрокаТЧ.Себестоимость = Номен.ДокументРеестрЗапчастей.СебестоимостьЗаЕдиницу1;
           НоваяСтрокаТЧ.ЦенаЗаЕдиницу = Номен.ДокументРеестрЗапчастей.Цена2;
           НоваяСтрокаТЧ.СебестоимостьПартия = Номен.ДокументРеестрЗапчастей.СебестоимостьЗаЕдиницу1 * БД.amount;
           НоваяСтрокаТЧ.Стоимость = Номен.ДокументРеестрЗапчастей.Цена1 * БД.amount;
           НоваяСтрокаТЧ.СтоимостьПокупка = Номен.ДокументРеестрЗапчастей.Цена2 * БД.amount;
           
           БД.Следующая();
       КонецЦикла;
       
   Иначе
       Сообщить("Не могу открыть файл");
   КонецЕсли;
       БД.ЗакрытьФайл();
КонецПроцедуры
1 poligraf
 
13.09.11
15:30
Отладчик поломался?
Не можешь посмотреть как (не)изменяется у тебя "ЧислоСтрока"?
2 infik
 
13.09.11
15:39
Разобрался. Попытку надо было включить в цикл)