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)Я поняла, похоже вы и сами-то не разбираетесь в вопросе, отсюда и отсутствие реальной помощи. Хорошо, что хоть живопись хоть немного знаете. Надеюсь, когда Вам будет так же необходима помощь, как мне, Вы встретите более добрых людей и её все-таки найдете. Для каждого человека всегда найдутся более умные люди. "Мудрец никогда не заявит, что знает все на свете, философ никогда не заявит, что он, мол, всегда прав." « По-настоящему умный человек выражается простым языком, а тот, кто хочет произвести впечатление умного, старается говорить как можно сложнее, по существу не разбираясь в сути дела. » Виилма Лууле. | |
| Интернет-форум Краснодарского края и Краснодара |