|
Как убрать задваивающиеся элементы | ☑ | ||
---|---|---|---|---|
0
den17
07.06.12
✎
09:39
|
При повторной загрузке из dbf файла обработкой, элементы задваиваются. Скажите пожалуйста, как убрать задваивающиеся элементы?
Что в коде надо добавить? |
|||
1
andrewks
07.06.12
✎
09:39
|
проверку, вижимо
|
|||
2
den17
07.06.12
✎
09:39
|
Процедура КнопкаВыполнитьНажатие(Кнопка)
Файл = Новый XBase; Файл.ОткрытьФайл("C:\tov.dbf"); //Файл.Кодировка = "OEM"; Если НЕ Файл.Открыта() Тогда Сообщить("Не удалось открыть файл!"); КонецЕсли; Файл.Первая(); Спр = Справочники.Номенклатура; СпрВид = Справочники.ВидыНоменклатуры; СпрЕд = Справочники.КлассификаторЕдиницИзмерения; СпрЕдИзм= Справочники.ЕдиницыИзмерения; Пока Файл.ВКонце() = 0 Цикл Состояние("Обрабатывается запись - " + Файл.Name); Если СокрЛП(Файл.GRUPPA1) = СокрЛП(Спр.НайтиПоНаименованию(СокрЛП(Файл.GRUPPA1))) Тогда Группа1 = Спр.НайтиПоНаименованию(СокрЛП(Файл.GRUPPA1)); Иначе Если НЕ ПустаяСтрока(Файл.GRUPPA1) Тогда СпрНом = Спр.СоздатьГруппу(); СпрНом.Наименование = СокрЛП(Файл.GRUPPA1); СпрНом.Записать(); Группа1 = Спр.НайтиПоНаименованию(СокрЛП(Файл.GRUPPA1)); Иначе Группа1 = ""; КонецЕсли; КонецЕсли; Если СокрЛП(Файл.GRUPPA2) = СокрЛП(Спр.НайтиПоНаименованию(СокрЛП(Файл.GRUPPA2))) Тогда Группа2 = Спр.НайтиПоНаименованию(СокрЛП(Файл.GRUPPA2)); Иначе Если НЕ ПустаяСтрока(Файл.GRUPPA2) Тогда СпрНом = Спр.СоздатьГруппу(); СпрНом.Наименование = СокрЛП(Файл.GRUPPA2); СпрНом.Родитель = Группа1; СпрНом.Записать(); Группа2 = Спр.НайтиПоНаименованию(СокрЛП(Файл.GRUPPA2)); Иначе Группа2 = ""; КонецЕсли; КонецЕсли; Если СокрЛП(Файл.GRUPPA3) = СокрЛП(Спр.НайтиПоНаименованию(СокрЛП(Файл.GRUPPA3))) Тогда Группа3 = Спр.НайтиПоНаименованию(СокрЛП(Файл.GRUPPA3)); Иначе Если НЕ ПустаяСтрока(Файл.GRUPPA3) Тогда СпрНом = Спр.СоздатьГруппу(); СпрНом.Наименование = СокрЛП(Файл.GRUPPA3); СпрНом.Родитель = Группа2; СпрНом.Записать(); Группа3 = Спр.НайтиПоНаименованию(СокрЛП(Файл.GRUPPA3)); Иначе Группа3 = ""; КонецЕсли; КонецЕсли; СпрНом = Спр.СоздатьЭлемент(); СпрНом.Наименование = СокрЛП(Файл.Name); СпрНом.НаименованиеПолное = СокрЛП(Файл.FullName); СпрНом.Артикул = Файл.Articul; СпрНом.ВидНоменклатуры = СпрВид.НайтиПоНаименованию("Товар"); СпрНом.СтавкаНДС = "Без НДС"; СпрНом.СтранаПроисхождения = СокрЛП(Файл.Countre); СпрНом.БазоваяЕдиницаИзмерения = СпрЕд.НайтиПоНаименованию(СокрЛП(Файл.Ed)); Если Группа3 <> "" Тогда СпрНом.Родитель = Группа3; Иначе Если Группа2 <> "" Тогда СпрНом.Родитель = Группа2; Иначе СпрНом.Родитель = Группа1; КонецЕсли; КонецЕсли; СпрНом.Записать(); СпрИзм = СпрЕдИзм.СоздатьЭлемент(); СпрИзм.Владелец = Спр.НайтиПоКоду(СпрНом.Код); СпрИзм.Коэффициент = 1; СпрИзм.Наименование= СпрЕд.НайтиПоНаименованию(СокрЛП(Файл.Ed)).Наименование; СпрИзм.ЕдиницаПоКлассификатору = СпрЕд.НайтиПоНаименованию(СокрЛП(Файл.Ed)); СпрИзм.Записать(); //СпрНом.ЕдиницаДляОтчетов.Владелец = СпрЕдИзм.НайтиПоНаименованию(СпрИзм.Наименование); СпрНом.ЕдиницаХраненияОстатков = СпрЕдИзм.НайтиПоКоду(СпрИзм.Код); СпрНом.Записать(); Файл.Следующая(); КонецЦикла; Файл.ЗакрытьФайл(); КонецПроцедуры |
|||
3
salvator
07.06.12
✎
09:39
|
(0) Создаешь элементы без проверки на существование?
|
|||
4
EasyRider
07.06.12
✎
09:40
|
(2)ды так и пиши,мол,напишите мне обработку,которая бы делала то-то и то-то
|
|||
5
salvator
07.06.12
✎
09:41
|
Если СокрЛП(Файл.GRUPPA1) = СокрЛП(Спр.НайтиПоНаименованию(СокрЛП(Файл.GRUPPA1)))
Это что за муйня? |
|||
6
salvator
07.06.12
✎
09:43
|
+(5) Ты строку с ссылкой сравниваешь, условие не срабатывает и всегда создается новый элемент
|
|||
7
den17
07.06.12
✎
09:46
|
А что тогда сравнивать?
|
|||
8
salvator
07.06.12
✎
09:47
|
Если НЕ ПустаяСтрока(Файл.GRUPPA1) Тогда
НайденЭлемент = Спр.НайтиПоНаименованию(СокрЛП(Файл.GRUPPA1),Истина); Если НайденЭлемент.Пустая() Тогда СпрНом = Спр.СоздатьГруппу(); СпрНом.Наименование = СокрЛП(Файл.GRUPPA1); СпрНом.Записать(); Группа1 = СпрНом.Ссылка; Иначе Группа1 = НайденЭлемент; КонецЕсли; КонецЕсли; |
|||
9
den17
07.06.12
✎
10:30
|
Изменил, но все равно задваиваются(
|
|||
10
hhhh
07.06.12
✎
10:34
|
(9) так надо было в 4-х местах поменять.
|
|||
11
den17
07.06.12
✎
11:14
|
поменял, но всё-равно так-же
|
|||
12
den17
07.06.12
✎
11:14
|
Процедура КнопкаВыполнитьНажатие(Кнопка)
Файл = Новый XBase; Файл.ОткрытьФайл("C:\tov.dbf"); //Файл.Кодировка = "OEM"; Если НЕ Файл.Открыта() Тогда Сообщить("Не удалось открыть файл!"); КонецЕсли; Файл.Первая(); Спр = Справочники.Номенклатура; СпрВид = Справочники.ВидыНоменклатуры; СпрЕд = Справочники.КлассификаторЕдиницИзмерения; СпрЕдИзм= Справочники.ЕдиницыИзмерения; Пока Файл.ВКонце() = 0 Цикл Состояние("Обрабатывается запись - " + Файл.Name); ///////////////////////////////////////////////////////////////////////////////////////////////////// Если НЕ ПустаяСтрока(Файл.GRUPPA1) Тогда НайденЭлемент = Спр.НайтиПоНаименованию(СокрЛП(Файл.GRUPPA1),Истина); Если НайденЭлемент.Пустая() Тогда СпрНом = Спр.СоздатьГруппу(); СпрНом.Наименование = СокрЛП(Файл.GRUPPA1); СпрНом.Записать(); Группа1 = СпрНом.Ссылка; Иначе Группа1 = НайденЭлемент; КонецЕсли; КонецЕсли; ///////////////////////////////////////////////////////////////////////////////////////////////////// //Если СокрЛП(Файл.GRUPPA1) = СокрЛП(Спр.НайтиПоНаименованию(СокрЛП(Файл.GRUPPA1))) Тогда // Группа1 = Спр.НайтиПоНаименованию(СокрЛП(Файл.GRUPPA1)); // Иначе // Если НЕ ПустаяСтрока(Файл.GRUPPA1) Тогда // СпрНом = Спр.СоздатьГруппу(); // СпрНом.Наименование = СокрЛП(Файл.GRUPPA1); // СпрНом.Записать(); // Группа1 = Спр.НайтиПоНаименованию(СокрЛП(Файл.GRUPPA1)); // Иначе // Группа1 = ""; // КонецЕсли; // КонецЕсли; ////////////////////////////////////////////////////////////////////////// Если НЕ ПустаяСтрока(Файл.GRUPPA2) Тогда НайденЭлемент = Спр.НайтиПоНаименованию(СокрЛП(Файл.GRUPPA2),Истина); Если НайденЭлемент.Пустая() Тогда СпрНом = Спр.СоздатьГруппу(); СпрНом.Наименование = СокрЛП(Файл.GRUPPA2); СпрНом.Записать(); Группа2 = СпрНом.Ссылка; Иначе Группа2 = НайденЭлемент; КонецЕсли; КонецЕсли; /////////////////////////////////////////////////////////////////////////////// // //Если СокрЛП(Файл.GRUPPA2) = СокрЛП(Спр.НайтиПоНаименованию(СокрЛП(Файл.GRUPPA2))) Тогда // Группа2 = Спр.НайтиПоНаименованию(СокрЛП(Файл.GRUPPA2)); //Иначе // Если НЕ ПустаяСтрока(Файл.GRUPPA2) Тогда // СпрНом = Спр.СоздатьГруппу(); // СпрНом.Наименование = СокрЛП(Файл.GRUPPA2); // СпрНом.Родитель = Группа1; // СпрНом.Записать(); // Группа2 = Спр.НайтиПоНаименованию(СокрЛП(Файл.GRUPPA2)); // Иначе // Группа2 = ""; // КонецЕсли; //КонецЕсли; /////////////////////////////////////////////////////////////////////////////////////////////// //Если СокрЛП(Файл.GRUPPA3) = СокрЛП(Спр.НайтиПоНаименованию(СокрЛП(Файл.GRUPPA3))) Тогда // Группа3 = Спр.НайтиПоНаименованию(СокрЛП(Файл.GRUPPA3)); //Иначе // Если НЕ ПустаяСтрока(Файл.GRUPPA3) Тогда // СпрНом = Спр.СоздатьГруппу(); // СпрНом.Наименование = СокрЛП(Файл.GRUPPA3); // СпрНом.Родитель = Группа2; // СпрНом.Записать(); // Группа3 = Спр.НайтиПоНаименованию(СокрЛП(Файл.GRUPPA3)); // Иначе // Группа3 = ""; // КонецЕсли; //КонецЕсли; ///////////////////////////////////////////////////////////////////////////////////// Если НЕ ПустаяСтрока(Файл.GRUPPA3) Тогда НайденЭлемент = Спр.НайтиПоНаименованию(СокрЛП(Файл.GRUPPA3),Истина); Если НайденЭлемент.Пустая() Тогда СпрНом = Спр.СоздатьГруппу(); СпрНом.Наименование = СокрЛП(Файл.GRUPPA3); СпрНом.Записать(); Группа3 = СпрНом.Ссылка; Иначе Группа3 = НайденЭлемент; КонецЕсли; КонецЕсли; ////////////////////////////////////////////////////////////////////////////////////// СпрНом = Спр.СоздатьЭлемент(); СпрНом.Наименование = СокрЛП(Файл.Name); СпрНом.НаименованиеПолное = СокрЛП(Файл.Name); СпрНом.Артикул = Файл.Articul; СпрНом.ВидНоменклатуры = СпрВид.НайтиПоНаименованию("Товар"); СпрНом.СтавкаНДС = "Без НДС"; //СпрНом.СтранаПроисхождения = СокрЛП(Файл.Countre); СпрНом.БазоваяЕдиницаИзмерения = СпрЕд.НайтиПоНаименованию(СокрЛП(Файл.BazEdIzm)); Если Группа3 <> "" Тогда СпрНом.Родитель = Группа3; Иначе Если Группа2 <> "" Тогда СпрНом.Родитель = Группа2; Иначе СпрНом.Родитель = Группа1; КонецЕсли; КонецЕсли; СпрНом.Записать(); СпрИзм = СпрЕдИзм.СоздатьЭлемент(); СпрИзм.Владелец = Спр.НайтиПоКоду(СпрНом.Код); СпрИзм.Коэффициент = 1; СпрИзм.Наименование= СпрЕд.НайтиПоНаименованию(СокрЛП(Файл.BazEdIzm)).Наименование; СпрИзм.ЕдиницаПоКлассификатору = СпрЕд.НайтиПоНаименованию(СокрЛП(Файл.BazEdIzm)); СпрИзм.Записать(); //СпрНом.ЕдиницаДляОтчетов.Владелец = СпрЕдИзм.НайтиПоНаименованию(СпрИзм.Наименование); СпрНом.ЕдиницаХраненияОстатков = СпрЕдИзм.НайтиПоКоду(СпрИзм.Код); СпрНом.Записать(); Файл.Следующая(); КонецЦикла; Файл.ЗакрытьФайл(); КонецПроцедуры |
|||
13
sanja26
07.06.12
✎
11:17
|
отладчик не предлагать?
|
|||
14
den17
07.06.12
✎
11:18
|
А это условие не правильное что-ли..
|
|||
15
salvator
07.06.12
✎
11:37
|
(12) Если Группа3 <> "" Тогда
... Зачем опять сравниваешь несовместимые типы? Я тебе в (6) уже об этом написал. |
|||
16
den17
07.06.12
✎
11:42
|
То есть вместо (15) надо (8) поставить?
|
|||
17
salvator
07.06.12
✎
11:44
|
(16) Мля. Группа3 имеет тип СправочникСсылка. Ты ее сравниваешь со строкой. В любом случае будет ложь.
Кури отладчик. |
|||
18
den17
07.06.12
✎
12:02
|
А с чем её сравнить? с НовыйЭлемент?
|
|||
19
hhhh
07.06.12
✎
12:14
|
(18) и вот здесь
СпрНом = Спр.СоздатьЭлемент(); СпрНом.Наименование = СокрЛП(Файл.Name); СпрНом.НаименованиеПолное = СокрЛП(Файл.Name); СпрНом.Артикул = Файл.Articul; СпрНом.ВидНоменклатуры = СпрВид.НайтиПоНаименованию("Товар"); СпрНом.СтавкаНДС = "Без НДС"; ты тупо ничего не проверяешь, создаешь элемент всегда. |
|||
20
den17
07.06.12
✎
12:23
|
А может напишите, как надо, а-то что-то не получается, пожалуйста..
|
|||
21
salvator
07.06.12
✎
12:44
|
(20) Телепаты в отпуске.
|
|||
22
den17
07.06.12
✎
12:48
|
)))
|
|||
23
EasyRider
07.06.12
✎
12:58
|
(20)Во!я ж тебе еще в (4) посоветовал так сделать
|
|||
24
hhhh
07.06.12
✎
13:00
|
(22) НайденЭлемент = Спр.НайтиПоНаименованию(СокрЛП(Файл.Name),Истина);
Если НайденЭлемент.Пустая() Тогда |
|||
25
den17
07.06.12
✎
15:08
|
Спасибо вам всем!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |