|   |   | 
| 
 | Уникальный идентификатор в 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     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |