Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Уникальный идентификатор в 1с 7 или что то типа того

Уникальный идентификатор в 1с 7 или что  то типа того
Я
   ugorchina
 
12.04.18 - 05:41
Всем привет!

Нужна помощь толкните мою сидую голову в нужное направление
Пишу обмен между 1с 8 и 1с 7 по ОЛЕ

но ылазит ряд проблем следующего рода 

7-ка без партий а соответвенно бухалтера дублирую номенклатуру 

этих дублей куча одинаковое все Наименование, артикул и даже бывает код (

зацепиться при обмене не за что отсюда вывод надо что то придумывать

1. решение создать в 7-ке реквизит и делать его уникальным затем цепляться по нему но мне бы не хотелось дорабатывать 7-ку

2. решение получить уникальный идентификатор посредством Значениевстроку или на оборот из строки Но мне что то не понятно как это замутить не храня этот значение в 7-ке а получив его в 8-ке запрашивать его в обще мне понятно как это все замутить то?
 
 
   los_hooliganos
 
1 - 12.04.18 - 05:47
Откуда и куда идет обмен?
Исходя из этого решать где заводить ключ для обмена.
   ugorchina
 
2 - 12.04.18 - 05:47
+(0) если я буду получать примерно так 

Объект = БазаОле.ЗначениеВстрокуВнутр(Док_Источник.ТекущийДокумент());
ИдентификаторДокумента = СокрЛП(ПолучитьИД(Объект));

затем производить запись в 8-ку полученное значение а после сново поизведу его запрос в там же виде он останется неизменным?

или на каждый Объект = БазаОле.ЗначениеВстрокуВнутр(Док_Источник.ТекущийДокумент());
ИдентификаторДокумента = СокрЛП(ПолучитьИД(Объект));
 значение будет другим?
   los_hooliganos
 
3 - 12.04.18 - 05:47
В Бухгалтерии необходимо сделать зачистку дублей.
   ugorchina
 
4 - 12.04.18 - 05:48
обмен идет из 8-ки
   ugorchina
 
5 - 12.04.18 - 05:48
+(3) нельзя они числятся в остатках это решение у многих бухалтеров она таким обр обходятся без партий посредством тупого дублирования
   los_hooliganos
 
6 - 12.04.18 - 05:58
(2) Да ИД неизменный.
Он уникальный для каждого документа.
В справочнике идет своя нумерация. Уникальность только в пределах справочника.
ИД "расширяется" если используется УРБД.
В конце ИД добавляется ИБ базы-родителя элемента
   ugorchina
 
7 - 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-ке равно ид полученный?
   ugorchina
 
8 - 12.04.18 - 06:01
+(7) хотя чего это я я уже сам придумал спасибо!
   ugorchina
 
9 - 12.04.18 - 06:03
+(8) хотя нет! ) еще вопрос как из {"B","0","0","156","0","0","     17141   "} получить только

17141

или это значение может изменится или оно будет не всегда уникальным (в пределах одного спр или документа?
   ugorchina
 
10 - 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   "}
 
 Рекламное место пустует
   VladZ
 
11 - 12.04.18 - 06:30
(10) В значениии {"B","0","0","156","0","0","     17141   "} зашит тип объекта, его вид и идентификатор. Если у тебя реквизит определенного вида - тебе для работы хватит и идентификатора. Это цифра 17141.
   VladZ
 
12 - 12.04.18 - 06:33
+11 Если не нужно производить "обратную идентификацию" - используй последнюю цифру.

Обратная идентификация - это понятно что такое?

В 7.7 по  {"B","0","0","156","0","0","     17141   "} ты сможешь получить сразу получить ссылку на объект. А чтобы получить ссылку по одно цифре (17141) - тебе понадобится лампа и Алладин.
   ugorchina
 
13 - 12.04.18 - 06:48
(12) я пишу запрос по оле разве можно как то получить значение по этой ссылке?

и еще вопрос как получить только 17141    из {"B","0","0","156","0","0","     17141   "} что то я не догоняю
   ugorchina
 
14 - 12.04.18 - 06:49
но мне честно говоря это значение необходимо что бы сравнивать элементы в 8-ке с элементами в 7-ке

в обмене будут участвовать только номенклатура и документ один и все

на 8-ке самописная конфига для обмена с сайтом хочу использовать ее как промежуточную
   VladZ
 
15 - 12.04.18 - 06:54
(13) "запрос по оле" - оле убогая хрень.

Из {"B","0","0","156","0","0","     17141   "} убираешь скобки, кавычки. Заменяешь запятую на перевод строки и получаешь седьмую строку и убираешь пробелы.
   ugorchina
 
16 - 12.04.18 - 08:44
(15) спасибо! а чем ОЛЕ Убогая?
   HK_Mers
 
17 - 12.04.18 - 08:49
(16) не легче с конца первую запятую найти и от этой запятой уже взять только хвост, чем заменять запятые на перевод строки и потом ещё и седьмую строку брать?
   ugorchina
 
18 - 12.04.18 - 09:21
Вот в общем код получения только идентификатора 

(Не знаю может не верно сделал но надеюсь что правильно)
Функция ПолучитьИД(Объект)
БезКавычекФигурных = СтрЗаменить(Объект,"{","");    
БезКавычекФигурных = СтрЗаменить(БезКавычекФигурных,"}","");
БезПробелов        = СокрЛП(БезКавычекФигурных);
КоличествоЗнаков   = СтрНайти(БезПробелов,",",НаправлениеПоиска.СКонца)+3;
Возврат СокрЛП(Сред(Лев(БезПробелов,СтрДлина(БезПробелов)-1),КоличествоЗнаков,СтрДлина(БезПробелов)));
КОнецФункции
   big
 
19 - 12.04.18 - 09:30
(18) Не слушай (17). В этой строке присутствует и тип объекта, и его вид, и его ИД. Из примера в (15) Надо как минимум взять 156 и 17141. Это будет вид и ИД объекта.
   igorPetrov
 
20 - 12.04.18 - 09:31
(18) Ппц.
   ugorchina
 
21 - 12.04.18 - 09:32
+(19) +(20) спасибо! Но скажите чем же убогая вещь ОЛЕ?
   hhhh
 
22 - 12.04.18 - 09:42
(21) переходите на вэб-сервисы уже.
   hhhh
 
23 - 12.04.18 - 09:44
(21) приделайте для семерки обмен по универсальному формату Enterprise Data. Вот это бы было классно.
   big
 
24 - 12.04.18 - 09:58
(21) Весьма и весьма медленно всё.
По мне лучше по ОЛЕ вызвать какую-нить функцию из глобального модуля, которая всё выгрузит в файл, а уже из файла это всё подхватить в 8-ку
   los_hooliganos
 
25 - 12.04.18 - 10:01
(24) Согласен, это намного быстрее.
   Builder
 
26 - 12.04.18 - 10:17
Есть решение проще.
1. Перенумеровать коды в уникальные.
2. Включить у кодов уникальность.
3. Наслаждаться.
   user-ok
 
27 - 12.04.18 - 10:31
а чем КД не угодила? зачем OLE?
   VladZ
 
28 - 12.04.18 - 10:48
(18) "убираешь скобки, кавычки. Заменяешь запятую на перевод строки и получаешь седьмую строку и убираешь пробелы." - как написал, так и нужно делать

ВремСтрока = ИсходныйКод;

ВремСтрока = СтрЗаменить(ВремСтрока,"{","");  // убрали скобки  

ВремСтрока = СтрЗаменить(ВремСтрока,"}","");
ВремСтрока = СтрЗаменить(ВремСтрока,"""","");// убрали кавычки

ВремСтрока = СтрЗаменить(ВремСтрока,",",РазделительСтрок);// заменили запятую


Идентификатор = СокрЛП(СтрПолучитьСТроку(ВремСтрока,7));// получили нужный параметр
   VladZ
 
29 - 12.04.18 - 10:49
+28 Код работает как в 7.7, так и в 8.x.
   VladZ
 
30 - 12.04.18 - 11:03
(21) Во-первых, код громоздкий. Писать ложнее и читать сложнее. Скорость разработки никакая. Но это ерунда. Допустим, ты нагородил этот код. Все у тебя волшебным образом подключается, выгружается и т.д. И тут ты думаешь, а поставлю на ночь выполняться, чтобы не мешать никому. А заодно, для повышения скорости, зафигачу сюда транзакции!

И тут вторая проблема: с транзакциями облом!  И в итоге может получится так, что выгрузить из одной программы в файлик и загрузить этот файли в другую программу, не используя оле, будет быстрее на порядок.  При больших объема данных параметр "скорость" важнее, чем "грузить напрямую".
   ugorchina
 
31 - 12.04.18 - 14:28
в обмене будет учавствовать всего один справочник и один документ и те регистрируются при создании или изменении как изменнный что позволяет не запрашивать обьемных данных

запрос отрабатывает за три секунды это минимум и макс двадцать сек
   ugorchina
 
32 - 12.04.18 - 14:53
(30) не соглашусь это уже третяя моя промежуточная программа и все летает ОЛЕ нормлаьно работает а с файлами мне не нравится работать )

так как файлы надо положить куда то и т д а  если по ОЛЕ то нужен  правильный подход что бы быстро отрабатывало НА 7-ке я подготавливаю данные собираю их в одном месте и после произвожу запрос по ЛЕ и все летает!
   ugorchina
 
33 - 12.04.18 - 14:59
+(32) к тамуже эта база как промежуточная в ней не будет никто работать она будет оплучать данные из 7 и отправлять их на сайт а так же принимать данные с сайта и отправлять их в 7
 
 


Список тем форума
Рекламное место пустует  Рекламное место пустует
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует