Имя: Пароль:
1C
1С v8
Альфа-Авто:. Редакция 4.1 (8.2). помогите победить характеристики номенклатуры
0 Light330
 
20.09.11
12:11
Добрый день! Пишу загрузку остатков номенклатуры в документ "Вводостатковтоваров "(Альфа-Авто: Автосалон+Автосервис+Автозапчасти. Редакция 4.1 (4.1.01.20), платформа 8.2 (8.2.14.533))из dbf-файла. Не получается победить загрузку в табличную часть, загружаю запчасти, в справочнике "ТипыНоменклатуры" стоит "Учет по характеристикам не ведется" , как это отразить в обработке, чтобы не было вот такой ругани : Заполняется накладная номер ПРН0001951 поставщик
При записи < Ввод остатков товаров ПРН0001951 от 24.10.2008 0:00:00 > обнаружены ошибки :
Таблица < Товары > значение колонки < Характеристика номенклатуры > не заполнено ! Строка номер 1
Из-за возникших ошибок операция записи была отменена.




сама процедура:
Процедура ЗагрузкаИзДбф(Док)
   
   Контрагент=справочники.Контрагенты;
   Дог=справочники.ДоговорыВзаиморасчетов;
   склад=справочники.СкладыКомпании;
   Номенклатура=Справочники.Номенклатура;
   Единица=справочники.ЕдиницыИзмерения;
   ЕдиницаБ=справочники.КлассификаторЕдиницИзмерения;
   Орг=справочники.Организации;
   ФОрг=Орг.ПолучитьФормуВыбора();
   орг=Форг.ОткрытьМодально();
   БД= Новый XBase;
   ИмяФ ="tov.dbf";
   Путь = "C:/temp";
   Если Не НайтиДБФ(Путь,ИмяФ) Тогда
       выборФайла(ИмяФ);
   Иначе
       имяФ = путь+"/"+ИмяФ;
   КонецЕсли;    
   БД.ОткрытьФайл(ИмяФ);
   БД.Кодировка=КодировкаXBase.OEM;
   //Флаг=1;
   ТекНом="";
   Для а=1 по БД.КоличествоЗаписей() Цикл  
       БД.Перейти(а);
       Самномер=СтрЗаменить(БД.DOCNO, Символы.НПП, "");
       
       Если ТекНом<>Самномер Тогда
           Док=Документы.ВводОстатковТоваров.СоздатьДокумент();    
           Док.Дата = БД.DOCDATE;
           
           
           Док.Номер = Самномер;
           
           Док.ПодразделениеКомпании=Справочники.ПодразделенияКомпании.НайтиПоКоду("ЦБ000001");
           
           
           Док.Организация=орг;
           
           Док.СкладКомпании=склад.НайтиПоНаименованию(БД.SKLAD, Истина);
           
           Док.Контрагент=Контрагент.НайтиПоНаименованию(БД.DESCR, Истина);
           
           
           ВыборкаДог=Дог.Выбрать(,Док.Контрагент);
           ВыборкаДог.следующий();
           //Договор=ВыборкаДог.ПолучитьОбъект();
           Сообщить("Заполняется накладная номер "+ строка(Док.Номер)+" поставщик ");
           //Док.ДоговорКонтрагента=Договор.Ссылка;
           
           Док.Автор=Справочники.Пользователи.НайтиПоНаименованию("Elegant", Истина);
           Док.ХозОперация=Справочники.ХозОперации.ВводОстатковТоваров;
           Док.ВалютаДокумента=Константы.ВалютаРегламентированногоУчетаОрганизаций.Получить();
           Док.КурсДокумента=1;
           
       КонецЕсли;                            
       Док.СуммаДокумента=БД.SUMMA;
       СтрокаДок=Док.Товары.Добавить();
       СтрокаДок.Количество=БД.KOL;
       СтрокаДок.Цена=БД.CENA ;
       ТМЦ18=БД.kod;
       Если Номенклатура.НайтиПоКоду(СокрЛп(ТМЦ18))=Справочники.Номенклатура.ПустаяСсылка()Тогда
           ТОВАР = БД.NOM;
           ПолнТовар=БД.NOMPL;
           Един=БД.ED;
           
           Сообщить("Добавление номенклатуры" +ТОВАР);
           
           НовыйТовар= Справочники.Номенклатура.СоздатьЭлемент();
           // Получить ссылку на группу, в которой будет находиться новый элемент.
           Родитель = Справочники.Номенклатура.НайтиПоНаименованию("Материалы запчасти", Истина);
           
           НовыйТовар.Родитель = Родитель;
           
           
           НовыйТовар.БазоваяЕдиницаИзмерения=ЕдиницаБ.НайтиПоНаименованию(СокрЛп(Лев(Един,2)));
           НовыйТовар.ОсновнаяЕдиницаИзмерения=Единица.НайтиПоНаименованию(СокрЛп(Лев(Един,2)));
           
           НовыйТовар.Наименование=ТОВАР;
           НовыйТовар.кОД=БД.kod;
           
           НовыйТовар.ВалютаУчета=справочники.Валюты.НайтиПоКоду(810);
           НовыйТовар.Артикул=БД.KAT+1;
           НовыйТовар.ставкандс=справочники.СтавкиНдс.НайтиПоНаименованию("18%", Истина);
           НовыйТовар.ТипНоменклатуры=справочники.ТипыНоменклатуры.НайтиПоНаименованию("Материалы и спецоснастка");
           НовыйТовар.ВидНоменклатуры=перечисления.ВидыНоменклатуры.Товар;
           
           НовыйТовар.НаименованиеПолное=ПолнТовар;
           
           //НовыйТовар.УстановитьНовыйКод();
           НовыйТовар.Записать();
           
       КонецЕсли;    
       рекв=СтрЗаменить("Номенклатура.Артикул", Символы.НПП, "");
       
       СтрокаДок.Номенклатура=Номенклатура.НайтиПоКоду(СокрЛп(ТМЦ18));
       
       
       
       СтрокаДок.Сумма=БД.SUMMA;
       СтрокаДок.СуммаВсего=БД.SUMMA;
       
       //СтрокаДок.СуммаНДС=БД.NDS;
       СтрокаДок.ЕдиницаИзмерения=СтрокаДок.Номенклатура.ОсновнаяЕдиницаИзмерения;
       Если СтрокаДок.Номенклатура.ТипНоменклатуры.ИспользованиеХарактеристик=3 Тогда
           
       КонецЕсли;
       
       //    СтрокаДок.ХарактеристикаНоменклатуры= Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка();
       
       СтрокаДок.Коэффициент=1;
       
       
       
       Док.Записать();
       
       Флаг =БД.Следующая();
   КонецЦикла;
   
   
   БД.ЗакрытьФайл();
   
   
   
КонецПроцедуры
1 Axel2009
 
20.09.11
12:17
смотреть в отладчике в какой момент ругается и что за условие отрабатывает