К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

УПП82. Сверка ШтрихКодов

Гость
0 - 09.07.2015 - 13:49
Ситуация такая.
Есть две базы. 1Основная, 2приемник.
В обеих базах заводили номенклатуру и создавали штрихкоды.

Из базы 1 перебрасывается номенклатура в базу 2.
В 2приемник - нужно отследить штрихкоды, для которых не совпадают владельцы в базах и заменить на владельца из 1Основной.
Соединение по ОЛе. ТДСтрока - список штрихкодов из Оле.

Отбор = Новый Структура("Штрихкод",ТДСтрока.ШтрихКод);

ПоискКода = РегистрыСведений.Штрихкоды.Получить(Отбор);

Выдает ошибку Недопустимое значение параметра (параметр номер '1')
Я понимаю, что у поля ШтрихКод тип Характеристика. Но как с ней работать, так и не поняла.
-----------
Сделала Запросом:
ПоискКода= Новый ("Запрос");
ПоискКода.Текст = "ВЫБРАТЬ
|Регистр.Штрихкод КАК ШтрихКод,
|Регистр.Владелец
|ИЗ
|РегистрСведений.Штрихкоды КАК Регистр
|ГДЕ
|Регистр.ШтрихКод = &ШтрихКод";

ПоискКода.УстановитьПараметр("ШтрихКод",ТДСтрока.Ш трихКод);

ПоискШК = ПоискКода.Выполнить().Выгрузить();
Для каждого СтрокаПоискШК Из ПоискШК Цикл

//замена владельца
// как спозиционироваться в регистре на найденную запись, что бы изменить владельца?

КонецЦикла;

Пожалуйста, подскажите.

P.s. (можете не кидаться камнями - такие мне достались с "исторически сложившимися" правилами базы. Потом нужно будет решить проблему синхронизации спр.)



Гость
1 - 09.07.2015 - 15:39
"Я понимаю, что у поля ШтрихКод тип Характеристика, но всё равно работаю с ней так, как будто это строка"
Гость
2 - 09.07.2015 - 15:49
в общем так
1. По отбору: Я бы попробовал использовать что-то с типом характеристика , либо Строка 200, как в характеристике. Просто строка и строка 200 - это скорее всего разные типы.
2. По позиционированию: почитайте описание метода "Прочитать" менеджера записи в СП. Там вроде понятный пример.
Гость
3 - 09.07.2015 - 15:57
(2) [1] и тем не менее, в Запросе к регистру принимается параметр строка
ПоискКода.УстановитьПараметр("ШтрихКод",ТДСтрока.Ш трихКод)
где ТДСтрока.Ш трихКод="123423..." (строка)
И присвоение в регистр при записи нового ШК - тоже принимается это значение (строка). В вот в Отборе - нет.
Гость
4 - 09.07.2015 - 15:58
СП - что сие означает?
Гость
5 - 09.07.2015 - 16:07
Из СП - сиречь СинтаксПомощника
Из описания метода Получить() менеджера регистра сведений
===========
Параметры:

<Отбор> (необязательный)

Тип: Структура.
Структура, содержащая отбор по измерениям регистра.
В переданной структуре должны содержаться те измерения, по которым должны быть отфильтрованы записи. В элементе структуры задается имя и значение отбора. Должны указываться значения для всех измерений.
====
Ты ж этим методом не с набором записей работаешь, а пытаешься получить значения ресурсов в структуру (возвращаемое значение метода - тип структура).
Гость
6 - 09.07.2015 - 16:09
Вопрос - как в Отбор передать параметр ШтрихКод, который у меня в строковом выражении? еще раз - я его получаю по ОЛе, т.е. в принципе могу только простое значение получить

Или - как регистратор спозиционировать на найденную строку Запроса, дабы ее изменить
Гость
7 - 09.07.2015 - 16:19
Вы попробовали то, что я рекомендую в 2?
Гость
8 - 09.07.2015 - 16:29
(7) Прочитать - Считывает записи из базы данных по установленному отбору.

