|
Уникальный идентификатор в 1с 7 или что то типа того | ☑ | ||
---|---|---|---|---|
0
ugorchina
12.04.18
✎
05:41
|
Всем привет!
Нужна помощь толкните мою сидую голову в нужное направление Пишу обмен между 1с 8 и 1с 7 по ОЛЕ но ылазит ряд проблем следующего рода 7-ка без партий а соответвенно бухалтера дублирую номенклатуру этих дублей куча одинаковое все Наименование, артикул и даже бывает код ( зацепиться при обмене не за что отсюда вывод надо что то придумывать 1. решение создать в 7-ке реквизит и делать его уникальным затем цепляться по нему но мне бы не хотелось дорабатывать 7-ку 2. решение получить уникальный идентификатор посредством Значениевстроку или на оборот из строки Но мне что то не понятно как это замутить не храня этот значение в 7-ке а получив его в 8-ке запрашивать его в обще мне понятно как это все замутить то? |
|||
1
los_hooliganos
12.04.18
✎
05:47
|
Откуда и куда идет обмен?
Исходя из этого решать где заводить ключ для обмена. |
|||
2
ugorchina
12.04.18
✎
05:47
|
+(0) если я буду получать примерно так
Объект = БазаОле.ЗначениеВстрокуВнутр(Док_Источник.ТекущийДокумент()); ИдентификаторДокумента = СокрЛП(ПолучитьИД(Объект)); затем производить запись в 8-ку полученное значение а после сново поизведу его запрос в там же виде он останется неизменным? или на каждый Объект = БазаОле.ЗначениеВстрокуВнутр(Док_Источник.ТекущийДокумент()); ИдентификаторДокумента = СокрЛП(ПолучитьИД(Объект)); значение будет другим? |
|||
3
los_hooliganos
12.04.18
✎
05:47
|
В Бухгалтерии необходимо сделать зачистку дублей.
|
|||
4
ugorchina
12.04.18
✎
05:48
|
обмен идет из 8-ки
|
|||
5
ugorchina
12.04.18
✎
05:48
|
+(3) нельзя они числятся в остатках это решение у многих бухалтеров она таким обр обходятся без партий посредством тупого дублирования
|
|||
6
los_hooliganos
12.04.18
✎
05:58
|
(2) Да ИД неизменный.
Он уникальный для каждого документа. В справочнике идет своя нумерация. Уникальность только в пределах справочника. ИД "расширяется" если используется УРБД. В конце ИД добавляется ИБ базы-родителя элемента |
|||
7
ugorchina
12.04.18
✎
06:00
|
итак вопрос касательно того меняется ли значение
посредством его получения таким образом Объект = ОбъектV77.ЗначениеВстрокуВнутр(НоменклатураОЛЕ.ТекущийЭлемент()); ИдентификаторОбъекта = СокрЛП(Объект); ДДД.ИД = ИдентификаторОбъекта; Нет не меняется получил первый раз затем еще раз и еще и после вошел в 7-ку изменил этот объект и сново попробовал его получить значение осталось тем же {"B","0","0","156","0","0"," 17141 "} {"B","0","0","156","0","0"," 17141 "} {"B","0","0","156","0","0"," 17141 "} в общем тепреь вопрос стоит в том как составить запрос сразу по данному ИДентификатору ил же придется делать условие если ид в 8-ке равно ид полученный? |
|||
8
ugorchina
12.04.18
✎
06:01
|
+(7) хотя чего это я я уже сам придумал спасибо!
|
|||
9
ugorchina
12.04.18
✎
06:03
|
+(8) хотя нет! ) еще вопрос как из {"B","0","0","156","0","0"," 17141 "} получить только
17141 или это значение может изменится или оно будет не всегда уникальным (в пределах одного спр или документа? |
|||
10
ugorchina
12.04.18
✎
06:17
|
(9) если не возможноо (9) то может необходимо убрать пробелы? не получится ли так что к примеру получу дв аразных ида вот таких?
{"B","0","0","156","0","0"," 17141 "} {"B","0","0","156","0","0"," 17141 "} или они всегда будут вида {"B","0","0","156","0","0"," 17141 "} {"B","0","0","156","0","0"," 17141 "} {"B","0","0","156","0","0"," 17141 "} {"B","0","0","156","0","0"," 17141 "} |
|||
11
VladZ
12.04.18
✎
06:30
|
(10) В значениии {"B","0","0","156","0","0"," 17141 "} зашит тип объекта, его вид и идентификатор. Если у тебя реквизит определенного вида - тебе для работы хватит и идентификатора. Это цифра 17141.
|
|||
12
VladZ
12.04.18
✎
06:33
|
+11 Если не нужно производить "обратную идентификацию" - используй последнюю цифру.
Обратная идентификация - это понятно что такое? В 7.7 по {"B","0","0","156","0","0"," 17141 "} ты сможешь получить сразу получить ссылку на объект. А чтобы получить ссылку по одно цифре (17141) - тебе понадобится лампа и Алладин. |
|||
13
ugorchina
12.04.18
✎
06:48
|
(12) я пишу запрос по оле разве можно как то получить значение по этой ссылке?
и еще вопрос как получить только 17141 из {"B","0","0","156","0","0"," 17141 "} что то я не догоняю |
|||
14
ugorchina
12.04.18
✎
06:49
|
но мне честно говоря это значение необходимо что бы сравнивать элементы в 8-ке с элементами в 7-ке
в обмене будут участвовать только номенклатура и документ один и все на 8-ке самописная конфига для обмена с сайтом хочу использовать ее как промежуточную |
|||
15
VladZ
12.04.18
✎
06:54
|
(13) "запрос по оле" - оле убогая хрень.
Из {"B","0","0","156","0","0"," 17141 "} убираешь скобки, кавычки. Заменяешь запятую на перевод строки и получаешь седьмую строку и убираешь пробелы. |
|||
16
ugorchina
12.04.18
✎
08:44
|
(15) спасибо! а чем ОЛЕ Убогая?
|
|||
17
HK_Mers
12.04.18
✎
08:49
|
(16) не легче с конца первую запятую найти и от этой запятой уже взять только хвост, чем заменять запятые на перевод строки и потом ещё и седьмую строку брать?
|
|||
18
ugorchina
12.04.18
✎
09:21
|
Вот в общем код получения только идентификатора
(Не знаю может не верно сделал но надеюсь что правильно) Функция ПолучитьИД(Объект) БезКавычекФигурных = СтрЗаменить(Объект,"{",""); БезКавычекФигурных = СтрЗаменить(БезКавычекФигурных,"}",""); БезПробелов = СокрЛП(БезКавычекФигурных); КоличествоЗнаков = СтрНайти(БезПробелов,",",НаправлениеПоиска.СКонца)+3; Возврат СокрЛП(Сред(Лев(БезПробелов,СтрДлина(БезПробелов)-1),КоличествоЗнаков,СтрДлина(БезПробелов))); КОнецФункции |
|||
19
big
12.04.18
✎
09:30
|
(18) Не слушай (17). В этой строке присутствует и тип объекта, и его вид, и его ИД. Из примера в (15) Надо как минимум взять 156 и 17141. Это будет вид и ИД объекта.
|
|||
20
igorPetrov
12.04.18
✎
09:31
|
(18) Ппц.
|
|||
21
ugorchina
12.04.18
✎
09:32
|
+(19) +(20) спасибо! Но скажите чем же убогая вещь ОЛЕ?
|
|||
22
hhhh
12.04.18
✎
09:42
|
(21) переходите на вэб-сервисы уже.
|
|||
23
hhhh
12.04.18
✎
09:44
|
(21) приделайте для семерки обмен по универсальному формату Enterprise Data. Вот это бы было классно.
|
|||
24
big
12.04.18
✎
09:58
|
(21) Весьма и весьма медленно всё.
По мне лучше по ОЛЕ вызвать какую-нить функцию из глобального модуля, которая всё выгрузит в файл, а уже из файла это всё подхватить в 8-ку |
|||
25
los_hooliganos
12.04.18
✎
10:01
|
(24) Согласен, это намного быстрее.
|
|||
26
Builder
12.04.18
✎
10:17
|
Есть решение проще.
1. Перенумеровать коды в уникальные. 2. Включить у кодов уникальность. 3. Наслаждаться. |
|||
27
user-ok
12.04.18
✎
10:31
|
а чем КД не угодила? зачем OLE?
|
|||
28
VladZ
12.04.18
✎
10:48
|
(18) "убираешь скобки, кавычки. Заменяешь запятую на перевод строки и получаешь седьмую строку и убираешь пробелы." - как написал, так и нужно делать
ВремСтрока = ИсходныйКод; ВремСтрока = СтрЗаменить(ВремСтрока,"{",""); // убрали скобки ВремСтрока = СтрЗаменить(ВремСтрока,"}",""); ВремСтрока = СтрЗаменить(ВремСтрока,"""",""); // убрали кавычки ВремСтрока = СтрЗаменить(ВремСтрока,",",РазделительСтрок); // заменили запятую Идентификатор = СокрЛП(СтрПолучитьСТроку(ВремСтрока,7)); // получили нужный параметр |
|||
29
VladZ
12.04.18
✎
10:49
|
+28 Код работает как в 7.7, так и в 8.x.
|
|||
30
VladZ
12.04.18
✎
11:03
|
(21) Во-первых, код громоздкий. Писать ложнее и читать сложнее. Скорость разработки никакая. Но это ерунда. Допустим, ты нагородил этот код. Все у тебя волшебным образом подключается, выгружается и т.д. И тут ты думаешь, а поставлю на ночь выполняться, чтобы не мешать никому. А заодно, для повышения скорости, зафигачу сюда транзакции!
И тут вторая проблема: с транзакциями облом! И в итоге может получится так, что выгрузить из одной программы в файлик и загрузить этот файли в другую программу, не используя оле, будет быстрее на порядок. При больших объема данных параметр "скорость" важнее, чем "грузить напрямую". |
|||
31
ugorchina
12.04.18
✎
14:28
|
в обмене будет учавствовать всего один справочник и один документ и те регистрируются при создании или изменении как изменнный что позволяет не запрашивать обьемных данных
запрос отрабатывает за три секунды это минимум и макс двадцать сек |
|||
32
ugorchina
12.04.18
✎
14:53
|
(30) не соглашусь это уже третяя моя промежуточная программа и все летает ОЛЕ нормлаьно работает а с файлами мне не нравится работать )
так как файлы надо положить куда то и т д а если по ОЛЕ то нужен правильный подход что бы быстро отрабатывало НА 7-ке я подготавливаю данные собираю их в одном месте и после произвожу запрос по ЛЕ и все летает! |
|||
33
ugorchina
12.04.18
✎
14:59
|
+(32) к тамуже эта база как промежуточная в ней не будет никто работать она будет оплучать данные из 7 и отправлять их на сайт а так же принимать данные с сайта и отправлять их в 7
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |