|
v7: Выгрузка и загрузка элементов справочника | ☑ | ||
---|---|---|---|---|
0
alex_reglament
16.01.12
✎
11:30
|
привет всем
имеется две конфиги нужно из одной спр.Материалы перенести в другую перенести просто элементы спр у меня получилось а вот как перенести все с группами не получается помогите Процедура ВыгрузитьМатериалы() Если СокрЛП(ВыбФайлВыгрузки) = "" Тогда Предупреждение("Внимание! Не выбран файл для выгрузки!"); Возврат; КонецЕсли; гРежимВСтрокуВнутр = 1; ТекФайл = СокрЛП(ВыбФайлВыгрузки); Если СтрЧислоВхождений(ТекФайл, ".") = 0 Тогда ТекФайл = ТекФайл+".txt"; КонецЕсли; Если ФС.СуществуетФайл(СокрЛП(ТекФайл)) = 1 Тогда Если Вопрос("Файл с заданным именем уже существует! Перезаписать файл?", 4) = 7 Тогда Возврат; КонецЕсли; КонецЕсли; Выгрузка = СоздатьОбъект("Текст"); СпрМат = СоздатьОбъект("Справочник.Материалы"); СпрМат.ВыбратьЭлементы(); Пока СпрМат.ПолучитьЭлемент() = 1 Цикл Если ПустоеЗначение(СпрМат.Наименование) = 0 Тогда Арт =""; ЕдИзм =""; СубСч10 =""; Цена =""; Масса =""; Страна =""; Срок =""; ПерваяЦена =""; Код =""; Наименование =""; Арт = СпрМат.Артикул; Выгрузка.ДобавитьСтроку("AR"+Арт); ЕдИзм = СпрМат.ЕдиницаИзмерения; Выгрузка.ДобавитьСтроку("EI"+ЕдИзм); СубСч10 = СпрМат.СубСчет10; Выгрузка.ДобавитьСтроку("CB"+СубСч10); Цена = СпрМат.Цена; Выгрузка.ДобавитьСтроку("CE"+Цена); Масса = СпрМат.Масса; Выгрузка.ДобавитьСтроку("MS"+Масса); Страна = СпрМат.СтранаПроисхождения; Выгрузка.ДобавитьСтроку("ST"+Страна); Срок = СпрМат.СрокИспользования; Выгрузка.ДобавитьСтроку("SR"+Срок); ПерваяЦена = СпрМат.ПервыйИмпортер; Выгрузка.ДобавитьСтроку("PC"+ПерваяЦена); Код = СпрМат.Код; Выгрузка.ДобавитьСтроку("KO"+Код); Наименование = СпрМат.Наименование; Выгрузка.ДобавитьСтроку("IM"+Наименование); КонецЕсли; КонецЦикла; Выгрузка.Записать(ТекФайл); Сообщить("Выгрузка элементов справочника завершена"); КонецПроцедуры //это по выгрузке Функция ЗгрузкаМатериалов() Перем Имя; спрМатериалы = СоздатьОбъект("Справочник.Материалы"); ПолучТекст = СоздатьОбъект("Текст"); Если СокрЛП(ВыбФайлЗагрузки) = "" Тогда Возврат 1; КонецЕсли; Если ПолучитьИмяФайла(ВыбФайлЗагрузки, Имя) = 0 Тогда Возврат 1; Иначе Проход = ""; Попытка ПолучТекст.Открыть(СокрЛП(Имя)); Для Сч=1 По ПолучТекст.КоличествоСтрок() Цикл Стр=СокрЛП(ПолучТекст.ПолучитьСтроку(Сч)); Если (Проход = "") или (Проход = 5) Тогда спрМатериалы.Новый(); Проход =""; КонецЕсли; Если Лев(Стр,2)="AR" Тогда спрМатериалы.Артикул = Прав(Стр,СтрДлина(Стр)-2); Проход = 1 ; ИначеЕсли Лев(Стр,2)="CE" Тогда спрМатериалы.ЦенаУчетная = Прав(Стр,СтрДлина(Стр)-2); Проход = 2 ; ИначеЕсли Лев(Стр,2)="MS" Тогда спрМатериалы.МассаБрутто = Прав(Стр,СтрДлина(Стр)-2); Проход = 3 ; ИначеЕсли Лев(Стр,2)="SR" Тогда спрМатериалы.СрокЭксплуатации = Прав(Стр,СтрДлина(Стр)-2); Проход = 4 ; ИначеЕсли Лев(Стр,2)="IM" Тогда спрМатериалы.Наименование = Прав(Стр,СтрДлина(Стр)-2); Проход = 5 ; Если Проход = 5 Тогда спрМатериалы.Записать(); Проход =""; КонецЕсли; КонецЕсли; КонецЦикла; Исключение Сообщить("Ошибка открытия файла или материал уже записан "+Имя+"!"); Возврат 0; КонецПопытки; КонецЕсли; Возврат 1; КонецФункции //это по загрузке но этот код просто загружает элементы без учета групп а мне нужно чтобы были и группы |
|||
1
el-gamberro
16.01.12
✎
11:31
|
Перегружай еще реквизит Родитель
|
|||
2
el-gamberro
16.01.12
✎
11:31
|
А лучше освой "Конвертация данных"
|
|||
3
alex_reglament
16.01.12
✎
11:32
|
забыл написать можно по подробнее показать как это делать просто я с группами не имел дела ни когда
|
|||
4
Cube
16.01.12
✎
11:33
|
(0) "Выгрузкак" - этопять!!!))) Слово с глубоким смыслом!)
|
|||
5
alex_reglament
16.01.12
✎
11:33
|
Процедура ВыгрузитьМатериалы()
Если СокрЛП(ВыбФайлВыгрузки) = "" Тогда Предупреждение("Внимание! Не выбран файл для выгрузки!"); Возврат; КонецЕсли; гРежимВСтрокуВнутр = 1; ТекФайл = СокрЛП(ВыбФайлВыгрузки); Если СтрЧислоВхождений(ТекФайл, ".") = 0 Тогда ТекФайл = ТекФайл+".txt"; КонецЕсли; Если ФС.СуществуетФайл(СокрЛП(ТекФайл)) = 1 Тогда Если Вопрос("Файл с заданным именем уже существует! Перезаписать файл?", 4) = 7 Тогда Возврат; КонецЕсли; КонецЕсли; Выгрузка = СоздатьОбъект("Текст"); СпрМат = СоздатьОбъект("Справочник.Материалы"); СпрМат.ВыбратьЭлементы(); Пока СпрМат.ПолучитьЭлемент() = 1 Цикл Если ПустоеЗначение(СпрМат.Наименование) = 0 Тогда Если СпрМат.ЭтоГруппа() = 1 Тогда Наименование =""; Код =""; элемент = ""; Наименование = СпрМат.Наименование; элемент = СпрМат; Выгрузка.ДобавитьСтроку("GR"+Наименование); Код = СпрМат.Код; Выгрузка.ДобавитьСтроку("KG"+Код); СпрМат.ИспользоватьРодителя(элемент); Пока СпрМат.ПолучитьЭлемент() = 1 Цикл Если ПустоеЗначение(СпрМат.Наименование) = 0 Тогда Если СпрМат.ЭтоГруппа() = 1 Тогда Наименование =""; Код =""; элемент1 = ""; Наименование = СпрМат.Наименование; элемент1 = СпрМат; Выгрузка.ДобавитьСтроку("1GR"+Наименование); Код = СпрМат.Код; Выгрузка.ДобавитьСтроку("1KG"+Код); // СпрМат.ИспользоватьРодителя(элемент1); // Пока СпрМат.ПолучитьЭлемент() = 1 Цикл // Если ПустоеЗначение(СпрМат.Наименование) = 0 Тогда // Арт =""; // ЕдИзм =""; // СубСч10 =""; // Цена =""; // Масса =""; // Страна =""; // Срок =""; // ПерваяЦена =""; // Код =""; // Наименование =""; // Арт = СпрМат.Артикул; // Выгрузка.ДобавитьСтроку("1GAR"+Арт); // ЕдИзм = СпрМат.ЕдиницаИзмерения; // Выгрузка.ДобавитьСтроку("1GEI"+ЕдИзм); // СубСч10 = СпрМат.СубСчет10; // Выгрузка.ДобавитьСтроку("1GCB"+СубСч10); // Цена = СпрМат.Цена; // Выгрузка.ДобавитьСтроку("1GCE"+Цена); // Масса = СпрМат.Масса; // Выгрузка.ДобавитьСтроку("1GMS"+Масса); // Страна = СпрМат.СтранаПроисхождения; // Выгрузка.ДобавитьСтроку("1GST"+Страна); // Срок = СпрМат.СрокИспользования; // Выгрузка.ДобавитьСтроку("1GSR"+Срок); // ПерваяЦена = СпрМат.ПервыйИмпортер; // Выгрузка.ДобавитьСтроку("1GPC"+ПерваяЦена); // Код = СпрМат.Код; // Выгрузка.ДобавитьСтроку("1GKO"+Код); // Наименование = СпрМат.Наименование; // Выгрузка.ДобавитьСтроку("1GIM"+Наименование); // Иначе // Арт =""; // ЕдИзм =""; // СубСч10 =""; // Цена =""; // Масса =""; // Страна =""; // Срок =""; // ПерваяЦена =""; // Код =""; // Наименование =""; // Арт = СпрМат.Артикул; // Выгрузка.ДобавитьСтроку("GAR"+Арт); // ЕдИзм = СпрМат.ЕдиницаИзмерения; // Выгрузка.ДобавитьСтроку("GEI"+ЕдИзм); // СубСч10 = СпрМат.СубСчет10; // Выгрузка.ДобавитьСтроку("GCB"+СубСч10); // Цена = СпрМат.Цена; // Выгрузка.ДобавитьСтроку("GCE"+Цена); // Масса = СпрМат.Масса; // Выгрузка.ДобавитьСтроку("GMS"+Масса); // Страна = СпрМат.СтранаПроисхождения; // Выгрузка.ДобавитьСтроку("GST"+Страна); // Срок = СпрМат.СрокИспользования; // Выгрузка.ДобавитьСтроку("GSR"+Срок); // ПерваяЦена = СпрМат.ПервыйИмпортер; // Выгрузка.ДобавитьСтроку("GPC"+ПерваяЦена); // Код = СпрМат.Код; // Выгрузка.ДобавитьСтроку("GKO"+Код); // Наименование = СпрМат.Наименование; // Выгрузка.ДобавитьСтроку("GIM"+Наименование); // КонецЕсли; //КонецЦикла; КонецЕсли; КонецЕсли; КонецЦикла; КонецЕсли; КонецЕсли; КонецЦикла; // Если СпрМат.ЭтоГруппа() = 0 Тогда // Пока СпрМат.ПолучитьЭлемент() = 1 Цикл // // Арт =""; // ЕдИзм =""; // СубСч10 =""; // Цена =""; // Масса =""; // Страна =""; // Срок =""; // ПерваяЦена =""; // Код =""; // Наименование =""; // Арт = СпрМат.Артикул; // Выгрузка.ДобавитьСтроку("AR"+Арт); // ЕдИзм = СпрМат.ЕдиницаИзмерения; // Выгрузка.ДобавитьСтроку("EI"+ЕдИзм); // СубСч10 = СпрМат.СубСчет10; // Выгрузка.ДобавитьСтроку("CB"+СубСч10); // Цена = СпрМат.Цена; // Выгрузка.ДобавитьСтроку("CE"+Цена); // Масса = СпрМат.Масса; // Выгрузка.ДобавитьСтроку("MS"+Масса); // Страна = СпрМат.СтранаПроисхождения; // Выгрузка.ДобавитьСтроку("ST"+Страна); // Срок = СпрМат.СрокИспользования; // Выгрузка.ДобавитьСтроку("SR"+Срок); // ПерваяЦена = СпрМат.ПервыйИмпортер; // Выгрузка.ДобавитьСтроку("PC"+ПерваяЦена); // Код = СпрМат.Код; // Выгрузка.ДобавитьСтроку("KO"+Код); // Наименование = СпрМат.Наименование; // Выгрузка.ДобавитьСтроку("IM"+Наименование); // КонецЦикла; //КонецЕсли; Выгрузка.Записать(ТекФайл); Сообщить("Выгрузка элементов справочника завершена"); КонецПроцедуры это я пытался сделать выгрузку с рупами |
|||
6
alex_reglament
16.01.12
✎
11:35
|
Функция ЗгрузкаМатериалов()
Перем Имя; спрМатериалы = СоздатьОбъект("Справочник.Материалы"); ПолучТекст = СоздатьОбъект("Текст"); Если СокрЛП(ВыбФайлЗагрузки) = "" Тогда Возврат 1; КонецЕсли; Если ПолучитьИмяФайла(ВыбФайлЗагрузки, Имя) = 0 Тогда Возврат 1; Иначе Проход = ""; Попытка ПолучТекст.Открыть(СокрЛП(Имя)); Для Сч=1 По ПолучТекст.КоличествоСтрок() Цикл Стр=СокрЛП(ПолучТекст.ПолучитьСтроку(Сч)); Если Лев(Стр,2)="GR" Тогда спрМатериалы.НоваяГруппа(); энлнмн = ""; энлнмн = Прав(Стр,СтрДлина(Стр)-2); спрМатериалы.Наименование = Прав(Стр,СтрДлина(Стр)-2); ИначеЕсли Лев(Стр,2)="KG" Тогда спрМатериалы.УстановитьНовыйКод(Прав(Стр,СтрДлина(Стр)-2)); //= Прав(Стр,СтрДлина(Стр)-2); //ИначеЕсли Лев(Стр,3)="1GR" Тогда // спрМатериалы.ИспользоватьРодителя(энлнмн); // спрМатериалы.НоваяГруппа(); // спрМатериалы.Наименование = Прав(Стр,СтрДлина(Стр)-3); //ИначеЕсли Лев(Стр,3)="1KG" Тогда // спрМатериалы.УстановитьНовыйКод(Прав(Стр,СтрДлина(Стр)-3)); //Если (Проход = "") или (Проход = 5) Тогда // спрМатериалы.Новый(); // Проход =""; //КонецЕсли; //Если Лев(Стр,2)="AR" Тогда // спрМатериалы.Артикул = Прав(Стр,СтрДлина(Стр)-2); // Проход = 1 ; //ИначеЕсли Лев(Стр,2)="CE" Тогда // спрМатериалы.ЦенаУчетная = Прав(Стр,СтрДлина(Стр)-2); // Проход = 2 ; //ИначеЕсли Лев(Стр,2)="MS" Тогда // спрМатериалы.МассаБрутто = Прав(Стр,СтрДлина(Стр)-2); // Проход = 3 ; //ИначеЕсли Лев(Стр,2)="SR" Тогда // спрМатериалы.СрокЭксплуатации = Прав(Стр,СтрДлина(Стр)-2); // Проход = 4 ; //ИначеЕсли Лев(Стр,2)="IM" Тогда // спрМатериалы.Наименование = Прав(Стр,СтрДлина(Стр)-2); // Проход = 5 ; // // Если Проход = 5 Тогда спрМатериалы.Записать(); // Проход =""; // КонецЕсли; КонецЕсли; КонецЦикла; Исключение Сообщить("Ошибка открытия файла или материал уже записан "+Имя+"!"); Возврат 0; КонецПопытки; КонецЕсли; Возврат 1; КонецФункции а это загрузку |
|||
7
alex_reglament
16.01.12
✎
11:36
|
но не чего не получается
|
|||
8
filh
16.01.12
✎
11:36
|
Перекинь по OLE
|
|||
9
Эльниньо
16.01.12
✎
11:40
|
Т.УдалитьСтроки();
Спр = СоздатьОбъект("Справочник.Товары"); Спр.ВыбратьЭлементы(); Пока Спр.ПолучитьЭлемент() = 1 Цикл Т.НоваяСтрока(); Т.Код = Спр.Код; Т.Товар= Спр.Наименование; Т.Левел = Спр.Уровень(); Т.Гр = Спр.ЭтоГруппа(); Если Спр.Родитель.Выбран() = 0 Тогда Т.Папа = 0; Иначе Т.Папа = Спр.Родитель.Код; КонецЕсли; КонецЦикла; ЗначениеВФайл("d:\Zap.tz", Т); |
|||
10
alex_reglament
16.01.12
✎
11:47
|
(9) с этим может я и разберусь а как за тем подгрузить?
|
|||
11
Эльниньо
16.01.12
✎
11:51
|
Перем СкокаУровней;
//******************************************* Процедура Сформировать() ЗначениеИзФайла("d:\Zap.tz", Т); Т.Сортировать("Левел"); КонецПроцедуры //******************************************* Процедура Закачать() СкокаУровней = Т.ПолучитьЗначение(Т.КолтчествоСтрок(), "Левел"); Спр = СоздатьОбъект("Справочник.Товары"); Спр1 = СоздатьОбъект("Справочник.Товары"); Для х = 1 По СкокаУровней Цикл Т.ВыбратьСтроки(); Пока Т.ПолучитьСтроку() = 1 Цикл Если Т.Левел <> х Тогда Продолжить; КонецЕсли; Если Т.Гр = 1 Тогда Спр.НоваяГруппа(); Иначе Спр.Новый(); КонецЕсли; Если Т.Папа <> 0 Тогда Спр1.НайтиПоКоду(Т.Папа); Спр.Родитель = Спр1.ТекущийЭлемент(); КонецЕсли; Спр.Код = Т.Код; Спр.Наименование = Т.Товар; Спр.Записать(); Состояние(Т.Товар); КонецЦикла; КонецЦикла; КонецПроцедуры |
|||
12
alex_reglament
16.01.12
✎
12:09
|
(9) извини а т чему равна?
|
|||
13
alex_reglament
16.01.12
✎
12:10
|
Процедура нов()
Т = СоздатьОбъект("Текст"); Т.УдалитьСтроки(); Спр = СоздатьОбъект("Справочник.Материалы"); Спр.ВыбратьЭлементы(); Пока Спр.ПолучитьЭлемент() = 1 Цикл Т.НоваяСтрока(); Т.Код = Спр.Код; Т.Товар= Спр.Наименование; Т.Левел = Спр.Уровень(); Т.Гр = Спр.ЭтоГруппа(); Если Спр.Родитель.Выбран() = 0 Тогда Т.Папа = 0; Иначе Т.Папа = Спр.Родитель.Код; КонецЕсли; КонецЦикла; ЗначениеВФайл("d:\Zap.tz", Т); КонецПроцедуры чето он не работает |
|||
14
Godofsin
16.01.12
✎
12:11
|
(12) ТаблицаЗначений, зуб даю =)
|
|||
15
alex_reglament
16.01.12
✎
12:11
|
спасибо я просто думал что это текст
|
|||
16
Эльниньо
16.01.12
✎
12:12
|
(12) ТЗ на форме. Вообще я привёл урезанный код. На самом деле писалось из-за всяких нюансов.
Например группу в источнике кидаем в корень приемника. |
|||
17
alex_reglament
16.01.12
✎
12:13
|
ок спасибо буду пробовать
|
|||
18
alex_reglament
16.01.12
✎
12:13
|
идея понятна
|
|||
19
alex_reglament
16.01.12
✎
12:29
|
я еще раз извиняюсь у меня при загрузке ошибка
Спр.Записать(); {D:\1С\КОНФИГУРАЦИИ 1СV7\ВЫГРУЗКИ ДЛЯ ТБЗ\ВЫГРУЗКА КОНТРОВ.ERT(113)}: Код не уникальный! |
|||
20
alex_reglament
16.01.12
✎
12:30
|
//*******************************************
Процедура Сформировать() ЗначениеИзФайла("d:\Zap.tz", Т); Т.Сортировать("Левел"); КонецПроцедуры //******************************************* Процедура Закачать() Сформировать(); СкокаУровней = Т.ПолучитьЗначение(Т.КоличествоСтрок(), "Левел"); Спр = СоздатьОбъект("Справочник.Материалы"); Спр1 = СоздатьОбъект("Справочник.Материалы"); Для х = 1 По СкокаУровней Цикл Т.ВыбратьСтроки(); Пока Т.ПолучитьСтроку() = 1 Цикл Если Т.Левел <> х Тогда Продолжить; КонецЕсли; Если Т.Гр = 1 Тогда Спр.НоваяГруппа(); Иначе Спр.Новый(); КонецЕсли; Если Т.Папа <> 0 Тогда Спр1.НайтиПоКоду(Т.Папа); Спр.Родитель = Спр1.ТекущийЭлемент(); КонецЕсли; Спр.Код = Т.Код; Спр.Наименование = Т.Товар; Спр.Записать(); Состояние(Т.Товар); КонецЦикла; КонецЦикла; КонецПроцедуры |
|||
21
alex_reglament
16.01.12
✎
12:33
|
так будет правильно???
Процедура Сформировать() ЗначениеИзФайла("d:\Zap.tz", Т); Т.Сортировать("Левел"); КонецПроцедуры //******************************************* Процедура Закачать() Сформировать(); СкокаУровней = Т.ПолучитьЗначение(Т.КоличествоСтрок(), "Левел"); Спр = СоздатьОбъект("Справочник.Материалы"); Спр1 = СоздатьОбъект("Справочник.Материалы"); Для х = 1 По СкокаУровней Цикл Т.ВыбратьСтроки(); Пока Т.ПолучитьСтроку() = 1 Цикл Если Т.Левел <> х Тогда Продолжить; КонецЕсли; Если Т.Гр = 1 Тогда Спр.НоваяГруппа(); Иначе Спр.Новый(); КонецЕсли; Если Т.Папа <> 0 Тогда Спр1.НайтиПоКоду(Т.Папа); Спр.Родитель = Спр1.ТекущийЭлемент(); КонецЕсли; Спр.УстановитьНовыйКод(Т.Код); //Спр.Код = Т.Код; Спр.Наименование = Т.Товар; Спр.Записать(); Состояние(Т.Товар); КонецЦикла; КонецЦикла; КонецПроцедуры |
|||
22
alex_reglament
16.01.12
✎
12:34
|
Спр.УстановитьНовыйКод(Т.Код);
|
|||
23
Эльниньо
16.01.12
✎
12:34
|
(19) По второму разу гонишь?
Тогда проверяй на наличие. |
|||
24
alex_reglament
16.01.12
✎
12:35
|
Спр.УстановитьНовыйКод(Т.Код);
так будет не правильным? |
|||
25
alex_reglament
16.01.12
✎
12:35
|
ок
|
|||
26
Эльниньо
16.01.12
✎
12:36
|
(24) На второй и следующих итерациях не найдёшь папу.
|
|||
27
alex_reglament
16.01.12
✎
12:37
|
Процедура Сформировать()
ЗначениеИзФайла("d:\Zap.tz", Т); Т.Сортировать("Левел"); КонецПроцедуры //******************************************* Процедура Закачать() Сформировать(); СкокаУровней = Т.ПолучитьЗначение(Т.КоличествоСтрок(), "Левел"); Спр = СоздатьОбъект("Справочник.Материалы"); Спр1 = СоздатьОбъект("Справочник.Материалы"); Для х = 1 По СкокаУровней Цикл Т.ВыбратьСтроки(); Пока Т.ПолучитьСтроку() = 1 Цикл Если Т.Левел <> х Тогда Продолжить; КонецЕсли; Если Т.Гр = 1 Тогда Спр.НоваяГруппа(); Иначе Спр.Новый(); КонецЕсли; Если Т.Папа <> 0 Тогда Спр1.НайтиПоКоду(Т.Папа); Спр.Родитель = Спр1.ТекущийЭлемент(); КонецЕсли; Если Спр.НайтиПоКоду(Т.Код) = 1 Тогда Продолжить; Иначе Спр.Код = Т.Код; Спр.Наименование = Т.Товар; Спр.Записать(); Состояние(Т.Товар); КонецЦикла; КонецЦикла; КонецПроцедуры |
|||
28
alex_reglament
16.01.12
✎
12:37
|
так будет правильно?
|
|||
29
alex_reglament
16.01.12
✎
12:38
|
Если Спр.НайтиПоКоду(Т.Код) = 1 Тогда
Продолжить; Иначе Спр.Код = Т.Код; Спр.Наименование = Т.Товар; Спр.Записать(); |
|||
30
alex_reglament
16.01.12
✎
12:39
|
(27) извиняюсь КонецЕсли Забыл
|
|||
31
Эльниньо
16.01.12
✎
12:40
|
Процедура Закачать()
Сформировать(); СкокаУровней = Т.ПолучитьЗначение(Т.КоличествоСтрок(), "Левел"); Спр = СоздатьОбъект("Справочник.Материалы"); Спр1 = СоздатьОбъект("Справочник.Материалы"); Для х = 1 По СкокаУровней Цикл Т.ВыбратьСтроки(); Пока Т.ПолучитьСтроку() = 1 Цикл Если Т.Левел <> х Тогда Продолжить; КонецЕсли; Если Спр.НайтиПоКоду(Т.Код) = 1 Тогда Продолжить; КонецЕсли; Если Т.Гр = 1 Тогда Спр.НоваяГруппа(); Иначе Спр.Новый(); КонецЕсли; Если Т.Папа <> 0 Тогда Спр1.НайтиПоКоду(Т.Папа); Спр.Родитель = Спр1.ТекущийЭлемент(); Иначе Спр.Код = Т.Код; Спр.Наименование = Т.Товар; Спр.Записать(); Состояние(Т.Товар); КонецЦикла; КонецЦикла; КонецПроцедуры |
|||
32
alex_reglament
16.01.12
✎
12:42
|
Процедура Закачать()
Сформировать(); СкокаУровней = Т.ПолучитьЗначение(Т.КоличествоСтрок(), "Левел"); Спр = СоздатьОбъект("Справочник.Материалы"); Спр1 = СоздатьОбъект("Справочник.Материалы"); Для х = 1 По СкокаУровней Цикл Т.ВыбратьСтроки(); Пока Т.ПолучитьСтроку() = 1 Цикл Если Т.Левел <> х Тогда Продолжить; КонецЕсли; Если Спр.НайтиПоКоду(Т.Код) = 1 Тогда Продолжить; КонецЕсли; Если Т.Гр = 1 Тогда Спр.НоваяГруппа(); Иначе Спр.Новый(); КонецЕсли; Если Т.Папа <> 0 Тогда Спр1.НайтиПоКоду(Т.Папа); Спр.Родитель = Спр1.ТекущийЭлемент(); Иначе Спр.Код = Т.Код; Спр.Наименование = Т.Товар; Спр.Записать(); Состояние(Т.Товар); КонецЦикла; КонецЦикла; КонецПроцедуры он группы создал но элементы положил тупо в корень |
|||
33
alex_reglament
16.01.12
✎
12:42
|
группы пустые
|
|||
34
alex_reglament
16.01.12
✎
12:43
|
что делать что не так?
|
|||
35
alex_reglament
16.01.12
✎
12:47
|
Спр.Записать();
{D:\1С\КОНФИГУРАЦИИ 1СV7\ВЫГРУЗКИ ДЛЯ ТБЗ\ВЫГРУЗКА КОНТРОВ.ERT(116)}: Код не уникальный! |
|||
36
alex_reglament
16.01.12
✎
12:48
|
(35) + (31)
|
|||
37
alex_reglament
16.01.12
✎
12:50
|
с ошибкой (35) разобрался
Процедура Закачать() Сформировать(); СкокаУровней = Т.ПолучитьЗначение(Т.КоличествоСтрок(), "Левел"); Спр = СоздатьОбъект("Справочник.Материалы"); Спр1 = СоздатьОбъект("Справочник.Материалы"); Для х = 1 По СкокаУровней Цикл Т.ВыбратьСтроки(); Пока Т.ПолучитьСтроку() = 1 Цикл Если Т.Левел <> х Тогда Продолжить; КонецЕсли; Если Спр.НайтиПоКоду(Т.Код) = 1 Тогда Продолжить; КонецЕсли; Если Т.Гр = 1 Тогда Спр.НоваяГруппа(); Иначе Спр.Новый(); КонецЕсли; Если Т.Папа <> 0 Тогда Спр1.НайтиПоКоду(Т.Папа); Спр.Родитель = Спр1.ТекущийЭлемент(); Иначе Если Спр1.НайтиПоКоду(Т.Код) = 1 Тогда Продолжить; Спр.Код = Т.Код; Спр.Наименование = Т.Товар; Спр.Записать(); Состояние(Т.Товар); КонецЕсли; КонецЕсли; КонецЦикла; КонецЦикла; КонецПроцедуры |
|||
38
alex_reglament
16.01.12
✎
12:50
|
а вот с группа проблемма осталась
|
|||
39
alex_reglament
16.01.12
✎
12:51
|
(32) + (33) + (34)
|
|||
40
alex_reglament
16.01.12
✎
12:51
|
помогите
|
|||
41
Эльниньо
16.01.12
✎
12:57
|
Внимательно (37) и (31) сравни.
1. Исправь. 2. Удали все элементы в приемнике (хрен знает как они там сели). 3. Запусти. |
|||
42
alex_reglament
16.01.12
✎
13:00
|
ты про (37) Если Спр1.НайтиПоКоду(Т.Код) = 1 Тогда
Продолжить; Спр.Код = Т.Код; Спр.Наименование = Т.Товар; Спр.Записать(); Состояние(Т.Товар); КонецЕсли; это имел в виду |
|||
43
alex_reglament
16.01.12
✎
13:00
|
если я твой код (31) ставлю то у меня ошибка (35)
|
|||
44
alex_reglament
16.01.12
✎
13:00
|
Удали все элементы в приемнике (хрен знает как они там сели).
КАК? |
|||
45
alex_reglament
16.01.12
✎
13:08
|
блин не чего не получается
|
|||
46
Ёпрст
16.01.12
✎
13:18
|
потом выкини всё в топку, скачай import\export77.ert и наслаждайся
или tranref.ert с диска ИТС |
|||
47
Zhuravlik
16.01.12
✎
13:33
|
(44) Если в справочнике уже были элементы до твоей выгрузки, то создай в нем идентификатор, напр. КодВБазеИсточнике - и засовывай туда соотв. код. После этого сможешь сделать так:
спр = СоздатьОбъект("Справочник.Материалы"); спр.ВыбратьЭлементы(); Пока спр.ПолучитьЭлемент() = 1 Цикл Если ПустоеЗначение(спр.КодВБазеИсточнике) = 1 Тогда Продолжить; КонецЕсли; спр.Удалить(); КонецЦикла тут правда надо еще группы убить. Но это уж думай сам, я бы создал список значений по родителю, и проверял бы потом есть ли в этой группе элементы, если нет - удалить. |
|||
48
alex_reglament
16.01.12
✎
13:35
|
спр пустой!!!!
|
|||
49
Zhuravlik
16.01.12
✎
13:37
|
А вообще, в (8) дело говрят. http://www.mista.ru/articles1c/ole.htm
(19) - код не уникальный, проверь в базе приемнике как нумерация справочника задана. И не задавай код сам) Просто опускай этот параметр, 1с сама перенумерует, если стоит галка в конфигураторе. |
|||
50
alex_reglament
16.01.12
✎
13:44
|
сделал так всеравно ругается с уникальностью кода
Процедура Закачать() Сформировать(); СкокаУровней = Т.ПолучитьЗначение(Т.КоличествоСтрок(), "Левел"); Спр = СоздатьОбъект("Справочник.Материалы"); Спр1 = СоздатьОбъект("Справочник.Материалы"); Для х = 1 По СкокаУровней Цикл Т.ВыбратьСтроки(); Пока Т.ПолучитьСтроку() = 1 Цикл Если Т.Левел <> х Тогда Продолжить; КонецЕсли; Если Спр.НайтиПоКоду(Т.Код) = 1 Тогда Продолжить; КонецЕсли; Если Т.Гр = 1 Тогда Спр.НоваяГруппа(); Иначе Спр.Новый(); КонецЕсли; Если Т.Папа <> 0 Тогда Спр1.НайтиПоКоду(Т.Папа); Спр.Родитель = Спр1.ТекущийЭлемент(); Иначе Если Спр1.НайтиПоКоду(Т.Код) = 0 Тогда Спр.Код = Т.Код; Спр.Наименование = Т.Товар; Спр.Записать(); Состояние(Т.Товар); Иначе Продолжить; КонецЕсли; КонецЕсли; КонецЦикла; КонецЦикла; КонецПроцедуры \ //но один элементо с кодом "0" записывает потом ошибка |
|||
51
Zhuravlik
16.01.12
✎
13:48
|
Спр.Код = Т.Код; - убери эту строчку, в конфе посмотри галки автоматическая нумерация, и контроль уникальности. Тоже недавно совсем перегружал справочник, даже в голову не пришло самому следить за кодом) Он нужен, но отдельным реквизитом, чтобы знать какой элемент был выгружен.
|
|||
52
alex_reglament
16.01.12
✎
13:49
|
да точно в приемнике тип Числовой
|
|||
53
alex_reglament
16.01.12
✎
13:49
|
а передаче текст
|
|||
54
alex_reglament
16.01.12
✎
13:50
|
так на код ругаться перестала
Процедура Закачать() Сформировать(); СкокаУровней = Т.ПолучитьЗначение(Т.КоличествоСтрок(), "Левел"); Спр = СоздатьОбъект("Справочник.Материалы"); Спр1 = СоздатьОбъект("Справочник.Материалы"); Для х = 1 По СкокаУровней Цикл Т.ВыбратьСтроки(); Пока Т.ПолучитьСтроку() = 1 Цикл Если Т.Левел <> х Тогда Продолжить; КонецЕсли; Если Спр.НайтиПоКоду(Т.Код) = 1 Тогда Продолжить; КонецЕсли; Если Т.Гр = 1 Тогда Спр.НоваяГруппа(); Иначе Спр.Новый(); КонецЕсли; Если Т.Папа <> 0 Тогда Спр1.НайтиПоКоду(Т.Папа); Спр.Родитель = Спр1.ТекущийЭлемент(); Иначе // Спр.Код = Т.Код; Спр.Наименование = Т.Товар; Спр.Записать(); Состояние(Т.Товар); КонецЕсли; КонецЦикла; КонецЦикла; КонецПроцедуры |
|||
55
alex_reglament
16.01.12
✎
13:51
|
меня интересует следующее а почему элементы всеравно в корень спр падаю а погруппа не раскидываются?
|
|||
56
Zhuravlik
16.01.12
✎
13:53
|
А как ты потом поймешь какой элемент справочника был выгружен? "создай в нем идентификатор, напр. КодВБазеИсточнике - и засовывай туда соотв. код".
(55) Потому что ты их по коду ищешь, а он уже другой. Спр1.НайтиПоКоду(Т.Папа); - не прокатит. Спр1.НайтиПоНаименованию(Т.Папа.Наименование, 0) - должно пойти... |
|||
57
filh
16.01.12
✎
13:53
|
вот это Спр1.НайтиПоКоду(Т.Папа) не мешало бы проверить.
|
|||
58
Zhuravlik
16.01.12
✎
13:54
|
(58) Посмотри в сторону ОЛЕ, мучений поменьше)
|
|||
59
alex_reglament
16.01.12
✎
13:55
|
ок буду пробовать
|
|||
60
filh
16.01.12
✎
13:58
|
||||
61
alex_reglament
16.01.12
✎
15:00
|
(60) все ок перенес спасибо все но и (54) заработала только тогда когда я убрал уникальность кода
|
|||
62
filh
16.01.12
✎
15:01
|
(61) Дубли теперь проверь.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |