|
v7: Загрузка приходной накладной из файла *.XLS | ☑ | ||
|---|---|---|---|---|
|
0
Andros Krasnodar
18.11.13
✎
12:43
|
помогите ! как сделать поиск не по коду в моей базе, а по артикулу, который есть в накладной XLS
поправьте пожалуйста! замысел такой выбираю куда приходовать, потом выбираю файл в Формате XLS потом указываю какая колонка Артикул, количество, цена и она уже ищет в моей базе объекты по коду(А надо по артикулу) и автоматически вбивает в накладную... и еще Надо добавить процедуру которая укажет мне какая строка не загружена (ну это если не найдет) Ну чтобы я знал, что это новая позиция!!!! БУДУ ОЧень благодарен!!! Процедура Сформировать() СпрНом = СОздатьОбъект("Справочник.НоменклатураАртикул"); СпрОКЕИ = СОздатьОбъект("Справочник.ОКЕИ"); СпрПартии = СоздатьОбъект("Справочник.Партии"); [b]СПрНом.НайтиПоКоду("796");[/b] СпрЕд = СОздатьОбъект("Справочник.Единицы"); ДокПост = СОздатьОбъект("Документ.ПоступлениеТМЦРозница"); ДокПост.НайтиДокумент(Док); ExcelApp = СоздатьОбъект("Excel.Application"); РабочиеКниги=ExcelApp.WorkBooks; ДокКнига=РабочиеКниги.Open(СокрЛП(ФайлЕксел)); ДокЛист=ДокКнига.Worksheets(1); Флаг = 0; Ном = НомПер; Пока Флаг = 0 Цикл Н = СокрЛП(ДокЛист.Range(СокрЛП(Код) + СокрЛП(Строка(Ном))).Value); Н = "" + Н; Н = Прав(Н, 8); Сообщить(Н); Если СпрНом.НайтиПоКоду(Н) = 0 Тогда //СПрНом.Новый(); //СпрНом.Наименование = Н; //СпрНом.ПолнНаименование = Н; //СпрНом.ВидНоменклатуры = Перечисление.ВидыНоменклатуры.Прочее; //СпрНом.СтавкаНДС = Перечисление.СтавкиНДС.НДС18; //СпрНом.ПолнНаименование = Н; //СПрНом.Записать(); //СПрЕд.Новый(); //СпрЕд.Владелец = СпрНом.ТекущийЭлемент(); //СПрЕд.Наименование = "шт"; //СпрЕд.ОКЕИ = СпрОкеи.ТекущийЭлемент(); //СПрЕд.Коэффициент = 1; //СпрЕд.Записать(); //СпрНом.БазоваяЕдиница = СпрЕд.ТекущийЭлемент(); //СпрНом.ОсновнаяЕдиница = СпрЕд.ТекущийЭлемент(); //СпрНом.Записать(); Сообщить("Номенклатура на найдена!"); Иначе ДокПост.НоваяСтрока(); ДокПост.Номенклатура = СпрНом.ТекущийЭлемент(); ДокПост.Количество = СокрЛП(ДокЛист.Range(СокрЛП(Кол) + СокрЛП(Строка(Ном))).Value); ДокПост.Единица = СпрНом.ТекущийЭлемент().ОсновнаяЕдиница; ДокПост.Коэффициент = 1; ДокПост.ВидТМЦ = Перечисление.ВидыТМЦ.Товар; ДокПост.Цена = СокрЛП(ДокЛист.Range(СокрЛП(Цена) + СокрЛП(Строка(Ном))).Value); ДокПост.СтавкаНДС = СпрНом.ТекущийЭлемент().СтавкаНДС; ДокПост.Сумма = ДокПост.ЦЕна*ДокПост.Количество; СпрПартии.ИспользоватьВладельца(ДокПост.Номенклатура); СпрПартии.Новый(); Попытка СпрПартии.Записать(); ДокПост.Партия = СпрПартии.ТекущийЭлемент(); СОобщить(СпрПартии.ТекущийЭлемент()); Исключение Сообщить(ОписаниеОшибки(),"I"); Сообщить(321); Возврат; КонецПопытки; Если ДокПост.СуммаВклНДС = 1 Тогда ДокПост.СУммаНДС = Окр(ДокПост.Сумма*глВыделяемыйНДС(ДокПост.СтавкаНДС), 2); Иначе ДокПост.СУммаНДС = Окр(ДокПост.Сумма*глНачисляемыйНДС(ДокПост.СтавкаНДС), 2); КонецЕсли; //Сообщить(Н); //СОобщить(СокрЛП(ДокЛист.Range(СокрЛП(Кол) + СокрЛП(Строка(Ном))).Value)); КонецЕсли; Ном = Ном + 1; Если ПустаяСтрока(СокрЛП(ДокЛист.Range(СокрЛП(Код) + СокрЛП(Строка(Ном))).Value)) = 1 Тогда Флаг = 1; КонецЕсли; КонецЦикла; ДокПост.Записать(); //ДокПост.Провести(); Сообщить("Данные успешно загружены!"); ДокКнига.Close(); КонецПроцедуры //****************************************************************************** // КаталогИмяФайла(ПолноеИмяФайла, Каталог, Файл) // // Параметры: // ПолноеИмяФайла - строка: каталог и имя файла. // Каталог - если передан, в него будет возвращено имя каталога. // Файл - если передан, в него будет возвращено имя файла. // // Возвращаемое значение: // 0 - если указанного каталога не существует // 1 - если указанный каталог существует // // Описание: // Если каталог не существует, то пользователю предлагается его создать. // Функция КаталогИмяФайла(ПолноеИмяФайла, Каталог, Файл) Каталог=""; Файл=ПолноеИмяФайла; Разд=Найти(Файл, "\"); Пока 0<Разд Цикл Каталог=Каталог+Лев(Файл, Разд); Файл=Сред(Файл, Разд+1); Разд=Найти(Файл, "\"); КонецЦикла; Каталог=Каталог+"."; Если СтрДлина(Каталог)<4 Тогда ИначеЕсли ФС.СуществуетФайл(Каталог)=1 Тогда ИначеЕсли "Да"=Вопрос(Каталог+" |Указанный каталог не существует! Создать?","Да+Нет") Тогда ФС.СоздатьКаталог(Каталог); Иначе Каталог=""; Возврат(0); КонецЕсли; Возврат(1); КонецФункции // КаталогИмяФайла() //****************************************************************************** // Предопределенная процедура // Процедура ПриНачалеВыбораЗначения(ЭлементДиалога, ФлагОбработки) Перем Каталог, Файл; Если ЭлементДиалога="ФайлЕксел" Тогда КаталогИмяФайла(ФайлЕксел, Каталог, Файл); Если ФС.ВыбратьФайл(0, Файл, Каталог, "Файл выгрузки", "Текстовые (*.xls)|*.xls", "xls")=1 Тогда ФайлЕксел=Каталог+Файл; КонецЕсли; КонецЕсли; КонецПроцедуры Код = "A"; Кол = "B"; Цена = "C"; НомПер = 1; |
|||
|
1
spectre1978
18.11.13
✎
12:52
|
Если СпрНоменкл.НайтиПоРеквизиту ("Артикул", АртикулИзXLS, 0)=1 Тогда
// Такая позиция есть у тебя в справочнике Иначе // это будет новая позиция КонецЕсли; для реквизита Артикул должен быть включен признак сортировки |
|||
|
2
Andros Krasnodar
18.11.13
✎
12:55
|
О попробую
а куда воткнуть? а то я еще зелененький |
|||
|
3
spectre1978
18.11.13
✎
13:36
|
(2) очевидно, вместо НайтиПоКоду.
|
|||
|
4
Andros Krasnodar
18.11.13
✎
14:21
|
не прет...
вот бы полностью как надо !!! :) ПЛЗ несплю... :) |
|||
|
5
spectre1978
18.11.13
✎
18:49
|
(4) На конкретные вопросы ответить - пожалуйста, а полностью как надо делай сам. Или если надо готовое, то за денежки.
|
|||
|
6
Жан Пердежон
18.11.13
✎
18:52
|
(4) зарплату тоже за тебя приходить получить?)
|
|||
|
7
MaxS
18.11.13
✎
19:21
|
"Интересная" логика. Если номенклатура не найдена, то нужно её создать, а добавлять в документ не обязательно. Если эта же номенклатура попадётся второй раз, то так и быть - добавим в документ. ;)
|
|||
|
8
GreyK
18.11.13
✎
19:50
|
(0) Назначь цену за обработку, когда получишь обработку увидишь её код и сам поймёшь сколько времени ты съэкономил.
|
|||
|
9
Tatitutu
18.11.13
✎
19:59
|
Прыг-Скок...или из MS EXCEL в 1С (7.7) TiS* (открытый код - бесплатно)
http://infostart.ru/public/83084/ |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |