Имя: Пароль:
1C
1С v8
Как сравнить две ТЗ
,
0 Hayce
 
04.08.17
15:40
Добрый день!
Есть 2 базы, к обоим подключаюсь через СОМ, получаю некие данные, в моем случае это ссылка на номенклатуру, загоняю их в ТЗ и хочу сравнить. Делаю запрос к обоим ТЗ и получаю ошибку о том, что неверный параметр.
Можно как то схлопнуть эти ТЗ?
1 Asmody
 
04.08.17
15:42
(0) И как ты собрался ссылку из одной базы сравнить с ссылкой из другой базы?
2 МихаилМ
 
04.08.17
15:44
3 Wirtuozzz
 
04.08.17
15:46
(0) главный вопрос, как сформулирована задача? Что нужно сделать?
4 Hayce
 
04.08.17
15:49
(3) Задача проста, объединить эти ТЗ и получить в результатте те номенклатурные позиции, которые имеют одинаковые ссылки.
5 php5
 
04.08.17
15:53
(4) А обязательно сравнивать по ссылке или все-таки условие найти дубли?
6 Wirtuozzz
 
04.08.17
15:55
(4) ты можешь обратиться к одной таблице, отдельно ко второй таблице, привести текстовые поля в соответствия через выразить, и потом сделать внутреннее соединение связавшись по ссылке, полученная таблица - таблица дублей
7 Hayce
 
04.08.17
15:55
(5) Есть 3 базы и номенклатура из 2 переезжает в третью, надо схлопнуть ее из первых двух.
8 php5
 
04.08.17
15:56
(7) Сравнвний по простым типам (коды, артикулы или совакупность этих полей).
9 Wirtuozzz
 
04.08.17
15:56
(7) причем тут 3 базы, если участвуют только 2 базы, зачем нам нужна третья? что бы первая и вторая не подрались?
10 Wirtuozzz
 
04.08.17
15:57
или ты из первой базы рулишь переносом данных из базы 2 в базу 3 ?
11 Hayce
 
04.08.17
15:58
(9) было бы 2 базы, тогда бы и вопроса не было. А так надо объединить эти 2 таблицы и загнать в новую третью бызу
12 Hayce
 
04.08.17
15:59
(10) точно
13 Веселый собака
 
04.08.17
15:59
(0) Если из 2-х баз, то по идее надо все составляющие номенклатуру реквизиты через метаданные сравнивать.. Если получится, конечно.
14 Wirtuozzz
 
04.08.17
16:01
(12) Базы источники 1С?
15 PiterPrg
 
04.08.17
16:02
Так ты сравнивай не ссылки, а Ссылка.УникальныйИдентификатор()
16 Hayce
 
04.08.17
16:02
(14) да
17 Wirtuozzz
 
04.08.17
16:03
(16) А в чем сложность сделать правила КД2.0 и перенести нормально данные? Без этого маразма, который за гранью добра и зла?
18 Hayce
 
04.08.17
16:03
(15) Хорошо, но вопрос не как это сделать в теории, а как на практике... Не могу придумать как это сделать в запросе к двум ТЗ и не получить ошибку
19 Hayce
 
04.08.17
16:04
(17) незнаю :)
20 Wirtuozzz
 
04.08.17
16:05
(18) нужно написать правильный запрос.
21 PiterPrg
 
04.08.17
16:06
(18) При чем здесь теория?
Я именно о практике.
В той таблице, которую ты (за каким-то)
собрался сравнивать в запросе.
Вместо ссылки делаешь поле Строка(36)
И когда ее будешь заполнять заполняй не значением Ссылка,
а Ссылка.УникальныйИдентификатор()
22 Wirtuozzz
 
04.08.17
16:06
(19) Но я вижу, что чувачек любит извращения с КОМ, с запросами, и не совсем понимает что такое ссылка. Ты из базы источника нафиг ссылку вытащил? тебе нужен УникальныйИдентификатор в виде строки, и по нему искать в базе примнике, причем сначала в цикле заполнять ТЗ, а потом уже ТЗ пихать в запрос.
23 Веселый собака
 
04.08.17
16:11
(22) А зуб даешь, что в разных, давно не синхронизированных базах по одному UID не будет разное. Или разный uid у одной и той же номенклатуры?
24 Wirtuozzz
 
04.08.17
16:11
(19) УникальныйИдентификатор() - читай СП, иначе прийдется тебя учить запросам, учить манерам, учить искать правильный метод. Ты ж наверное негодяй не в транзакции в базу пишешь данные, эх насоздаешь ты там дел.
25 _Дайвер_
 
04.08.17
16:11
Недавно делал перенос, щас код скину
26 Wirtuozzz
 
04.08.17
16:12
(23) Вероятность этого минимальна, в любом случае я против переноса через КОМ, я автору еще (17) написал - ЮЗАЙ ПРАВИЛА не парь мозг ни себе, ни нам.
27 Wirtuozzz
 
04.08.17
16:16
(23) и для меня как для программиста, если в ТЗ написано, что уникальность номенклатуры обусловлена уникальностью ГУИД, то значит если по гуид нашлось, значит это одно и то же. А если больше ничего не сказано - значит этого нет. Автор в (0) писал о ссылке, я его понял что он будет искать по ГУИД.
28 _Дайвер_
 
04.08.17
16:17
1. Блин, я делал это для контрагентов, до номенклатуры еще не дошел...Но вот пример. В обработке добавил ТЧ, ее заполняю необходимыми данными, и после этого в процедуре переноса данных вызываю функцию НайтиСоответствиЯБЛАБЛАБЛА
    OLEЗапрос = Соединение.NewObject("Запрос");
    OLEЗапрос.Текст =
    "ВЫБРАТЬ
    |    Контрагенты.Ссылка
    |ИЗ
    |    Справочник.Контрагенты КАК Контрагенты
    |ГДЕ
    |    Контрагенты.ИНН = &ИНН
    |    И Контрагенты.КПП = &КПП";
    OLEЗапрос.УстановитьПараметр("ИНН", ИНН);
    OLEЗапрос.УстановитьПараметр("КПП", КПП);
    Выборка = OLEЗапрос.Выполнить().Выбрать();
    Если Выборка.Следующий() Тогда
        Возврат Истина;
    Иначе
        Возврат Ложь;
    КонецЕсли;

Это на примере контрагентов сделаешь себе на номенклатуру, поиск делай такой который считаешь нужным
29 _Дайвер_
 
04.08.17
16:20
(28) + , потом в цикле, проходи ТЧ, если есть соответствие, тогда Продолжить Иначе НоваяНоменклатура = Соединение.Справочники.СоздатьЭлемент(); заполняешь его, Записать();
30 Wirtuozzz
 
04.08.17
16:21
(29) еще один герой без транзакций пишет в базу
31 _Дайвер_
 
04.08.17
16:23
(29) :) Я это сделал, потому-что пользователям впадло переносить ручками пару контрагентов, а правила для 2 контрегентов писать не охота. И переносят раз в месяц
32 Hayce
 
04.08.17
16:23
ну это все хорошо, только это геморойно, я думал можно как то попроще парочкой несложных запрсов
33 _Дайвер_
 
04.08.17
16:24
(30) Какие транзакции? Я контрагента создаю, и записываю его, все.
34 Wirtuozzz
 
04.08.17
16:24
(32) можно правилами. Проще не придумаешь.
35 _Дайвер_
 
04.08.17
16:25
(32) Дело говорит(34)
36 Wirtuozzz
 
04.08.17
16:25
(33) Посмотри обработку Универсальный обмен в формате ХМЛ, и посмотри там галочка есть "Выполнять в транзакции", подумай для чего она
37 Wirtuozzz
 
04.08.17
16:26
(33) Если ты для одного контрганета придумал такой алгоритм, вместо того что бы установить ссылку нового элемента, то это ППЦ
38 _Дайвер_
 
04.08.17
16:29
(37) Ссылку передавать будешь с одной базы в другую? причем, которые не синхронизируются, да еще и конфигурации разные...
39 Wirtuozzz
 
04.08.17
16:34
(38) Правила напишу. И выгружу что мне надо, сколько мне надо и куда мне надо. Между базами 1С данные любые данные выгружаются на раз.
40 Wirtuozzz
 
04.08.17
16:34
я ТС раскусил еще в (3) я сразу понял, что он не понимает что ему нужно. И тема ветки не имеет ничего общего с тем, что ему нужно сделать.
41 X Leshiy
 
04.08.17
16:35
(0) Нормальные люди "схлопывают" правилами и выгрузкой.
42 _Дайвер_
 
04.08.17
16:36
(39) Согласен, в случае с СП, ему надо КД 2.0 использовать, в моем случае, я сделал обработину, и меня не станут дергать чтобы я переносил 2 контрагента и 3 номенклатуры в неделю постоянно. Так они выбрали что нужно и сами все сделали
43 Hayce
 
04.08.17
16:37
Есть 2 базы, одна основная, другая нет, номенклатура у них разная, часть номенклатуры совпадает по уникальномуидентификатору, часть ищу через ж0hу, другая часть вообще не совпадает и не должна. Надо перенести только те номенклатурные позиции по которым есть остатки, как в первой так и во второй базе, при этом если номенклатура из неосновной базы есть в основной то УИД должен быть перенесен из основной. И если есть остаток в неосновной тогда номенклатура также должна переехать, но уже наплевать по какому УИД. И все это переезжает в третью базу, чистую.
Как такое осуществить с помощью КД2,0?
44 _Дайвер_
 
04.08.17
16:37
(42) ТС*
45 _Дайвер_
 
04.08.17
16:38
(43) Там тебе в помощь Справка!!! Все по полочкам написано
46 X Leshiy
 
04.08.17
16:39
(43) Ты не поверишь, но в КД можно запросы писать.

И выгружать твою номенклатуру по твоим правилам.

И что ты пристал у УИД?

На кой хен он тебе?
47 _Дайвер_
 
04.08.17
16:39
(43) Вот, гугл нашел(хорошая вещь)
https://its.1c.ru/db/metod8dev/content/2943/hdoc
48 _Дайвер_
 
04.08.17
16:41
А вообще иди отдыхай, с понедельника начнешь читать что такео КД 2.0 и после обеда начнешь писать правила...
49 X Leshiy
 
04.08.17
16:42
Грубо говоря, пишешь правило конвертации номенклатуры, указываешь поля поиска (какие надо).

Пишешь обработчик который выгрузит твою номенклатуру (у которой остатки) по правилам.

Выгружаешь из базы 1 и 2, загружаешь в базу 3.
50 Wirtuozzz
 
04.08.17
16:42
(42) А я бы сделал правила и инструкцию, и меня бы вообще не дергали, никогда. Пользователь сам бы решил свои проблемы.
51 Hayce
 
04.08.17
16:43
(47) Гугл,молодец конечно.
То есть КД может не только запросы писать, но и загружать данные из 2 источников в один приемник, я правильно понял?
52 X Leshiy
 
04.08.17
16:43
(49) И вся твоя номеклатура схлопнется по полям поиска.

Отстань уже от УИД и тем более престань пытаться получить ссылку по COM.
53 X Leshiy
 
04.08.17
16:43
(51) Хоть в 200.
54 _Дайвер_
 
04.08.17
16:43
(50) Научи их еще КД 2.0 пользоваться, вообще идеально!
55 Hayce
 
04.08.17
16:44
(49) если я так выгружу он мне задвоит половину
56 Wirtuozzz
 
04.08.17
16:45
(43) бред, если товар есть в источнике, то она просто обязана появиться в приемнике, иначе вы данные ни одним отчетом не сведете.
57 Wirtuozzz
 
04.08.17
16:46
(51) нет, КД не пишет запросы. Это ж конфигурация, а не ИИ
58 _Дайвер_
 
04.08.17
16:47
(55) Внимательно почитай справку, проставь условия, и переноси.
59 Wirtuozzz
 
04.08.17
16:47
(54) научил, вот все бухи, с кем работаю все умеют, гл бухи даже понимают отборы.
60 X Leshiy
 
04.08.17
16:47
(55) Ну если через ж**у поля поиска укажешь то да, задвоит и половину и три четверти и все.
61 Wirtuozzz
 
04.08.17
16:47
(55) Настрой поля.ТС, ты нам признайся, ты хоть раз правила писал?
62 Hayce
 
04.08.17
16:49
(56) Источника два! появиться то она появится, но тока и поиск между ними проходит через родителя! родителя указывать в качестве условия... такое выгрузится что лучше не начинать
63 Wirtuozzz
 
04.08.17
16:49
(54) Самих бухам правила писать не нужно, они просто ПИШУТ, как должны быть перегружены документы, обрати внимание: ПИШУТ, я делаю им правила, и они САМИ выгружают, и лишь иногда приходится допиливать правила, т.к. меняются реквизиты в конфигурациях
64 Hayce
 
04.08.17
16:49
(61) правил я не писал, я и не скрываю этого
65 Wirtuozzz
 
04.08.17
16:49
(62) Зачем тебе проводить выгрузку через родителя?
66 X Leshiy
 
04.08.17
16:50
(43) Напомню, если ты забыл, серез COM можно передать только примитивные типы.
67 Wirtuozzz
 
04.08.17
16:50
(64) С первого раза ты не напишешь, что нужно, хотя... попробуй, у тебя впереди выходные...
68 Hayce
 
04.08.17
16:51
(65) ну вот сейчас так... хочу в новой программе сделать по человечески
69 Wirtuozzz
 
04.08.17
16:51
(66) да он просто что такое тип не понимает, а вы ему про примитивные.
70 Wirtuozzz
 
04.08.17
16:52
(68) А кто тебе сказал что это правильно?

Прежде чем делать выгрузку, ты должен понять как ты результат проверишь? ты вручную будешь крыжить базы?
71 Hayce
 
04.08.17
16:53
(69) кхм...
72 Wirtuozzz
 
04.08.17
16:56
(71) Я о том же.

продолжу, так как ты хочешь, я бы переносить не стал. Т.к. проверять все прийдется вручную.

Я бы перенес остатки, сначала остатки из первой базы во вторую, на новый чистый склад. Проверил отчетами остатки, потом менеджеры либо корректировками, либо пусть удаляют что им не нужно.

Потом я бы опять все перенес в третью базу. И опять менеджеры бы корректировали что им не нужно. Потому что те горы гомна создавшиеся годами ты переносом не разрулишь. Перенос данных <> исправление ошибок учета! Запомни это и Гл. буху объясни или кто там от тебя это требует
73 Wirtuozzz
 
04.08.17
16:59
ТС, ты как правильность проверять своей работы собрался, поведай нам. Мы все в волнении.
74 Wirtuozzz
 
04.08.17
16:59
???
75 Hayce
 
04.08.17
17:02
Та чо проверять то?? я хотел все загнать в одну таблицу и из нее уже переносить в новую. а проверять, ну хз, отчетом остатки на складах
76 Wirtuozzz
 
04.08.17
17:05
(75) И что тебе отчет покажет? в базе 1 он тебе покажет одно, в базе 2 покажет другое. Я тебе скажу, где правильно? Суммы итого в отчете не бьются. Надо крыжить руками?
77 X Leshiy
 
04.08.17
17:05
(75) По СОМ из двух баз в третью ты получишь только строки, числа, даты, смирись :)
78 Wirtuozzz
 
04.08.17
17:06
(77) в принципе этого достаточно ТС, только он не понимает как этим всем пользоваться.
79 Wirtuozzz
 
04.08.17
17:07
Лан, буду ждать, вопросов почему не заполняется количество при переносе. ответ : смотри типы, строку в число хочешь засунуть.
80 X Leshiy
 
04.08.17
17:07
(78) Ну, я не сказал "перестань" :)
81 Wirtuozzz
 
04.08.17
17:09
(80) ;) я дал просто морально поддержал парня, что бы не отчаивался. А то мы ему мозги знатно вскипятили в пятницу )))
82 Hayce
 
04.08.17
17:20
(77) спасибо , смирился
(78) наверно так и есть, вот сделаю все и пойму
(79) ну с типами то я как нить разберусь
83 Hayce
 
04.08.17
17:22
(76) все он верно покажет! У меня проблема есть, не могу четко объяснить что требуется.
Но все равно всем спасибо,  сделал определенные выводы.
Удачных выходных
Программист всегда исправляет последнюю ошибку.