Я не увидела ответа на мой вопрос, который как раз и состоял в том - как этот Отбор установить по имеющимся у меня данным.
Хоть для Менеджера, хоть для Набора.
Гость
9 - 09.07.2015 - 16:50
8-Lisonia > считай запросом все имеющиеся в регистре комбинации измерений с твоим ШК; оббегай коллекцию и значения всех измерений на каждой итерации скармливай в отбор
Гость
10 - 09.07.2015 - 19:16
8-Lisonia > Я сказал метод менеджера записи смотреть, и пример к нему.
Гость
11 - 10.07.2015 - 09:36
(10) Да, я видела, но он не работает. Проблема опять в передаче ШтрихКода (((
ПоискКода = РегистрыСведений.Штрихкоды.СоздатьМенеджерЗаписи() ;
ПоискКода.ШтрихКод = ТДСтрока.ШтрихКод;
ПоискКода.Прочитать();
---------Результат:
ТДСтрока.ШтрихКод="2000000997339"
ПоискКода.Штрихкод=""
Гость
12 - 10.07.2015 - 09:42
11-Lisonia > Регистр сведений Штрихкоды содержит единственное измерение ШтрихКод?
Гость
13 - 10.07.2015 - 11:00
Где-то на полках пылятся книжки Радченко, Габеца, Хрусталевой, Гончарова и других полезных Вам авторов ).
Гость
14 - 10.07.2015 - 11:34
Т.е. Вы и сами ответа не знаете ... Жаль...
Гость
15 - 10.07.2015 - 11:59
14-Lisonia > ты умышленно игнорируешь (12)?
Гость
16 - 10.07.2015 - 12:12
Сорри, не обижайся. Голова кругом - кучу проблем нужно решить, и все срочно.
Нет, не умышленно. Думала это риторический вопрос был, т.к. регистр в УПП стандартный.

Вот в запросе я все перечисляю :
ЗапросШтрихК.Текст = "ВЫБРАТЬ
|Регистр.Штрихкод КАК ШтрихКод,
|Регистр.ТипШтрихкода.Наименование КАК ТипШтрихкода,
|Регистр.Качество.Наименование КАК Качество,
|Регистр.ЕдиницаИзмерения КАК ЕдИзм,
|Регистр.СерияНоменклатуры.Наименование КАК СерияНоменклатуры,
|Регистр.ХарактеристикаНоменклатуры КАК Характеристика,
|Регистр.Владелец КАК Владелец
|ИЗ
|РегистрСведений.Штрихкоды КАК Регистр
|";
Гость
17 - 10.07.2015 - 12:23
16-Lisonia > ну так читай документацию! единичная запись регистра определяется значениями *всех его измерений*. Всех! Понимаешь?
Это в твоём сознании значение поля Штрихкод уникально и идентифицирует запись. На самом деле оно идентифицирует МНОЖЕСТВО записей (в частном случае состоящее из одной записи).
Посему для работы с единичной записью (хоть методом Получить() менеджера регистра, хоть с использованием менеджера записи) необходимо указывать значения всех измерений. Всех, а не только ШК.
Гость
18 - 10.07.2015 - 13:28
А как же Отбор, который существует для Регистров? Там можно указать только один параметр, и получить доступ ко всем записям, где есть совпадение значений по этому параметру.
Гость
19 - 10.07.2015 - 13:29
И я спрашиваю не про ЗАПИСЬ, а про то, как спозиционироваться на запись, где одно из значений=Искомому. Это я делаю с Номенклатурой(Владельцем), с Документом-Регистратором...
Но вот с ШтрихКодом - не ищет
Гость
20 - 10.07.2015 - 13:34
18-Lisonia > не путай отбор метода Получить() и отбор набора записей или списка.
Спозиционироваться (на единственной записи) = однозначно определить запись => единственная возможность - указать значения все измерений
Гость
21 - 10.07.2015 - 13:46
Хорошо, пусть будут выбраны ВСЕ записи по измерению ШтрихКод.
Как это сделать?
Гость
22 - 10.07.2015 - 14:47
21-Lisonia > Запросом
Гость
23 - 10.07.2015 - 14:59
14-Lisonia > Не дерзите учителям :).
Гость
24 - 10.07.2015 - 15:13
Смайлика на вас нет! ))))

Ребят, ну можно как-то по-развернутей ответ дать?))
Задачу вроде объяснила вам, а ответ - то в учебник заглянуть, то отрывочные функции....
Прочтите внимательно(0), проникнитесь, дайте действенный рецепт, то бишь код ...
Гость
25 - 10.07.2015 - 15:58
Сделала такой код, все равно вываливается - не записывает ((
-----------
НаборЗаписей = РегистрыСведений.Штрихкоды.СоздатьНаборЗаписей();
НаборЗаписей.Прочитать();
ТекущиеШК= НаборЗаписей.Выгрузить();

Для Каждого СтрокаШК Из ТекущиеШК Цикл
Владелец=НайтиНоменклатуру(СтрЗагрузкаШК.Владелец) ;

Если НЕ СтрокаШК.Владелец = Владелец Тогда

МенеджерЗаписи = РегистрыСведений.Штрихкоды.СоздатьМенеджерЗаписи() ;
МенеджерЗаписи.Штрихкод = СтрокаШК.Штрихкод;
МенеджерЗаписи.Владелец = СтрокаШК.Владелец;
МенеджерЗаписи.ЕдиницаИзмерения = СтрокаШК.ЕдиницаИзмерения;
МенеджерЗаписи.Качество = СтрокаШК.Качество;
МенеджерЗаписи.СерияНоменклатуры = СтрокаШК.СерияНоменклатуры;
МенеджерЗаписи.ТипШтрихкода = СтрокаШК.ТипШтрихкода;
МенеджерЗаписи.ХарактеристикаНоменклатуры = СтрокаШК.ХарактеристикаНоменклатуры;

МенеджерЗаписи.Прочитать();

Если МенеджерЗаписи.Выбран() Тогда
МенеджерЗаписи.Владелец= Владелец;
МенеджерЗаписи.Записать();
КонецЕсли;
КонецЕсли;
КонецЦикла;
Гость
26 - 10.07.2015 - 18:26
Не записывает? Или записывает, но не удаляет прежнюю информацию?
Гость
27 - 10.07.2015 - 20:32
24-Lisonia > "дайте действенный рецепт, то бишь код" Мы делаем гораздо более полезную для Вас вещь - пытаемся заставить Вас понять принцип, а не скопировать готовый код.

Разницу между измерениями и ресурсами знаете?
Гость
28 - 10.07.2015 - 21:15
)) Это я ценю )) Сама не люблю, когда бездумно переписывают чужое решение. Просто так оказалось, что магазин перевели с одной фирмы на другую "на стыке смены программистов"... И прежний программист, то ли не учел данную проблему, то ли просто забыл о ней. Вообщем, за неимением основного списка ШК магазин практически не работает. Благо повезло, что покупателей в эти дни почти нет.
Я написала, но потом решила, что не все отлавливаю. Я почти придумала код, завтра буду проверять.

(26) С этим я тоже несколько запуталась. Я так понимаю, что нужно выбирать Записать (Ложь), в таком случае запись добавляется, т.к. мой регистр не подчинен и не периодический.
Измерение - то по чем идет отбор (номенклатура, склад)
Ресурс - то по чем можно получить сводные данные (сумма, колво)
Не понимаю, для чего реквизит и что за особенность обращения к нему. По мне его в измерение можно забросить )

Кстати, хотела выгрузить в ТЗ результат запроса из Оле, но получила все-равно Оле-объект. Запрос из текущей базы выгружается в ТЗ. Это такая особенность работы с ОЛе?
29 - 11.07.2015 - 01:47
28-Lisonia > вот представь что ты в Питере но внезапно хочешь увидеть оказаться в магадане

Максимум что получится это некий путь ведущий к магадану
Но получить магадан в питере ну никак
Гость
30 - 11.07.2015 - 09:26
Хоть бы один конкретный ответ хотя бы на один из вопросов. Так, беседа, а умничать тоже нужно к месту.
Когда препода спрашиваешь, почему ошибка, он не отсылает тебя читать весь учебник. А говорит какую формулу применить. Если не получается, он объясняет в чем ошибка применения. А тут - вода, вода, кругом вода... Обидно, ребят.
Гость
31 - 11.07.2015 - 11:55
Киса, ты с какого франча?
Гость
32 - 11.07.2015 - 11:58
"Хоть бы один конкретный ответ хотя бы на один из вопросов"
"Кстати, хотела выгрузить в ТЗ результат запроса из Оле, но получила все-равно Оле-объект. Запрос из текущей базы выгружается в ТЗ. Это такая особенность работы с ОЛе?"
Да. ТЗ существует в пределах "контекста". Передавать надо простые типы, точнее типы, поддерживаемые для передачи механизмами OLE/COM+. То есть к примеру COMSafe Array.

Один конкретный ответ, получите и распишитесь.
Гость
33 - 11.07.2015 - 12:28
При чем тут "киса"? Спасибо за пренебрежение к тому, кто знает меньше.

В результате запроса ссылки на данные обозначены ОЛе, по ним можно добраться и до простых типов. Например, Владелец - Оле, но получаем Владелец.Код = "строка", владелец.Наименование ="строка" и т.д.
Ну пофиг.
Спасибо, что хоть на один, пусть и косвенный вопрос, дали ответ.
Хотя нужную помощь, из-за которой и обратилась на сей форум, я пока так и не получила. Жаль, вроде тут умные люди крутятся, а вот помочь для вас - это проблематично
Гость
34 - 11.07.2015 - 13:14
В Наборе, если новую запись создаю - то добавляется, а если в наборе уже была запись, то пишет, что ШК уже имеет другого владельца.
НаборЗаписей = РегистрыСведений.Штрихкоды.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Владелец.Установить(Владелец);
НаборЗаписей.Прочитать();

НовыйШК = НаборЗаписей.Добавить();
НовыйШК.Штрихкод = СтрокаШК.ШтрихКод;
НовыйШК.Владелец = Владелец; //ссылка
НовыйШК.ТипШтрихкода = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN13;

Знч=НайтиЕдИзм(Владелец, СтрокаШК.ЕдИзм);
НовыйШК.ЕдиницаИзмерения =Знч; //Ссылка

Знч = Справочники.Качество.НайтиПоНаименованию(СтрокаШК. Качество,Истина);
НовыйШК.Качество=Знч;

Если Владелец.ВестиУчетПоХарактеристикам Тогда
Знч=НайтиХарактеристику(Владелец,СтрокаШК.Характер истика);
НовыйШК.ХарактеристикаНоменклатуры= Знч;
КонецЕсли;

Попытка
НаборЗаписей.Записать(Ложь); //Ложь
Сообщить ("Добавлен ШК "+СтрокаШК.ШтрихКод+" к номенкл.код = "+Владелец.Код);
Исключение
Сообщить(""+ОписаниеОшибки());
КонецПопытки;
Гость
35 - 11.07.2015 - 16:10
33-Lisonia > Не учите преподавателей, как преподавать, и они не будут называть Вас "кисами" :). У Вас фундаментальные пробелы в образовании, и ещё раз настоятельно рекомендую подтянуть их - либо очно - найдите себе живого наставника (поэтому и вопрос о франче, они там водятся иногда), либо читая умные книжки вышеперечисленных авторов.
34:
1. Зачем вообще набор здесь?
2. Очевидно, что то сообщение, которое выдаётся - выдаётся не платформой, ведь нет такого понятия, как владелец записи регистра сведений. А как Вы считаете, чем оно может выдаваться, если не платформой?
36 - 11.07.2015 - 17:17
(35) Борисом Нуралиевым?
Гость
37 - 11.07.2015 - 17:29
Гость
38 - 12.07.2015 - 19:58
(36) Садись, "пять"! :D
(37) Скучные картинки шлёте.
Гость
39 - 12.07.2015 - 20:36
(38)Я поняла, похоже вы и сами-то не разбираетесь в вопросе, отсюда и отсутствие реальной помощи. Хорошо, что хоть живопись хоть немного знаете.
Надеюсь, когда Вам будет так же необходима помощь, как мне, Вы встретите более добрых людей и её все-таки найдете. Для каждого человека всегда найдутся более умные люди.

"Мудрец никогда не заявит, что знает все на свете, философ никогда не заявит, что он, мол, всегда прав."
« По-настоящему умный человек выражается простым языком, а тот, кто хочет произвести впечатление умного, старается говорить как можно сложнее, по существу не разбираясь в сути дела. »
Виилма Лууле.


К списку вопросов






Copyright ©, Все права защищены