|
загрузка данных в справочник(Коды ОКВЭД) | ☑ | ||
---|---|---|---|---|
0
Валидатор
29.08.13
✎
14:00
|
Попросили сделать справочник ОКВЭД, сделал, добавил ему 4 колонки:
Раздел, подраздел, код, наименование получил екселевский файлик кодами оквэд, и можно начинать, сделал следующее: роцедура КнопкаВыполнитьНажатие(Кнопка) Док = ПолучитьCOMОбъект(ПутьКФайлу); ТаблицаЗначений = Новый ТаблицаЗначений; ТаблицаЗначений.Колонки.Добавить("Раздел", , "Наименование раздела"); ТаблицаЗначений.Колонки.Добавить("Подраздел", , "Наименование подраздела"); ТаблицаЗначений.Колонки.Добавить("Код", , "Наименование кода"); ТаблицаЗначений.Колонки.Добавить("Имя", , "Наименование"); Для сч=НачСтрока По КонСтрока Цикл НоваяТЗ = ТаблицаЗначений.Добавить(); Раздел=Док.Sheets(1).Cells(сч, 1).Value; НоваяТЗ.Раздел = Раздел; Подраздел = СокрЛП(Док.Sheets(1).Cells(сч, 2).Value); НоваяТЗ.Подраздел = Подраздел; Код = СокрЛП(Док.Sheets(1).Cells(сч, 3).Value); НоваяТЗ.Код = Код; Имя = СокрЛП(Док.Sheets(1).Cells(сч, 4).Value); НоваяТЗ.Имя = Имя; КонецЦикла; Для каждого Строка из ТаблицаЗначений Цикл НайтиРаздел = Справочники.КодыОКВЭД.НайтиПоНаименованию(Строка.Раздел); Если НЕ НайтиРаздел = Справочники.КодыОКВЭД.ПустаяСсылка() Тогда ОбъектКодыОКВЭД = НайтиРаздел.ПолучитьОбъект(); //НоваяСтрока = ОбъектКодыОКВЭД.Раздел.Добавить(); ОбъектКодыОКВЭД.Раздел = Строка.Раздел; КонецЕсли; Если НЕ Подраздел = Справочники.КодыОКВЭД.ПустаяСсылка() Тогда //НоваяСтрока = ОбъектКодыОКВЭД.Подраздел.Добавить(); ОбъектКодыОКВЭД.Подраздел = Строка.Подраздел; КонецЕсли; Попытка ОбъектКодыОКВЭД.Записать(); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; КонецЦикла; пока тестирую только на 1 двух колонках, в ТЗ данные из экселя отлично читаются, но потом, при создании новых позиций у меня вылетает ошибка с значение не является значение объектного типа и указание на ОбъектКодыОКВЭД = НайтиРаздел.ПолучитьОбъект(, это происходит потому что у НайтиРаздел тип неопределено, как получить мне строку с разделом, и если такого раздела еще нет, то создать его? |
|||
1
Rie
29.08.13
✎
14:02
|
Написать свою функцию, которая проверит, есть ли такой раздел, и если нет - создаст.
|
|||
2
Валидатор
29.08.13
✎
14:10
|
(1) сделал, создаются позиции, а как теперь сделать сразу чтобы по группам распихивались данные? то есть, если у меня Раздел А - то все в него входит, потом дальше смотрится, в разделе А если подраздел АА, то все соответствущие данные из екселевского файла что мы грузим идут в АА, и т.д., чтобы иерархия как в ОКВЭд была, которые на просторах интернета лежат?
|
|||
3
Rie
29.08.13
✎
14:32
|
(2) Режешь строку кода по точкам. И создаёшь группы. (Или тут лучше иерархия элементов?).
|
|||
4
Валидатор
29.08.13
✎
14:36
|
(3) ну вот я тоже думаю, как удобнее, в ОКПД например справочнике просто иерархия элементов идет, да и в справочнике у меня стоит иерархия элементов только, писать функцию, которая будет резать строку кода?
|
|||
5
Валидатор
29.08.13
✎
14:40
|
ПОДСТРОКА(ПланЗакупокСоставПлана.Номенклатура.Артикул, 1, 2) + "." + ПОДСТРОКА(ПланЗакупокСоставПлана.Номенклатура.Артикул, 3, 2) + "." + ПОДСТРОКА(ПланЗакупокСоставПлана.Номенклатура.Артикул, 5, 100)
вот делал обрезание строки по точкам, но это в запросе, а как тоже самое без запроса сделать? |
|||
6
Rie
29.08.13
✎
16:03
|
(6) Использовать функцию Найти. Получив позицию точки, при помощи Лев и Сред выделить подстроки слева и справа. И всё это обернуть в цикл.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |