|
Загрузка из Эксель | ☑ | ||
---|---|---|---|---|
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
|
Нафига звездочки вообще там (в экселевском файле) нужны, "ВМ" - разве не достаточно?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |