|
v7: Перенос справочника | ☑ | ||
---|---|---|---|---|
0
Garikus
10.05.18
✎
18:25
|
Доброго времени суток, просьба не кидаться тяжелыми предметами, с 77 уже как 5 лет не занимался.
Подскажите где косяк? Имеется БП 4.5 Требуется материалы перенести в номенклатуру Спр = СоздатьОбъект("Справочник.Материалы"); Спр.ВыбратьЭлементы(); СпрСотр = СоздатьОбъект("Справочник.Номенклатура"); Пока Спр.ПолучитьЭлемент() = 1 Цикл Если Спр.ТекущийЭлемент().ЭтоГруппа()=0 Тогда // Если Спр.ТекущийЭлемент().ЭтоГруппа()=0 Тогда СпрСотр.Новый(); СпрСотр.Наименование = Спр.Наименование; СпрСотр.Записать(); СпрСотр.ПолнНаименование = Спр.Наименование; Если СпрСотр.НайтиПоНаименованию(спр.Родитель,Спр.Родитель.Код) = 1 тогда СпрСотр.Родитель =СпрСотр.ТекущийЭлемент(); КонецЕсли; едИзм = СоздатьОбъект("Справочник.ЕдиницыИзмерений"); Если едИзм.НайтиПоНаименованию(спр.ЕдиницаИзмерения) = 1 тогда СпрСотр.ЕдиницаИзмерения =едИзм.ТекущийЭлемент() ; КонецЕсли; СпрСотр.Цена = Спр.Цена; СпрСотр.ТипТовара = Перечисление.ТипыТоваров.Собственный; СпрСотр.ТипНоменклатуры = Перечисление.ТипыНоменклатуры.Товар; СпрСотр.Записать(); сообщить("Наименование "+спр.Наименование+" Код "+спр.код); КонецЕсли; Получаю в конце элемент не выбран |
|||
1
Amra
10.05.18
✎
18:28
|
Если СпрСотр.НайтиПоНаименованию(спр.Родитель,Спр.Родитель.Код) = 1 тогда
СпрСотр.Родитель =СпрСотр.ТекущийЭлемент(); КонецЕсли; Это что вообще? И 7.7 тут не причем |
|||
2
Garikus
10.05.18
✎
18:30
|
(1) В номенклатуре есть уже созданные папки 1 в 1 Метериалы = номенклатура
|
|||
3
Ёпрст
10.05.18
✎
18:31
|
(0) ищи родителя в другой переменной, ну и вот это перепиши
Спр.ТекущийЭлемент().ЭтоГруппа()=0 |
|||
4
Ёпрст
10.05.18
✎
18:35
|
ну и если лень использовать рекурсию, то, в начале создаешь все элементы и группы в одну кучку, затем делаешь еще один проход и назначаешь родителей.
+ при создании элементов и групп проверяешь сперва, что такого еще нет. |
|||
5
Ёпрст
10.05.18
✎
18:41
|
Типа того:
СпрМатериалы = СоздатьОбъект("Справочник.Материалы"); СпрМатериалы.ВыбратьЭлементы(); СпрНоменклатура = СоздатьОбъект("Справочник.Номенклатура"); Пока СпрМатериалы .ПолучитьЭлемент() = 1 Цикл Если СпрНоменклатура.НайтиПоКоду(СпрМатериалы.Код,1)=0 Тогда Если СпрМатериалы.ЭтоГруппа()=1 Тогда СпрНоменклатура.НоваяГруппа(); СпрНоменклатура.Код = СпрМатериалы.Код; СпрНоменклатура.Наименование= СпрМатериалы.Наименование; СпрНоменклатура.Записать(); Иначе СпрНоменклатура.Новый(); СпрНоменклатура.Код = СпрМатериалы.Код; СпрНоменклатура.Наименование= СпрМатериалы.Наименование; // ......остальные реквизиты СпрНоменклатура.Записать(); КонецЕсли; КонецЕсли; //далее еще одна выборка и просто заполнить реквизит Родитель, ищя его так-же по коду. Усё |
|||
6
Ёпрст
10.05.18
✎
18:42
|
ну или ищи всё по наименованию, если уверен, что они у тя уникальные во всём справочнике
|
|||
7
Garikus
10.05.18
✎
18:46
|
(6) Громадное спасибо
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |