Консультация № 65405
03.12.2006, 20:37
0.00 руб.
0 2 2
Здравствуйте Уважаемые эксперты!
Прошу помочь советом. Предприятие занимается производством окон. Каждый раз когда рассчитана конструкция окна в программе СуперОкна, и распечатана калькуляция материалов, бухгалтер в ручную заносит каждую позицию в 1С (на это тратится примерно 1,5 часа минимум). Теперь от меня требуют настроить автоматический перенос материалов из СуперОкон в 1С, благо из СуперОкон можно экспортировать в EXCEl.
Ниже код обработки по импорту материалов из файла Excel, но почему то она переносит только количество, а сами материалы нет. Подскажите пожалуста советом может что-то я пропустил (уже второй день ломаю голову)?
Очень нужно. Спасибо!

Книга=ExcelApp.WorkBooks.Open(ИмяФайла);
Страница=Книга.WorkSheets(1);
ВыбратьСтроки();
УдалитьСтроки();
Стр=1;

СпрМат=СоздатьОбъект("Справочник.Материалы");
Пока ПустоеЗначение(ExcelApp.Cells(стр,1).Value)=0 Цикл
Арт=СокрЛП(ExcelApp.Cells(стр,1).Value);
Кол=Число(СокрЛП(ExcelApp.Cells(стр,2).Value));
Если ПустоеЗначение(Кол)=0 Тогда
Если СпрМат.НайтиПоНаименованию(Арт,0,1)=0 Тогда
Матер=СпрМат.ТекущийЭлемент();
НоваяСтрока();
УстановитьАтрибут("Материал",Матер);
Заявлено=Кол;
Конецесли;
КонецЕсли;
Стр=Стр+1;
КонецЦикла;
ЗагрузитьТабличнуюЧасть(ТЗ);
ExcelApp.Quit();
ExcelApp="";

Обсуждение

Неизвестный
04.12.2006, 06:48
общий
это ответ
Здравствуйте, Vlad!
Обратите внимание:
>Если СпрМат.НайтиПоНаименованию(Арт,0,1)=0 Тогда
>Матер=СпрМат.ТекущийЭлемент();
т.е. если материал НЕ найден, тогда вы присваиваете переменной Матер пустой элемент. Вам надо заменить на
Если СпрМат.НайтиПоНаименованию(Арт,0,1)=1 Тогда
...
Для того, чтоб товар находился по наименованию строка в ячейке таблицы из Excel должна полностью совпадать с наименование в 1с, если они отличаются, вам надо соотнести названия, например подчиненным справочником типа Аналоги.
Если что-то непонятно - пишите в личку.
Неизвестный
04.12.2006, 15:33
общий
это ответ
Здравствуйте, Vlad!

Также обратите внимание, что материал лучше идентифицировать по коду либо по артикулу, а не по наименованию -- это лучший способ избежать ошибки. И если приведенный в Вашем Приложении фрагмент программы загружал в документ только количество (как Вы писали), это означает что с идентификацией материала у Вас действительно проблема (количество загружалось ТОЛЬКО для материалов которые НЕ были идентифицированы в 1С, и я сделал вывод что таких было много).
Форма ответа