![]() |
![]() |
![]() |
|
РегистрыСведений.Штрихкоды.СоздатьНаборЗаписей(); | ☑ | ||
---|---|---|---|---|
0
Popkorm
30.09.11
✎
09:23
|
Подскажите что не так делаю..
Есть строки с одинаковыми наименование+штрихкод строки,я в условиях делаю отказ если нахожу в базе такой штрих код ШтрихНовый = РегистрыСведений.Штрихкоды.СоздатьНаборЗаписей(); НомерПервойСтроки = 2; Для Row = НомерПервойСтроки По RowCount Цикл НомЕксель = СокрЛП(ExcelЛист.Cells(Row,1).Text); ISBNЕксель = СтрЗаменить((ExcelЛист.Cells(Row,2).Text)," ",""); Если ЗначениеЗаполнено(НомЕксель) Тогда // Если Выборка.Номенклатура.Наименование <> НомЕксель Тогда СтрНом = ТЗ.Найти(НомЕксель,"Номенклатура"); Если СтрНом = Неопределено Тогда СпрНовый = Справочники.Номенклатура.СоздатьЭлемент(); СпрНовый.Наименование = НомЕксель; СпрНовый.НоменклатурнаяГруппа = Справочники.НоменклатурныеГруппы.НайтиПоКоду("О0037314"); СпрНовый.БазоваяЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоКоду("796"); СпрНовый.ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоКоду("FKO000013"); СпрНовый.Записать(); Иначе СтрШтрих = ТЗ.Найти(ISBNЕксель,"Штрихкод"); Если СтрШтрих= Неопределено Тогда Запись= ШтрихНовый.Добавить(); Запись.Владелец = Справочники.Номенклатура.НайтиПоНаименованию(НомЕксель); Запись.ТипШтрихкода = ПланыВидовХарактеристик.ТипыШтрихкодов.НайтиПоКоду("FKO00000001"); Запись.Качество = Справочники.Качество.НайтиПоНаименованию("Новый"); Запись.Штрихкод = ISBNЕксель; КонецЕсли; КонецЕсли; СтрШтрих = ТЗ.Найти(ISBNЕксель,"Штрихкод"); Если СтрШтрих= Неопределено Тогда Запись= ШтрихНовый.Добавить(); Запись.Владелец = Справочники.Номенклатура.НайтиПоНаименованию(НомЕксель); Запись.ТипШтрихкода = ПланыВидовХарактеристик.ТипыШтрихкодов.НайтиПоКоду("FKO00000001"); Запись.Качество = Справочники.Качество.НайтиПоНаименованию("Новый"); Запись.Штрихкод = ISBNЕксель; КонецЕсли; КонецЕсли; КонецЦикла; // ШтрихНовый.ОбменДанными.Загрузка = Истина; ШтрихНовый.Записать(); ошибка: Штрихкод: 978-5-222-18823-1 уже имеет владельца "Самые..........". Штрихкод: 978-5-222-18821-7 уже имеет владельца "Монстры.........". Штрихкод: 978-5-222-18829-3 уже имеет владельца "Планета вирусов". |
|||
1
Maxus43
30.09.11
✎
09:37
|
штрихкод 2 раза пишеш если СтрНом = Неопределено.
и шо такое ТЗ? |
|||
2
Maxus43
30.09.11
✎
09:37
|
короче логику просто проверь в коде. в условиях заплутал имхо
|
|||
3
Popkorm
30.09.11
✎
09:48
|
(1)
Запрос= Новый Запрос(); Запрос.Текст = "ВЫБРАТЬ | СпрНоменклатура.Код, | СпрНоменклатура.Наименование КАК Номенклатура, | ЕСТЬNULL(Штрихкоды.Штрихкод, 0) КАК Штрихкод, | Штрихкоды.ТипШтрихкода |ИЗ | Справочник.Номенклатура КАК СпрНоменклатура | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Штрихкоды КАК Штрихкоды | ПО (Штрихкоды.ТипШтрихкода = &ISBN) | И СпрНоменклатура.Наименование = Штрихкоды.Владелец.Наименование |ГДЕ | (НЕ СпрНоменклатура.ЭтоГруппа) | И (НЕ СпрНоменклатура.ПометкаУдаления) | И СпрНоменклатура.Ссылка В ИЕРАРХИИ(&Ном)" Запрос.УстановитьПараметр("ISBN",ISBN.Ссылка); Запрос.УстановитьПараметр("Ном",Ном.Ссылка); ТЗ = Запрос.Выполнить().Выгрузить(); |
|||
4
Popkorm
30.09.11
✎
09:51
|
(1)Если СтрНом = Неопределено
тогда 1-й Штрих пропускаю и иду ко 2-му штриху... Если СтрНом Определено то к 1-му штриху,2-й пропускаем |
|||
5
Maxus43
30.09.11
✎
09:55
|
проверь в отладчике - ТЗ.Найти(ISBNЕксель,"Штрихкод");
типы проверь, может различаются. пробелы всякие СОКРЛП убирай |
|||
6
Popkorm
30.09.11
✎
10:00
|
(5) если бы различались то: ТЗ.Найти(ISBNЕксель,"Штрихкод")= было бы Неопределено...
|
|||
7
Maxus43
30.09.11
✎
10:11
|
(6) отладчик всё скажет, точку останова с условием поставь на свои непроходящие штрихкоды
|
|||
8
Maxus43
30.09.11
✎
10:18
|
ISBN.Ссылка = ПланыВидовХарактеристик.ТипыШтрихкодов.НайтиПоКоду("FKO00000001") ?
|
|||
9
Popkorm
30.09.11
✎
10:20
|
(7)понял в чем проблема,при первом проходе я создаю Штрих,после чего мне надо её Записать,что бы во 2-й раз Штрих уже был в базе.Только не понятно теперь это ШтрихНовый = РегистрыСведений.Штрихкоды.СоздатьНаборЗаписей(); надо при каждом условии стовлять?!Вообщем щас гляну
|
|||
10
Maxus43
30.09.11
✎
10:22
|
кстати когда юзаеш ШтрихНовый = РегистрыСведений.Штрихкоды.СоздатьНаборЗаписей();
то после записи весь регистр будет очищен и записан новым набором |
|||
11
Popkorm
30.09.11
✎
10:24
|
(10)млян точно,
|
|||
12
Popkorm
30.09.11
✎
10:32
|
(10)есть какие нибудь мысли?!
|
|||
13
Maxus43
30.09.11
✎
10:45
|
Менеджером записи можеш каждый новый штрих код записывать, или после РегистрыСведений.Штрихкоды.СоздатьНаборЗаписей();
добавить Прочитать() |
|||
14
Popkorm
30.09.11
✎
11:01
|
(13)вообщем через Менеджер запись происходит только по одной строке,
|
|||
15
Maxus43
30.09.11
✎
11:02
|
(14) я про это и писал, каждый штрихкод через менеджер писать, а не всё скопом
|
|||
16
Popkorm
30.09.11
✎
11:17
|
(15)Вот так не по одной строчки запись происходит :
Для Row = НомерПервойСтроки По RowCount Цикл НомЕксель = СокрЛП(ExcelЛист.Cells(Row,1).Text); ISBNЕксель = СтрЗаменить((ExcelЛист.Cells(Row,2).Text)," ",""); Если ЗначениеЗаполнено(НомЕксель) Тогда СтрНом = ТЗ.Найти(НомЕксель,"Номенклатура"); Если СтрНом = Неопределено Тогда СпрНовый = Справочники.Номенклатура.СоздатьЭлемент(); СпрНовый.Наименование = НомЕксель; СпрНовый.НоменклатурнаяГруппа = Справочники.НоменклатурныеГруппы.НайтиПоКоду("О0037314"); СпрНовый.БазоваяЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоКоду("796"); СпрНовый.ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоКоду("FKO000013"); СпрНовый.Записать(); Иначе СтрШтрих = ТЗ.Найти(ISBNЕксель,"Штрихкод"); Если СтрШтрих= Неопределено Тогда ШтрихНовый = РегистрыСведений.Штрихкоды.СоздатьМенеджерЗаписи(); // Запись= ШтрихНовый.Добавить(); ШтрихНовый.Владелец = Справочники.Номенклатура.НайтиПоНаименованию(НомЕксель); ШтрихНовый.ТипШтрихкода = ПланыВидовХарактеристик.ТипыШтрихкодов.НайтиПоКоду("FKO00000001"); ШтрихНовый.Качество = Справочники.Качество.НайтиПоНаименованию("Новый"); ШтрихНовый.Штрихкод = ISBNЕксель; ШтрихНовый.Записать(); КонецЕсли; КонецЕсли; СтрШтрих = ТЗ.Найти(ISBNЕксель,"Штрихкод"); Если СтрШтрих= Неопределено Тогда ШтрихНовый = РегистрыСведений.Штрихкоды.СоздатьМенеджерЗаписи(); // Запись= ШтрихНовый.Добавить(); ШтрихНовый.Владелец = Справочники.Номенклатура.НайтиПоНаименованию(НомЕксель); ШтрихНовый.ТипШтрихкода = ПланыВидовХарактеристик.ТипыШтрихкодов.НайтиПоКоду("FKO00000001"); ШтрихНовый.Качество = Справочники.Качество.НайтиПоНаименованию("Новый"); ШтрихНовый.Штрихкод = ISBNЕксель; ШтрихНовый.Записать(); КонецЕсли; КонецЕсли; КонецЦикла; |
|||
17
Popkorm
30.09.11
✎
11:19
|
(16)наврал...ошибка Штрихкод: 978-5-222-18821-7 уже имеет владельца "Монстры
|
|||
18
Popkorm
30.09.11
✎
11:23
|
(16)но запись в регистр происходит по одной записи,1-й Менеджер прорабатывает,2-й СтрШтрих = ТЗ.Найти(ISBNЕксель,"Штрихкод"); не находить в базе 1-й Менеджер и начинает записывать
|
|||
19
hhhh
30.09.11
✎
11:44
|
(18) так ты и в ТЗ добавляй.
|
|||
20
Popkorm
30.09.11
✎
11:54
|
(19)ТЗ это ТЗ = Запрос.Выполнить().Выгрузить();
обновить запрос как то надо |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |