![]() |
|
v7: Процедура. Укажите на промахи. | ☑ | ||
---|---|---|---|---|
0
ErrorEd88
19.02.12
✎
15:56
|
В 7.7 почти никогда не пишу. По аналогии с 8.х делал обработку. В итоге ни одной уже забитой в базу номенклатуры обработка не нашла, а создала в справочнике только один элемент с кодом "С111". Скажите, хотя бы "каркас" кода правильный?
Процедура ОбработкаНоменклатуры() НомерЛистаТипы = 1; // Вставить содержимое обработчика. Попытка ExcelТипы = СоздатьОбъект("Excel.Application"); ФайлДанныхТипы = ExcelТипы.Workbooks.Open(НазваниеФайла); Исключение КонецПопытки; ЗагрузкаТипы = ФайлДанныхТипы.Worksheets(НомерЛистаТипы).UsedRange; КоличествоСтрокЭкселеТипы = ФайлДанныхТипы.Worksheets(НомерЛистаТипы).UsedRange.Rows.Count; ExcelТипы.Sheets(НомерЛистаТипы).Select(); //!! Для СтрТипы = НачСтр+1 По КонСтр Цикл Спр = СоздатьОбъект("Справочник.Номенклатура"); Если Спр.НайтиПоНаименованию(Строка(СокрЛП(ExcelТипы.Cells(СтрТипы,1).Value))) = 1 Тогда Сообщить("Номенклатура найдена"); Если ВидыЦен = 1 Тогда Спр.Себестоимость = Строка(СокрЛП(ExcelТипы.Cells(СтрТипы,4).Value)); ИначеЕсли ВидыЦен = 2 Тогда Спр.Цена = Строка(СокрЛП(ExcelТипы.Cells(СтрТипы,4).Value)); КонецЕсли; Спр.Записать(); Иначе Сообщить("Создается номенклатура"); СпрВидНом = СоздатьОбъект("Справочник.ВидыНоменклатуры"); СпрНДС = СоздатьОбъект("Справочник.СтавкиНДС"); СпрНП = СоздатьОбъект("Справочник.СтавкиНП"); СпрЕд = СоздатьОбъект("Справочник.ЕдиницыИзмерений"); Спр.Родитель = Спр.НайтиПоКоду("С111"); Спр.ТипТовара = Перечисление.ТипыТоваров.Собственный; Спр.ВидНоменклатуры = СпрВидНом.НайтиПоКоду("0000001"); Спр.Наименование = Строка(СокрЛП(ExcelТипы.Cells(СтрТипы,1).Value)); Спр.ПолнНаименование = Спр.Наименование; Если ВидыЦен = 1 Тогда Спр.Себестоимость = Строка(СокрЛП(ExcelТипы.Cells(СтрТипы,4).Value)); ИначеЕсли ВидыЦен = 2 Тогда Спр.Цена = Строка(СокрЛП(ExcelТипы.Cells(СтрТипы,4).Value)); КонецЕсли; Спр.СтранаПроисхожд = 1; Спр.СтавкаНДС = СпрНДС.НайтиПоКоду("3"); Спр.СтавкаНП = СпрНП.НайтиПоКоду("1"); Спр.ЕдиницаИзмерения = СпрЕд.НайтиПоКоду("796"); Спр.Записать(); КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
1
Amra
19.02.12
✎
16:05
|
Создала с кодом С111? Похоже у тебя родителем всех созданных элементов стал ЭЛЕМЕНТ с кодом С111. То есть элементы есть, но их не видно, так как открыть элемент как группу нельзя
|
|||
2
Попытка1С
19.02.12
✎
16:06
|
А что в 8 создание объекта в цикле считается нормой?
|
|||
3
Дядя Васька
19.02.12
✎
16:07
|
(1) В семерке? :)
|
|||
4
Amra
19.02.12
✎
16:08
|
(3) Именно в семерке. Программно так в семерке можно сделать) Только эти элементы, у которых родитель- элемент, при выводе списка по группам не отображаются
|
|||
5
Дядя Васька
19.02.12
✎
16:10
|
(0) А в восьмерке СокрЛП() не строку возвращает? И да.. отладчик в семерке тоже есть.
|
|||
6
Дядя Васька
19.02.12
✎
16:11
|
(4) Да ладно... Сколько лет в ней писал, ни разу не умудрился такого сделать.
|
|||
7
Amra
19.02.12
✎
16:12
|
(6) До этого он потом дойдет) К тому же наверняка реквизиты цена и себестоимость переодические...
|
|||
8
Amra
19.02.12
✎
16:12
|
(6) Я умудрился как то, и тож не мог понять, как и ТС, что элементы создаются, но я их не вижу...))
|
|||
9
Дядя Васька
19.02.12
✎
16:14
|
(7) Причем сильно сомневаюсь что строковые :) Не, ну к числу-то оно преобразуется конечно. Но присваивая значение цене результат строковой функции принудительно еще раз к строке преобразовать это сильно )
|
|||
10
Amra
19.02.12
✎
16:16
|
(9) И это понятно почему, тип колонки не обязательно числовой в экселе. Автор еще забыл про один ньюансик, которые возникает, если число больше 1000.
|
|||
11
МастерВопросов
19.02.12
✎
16:22
|
(1) строка " Спр.НайтиПоКоду("С111");" возвращает единицу :-)
Правильно так: Если Спр.НайтиПоКоду("С111")=1 Тогда Спр.Родитель = Спр.ТекущийЭлемент(); КонецЕсли; |
|||
12
МастерВопросов
19.02.12
✎
16:27
|
(0) " Спр.ВидНоменклатуры = СпрВидНом.НайтиПоКоду("0000001");"
это тоже исправь как я в (11) написал |
|||
13
Amra
19.02.12
✎
16:29
|
(11) Ндя?)) забыл уже, в восьмерке найтипокоду возвращает ссылку))
|
|||
14
Cthulhu
19.02.12
✎
16:34
|
(11): это как раз неправильно. потому что сбивает выборку - находит элемент с наименованием С111 и пытается установить ему в родители его же самого.
(на ошибки в коде (0), простите, пытаться указывать как-то уныло - настолько их много, и настолько лишено смысла без знания о том, в какой переменной что содержится... напоминает притчу об одном дураке и тысяче мудрецов) |
|||
15
МастерВопросов
19.02.12
✎
16:40
|
(14) тьфу ты, "слона то я и не приметил"(с)
Шипка сомневаюсь что так и в снеговике приемлимо писать. |
|||
16
zavsom
19.02.12
✎
16:48
|
(0) как то вы пишите через опу - и где так учат? Обычно все сначала грузится в ТЗ , а уж потом отдельной процедурой создается все что нужно. Тогда и посмотреть и отладить легче.
|
|||
17
Amra
19.02.12
✎
16:51
|
(16) Тут соглашусь. Чтото типа как на ИТС обработка "ЗагрузкаИзТабличногоДокумента"
|
|||
18
Amra
19.02.12
✎
16:52
|
(14) Слуш, точно, именно поэтому один элемент с кодом С111 и грузится...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |