Несколько владельцев у штрихкода

1. user1146570 05.02.19 13:16 Сейчас в теме
Здравствуйте.
Работаю в 1С:Предприятие 8.3 (8.3.13.1644), Розница 8. Аптека, редакция 2.2 (2.2.7.32).

Имеется проблема: у штрихкодов есть несколько владельцев.

Метод исправления данной проблемы: создана внешняя обработка, в которой показывается список таких проблемных штрихкодов с несколькими владельцами и создана команда по созданию номенклатуры (для создания номенклатуры скопирована форма Справочники.Номенклатура.Формы.ФормаЭлемента).

После создания номенклатуры необходимо автоматически привязать к ней текущий выбранный штрихкод, далее пройтись по регистру сведений ор_ПрайсЛистыКонтрагентов и там, где штрихкоды совпадают с изначальным, тоже перезаписать на новую, только что созданную номенклатуру.

В основной форме внешней обработки написал вот это:

Код


В форме записи номенклатуры код менял только вот тут:

Код


Проблемы у меня такие:
1) Я не уверен, что корректно достал ссылку на только что созданную номенклатуру. Ссылка эта нужна для последующей привязке штрихкодов к данной номенклатуре.

2) Ругается при попытке привязки штрихкода к новой номенклатуре, как это исправить?

РезультатЗапроса = Запрос.Выполнить().Выбрать();		
РезультатЗапроса.Владелец.Ссылка = Результат;


3) Как в данной ситуации сделать всю эту процедуру перепривязки в транзакции, дабы не плодить кучу номенклатур при сбое при перезаписи штрихкода?
По теме из базы знаний
Найденные решения
12. antz 05.02.19 14:02 Сейчас в теме
(11)

РезультатЗапроса = Запрос.Выполнить().Выбрать();        
РезультатЗапроса.Следующий();
ОбъектШК = РезультатЗапроса.ШтрихКод.ПолучитьОбъект();
ОбъектШК.Владелец = Результат;
ОбъектШК.Записать()
user1146570; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user1088693 05.02.19 13:22 Сейчас в теме
(1) Какая у Вас ошибка выдается, когда Вы пытаетесь привязать штрихкод к новой номенклатуре?
3. user1146570 05.02.19 13:38 Сейчас в теме
(2) {ВнешняяОбработка.РаботаСНоменклатурой.Форма.Форма.Форма(299)}: Ошибка при получении значения атрибута контекста (ТекущиеДанные)
Запрос.УстановитьПараметр("ПараметрШК", Элементы.ШтрихкодыДС.ТекущиеДанные.Штрихкод);
по причине:
Текущие данные таблицы недоступны на сервере

После этого работа прекращается, номенклатура создается, но штрихкоды к ней не привязываются
5. antz 05.02.19 13:41 Сейчас в теме
(3) По-русски вроде написано)
Недоступны текущие данные на сервере, передавайте ШК с клиента параметром при вызове серверной процедуры.
8. user1146570 05.02.19 13:56 Сейчас в теме
(5) Исправил. Передаю данный параметр как реквизит формы, он все равно много где используется

Теперь ругается вот так:

{ВнешняяОбработка.РаботаСНоменклатурой.Форма.Форма.Форма(301)}: Поле объекта не обнаружено (Владелец)
РезультатЗапроса.Владелец.Ссылка = Результат;

Пробовал вот так:

РезультатЗапроса.Владелец (Результат);

Теперь ругается вот так:

{ВнешняяОбработка.РаботаСНоменклатурой.Форма.Форма.Форма(302)}: Слишком много фактических параметров
РезультатЗапроса.Владелец (Результат);

Полагаю, это из-за этой строки:

ПараметрПередачиВФорму = Новый Структура("ПараметрШК",Элементы.ШтрихкодыДС.ТекущиеДанные.Штрихкод);

Заменил ее на:

ПараметрПередачиВФорму = ШтрихкодыДС.ТекущиеДанные.Штрихкод;

но ошибка не исчезла.
10. antz 05.02.19 13:57 Сейчас в теме
(8) Запрос-то как выглядит?
11. user1146570 05.02.19 13:58 Сейчас в теме
(10) оба запроса присутствуют под первым спойлером с кодом
12. antz 05.02.19 14:02 Сейчас в теме
(11)

РезультатЗапроса = Запрос.Выполнить().Выбрать();        
РезультатЗапроса.Следующий();
ОбъектШК = РезультатЗапроса.ШтрихКод.ПолучитьОбъект();
ОбъектШК.Владелец = Результат;
ОбъектШК.Записать()
user1146570; +1 Ответить
16. user1146570 05.02.19 14:14 Сейчас в теме
(12) Благодарю. Теперь все компилируются правильно, но при попытке перезаписи выдает прописанные мной ошибки, т.е. попытка записи не удается.

Можете подсказать, с чем это может быть связано и как добиться перезаписи?
17. antz 05.02.19 14:19 Сейчас в теме
18. user1146570 05.02.19 14:23 Сейчас в теме
(17) которые я ручками прописал:

Исключение 
            Отказ = Истина;
            Сообщить("Ошибка при попытке записи владельца исходного штрихкода!");
        КонецПопытки;


P.S. Мне тут подсказали, что я пытаюсь изменить регистр сведений, и там нужен менеджер записи. Ушел в google.
13. user1088693 05.02.19 14:04 Сейчас в теме
(8) Так вам нужно было написать РезультатЗапроса.Следующий(), после того как Вы выполнили запрос

РезультатЗапроса = Запрос.Выполнить().Выбрать();
РезультатЗапроса.Следующий();
Штрихкод = РезультатЗапроса.Штрихкод;
user1146570; +1 Ответить
7. user1088693 05.02.19 13:52 Сейчас в теме
(3) Вам нужно передать параметр Элементы.ШтрихкодыДС.ТекущиеДанные.Штрихкод с клиента, так как элементы формы недоступны для чтения на сервере
9. user1146570 05.02.19 13:56 Сейчас в теме
4. SheremetevaValentina 05.02.19 13:40 Сейчас в теме
2) Ругается при попытке привязки штрихкода к новой номенклатуре, как это исправить?

РезультатЗапроса = Запрос.Выполнить().Выбрать();
РезультатЗапроса.Владелец.Ссылка = Результат;


Запрос.выполнить().Выбрать() выдаст вам Выборку, то есть множество записей. Чтобы получить конкретную запись используйте РезультатЗапроса.Следующий
user1146570; +1 Ответить
6. user1146570 05.02.19 13:48 Сейчас в теме
(4) Даже если я уверен, что штрихкод уникален (см. текст запроса) т.е. в результате запроса будет выдана единственная строка? Но, на всякий, подправил, спасибо
14. SheremetevaValentina 05.02.19 14:06 Сейчас в теме
(6)
Да, одна строка - это частный случай множества (кстати, как и ноль строк, на этот случай можно использовать конструкцию "Если РезультатЗапроса.Следующий() Тогда")
15. SheremetevaValentina 05.02.19 14:08 Сейчас в теме
(6) и выше вам подсказывают правильно в (12), что нужно получить объект, а не пытаться присваивать значение выборке
19. p.ugrumov 175 05.02.19 14:49 Сейчас в теме
По результату запроса наложить фильтр на набора записей регистра. Прочитать набор записей. Заполнить строки набора записей перебором. Записать набор записей регистра сведений.
20. p.ugrumov 175 05.02.19 14:50 Сейчас в теме
Если выборка по справочнику То Знаениевыборки.ПолучитьОбъект(). После этого можно записывать.
21. x_x 3 05.02.19 15:33 Сейчас в теме
достаточно в наборе записей переписать владельца.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот