Имя: Пароль:
1C
1С v8
Загрузка из Эксель
0 KDS
 
06.03.13
13:54
Загружаю из Эксель документ прихода товара. По необъяснимым причинам в табличную часть документа попадает номенклатура которой нет в списке, причём в каждый документ одна и та же последней строкой!!!

           Для Н = Н По НН Цикл
               С = Лев(СокрЛП(ExcelЛист.Cells(Н, 1).Value),2);
               Если С = "ВМ" Тогда
                   Продолжить;

               ИначеЕсли С = "Но" или С = "^^" Тогда
                   Прервать;
               КонецЕсли;
               НоваяСтрока = Поступление.Товары.Добавить();
               Номенклатура = "";
               Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(СокрЛП(ExcelЛист.Cells(Н, 2).Value));
               Если Номенклатура.Пустая() Тогда
                   Ном = Справочники.Номенклатура.СоздатьЭлемент();
                   Ном.Наименование = СокрЛП(ExcelЛист.Cells(Н, 2).Value);

http://s1.ipicture.ru/uploads/20130306/5yMFm5GT.jpg

http://s006.radikal.ru/i214/1303/16/ada83aeecac6.jpg

Что это может быть?
1 KDS
 
06.03.13
13:55
2 forforumandspam
 
06.03.13
13:56
Жги ещё "Для Н = Н По НН Цикл"
3 Rie
 
06.03.13
13:57
(0) А где конец кода - когда номенклатура заносится в документ?
4 dk
 
06.03.13
13:57
про отладчик слышал?
5 KDS
 
06.03.13
13:58
в строке Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(СокрЛП(ExcelЛист.Cells(Н, 2).Value));
оэта номенклатура уже рерется
6 Rie
 
06.03.13
14:00
(5) Что с номенклатурой происходит? :-)

Код по-человечески покажи!
7 KDS
 
06.03.13
14:01
Н = НомерСтроки+2;
           Для Н = Н По НН Цикл
               С = Лев(СокрЛП(ExcelЛист.Cells(Н, 1).Value),2);
               Если С = "ВМ" Тогда
                   Продолжить;
               ИначеЕсли С = "Но" или С = "^^" Тогда
                   Прервать;
               КонецЕсли;
               НоваяСтрока = Поступление.Товары.Добавить();
               Номенклатура = "";
               Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(СокрЛП(ExcelЛист.Cells(Н, 2).Value));
               Если Номенклатура.Пустая() Тогда
                   Ном = Справочники.Номенклатура.СоздатьЭлемент();
                   Ном.Наименование = СокрЛП(ExcelЛист.Cells(Н, 2).Value);
                   Ном.НаименованиеПолное = СокрЛП(ExcelЛист.Cells(Н, 2).Value);
                   ЕДизм = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию("шт");
                   Ном.БазоваяЕдиницаИзмерения = ЕДизм.Ссылка;
                   НомГр = Справочники.НоменклатурныеГруппы.НайтиПоНаименованию("УСН ресторан");
                   Ном.НоменклатурнаяГруппа = НомГр.Ссылка;
                   Ном.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
                   Ном.Записать();
                   Сообщение = Новый СообщениеПользователю;
                   Сообщение.Текст = "Создан Элемент справочника Номенклатура " + Ном.Наименование + "!!!";
                   Сообщение.Сообщить();
                   Номенклатура = Ном.Ссылка;
               КонецЕсли;
               НоваяСтрока.Номенклатура = Номенклатура;
8 KDS
 
06.03.13
14:03
Номенклатура загружается нормально, но последней строкой в каждом документе добавляется еще одна строка, при чем одна и та же
9 forforumandspam
 
06.03.13
14:03
А строки со звёздочкой как обрабатываешь?
10 Rie
 
06.03.13
14:04
(8) Какая именно строка добавляется?
Где КонецЦикла, что происходит после него?
11 KDS
 
