1. 1C / Говнокод #9532

    −146

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    Процедура ОбработкаНоменклатуры()
        
    НомерЛистаТипы = 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") и т.д.
    Потом на инфостарте и мисте подсказали как правильно сделать и посоветовали создать здесь эту запись)

    Запостил: ErrorEd88, 24 Февраля 2012

    Комментарии (15) RSS

    • я каждый раз блюю при виде 1С...
      Ответить
    • За отступы убивать.
      Ответить
    • А на чем пишешь?
      Ответить
    • Я не делаю отступы. Чтобы другой программист пришел к моему клиенту - и за пять минут во всем разобрался?
      Ответить
      • так автоформатирование же есть ))
        опять же очень странный способ защиты от "ДругогоПрограммиста"
        p.s.
        или то шутка была?
        Ответить
        • Шутка, конечно. Занят был, когда писал. Текст - Блок - Форматировать некогда было нажать. "Нет времени топоры точить - лес рубить надо")
          Ответить
          • У вас в иде нету хоткеев?
            Ответить
          • Это не оправдание. С таким же успехом можно не расставлять пробелы.
            Ответить
    • В чем говнокод то?
      Ответить
      • Единственное к чему можно придраться - это присвоение реквизиту цена строковых значений. Но это работает. Когда я загружаю из экселя и преобразовываю значения к числовому типу - возникают погрешности в конечных суммах.
        Ответить
        • это тебе говнокод, а не ПосмотритеКакЯКрутоПишуНаГовноЯзыке
          Ответить
    • ну и нахрена простыни пионэрские хреначить?
      это даже не говнокод - это попытка неумело и тщательно решить частную задачу, с кучей методологических ошибок. этого добра от любого тестового задания в исполнении "младших учеников" - до едреней фени, так что - занавешивать теперь этими простынями ресурс???
      Ответить
    • Я просто удивлен. Человеку за самый дебильный комментарий поставили больше всего плюсов) Нормальный специалист такого не скажет. В 1с, чтобы хоть что-то внедрять - помимо кода, еще нужно знать оперативный и бухгалтерский учет. А сколько различных отраслевых решений...
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • - Ну слава Богу! Ты что, сучоныш мелкий, сдохнуть собирался?
      Ответить

    Добавить комментарий