|
Как сравнить две ТЗ | ☑ | ||
---|---|---|---|---|
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) все он верно покажет! У меня проблема есть, не могу четко объяснить что требуется.
Но все равно всем спасибо, сделал определенные выводы. Удачных выходных |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |