Имя: Пароль:
1C
1С v8
Конвертация данных Как правильно указать параметр?
0 Босечка
 
03.05.17
11:07
В полях поиска прописываю свой алгоритм по поиску номенклатуры


Если НомерВариантаПоиска = 1 тогда
    Если СвойстваПоиска["АлкогольнаяПродукция"] тогда
    Запрос = Запросы.НайтиНоменклатуруАлкПоПолямПоиска;
    Запрос.УстановитьПараметр("СсылкаАлк",СсылкаНаОбъект);

        Выборка = Запрос.Выполнить().Выбрать();
    Если Выборка.Следующий() Тогда
        ССылкаНаОбъект =  Выборка.Номенклатура;
        ПрекратитьПоиск  = Истина;
        УстанавливатьУОбъектаВсеСвойстваПоиска =Ложь;
    КонецЕсли;
   Иначе
      
и т.д.


вот запрос

ВЫБРАТЬ
    СоответствиеНоменклатурыЕГАИС.Номенклатура
ИЗ
    РегистрСведений.СоответствиеНоменклатурыЕГАИС КАК СоответствиеНоменклатурыЕГАИС
ГДЕ
    СоответствиеНоменклатурыЕГАИС.Номенклатура = &СсылкаАлк

СсылкаНаОбъект в полях поиска это правильно?
1 бомболюк
 
03.05.17
11:19
а я вот что то думал всегда что в результате работы этого события (Поиск) и надо присвоить значение переменной СсылкаНаОбъект, а значит использовать его значение в качестве параметра запроса  как то неправильно, мне так кажется.
2 azt-yur
 
03.05.17
11:20
(0) Запрос.УстановитьПараметр("СсылкаАлк",СсылкаНаОбъект); - здесь не правильно, у вас еще нет ссылки. Искать надо по полям поиска.
А вообще что пытаетесь найти? Передаете в запрос ссылку, которую и пытаетесь вернуть.
3 Босечка
 
03.05.17
11:28
а как правильно надо написать? Пытаюсь найти ссылку на объект в источнике Как к ней обратиться. Я знаю что непроавильно, поэтому и спрашиваю
4 Aleksey
 
03.05.17
11:30
(3) На данном этапе источник недоступен.
И повторяю в 21 раз. На данном этапе доступны те поля источника у которых стоит галка поиск
5 azt-yur
 
03.05.17
11:32
(3) по каким условиям хотите ее найти? Причем здесь регистр СоответствиеНоменклатурыЕГАИС? Почему нельзя ограничиться настройкой полей поиска, зачем писать код?
6 Босечка
 
03.05.17
11:32
А как же мне найти ссылку на эту номенклатуру?
7 Aleksey
 
03.05.17
11:33
(6) Запросом, перебором, как вы считаете нужным так и ищите
8 PiotrLoginov
 
03.05.17
11:34
(6) см. (5)
9 Aleksey
 
03.05.17
11:35
Вопрос изначально в чем был? Как мне самостоятельно найти нужную номенклатуру и подсунуть найденную номенклатуру в КД

Вы же как то планировали её искать, ккакие то критерии у вас поиска были. Вот по ним и ищите
10 Aleksey
 
03.05.17
11:35
11 Босечка
 
03.05.17
11:39
Вся эта ерунда я согласна идет из-за того что надо перенести остатки из разных баз с возможно разной номенклатурой.
12 Aleksey
 
03.05.17
11:40
(6) забудьте о КД
Вот у вас номенклатура  в одной базе. Как вы ищите соответсвие в другой? Без привязки к КД, как вы определяете что вот эта номенклатура из одной базе соответствует именно вот этой номенклатуре в другой. Т.е. у них коды совпадают, или в дополнительных реквизитах код другой базы прописан, или у вас регистр сведений - соответствие объекта заполнен и вы по нем ищите соответствие

Для начало ответьте на вопрос как вы планируете сопоставлять. А потом уже будете обучать КД искать соответствие автоматом
13 Босечка
 
03.05.17
11:49
Мне надо сопоставить по наличию номенклатуры в Регистре сведений СоответствиеНоменклатурыЕГАИС
14 Aleksey
 
03.05.17
11:55
(13) Ок вот открыли вы этот регистр. и как вы будете сопоставлять? Как вы определите кто есть ху?

P.S. А вы точно правильно поняли задачу? Этот регистр никакого отношения не имеет к поставленной задачи.

Конечно есть вариант двойной конвертации. Сначала ищем соответствие в источники и меняем номенклатуру на эталоную. Затем уже в приемнике по эталонной номенклатуре ищем номенклатуру в приемнике, но мне отсюда не видно что за бардак у вас там в базах
15 Босечка
 
03.05.17
11:58
ТОчно правильно поняла. Именно в этом регистре мне надо искать.
16 Босечка
 
03.05.17
11:59
Если номенклатура есть в этом регистре, то она найдена, в противном случае - создается новая.
17 Босечка
 
03.05.17
12:00
Из разных баз надо слить информацию в одну, чтобы потом сделать РИБ.
18 Aleksey
 
03.05.17
12:00
(16) Ок. у вас в одной базе "Вино 0,5 игристое." В другой базе
"Вино игр. 0,5л бут." По какому критерию вы определите что это одна и таже позиция?
19 Босечка
 
03.05.17
12:00
Чтобы номенклатура не задвоилась надо сделать этой поиск.
20 Aleksey
 
03.05.17
12:01
(16) вы путаете мягкое с тёплым. Хотя бы посмотрите для чего нужен этот рееистр
21 Aleksey
 
03.05.17
12:02
(19) У вас в источнике этот регистр хоть заполнен?
22 Босечка
 
03.05.17
12:02
для сопоставления номенклатуре кодам алкогольной продукции
23 Босечка
 
03.05.17
12:02
Заполнен
24 Aleksey
 
03.05.17
12:04
(22) Только есть нюанс. Он привязан к импортерам. Т.е. он та может быть заполнен но у другого поставщика, что делать?
25 Босечка
 
03.05.17
12:09
(18) Буду искать "Вино 0,5 игристое" в Регистре
СоответствиеНоменклатурыЕГАИС там есть кодалкогольной продукцииЕГАИС.  Далее "Вино игр. 0,5л бут. тоже надо искать в этом регистре, если кодалкогольной продукцииЕГАИС совпадает, то это одна и таже позиция. Только как это в конвертации написать не знаю......
26 Aleksey
 
03.05.17
12:11
(25) там нет кода, по крайне мере в бП
Измерения
АлкогольнаяПродукция - СправочникСсылка.КлассификаторАлкогольнойПродукцииЕГАИС
ИдентификаторУпаковки - Строка

Ресурсы
Номенклатура - СправочникСсылка.Номенклатура
КоэффициентПересчетаУпаковки - Число


И где здесь код?
27 Aleksey
 
03.05.17
12:15
Но если у в самописке есть этот код, тогда проще
Добавляем новый реквизит
Источник - получить из входящих данных + галка поиск и заполняем его кодалкогольнойпродукцииЕГАИС.

Далее в поиске прописываем если это поле заполнено, то ищем в регистре. Нашли - заполняем переменную СсылкаНаОбъект
Не нашли, или поле не заполнено - тогда обычный поиск
28 Босечка
 
03.05.17
12:15
конфа Розница 2.2 базовая никаких самописок нет переносится в проф розница 2.2
29 Босечка
 
03.05.17
12:17
Вы хотите сказать в приемнике можно добавить код? И перенести из базовой?
30 azt-yur
 
03.05.17
12:17
(25) "кодалкогольной продукцииЕГАИС" - это реквизит номенклатуры?
31 Босечка
 
03.05.17
12:19
нет Это реквизит справочника КлассификаторАлкогольнойПродукцииЕГАИС
32 Aleksey
 
03.05.17
12:23
(31) это не так. У этого справочника нет такого кода.
Код - это типовой код который 1С присваивает автоматом. И он не обязан совпадать в разных базах
33 Aleksey
 
03.05.17
12:23
Реквизиты
Объем
Крепость
ВидПродукции
Производитель
Импортер
НаименованиеПолное
ТипПродукции
34 Босечка
 
03.05.17
12:28
Именно так во всех базах одинаковый вот так.
35 Йохохо
 
03.05.17
12:37
понял) надо сделать поиск не по полям номенклатуры, а полям КлассификаторАлкогольнойПродукцииЕГАИС, которой соответствует эта номенклатура в РС СоответствиеНоменклатурыЕГАИС
36 Aleksey
 
03.05.17
12:40
(34) ну тогда (27) всё еще в силе
37 Босечка
 
03.05.17
12:44
понятно. А где прописывать получение этого кода?
38 Aleksey
 
03.05.17
12:47
все там же
Если ЗначениеЗаполнено(СвойстваПоиска["АлкогольнаяПродукция"]) тогда
    Запрос = Запросы.НайтиНоменклатуруАлкПоПолямПоиска;
    Запрос.УстановитьПараметр("Код",СвойстваПоиска["АлкогольнаяПродукция"]);

        Выборка = Запрос.Выполнить().Выбрать();
    Если Выборка.Следующий() Тогда
        ССылкаНаОбъект =  Выборка.Номенклатура;
        ПрекратитьПоиск  = Истина;
        УстанавливатьУОбъектаВсеСвойстваПоиска =Ложь;
    КонецЕсли;
   Иначе
39 Босечка
 
03.05.17
13:04
понятно

только

Запрос.УстановитьПараметр("Код",СвойстваПоиска["КодЕГАИС"]);

КодЕГАИС - реквизит который я создам в приемнике и на нем надо галочку поставить.

АлкогольнаяПродукция - булево.
Правильно я поняла?
40 Aleksey
 
03.05.17
13:13
почти
41 Aleksey
 
03.05.17
13:13
и заполняем его кодалкогольнойпродукцииЕГАИС.
42 Босечка
 
03.05.17
13:16
(41) Из входящих данных. А где это заполнение прописать?
43 Йохохо
 
03.05.17
22:14
Вам как бы намёк, что всё плохо
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn