Имя: Пароль:
1C
1С v8
Корректировка записей регистра сведений
0 Uragan_a
 
24.07.12
16:40
Что не так

//Отбор, фильтрация
НаборЗаписейРегистра = РегистрыСведений.Штрихкоды.СоздатьНаборЗаписей();
НаборЗаписейРегистра.Прочитать();


//Перебор (обход) в цикле и корректировка записей регистра сведений, попавших в отбор.
Для Каждого ЗаписьРегистра Из НаборЗаписейРегистра Цикл
   Если (Лев(ЗаписьРегистра.Штрихкод,3) = "000") И (СтрДлина(ЗаписьРегистра.Штрихкод)=12) Тогда
        Сообщить(ЗаписьРегистра.Штрихкод);
        ЗаписьРегистра.Штрихкод = Прав(ЗаписьРегистра.Штрихкод,СтрДлина(ЗаписьРегистра.Штрихкод-1)) + РаботаСТорговымОборудованием.КонтрольныйСимволEAN(ЗаписьРегистра.Штрихкод, 13);
        ЗаписьРегистра.ТипШтрихкода = ПланыВидовХарактеристик.ТипыШтрихкодов.Code39;
           КонецЕсли;
КонецЦикла;
НаборЗаписейРегистра.Записать();
1 Uragan_a
 
24.07.12
16:40
Прут ошибки:
Штрихкод: 8411061689417 уже имеет владельца "Т\в " 212"".
Штрихкод: 8411061695951 уже имеет владельца "Т\в"Antonio Banderas"".
Штрихкод: 8411061698594 уже имеет владельца "Т\в"Antonio Banderas"".
Штрихкод: 8411061698600 уже имеет владельца "Лосьон "Antonio Banderas"".
Штрихкод: 8411061700235 уже имеет владельца "Део "Антонио Бандерас"".
Штрихкод: 8411061701034 уже имеет владельца "Т\в"Antonio Banderas"".
Штрихкод: 8411061701041 уже имеет владельца "Т\в"Antonio Banderas"".
Штрихкод: 8411061711767 уже имеет владельца "Т\в " 212 VIP" жен.".
Штрихкод: 8411061711774 уже имеет владельца "Т\в " 212 VIP" жен.".
Штрихкод: 8411061711804 уже имеет владельца "Т\в " 212 VIP" жен.".
Штрихкод: 8411061717349 уже имеет владельца "Део"212"".
Штрихкод: 8411061720066 уже имеет владельца "Т\в " CH L`eau "".
Штрихкод: 8411061720974 уже имеет владельца ""Антонио Бандерас"".
Штрихкод: 8411061722398 уже имеет владельца ""Антонио Бандерас"".
Штрихкод: 8411061722404 уже имеет владельца ""Антонио Бандерас"".
Штрихкод: 8411061722756 уже имеет владельца ""Антонио Бандерас"".
Штрихкод: 8411061723760 уже имеет владельца "Т\в " 212"".
Штрихкод: 8411061723777 уже имеет владельца "Т\в " 212"".
Штрихкод: 8411061723784 уже имеет владельца "Лосьон " 212"".
Штрихкод: 8411061723791 уже имеет владельца "Део " 212"".
Штрихкод: 8411061725931 уже имеет владельца "Т\д"Valentina"".
Штрихкод: 8411061727935 уже имеет владельца ""Антонио Бандерас"".
2 alexandrius
 
24.07.12
16:42
Он у тебя скорее всего по пустому владельцу пишет. Посмотри Набор при записи там все измерения указаны
3 Uragan_a
 
24.07.12
16:49
да в записях вроде везде владелец
4 Uragan_a
 
24.07.12
16:52
я даже в них ничего не меняю просто записываю, ошибки прут
5 Uragan_a
 
24.07.12
16:53
Даже так:

//Отбор, фильтрация

НаборЗаписейРегистра = РегистрыСведений.Штрихкоды.СоздатьНаборЗаписей();
НаборЗаписейРегистра.Прочитать();


//Перебор (обход) в цикле и корректировка записей регистра сведений, попавших в отбор.

Для Каждого ЗаписьРегистра Из НаборЗаписейРегистра Цикл

КонецЦикла;
НаборЗаписейРегистра.Записать();
6 Buster007
 
24.07.12
16:55
а в чем собственно вопрос? почему у тебя в регистре есть дубли штрихкодов?
7 Uragan_a
 
24.07.12
16:56
нет их там
8 Uragan_a
 
24.07.12
16:58
(6) проверил по регистру, нет

мне кажется что то не так делаю с набором записей, так как я пробежал по этим штрихкодам, нет дублежей
9 Buster007
 
24.07.12
17:05
а вообще всё верно он тебе ругается, надо записи бы предварительно очистить, прежде чем записывать.
у тебя без всяких отборов создается набор записей, соответственно при записи он не знает что замещать и пытается записать ещё раз твои записи, вот и ругается.
По идее как-то так.
10 hhhh
 
24.07.12
17:07
(8) посмотри процедуры ПриЗаписи() передЗаписью() регистра и подписки. Может там чего делается.
11 Uragan_a
 
24.07.12
17:15
вот так получилось:


Рег = РегистрыСведений.Штрихкоды;
   Выборка = Рег.Выбрать();
   Пока Выборка.Следующий() Цикл
       Запись = Выборка.ПолучитьМенеджерЗаписи();
       Запись.Прочитать();
       Если (Лев(Запись.Штрихкод,3) = "000") И (СтрДлина(Запись.Штрихкод)=12) Тогда

       Запись.Штрихкод = Прав(Запись.Штрихкод,СтрДлина(Запись.Штрихкод-1)) + РаботаСТорговымОборудованием.КонтрольныйСимволEAN(Запись.Штрихкод, 13);
       Запись.ТипШтрихкода = ПланыВидовХарактеристик.ТипыШтрихкодов.Code39;
       
       КонецЕсли;
       Запись.Записать();
   КонецЦикла;
12 Serg_1960
 
24.07.12
17:27
(0) НаборЗаписейРегистра.Записать(Истина);
13 Buster007
 
24.07.12
17:27
(12) учи мат часть )
14 Buster007
 
24.07.12
17:28
(11) Собственно как я и думал )
15 Serg_1960
 
24.07.12
17:31
(12) + из СП:
"...Определяет режим замещения существующей записи в соответствии с текущими установками отбора(!). Истина - перед записью существующие записи будут удалены..." - и что, позвольте вас спросить, он будет пытаться удалить перед записью?

(13) Не спеши впереди паравоза :)
16 Buster007
 
24.07.12
17:34
а вообще лучше сделать как-то так

Запрос = Новый Запрос;
Запрос.Текст = "Выбрать РС.* ИЗ РегистрСведений.Штрихкоды как РС";
ТаблицаШК = Запрос.Выполнить().Выгрузить();
Для каждого Запись из ТаблицаШК цикл
       Если (Лев(Запись.Штрихкод,3) = "000") И (СтрДлина(Запись.Штрихкод)=12) Тогда

       Запись.Штрихкод = Прав(Запись.Штрихкод,СтрДлина(Запись.Штрихкод-1)) + РаботаСТорговымОборудованием.КонтрольныйСимволEAN(Запись.Штрихкод, 13);
       Запись.ТипШтрихкода = ПланыВидовХарактеристик.ТипыШтрихкодов.Code39;
       
       КонецЕсли;

КонецЦикла;

НаборЗаписей = РегистрыСведений.ШтрихКоды.СоздатьНаборЗаписей();
НаборЗаписей.Загрузить(ТаблицаШК);
НаборЗаписей.Записать();
[\1c]
Так как-то красивее что ли...
17 Serg_1960
 
24.07.12
17:39
(16) +1

PS: но вот так "красивше" должно получиться:


Фрагмент алгоритма
18 Buster007
 
24.07.12
17:43
(17) не видно что-то ) написано "Фрагмент алгоритма" и всё )
Независимо от того, куда вы едете — это в гору и против ветра!