06.03.13
14:05
Н = НомерСтроки+2;
           Для Н = Н По НН Цикл
               С = Лев(СокрЛП(ExcelЛист.Cells(Н, 1).Value),2);
               Если С = "ВМ" Тогда
                   Продолжить;
               ИначеЕсли С = "Но" или С = "^^" Тогда
                   Прервать;
               КонецЕсли;
               НоваяСтрока = Поступление.Товары.Добавить();
               Номенклатура = "";
               Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(СокрЛП(ExcelЛист.Cells(Н, 2).Value));
               Если Номенклатура.Пустая() Тогда
                   Ном = Справочники.Номенклатура.СоздатьЭлемент();
                   Ном.Наименование = СокрЛП(ExcelЛист.Cells(Н, 2).Value);
                   Ном.НаименованиеПолное = СокрЛП(ExcelЛист.Cells(Н, 2).Value);
                   ЕДизм = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию("шт");
                   Ном.БазоваяЕдиницаИзмерения = ЕДизм.Ссылка;
                   НомГр = Справочники.НоменклатурныеГруппы.НайтиПоНаименованию("УСН ресторан");
                   Ном.НоменклатурнаяГруппа = НомГр.Ссылка;
                   Ном.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
                   Ном.Записать();
                   Сообщение = Новый СообщениеПользователю;
                   Сообщение.Текст = "Создан Элемент справочника Номенклатура " + Ном.Наименование + "!!!";
                   Сообщение.Сообщить();
                   Номенклатура = Ном.Ссылка;
               КонецЕсли;
               НоваяСтрока.Номенклатура = Номенклатура;
               ЕД = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию("шт");
               НоваяСтрока.ЕдиницаИзмерения = ЕД.Ссылка;
               НоваяСтрока.Количество = СокрЛП(ExcelЛист.Cells(Н, 4).Value);
               НоваяСтрока.Цена = СокрЛП(ExcelЛист.Cells(Н, 5).Value);
               НоваяСтрока.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
               НоваяСтрока.СуммаНДС = СокрЛП(ExcelЛист.Cells(Н, 8).Value);
               Если СокрЛП(ExcelЛист.Cells(Н, 9).Value) = "10.09" Тогда
                   Сч1 = ПланыСчетов.Хозрасчетный.ИнвентарьИХозяйственныеПринадлежности;
               ИначеЕсли СокрЛП(ExcelЛист.Cells(Н, 9).Value) = "41.01" Тогда
                   Сч1 = ПланыСчетов.Хозрасчетный.ТоварыНаСкладах;
               ИначеЕсли СокрЛП(ExcelЛист.Cells(Н, 9).Value) = "08.04" Тогда
                   Сч1 = ПланыСчетов.Хозрасчетный.ПриобретениеОбъектовОсновныхСредств;
               КонецЕсли;
               Если СокрЛП(ExcelЛист.Cells(Н, 12).Value) = "19.03" Тогда
                   Сч2 = ПланыСчетов.Хозрасчетный.НДСпоПриобретеннымМПЗ;
               КонецЕсли;
               НоваяСтрока.СчетУчета = Сч1;
               НоваяСтрока.СчетУчетаНДС = Сч2;
               ОтражениеВУСН = СокрЛП(ExcelЛист.Cells(Н, 13).Value);
               Если ОтражениеВУСН = "Принимаются" Тогда
                   Отражение = Перечисления.ОтражениеВУСН.Принимаются;
               Иначе
                   Отражение = Перечисления.ОтражениеВУСН.НеПринимаются;
               КонецЕсли;
               НоваяСтрока.ОтражениеВУСН = Отражение;
               НоваяСтрока.Сумма = НоваяСтрока.Количество * НоваяСтрока.Цена;
           КонецЦикла;
                       
       КонецЕсли;
       Вал = Справочники.Валюты.НайтиПоКоду("643");
       Поступление.ВалютаДокумента = Вал.Ссылка;
       Поступление.ВидОперации = Перечисления.ВидыОперацийПоступлениеТоваровУслуг.ПокупкаКомиссия;
       Поступление.КурсВзаиморасчетов = 1;
       СтрокаКода = "000000001";
       ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоКоду(СтрокаКода);
       Поступление.ТипЦен = ТипЦен.Ссылка;
       Поступление.УчитыватьНДС = 1;
       Поступление.СуммаВключаетНДС = 1;
       Поступление.НДСВключенВСтоимость = 1;
       Поступление.РучнаяКорректировка = 0;
       Поступление.ДоговорКонтрагента = Контр.ОсновнойДоговорКонтрагента;
       Регистрыбухгалтерии.Хозрасчетный.УстановитьИспользованиеИтогов(истина);
       Поступление.Записать();
   КонецЦикла;
12 forforumandspam
 
06.03.13
14:06
+(9) Вот у тебя и происходит:
Справочники.Номенклатура.НайтиПоНаименованию("");

Но почему выходит "стол офисный"?
13 KDS
 
06.03.13
14:08
(12)нет, это я уже попытался обнулить значение, но не помогло))
14 Паланик
 
06.03.13
14:10
(13) А отладчиком пытался пройтись? И со звездочками непонятно.
15 forforumandspam
 
06.03.13
14:10
(13) Ты не понял. Как ты обрабатываешь такой случай:
               Если С = "ВМ" Тогда
                   Продолжить;
               ИначеЕсли С = "Но" или С = "^^" Тогда
                   Прервать;
               ИначеЕсли С = "**" Тогда
                    <Да-да. Тут надо что-то написать;>
               КонецЕсли;
16 KDS
 
06.03.13
14:10
(9), да, ты был прав, я забыл про строки со звёздами)), всем спасибо
17 KDS
 
06.03.13
14:11
всё получилось
18 Паланик
 
06.03.13
14:13
Нафига звездочки вообще там (в экселевском файле) нужны, "ВМ" - разве не достаточно?