|
Изменение записей непериодического независимого РС | ☑ | ||
---|---|---|---|---|
0
Alekzander
18.02.13
✎
21:32
|
В Рознице 1.0 есть РС "Штрихкоды". Мне нужно перевыбрать характеристику со связью по владельцу, делаю так, как описано в:
v8: Как изменить записи независимого непериодического регистра сведений. , но не фурычет - ошибка та же, и в ТЗ загонял, не получается. НаборЗаписей = РегистрыСведений.Штрихкоды.СоздатьНаборЗаписей(); НаборЗаписей.Прочитать(); Для каждого СтрокаРегистра из НаборЗаписей Цикл Штрихкод = СтрокаРегистра.Штрихкод; Номенклатура = СтрокаРегистра.Владелец; ЕдИзм = СтрокаРегистра.ЕдиницаИзмерения; ТипШК = СтрокаРегистра.ТипШтрихкода; Характеристика = СтрокаРегистра.ХарактеристикаНоменклатуры; Если ТипЗнч(Номенклатура) <> Тип("СправочникСсылка.Номенклатура") Тогда Продолжить; Иначе Характеристика = Справочники.ХарактеристикиНоменклатуры.НайтиПоНаименованию(Характеристика,,,Номенклатура); КонецЕсли; КонецЦикла; НаборЗаписей.Записать(); То же самое, пишет, например, Штрихкод: 1000000630589 уже имеет владельца "МК 115 Жакет" и в конце "{Форма.Форма.Форма(21)}: Ошибка при вызове метода контекста (Записать) НаборЗаписей.Записать(); по причине: Не удалось записать: "Штрихкоды"!" Что не так делаю? |
|||
1
ДенисЧ
18.02.13
✎
21:33
|
" Штрихкод: 1000000630589 уже имеет владельца "
Явно не платформенное сообщение. Смотри подписки ПриЗаписи |
|||
2
Alekzander
18.02.13
✎
21:33
|
(1) где смотреть?
|
|||
3
ДенисЧ
18.02.13
✎
21:34
|
(2) слово "подписка" совершшенно не знакомо?
тогда запусти поиск по всей конфе по фразе "уже имеет владельца" |
|||
4
Alekzander
18.02.13
✎
21:40
|
А, ну собсно то, что я и читал по ссылке. Мне вот одно непонятно, сделал также, а ничего не выходит, в чём может быть загвоздка?
|
|||
5
Очкарик
18.02.13
✎
21:41
|
(4) отркой модуль набора записей регистра и посмотри чего там написано
|
|||
6
Alekzander
18.02.13
✎
21:42
|
(5) да уже смотрю
Для Каждого ТекущаяЗапись Из ЭтотОбъект Цикл Если ЗначениеЗаполнено(ТекущаяЗапись.ШтрихКод) Тогда Запрос = Новый Запрос(" |ВЫБРАТЬ ПЕРВЫЕ 1 | РегШтрихкоды.Владелец КАК Владелец, | РегШтрихкоды.ШтрихКод КАК Штрихкод |ИЗ | РегистрСведений.Штрихкоды КАК РегШтрихкоды |ГДЕ | РегШтрихкоды.ШтрихКод = &ШтрихКод |"); Запрос.УстановитьПараметр("ШтрихКод", ТекущаяЗапись.ШтрихКод); РезультатЗапроса = Запрос.Выполнить(); Если Не РезультатЗапроса.Пустой() Тогда Выборка = РезультатЗапроса.Выбрать(); Выборка.Следующий(); Сообщить("Штрихкод: " + Выборка.ШтрихКод + " уже имеет владельца """ + СокрЛП(Выборка.Владелец) + """."); Отказ = Истина; КонецЕсли; КонецЕсли; КонецЦикла; |
|||
7
Alekzander
18.02.13
✎
21:43
|
В коде-то что подправить?
|
|||
8
Очкарик
18.02.13
✎
21:44
|
(7) закомментируй нафиг
|
|||
9
Очкарик
18.02.13
✎
21:44
|
(7) вот как сделай
//Отказ = Истина; |
|||
10
Alekzander
18.02.13
✎
21:45
|
(8) базовая конфа, да и была бы проф, не очень-то хотелось бы менять
|
|||
11
Alekzander
18.02.13
✎
21:45
|
В моём коде что нужно исправить, чтобы он работал?
|
|||
12
Очкарик
18.02.13
✎
21:46
|
(11) Сделай так, чтобы твой код не противоречил (6)
|
|||
13
Очкарик
18.02.13
✎
21:48
|
(11) Ниче ты в своем коде не поправишь, не трогая (6)
|
|||
14
Alekzander
18.02.13
✎
21:48
|
(12) ясное дело, вопрос весь в том, как это сделать, уже все мозги сломал
|
|||
15
Очкарик
18.02.13
✎
21:50
|
(14) Процедура (6) обращается к существующим записям регистра и проверяет указан ли владелец - владелец уже указан - посылает тебя нафиг.
Если ты не собираешься трогать (6), то ты можешь только новые записи формировать. |
|||
16
Alekzander
18.02.13
✎
21:51
|
(15) о, это уже лучше, я пробовал новые создавать, но цикл зацикливался. Код был такой:
НоваяЗапись = НаборЗаписей.Добавить(); НоваяЗапись.Штрихкод = Штрихкод; НоваяЗапись.ЕдиницаИзмерения = ЕдИзм; НоваяЗапись.ТипШтрихкода = ТипШК; НоваяЗапись.Владелец = Справочники.Номенклатура.НайтиПоНаименованию(СтрокаРегистра.Владелец); НоваяЗапись.ХарактеристикаНоменклатуры = Справочники.ХарактеристикиНоменклатуры.НайтиПоНаименованию(Характеристика,,,НоваяЗапись.Владелец); |
|||
17
Очкарик
18.02.13
✎
21:53
|
(16) и че там зациклилось?
|
|||
18
Alekzander
18.02.13
✎
21:54
|
(17) оно:
Для каждого СтрокаРегистра из НаборЗаписей Цикл Штрихкод = СтрокаРегистра.Штрихкод; Номенклатура = СтрокаРегистра.Владелец; ЕдИзм = СтрокаРегистра.ЕдиницаИзмерения; ТипШК = СтрокаРегистра.ТипШтрихкода; Характеристика = СтрокаРегистра.ХарактеристикаНоменклатуры; Если ТипЗнч(Номенклатура) <> Тип("СправочникСсылка.Номенклатура") Тогда Продолжить; Иначе НоваяЗапись = НаборЗаписей.Добавить(); НоваяЗапись.Штрихкод = Штрихкод; НоваяЗапись.ЕдиницаИзмерения = ЕдИзм; НоваяЗапись.ТипШтрихкода = ТипШК; НоваяЗапись.Владелец = Справочники.Номенклатура.НайтиПоНаименованию(СтрокаРегистра.Владелец); НоваяЗапись.ХарактеристикаНоменклатуры = Справочники.ХарактеристикиНоменклатуры.НайтиПоНаименованию(Характеристика,,,НоваяЗапись.Владелец); КонецЕсли; КонецЦикла; |
|||
19
Очкарик
18.02.13
✎
21:59
|
(18)
1.Выгрузи регистр во временную таблицу. 2.НаборЗаписей = РегистрыСведений.Штрихкоды.СоздатьНаборЗаписей(); НаборЗаписей.Записать(); Это ты очистил регистр сведений. 3. Далее по циклу НоваяЗапись = НаборЗаписей.Добавить(); 4. НаборЗаписей.Записать(). Если ты такой принципиальный и не хочешь закомментировать (6) |
|||
20
Alekzander
18.02.13
✎
22:00
|
(19) не, ну это не я принципиальный, это конфа базовая)))))
Спасибо, щас попробую. |
|||
21
Очкарик
18.02.13
✎
22:01
|
(20) Смотри, если выполнится п.2, но не выполнятся остальные - ты потеряешь данные.
|
|||
22
Alekzander
18.02.13
✎
22:03
|
(21) сейчас не так страшно, архивок куча
|
|||
23
Alekzander
18.02.13
✎
22:11
|
(21) Спасибо большое, всё работает!
|
|||
24
Очкарик
18.02.13
✎
22:12
|
(23) пожалуйста :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |