Имя: Пароль:
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) все он верно покажет! У меня проблема есть, не могу четко объяснить что требуется.
Но все равно всем спасибо,  сделал определенные выводы.
Удачных выходных
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший