Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
Процедура ОбработкаНоменклатуры()
НомерЛистаТипы = 1;
Попытка ExcelТипы = СоздатьОбъект("Excel.Application");
ФайлДанныхТипы = ExcelТипы.Workbooks.Open(НазваниеФайла);
Исключение
КонецПопытки;
//Лист = ФайлДанныхТипы.WorkSheets(НазваниеФайла);
ЗагрузкаТипы = ФайлДанныхТипы.Worksheets(НомерЛистаТипы).UsedRange;
//КоличествоСтрокЭкселеТипы = Лист.Rows.Count;
КоличествоСтрокЭкселеТипы = ФайлДанныхТипы.Worksheets(НомерЛистаТипы).UsedRange.Rows.Count;
ExcelТипы.Sheets(НомерЛистаТипы).Select();
Спр2 = СоздатьОбъект("Справочник.Номенклатура");
СпрВидНом = СоздатьОбъект("Справочник.ВидыНоменклатуры");
СпрНДС = СоздатьОбъект("Справочник.СтавкиНДС");
СпрНП = СоздатьОбъект("Справочник.СтавкиНП");
СпрЕд = СоздатьОбъект("Справочник.ЕдиницыИзмерений");
Для СтрТипы = НачСтр+1 По КонСтр Цикл
Спр = СоздатьОбъект("Справочник.Номенклатура");
Если Спр.НайтиПоНаименованию(Строка(СокрЛП(ExcelТипы.Cells(СтрТипы,1).Value))) = 1 Тогда
Сообщить("Номенклатура найдена");
Если ВидыЦен = 1 Тогда
Спр.Себестоимость = Строка(СокрЛП(ExcelТипы.Cells(СтрТипы,4).Value));
ИначеЕсли ВидыЦен = 2 Тогда
Спр.Цена = Строка(СокрЛП(ExcelТипы.Cells(СтрТипы,4).Value));
КонецЕсли;
Спр.Записать();
Иначе
Спр.Новый();
Спр.ИспользоватьДату('01.11.2011');
Если Спр2.НайтиПоКоду("Сй111")=1 Тогда
Спр.Родитель =Спр2.ТекущийЭлемент();
Конецесли;
Спр.Наименование = Строка(СокрЛП(ExcelТипы.Cells(СтрТипы,1).Value));
Сообщить("Создается номенклатура" + Спр.Наименование);
Спр.ТипТовара = Перечисление.ТипыТоваров.Собственный;
Если СпрВидНом.НайтиПоНаименованию("Товар")=1 Тогда
Спр.ВидНоменклатуры = СпрВидНом.ТекущийЭлемент();
КонецЕсли;
Спр.ПолнНаименование = Спр.Наименование;
Если ВидыЦен = 1 Тогда
Спр.Себестоимость = Строка(СокрЛП(ExcelТипы.Cells(СтрТипы,4).Value));
ИначеЕсли ВидыЦен = 2 Тогда
Спр.Цена = Строка(СокрЛП(ExcelТипы.Cells(СтрТипы,4).Value));
КонецЕсли;
Спр.СтранаПроисхожд = 1;
Если СпрНДС.НайтиПоКоду("3")=1 Тогда
Спр.СтавкаНДС = СпрНДС.ТекущийЭлемент();
КонецЕсли;
Если СпрНП.НайтиПоКоду("1")=1 тогда
Спр.СтавкаНП = СпрНП.ТекущийЭлемент();
КонецЕсли;
Если СпрЕд.НайтиПоНаименованию("шт")=1 Тогда
Спр.ЕдиницаИзмерения = СпрЕд.ТекущийЭлемент();
КонецЕсли;
Спр.Записать();
КонецЕсли;
КонецЦикла;
КонецПроцедуры
В бух 7.7 нужно было загрузить определенный данные из экселя. С 7.7 не работаю - начал сочинять. В начале писал по аналогии с 8.х:
Спр.СтавкаНДС = СпрНДС.НайтиПоКоду("3") и т.д.
Потом на инфостарте и мисте подсказали как правильно сделать и посоветовали создать здесь эту запись)
Единственное к чему можно придраться - это присвоение реквизиту цена строковых значений. Но это работает. Когда я загружаю из экселя и преобразовываю значения к числовому типу - возникают погрешности в конечных суммах.
ну и нахрена простыни пионэрские хреначить?
это даже не говнокод - это попытка неумело и тщательно решить частную задачу, с кучей методологических ошибок. этого добра от любого тестового задания в исполнении "младших учеников" - до едреней фени, так что - занавешивать теперь этими простынями ресурс???
Я просто удивлен. Человеку за самый дебильный комментарий поставили больше всего плюсов) Нормальный специалист такого не скажет. В 1с, чтобы хоть что-то внедрять - помимо кода, еще нужно знать оперативный и бухгалтерский учет. А сколько различных отраслевых решений...
опять же очень странный способ защиты от "ДругогоПрограммиста"
p.s.
или то шутка была?
это даже не говнокод - это попытка неумело и тщательно решить частную задачу, с кучей методологических ошибок. этого добра от любого тестового задания в исполнении "младших учеников" - до едреней фени, так что - занавешивать теперь этими простынями ресурс???