| 
    
        
     
     | 
    
  | 
Как передавать по ОЛЕ только измененные объекты | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        ugorchina    
     10.04.18 
            ✎
    09:00 
 | 
         
        Подскажите пожалуйста 
 
        я создал справочник "Товары" в 1с8 из реквизитов ничего не добавлял по (ОЛЕ) заполняю данный справочник после при обмене я бы хотел получать из 1с7 по ОЛЕ в 1с8 только измененные данные например в 1с7 имеется два товара при первом обмене я получил оба товара как есть затем в 1с7 изменил например наименование в одном из товаре и при обмене я бы хотел получить только элементы которые 1. изменяли 2. создали (новые) как это реализовать? можно ли без доработок 1с7? можно конечно создать доп реквизит в справочниках и документах например изменен и при записи или проведении устанавливать признак изменения а в запросе по ОЛЕ 1. получать только с помеченным флагом но затем мне необходимо будет изменить данный флаг в исходное состояние а это затребует дополнительное время как сделать сие чудо средствами платформы?  | 
|||
| 
    19
    
        ugorchina    
     10.04.18 
            ✎
    09:28 
 | 
         
        +(4) ++(15) спасибо буду подумать ( я еще собирался добавить в справочники реквизит уникальный идентификатор что бы после получения списка товаров из 1с7 выгрузить их уники в 1с7 что бы потом по ним поучать элементы 
 
        а если новый то опять же получаем его в 8-ке записываем а после отправляем уник в 7-ку так будет верно? этот реквизит сделать не видимым  | 
|||
| 
    20
    
        ugorchina    
     10.04.18 
            ✎
    09:31 
 | 
         
        (18) не проканает много клиентов и у всех разные конфиги каждую дорабатывать не очень охото
 
        я уже написал промежуточную и теперь с сайтами на CMS Битрикс, ОКАЙ, Симпла и другими она дружит теперь осталось навести красату с обменом на ОЛЕ с 7-кой в принципе я его уже сдеал но очень долго отрабатывает около 3-х часов вот хочу ускорить сейчас вся эта кухня работает без доработок в 7-ке но видимо придется дорабатывать (  | 
|||
| 
    21
    
        ugorchina    
     10.04.18 
            ✎
    09:33 
 | 
         
        и еще вопрос )) может и смешной как и что и где надо зарегить что бы легально свою промежуточную продавать?     
         | 
|||
| 
    22
    
        ugorchina    
     10.04.18 
            ✎
    09:36 
 | 
         
        +(15) а можно ли работать в 7-ке одновременно с бух итогами и вести записи в регистрах сведений?
 
        как вариант я бы сделал то что в (4) но в регистре?  | 
|||
| 
    23
    
        Остап Сулейманович    
     10.04.18 
            ✎
    09:37 
 | 
         
        (22) Открою страшную военную тайну - в клюшках нет регистра сведений. Лепи на справочнике.     
         | 
|||
| 
    24
    
        Мимохожий Однако    
     10.04.18 
            ✎
    09:37 
 | 
         
        (20) В любом случае в промежуточную базу надо доставлять данные из 1с77. А это такие же обработки или настройки.     
         | 
|||
| 
    25
    
        ugorchina    
     10.04.18 
            ✎
    09:37 
 | 
         
        и еще ) если работать как в (4) можно ли в 7-ке завести реквизит неопределенного типа и задавать ему тип в зависимости от того что я собираюсь туда поместить документ либо справочник?     
         | 
|||
| 
    26
    
        ugorchina    
     10.04.18 
            ✎
    09:38 
 | 
         
        (24) по ОЛЕ? не надо дорабатывать 1с7! 
 
        я все прекрасно получаю по ОЛЕ не дорабатываю при этом 1с7  | 
|||
| 
    27
    
        Мимохожий Однако    
     10.04.18 
            ✎
    09:39 
 | 
         
        (26) Я не настаиваю. Дело вкуса.     
         | 
|||
| 
    28
    
        ugorchina    
     10.04.18 
            ✎
    09:40 
 | 
         
        +(27) вот пример
 
        НачатьЗамер(); Попытка ОбъектV77 = Новый COMОбъект("v77.Application"); Исключение Предупреждение(ОписаниеОшибки()); Возврат; КонецПопытки; Состояние("1С 7.7 успешно запущена, соединяемся с базой",,,БиблиотекаКартинок.ДлительнаяОперация48); СтрокаПодключения = "/D"""+СокрЛП(АдресБазыДанных)+""" /N"""+СокрЛП(ЛогинБазыДанных)+""" /P"""+СокрЛП(ПарольБазыДанных)+""""; РезультатПодключения = ОбъектV77.Initialize(ОбъектV77.RMTrade,СтрокаПодключения,"NO_SPLASH_SHOW"); Если РезультатПодключения Тогда // ОбменятьсяНоменклатурой(ОбъектV77); Иначе ОбщегоНазначения.СообщитьОбОшибке("Базу данных открыть не удалось!" + Символы.ПС + "- Проверьте параметры подключения." + Символы.ПС + "- Проверьте открывается ли база 1С 7.7 (возможно требуется восстановление индексных файлов, либо она уже открыта монопольно)."); //РазорватьСоединение(); Возврат; КонецЕсли; // Вставить содержимое обработчика. АртикулТек = Элемент.ТекущиеДанные.Артикул; ТоварССылка = Элемент.ТекущиеДанные.Товар; НоменклатураОЛЕ = ОбъектV77.CreateObject("Справочник.Номенклатура"); НоменклатураОЛЕ.ВыбратьЭлементы(); ТабличноеПоле2.Очистить(); Пока НоменклатураОЛЕ.ПолучитьЭлемент() = 1 Цикл СтрокаСравнения = ""; Если НоменклатураОЛЕ.ЭтоГруппа() = 0 Тогда СтрокаСравнения = СокрЛП(НоменклатураОЛЕ.Артикул); Если СокрЛП(АртикулТек) = СтрокаСравнения Тогда Состояние("1С 7.7 Получаем данные "+НоменклатураОЛЕ.Наименование+" "+НоменклатураОЛЕ.Код,,,БиблиотекаКартинок.ДлительнаяОперация48); ДДД = ТабличноеПоле2.Добавить(); ДДД.КодТовара = НоменклатураОЛЕ.Код; ДДД.Товар = НоменклатураОЛЕ.Наименование; ДДД.Артикул = НоменклатураОЛЕ.Артикул; ДДД.Остаток = 0; НоменклатураОЛе1 = ОбъектV77.CreateObject("Справочник.Номенклатура"); Субк1 = ОбъектV77.EvalExpr("ВидыСубконто.Номенклатура"); Субк2 = ОбъектV77.EvalExpr("ВидыСубконто.МестаХранения"); Субк3 = ОбъектV77.EvalExpr("ВидыСубконто.Партии"); Если НоменклатураОЛе1.НайтиПоКоду(СокрЛП(НоменклатураОЛе.Код),0,1)=1 Тогда БИ = ОбъектV77.CreateObject("БухгалтерскиеИтоги"); БИ.ИспользоватьСубконто(Субк1,НоменклатураОЛе1.ТекущийЭлемент(),1,0); БИ.ИспользоватьСубконто(Субк2,Неопределено,1,0); БИ.ИспользоватьСубконто(Субк3,Неопределено,1,0); БИ.ВыполнитьЗапрос(ТекущаяДата(),ТекущаяДата(),"41.1",Неопределено,Неопределено,1,Неопределено,Неопределено); БИ.ВыбратьСубконто(1); Пока БИ.ПолучитьСубконто(1) = 1 Цикл Состояние("1С 7.7 Получаем данные "+НоменклатураОЛЕ.Наименование+" "+НоменклатураОЛЕ.Код+" остаток "+БИ.СКД("К"),,,БиблиотекаКартинок.ДлительнаяОперация48); ДДД.Остаток = БИ.СКД("К"); БИ.ВыбратьСубконто(2); Пока БИ.ПолучитьСубконто(2) = 1 Цикл БИ.ВыбратьСубконто(3); Пока БИ.ПолучитьСубконто(3) = 1 Цикл Состояние("1С 7.7 Получаем данные "+НоменклатураОЛЕ.Наименование+" "+НоменклатураОЛЕ.Код+" "+БИ.СКД("К")+" цена "+БИ.Субконто(3).Цена,,,БиблиотекаКартинок.ДлительнаяОперация48); ДДД.Цена = БИ.Субконто(3).Цена; КонецЦикла; КонецЦикла; КонецЦикла; КонецЕсли; КонецЕсли КонецЕсли; КонецЦикла; Сообщить("Запрос занял по времения в сек "+ЗакончитьЗамер());  | 
|||
| 
    29
    
        Остап Сулейманович    
     10.04.18 
            ✎
    09:40 
 | 
         
        (25) "можно ли в 7-ке завести реквизит неопределенного типа".
 
        А попробовать самому?  | 
|||
| 
    30
    
        ugorchina    
     10.04.18 
            ✎
    09:41 
 | 
         
        +(29) ок спасибо!
 
        +(27) или я чего то не знаю есть плохие отзывы о COM?  | 
|||
| 
    31
    
        ugorchina    
     10.04.18 
            ✎
    09:43 
 | 
         
        и что касаемо (21) ?     
         | 
|||
| 
    32
    
        ugorchina    
     10.04.18 
            ✎
    09:44 
 | 
         
        вот блин реально нет регистра сведений :-(     
         | 
|||
| 
    33
    
        ugorchina    
     10.04.18 
            ✎
    09:45 
 | 
         
        а почему не правильно будет с флагом?     
         | 
|||
| 
    34
    
        ugorchina    
     10.04.18 
            ✎
    09:47 
 | 
         
        к стати хорошо что бы не делать кучу доработок в каждом объекте (справочниках или в документах) можно ли в 7-ке добавлять в справочник данные из глобальника как например я бы тогда в необходимое место импортировал бы функцию в глобальник или так нельзя?     
         | 
|||
| 
    35
    
        ugorchina    
     10.04.18 
            ✎
    09:50 
 | 
         
        +(34) так выйдет необходимость только добавления одного справочника, кусок кода в глобальник и Скажем вот такая запись в необходимое место в справочнике и документе напрмиер ЗафиксироватьИзменение(Ссылка())
 
        ?  | 
|||
| 
    36
    
        Остап Сулейманович    
     10.04.18 
            ✎
    09:52 
 | 
         
        (33) Придется флаг дергать при обменах. А значит записывать ПРИКЛАДНОЙ объект еще раз. Не элемент справочника службы регистрации а ПРИКЛАДНОЙ. А это не есть гуд.
 
        (34) "добавлять в справочник данные из глобальника"? Типа такого : Процедура ЗарегистрироватьДляОбмена(Объект) Экспорт Спр = СоздатьОбъект("Справочник.ИзмененныеОбъекты"); Спр.Новый(); Спр.Объект = Объект; Спр.Записать(); КонецПроцедуры Кто мешает?  | 
|||
| 
    37
    
        Мимохожий Однако    
     10.04.18 
            ✎
    09:53 
 | 
         
        (31) У клиента должна быть куплена типовая конфигурация проф. А ты продаёшь ему свою конфигурацию как услуги по настройке. Есть еще длинный вариант 1С-Совместимо.))ИМХО,не взлетит. (30) Ничего плохого нет кроме знания особенностей переноса различных типов.     
         | 
|||
| 
    38
    
        Остап Сулейманович    
     10.04.18 
            ✎
    09:53 
 | 
         
        (35) О_О
 
        Ссылка() тоже нет в клюшках.  | 
|||
| 
    39
    
        ugorchina    
     10.04.18 
            ✎
    09:55 
 | 
         
        (38) :-))) а шо в ней есть? ))))))
 
        +(36) спасибо!  | 
|||
| 
    40
    
        ugorchina    
     10.04.18 
            ✎
    09:55 
 | 
         
        +(38) а как передать объект?     
         | 
|||
| 
    41
    
        Остап Сулейманович    
     10.04.18 
            ✎
    09:56 
 | 
         
        (39) ТекущийЭлемент(), ТекущийДокумент()...
 
        ЗЫ. Может для начала ознакомиться с предметом?  | 
|||
| 
    42
    
        ugorchina    
     10.04.18 
            ✎
    09:56 
 | 
         
        текущийОбьект() )))     
         | 
|||
| 
    43
    
        ugorchina    
     10.04.18 
            ✎
    09:59 
 | 
         
        ок спасибо буду ломать ))))
 
        ломать не строить ) в восьмерке проще (  | 
|||
| 
    44
    
        ugorchina    
     10.04.18 
            ✎
    10:00 
 | 
         
        неудобно без регистра сведений (     
         | 
|||
| 
    45
    
        Мимохожий Однако    
     10.04.18 
            ✎
    10:01 
 | 
         
        (44) Ты еще в 6-ке не работал. ))     
         | 
|||
| 
    46
    
        ugorchina    
     10.04.18 
            ✎
    10:04 
 | 
         
        (45) там интереснее? ))))     
         | 
|||
| 
    47
    
        ugorchina    
     10.04.18 
            ✎
    10:07 
 | 
         
        +(36) выходит что я при перезаписи тех или инных данных в семерке пишу в справочник ссуль на этот обьект а после обмена чищу его? но вот вопрос а это есть гут что каждые скажем 15 -20 минут туда будут записываться обьекты а после удаляться семерка то на файлах (
 
        это для нее не страшно?  | 
|||
| 
    48
    
        ugorchina    
     10.04.18 
            ✎
    10:14 
 | 
         
        а куда вставлять в справочник в 
 
        Процедура ПриЗаписи() или в Процедура ПриЗакрытии() что лучше моем случае?  | 
|||
| 
    49
    
        ugorchina    
     10.04.18 
            ✎
    10:26 
 | 
         
        Процедура ЗарегистрироватьДляОбмена(Объект) Экспорт  //Никонов А Ю для промежуточной базы
 
        Спр = СоздатьОбъект("Справочник.ИзмененныеОбъекты"); // Если Спр.НайтиПоРеквизиту("Объект",Объект,0) = 0 Тогда Спр.Новый(); НазначитьВид(Спр.Объект,Объект.Вид()); Спр.Объект = Объект; Спр.Записать(); // КонецЕсли; КонецПроцедуры ругается программа на меня ( говорит НазначитьВид(Спр.Объект,Объект.Вид()); {Глобальный модуль(270)}: Неправильно задан вид значения! шо не так то?  | 
|||
| 
    50
    
        ugorchina    
     10.04.18 
            ✎
    10:31 
 | 
         
        а еще ругается на поиск по реквизиту (     
         | 
|||
| 
    51
    
        Остап Сулейманович    
     10.04.18 
            ✎
    10:34 
 | 
         
        (49) 
 
        Спр.НазначитьТип("Объект", ТипЗначенияСтр(Объект)+"."+Объект.Вид());  | 
|||
| 
    52
    
        ugorchina    
     10.04.18 
            ✎
    10:42 
 | 
         
        уже почти 
 
        сделал по своему )))) Спр = СоздатьОбъект("Справочник.ИзмененныеОбъекты"); // Если Спр.НайтиПоРеквизиту("Объект",Объект,0) = 0 Тогда Спр.Новый(); Если ТипЗначения(Объект) = 11 Тогда // НазначитьТип(Спр.Объект,Объект.Вид()); ИначеЕсли ТипЗначения(Объект) = 12 Тогда Спр.Объект = Объект; КонецЕсли; Спр.Записать(); ))) но спасибо  | 
|||
| 
    53
    
        ugorchina    
     10.04.18 
            ✎
    10:45 
 | 
         
        (51) есть еще проблема с поиском (
 
        Если Спр.НайтиПоРеквизиту("Объект",Объект,0) = 0 Тогда {Глобальный модуль(268)}: Неверное имя реквизита!  | 
|||
| 
    54
    
        Ц_У    
     10.04.18 
            ✎
    10:46 
 | 
         
        (53) занавес     
         | 
|||
| 
    55
    
        ugorchina    
     10.04.18 
            ✎
    10:47 
 | 
         
        поиск нужен что бы не лепить дубли они нам не нужны 
 
        НО есть еще вопросы касательно этого справочника такие как например что будет если в момен когда 8-ка начала удаление объекта из 7-ки из этого справочника и в этот же момент юзер записывает новый обьект?  | 
|||
| 
    56
    
        Остап Сулейманович    
     10.04.18 
            ✎
    10:48 
 | 
         
        (53) 
 
        1. У реквизита должна стоять фишка "Сортировка" 2. Реквизиту неопределенного типа фишку выставить нельзя. Либо делать суррогатное поле. Чисто для поиска. Либо искать перебором/запросом...  | 
|||
| 
    57
    
        ugorchina    
     10.04.18 
            ✎
    10:52 
 | 
         
        печаль (
 
        Метод можно использовать только для реквизитов с установленным признаком ''Сортировка''. Метод можно использовать только для объектов, созданных функцией СоздатьОбъект. но я не могу установить для этого реквизита этот флаг ( искать запросом?  | 
|||
| 
    58
    
        ugorchina    
     10.04.18 
            ✎
    10:53 
 | 
         
        (53) спасибо не успел прочесть спасибо!     
         | 
|||
| 
    59
    
        Вафель    
     10.04.18 
            ✎
    10:57 
 | 
         
        (56) можно для справочников и документов сделать разные "планы обмена"     
         | 
|||
| 
    60
    
        ugorchina    
     10.04.18 
            ✎
    10:57 
 | 
         
        чудо запросы в 1с7 ( ох     
         | 
|||
| 
    61
    
        ugorchina    
     10.04.18 
            ✎
    10:59 
 | 
         
        а здесь тчо не так?
 
        ошибок нет но и данных нет ( Процедура ЗарегистрироватьДляОбмена(Объект) Экспорт //Никонов А Ю для промежуточной базы Перем Запрос, ТекстЗапроса; Спр = СоздатьОбъект("Справочник.ИзмененныеОбъекты"); Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |ОбрабатыватьДокументы все; |Объект = Справочник.ИзмененныеОбъекты.Объект; |Условие(Объект = Объект); |" ; Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Спр.Новый(); Спр.НазначитьТип("Объект", ТипЗначенияСтр(Объект)+"."+Объект.Вид()); Спр.Объект = Объект; Спр.Записать(); КонецЕсли; КонецПроцедуры  | 
|||
| 
    62
    
        Вафель    
     10.04.18 
            ✎
    10:59 
 | 
        
     | 
|||
| 
    63
    
        ugorchina    
     10.04.18 
            ✎
    11:02 
 | 
         
        не а не работает 
 
        Объект1 = Справочник.ИзмененныеОбъекты.Объект; Условие(Объект1 = Объект); только у меня скорее всего не так а вот так Объект1 = Объект; Условие(Объект1 = Объект);  | 
|||
| 
    64
    
        ugorchina    
     10.04.18 
            ✎
    11:02 
 | 
         
        но не отрабатывает (     
         | 
|||
| 
    65
    
        ugorchina    
     10.04.18 
            ✎
    11:03 
 | 
         
        Выборкой?     
         | 
|||
| 
    66
    
        ugorchina    
     10.04.18 
            ✎
    11:05 
 | 
         
        просто не хотелось бы выборкой запрос то быстрее отработает или нет?     
         | 
|||
| 
    67
    
        ugorchina    
     10.04.18 
            ✎
    11:07 
 | 
         
        может проблема в том что у меня Объект1  равно текущийЭлемент?     
         | 
|||
| 
    68
    
        ugorchina    
     10.04.18 
            ✎
    11:08 
 | 
         
        странно но Запрос.Выполнить(ТекстЗапроса) = 0 а условие 
 
        Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда чето я не понял (  | 
|||
| 
    69
    
        ugorchina    
     10.04.18 
            ✎
    11:12 
 | 
         
        почему не входит по условию когда оно равно 0?     
         | 
|||
| 
    70
    
        Остап Сулейманович    
     10.04.18 
            ✎
    11:14 
 | 
         
        (69) Патамучта когда "0" тогда запрос НЕ выполнился.     
         | 
|||
| 
    71
    
        los_hooliganos    
     10.04.18 
            ✎
    11:14 
 | 
         
        Вот схема УРБД - http://oksla.narod.ru/urib.htm
 
        Делаешь дбф или скл прямой запрос, через ADOBD. Читаешь нужные объекты. Формируешь пакет обмена для 77, чтобы она сама удалила прочитанные объекты.  | 
|||
| 
    72
    
        ugorchina    
     10.04.18 
            ✎
    11:15 
 | 
         
        (70) так мне так и надо если не нашли то запишем 
 
        условие то на 0 стоит ( в отладчике показывает что запрос не выполнен соответвенно мы должны были войти по условию нет?  | 
|||
| 
    73
    
        ugorchina    
     10.04.18 
            ✎
    11:16 
 | 
         
        (71) ))) надоел я Вам ))) но спасибо! буду иметь в виду!     
         | 
|||
| 
    74
    
        Остап Сулейманович    
     10.04.18 
            ✎
    11:17 
 | 
         
        (72) "0/1" от Запрос.Выполнить() говорит только об одном - удалось или нет выполнить запрос. А есть ли в выборке чего или нету - нужно перебирать строки результата.     
         | 
|||
| 
    75
    
        Остап Сулейманович    
     10.04.18 
            ✎
    11:18 
 | 
         
        + (74) Грубо говоря - корректный или нет синтаксис текста запроса. И все.     
         | 
|||
| 
    76
    
        ugorchina    
     10.04.18 
            ✎
    11:19 
 | 
         
        (75) а как узнать что он вернул? 
 
        количествозначений нету такго вроде (  | 
|||
| 
    77
    
        ugorchina    
     10.04.18 
            ✎
    11:19 
 | 
         
        в общем выборка (     
         | 
|||
| 
    78
    
        ugorchina    
     10.04.18 
            ✎
    11:22 
 | 
         
        так работает но мне кажется что замедлит работу (
 
        Процедура ЗарегистрироватьДляОбмена(Объект) Экспорт //Никонов А Ю для промежуточной базы НашлиНет = 0; Спр = СоздатьОбъект("Справочник.ИзмененныеОбъекты"); Спр.ВыбратьЭлементы(); Пока Спр.ПолучитьЭлемент() = 1 Цикл Если Спр.Объект = Объект Тогда НашлиНет = 1; КонецЕсли; КОнецЦикла; Если НашлиНет = 0 Тогда Спр.Новый(); Спр.НазначитьТип("Объект", ТипЗначенияСтр(Объект)+"."+Объект.Вид()); Спр.Объект = Объект; Спр.Записать(); КонецЕсли; КонецПроцедуры  | 
|||
| 
    79
    
        Остап Сулейманович    
     10.04.18 
            ✎
    11:22 
 | 
         
        (77) Кстати - для файловой семерки может быть быстрее запроса.     
         | 
|||
| 
    80
    
        ugorchina    
     10.04.18 
            ✎
    11:23 
 | 
         
        (79) прикольно )     
         | 
|||
| 
    81
    
        Остап Сулейманович    
     10.04.18 
            ✎
    11:24 
 | 
         
        (78) Где бляхамуха Прервать или Возврат после НашлиНет = 1;? Зачем искать дальше если уже установлен факт наличия?     
         | 
|||
| 
    82
    
        ugorchina    
     10.04.18 
            ✎
    11:33 
 | 
         
        (81) )) упс спасибо!     
         | 
|||
| 
    83
    
        ugorchina    
     10.04.18 
            ✎
    11:35 
 | 
         
        Процедура ЗарегистрироватьДляОбмена(Объект) Экспорт  //Никонов А Ю для промежуточной базы    
 
        НашлиНет = 0; Спр = СоздатьОбъект("Справочник.ИзмененныеОбъекты"); Спр.ВыбратьЭлементы(); Пока Спр.ПолучитьЭлемент() = 1 Цикл Если Спр.Объект = Объект Тогда НашлиНет = 1; Прервать; КонецЕсли; КОнецЦикла; Если НашлиНет = 0 Тогда Спр.Новый(); Спр.НазначитьТип("Объект", ТипЗначенияСтр(Объект)+"."+Объект.Вид()); Спр.Объект = Объект; Спр.Записать(); КонецЕсли; КонецПроцедуры  | 
|||
| 
    84
    
        ugorchina    
     10.04.18 
            ✎
    11:40 
 | 
         
        Дополнил
 
        Процедура ЗарегистрироватьДляОбмена(Объект) Экспорт //Никонов А Ю для промежуточной базы НашлиНет = 0; Спр = СоздатьОбъект("Справочник.ИзмененныеОбъекты"); Спр.ВыбратьЭлементы(); Пока Спр.ПолучитьЭлемент() = 1 Цикл Если Спр.Объект = Объект Тогда НашлиНет = 1; Прервать; КонецЕсли; КОнецЦикла; Если НашлиНет = 0 Тогда Спр.Новый(); Спр.НазначитьТип("Объект", ТипЗначенияСтр(Объект)+"."+Объект.Вид()); Спр.ТипОбъекта = ТипЗначенияСтр(Объект); Спр.Объект = Объект; Спр.Записать(); КонецЕсли; КонецПроцедуры добавил типОбъекта что бы не заморачиваться с определением при запросе из 8-ки  | 
|||
| 
    85
    
        ugorchina    
     10.04.18 
            ✎
    11:50 
 | 
         
        с ново вернусь к вопросу что будет когда 
 
        8-ка начала обмен и начала удалять элемент из данного спр но в этот момент юзер записывает этот же обьект в 7-ке? а условие то стоит что если есть уже в списке то не трогаем ( шо делать шо делать? может добавить (опять флаг ) но уже в этот справочник и при начале обмена пробежаться по этому спр и пометить его что уже начат обмен с этими текущими элементами а в условии прописать что то типа Процедура ЗарегистрироватьДляОбмена(Объект) Экспорт //Никонов А Ю для промежуточной базы НашлиНет = 0; Спр = СоздатьОбъект("Справочник.ИзмененныеОбъекты"); Спр.ВыбратьЭлементы(); Пока Спр.ПолучитьЭлемент() = 1 Цикл Если Спр.Объект = Объект Тогда Если Спр.НачатОбмен = 0 Тогда НашлиНет = 1; Прервать; КонецЕсли; КонецЕсли; КОнецЦикла; Если НашлиНет = 0 Тогда Спр.Новый(); Спр.НазначитьТип("Объект", ТипЗначенияСтр(Объект)+"."+Объект.Вид()); Спр.ТипОбъекта = ТипЗначенияСтр(Объект); Спр.Объект = Объект; Спр.Записать(); КонецЕсли; КонецПроцедуры Если Спр.Объект = Объект Тогда Если Спр.НачатОбмен = 0 Тогда если обмен начат то флаг будет равен 1 соответвенно система запишет новые данные в этот спр? или так не правильно?  | 
|||
| 
    86
    
        ugorchina    
     10.04.18 
            ✎
    12:03 
 | 
         
        сегодня включил комп с панеле появилась новая кнопочка жмякнул не нее и мой комп начал разговаривать со мной )))
 
        оказалось яндекс бр поставил своего голосового помощника мне (  | 
|||
| 
    87
    
        ugorchina    
     10.04.18 
            ✎
    12:15 
 | 
         
        в итоге из доработок в 7-ке
 
        В глобальник вставлена процедура Процедура ЗарегистрироватьДляОбмена(Объект) Экспорт //Никонов А Ю для промежуточной базы НашлиНет = 0; Спр = СоздатьОбъект("Справочник.ИзмененныеОбъекты"); Спр.ВыбратьЭлементы(); Пока Спр.ПолучитьЭлемент() = 1 Цикл Если Спр.Объект = Объект Тогда Если Спр.НачатОбмен = 0 Тогда НашлиНет = 1; Прервать; КонецЕсли; КонецЕсли; КОнецЦикла; Если НашлиНет = 0 Тогда Спр.Новый(); Спр.НазначитьТип("Объект", ТипЗначенияСтр(Объект)+"."+Объект.Вид()); Спр.ТипОбъекта = ТипЗначенияСтр(Объект); Спр.Объект = Объект; Спр.Записать(); КонецЕсли; КонецПроцедуры добавлен новый справочник ИзмененныеОбъекты в справочник номенклатура в функцию при записи ставлена вот такая вот строчка ЗарегистрироватьДляОбмена(ТекущийЭлемент()); так же в справочник номенклатура добален реквизит УИД неограниченной длины в него 8-ка возвращает уникальный идентификатор что бы не дублировать обьекты (Так как в семерке есть много дублей) да и ссылки в ней нет ( так же этот реквизит УИД добавлен в документ заказ а в модуль записи этого документа добавлена вот эта строчка ЗарегистрироватьДляОбмена(ТекущийДокумент()); в документа прихода, перемещания, реализация, возврат товаров будет добавлено обращение в глобальнубю процедуру где я чуть позже доработаю и выложу будет дописоны условие если вид документа = выше перечисленным тогда произвести запись в объект нашего справочника ссылку товара из строк документа это позволит мне отслеживать остатки товаров  | 
|||
| 
    88
    
        ugorchina    
     10.04.18 
            ✎
    12:16 
 | 
         
        +(87) может кому пригодится!
 
        спасибо все кто помогал! с меня бутылка )  | 
|||
| 
    89
    
        Остап Сулейманович    
     10.04.18 
            ✎
    12:19 
 | 
         
        (87) "добален реквизит УИД неограниченной длины" - плохая идея.
 
        Для хранения УИД имени 1с8 достаточно строки длиной 36 символов. Со строками неограниченной длины движок ДБФ работает медленно.  | 
|||
| 
    90
    
        ugorchina    
     10.04.18 
            ✎
    13:51 
 | 
         
        (89) Спасибо буду знать!     
         | 
|||
| 
    91
    
        ugorchina    
     10.04.18 
            ✎
    15:46 
 | 
         
        В общем вот последний вариант (надеюсь что последний)
 
        Продолжение будет завтра ))) //Никонов А Ю для промежуточной базы Процедура ЗарегистрироватьДляОбмена(Объект) Экспорт НашлиНет = 0; Спр = СоздатьОбъект("Справочник.ИзмененныеОбъекты"); Спр.ВыбратьЭлементы(); Пока Спр.ПолучитьЭлемент() = 1 Цикл Если Спр.ОбъектЗначение = Объект Тогда Если Спр.НачатОбмен = 0 Тогда НашлиНет = 1; Прервать; КонецЕсли; КонецЕсли; Если Спр.ОбъектТовароДвижение = Объект Тогда Если Спр.НачатОбмен = 0 Тогда НашлиНет = 1; Прервать; КонецЕсли; КонецЕсли; КОнецЦикла; Если НашлиНет = 0 Тогда Если СокрЛП(ТипЗначенияСтр(Объект)) = "Справочник" Тогда Спр.Новый(); Спр.ТипОбъекта = ТипЗначенияСтр(Объект); Спр.ВидОбъекта = Объект.Вид(); Спр.НазначитьТип("ОбъектЗначение", ТипЗначенияСтр(Объект)+"."+Объект.Вид()); Спр.ОбъектЗначение = Объект; Спр.Действие = "ТоварыИзменение"; Спр.Записать(); ИначеЕсли СокрЛП(ТипЗначенияСтр(Объект)) = "Документ" Тогда //в данной конфиге в место заказа учавствует документ (Счет) Если СокрЛП(Объект.Вид()) = "Счет" Тогда //обновить статус заказа в документ добавить данные перечисление Спр.Новый(); Спр.ТипОбъекта = ТипЗначенияСтр(Объект); Спр.ВидОбъекта = Объект.Вид(); Спр.НазначитьТип("ОбъектЗначение", ТипЗначенияСтр(Объект)+"."+Объект.Вид()); Спр.ОбъектЗначение = Объект; Спр.Действие = "ОбновитьСтатус"; Спр.Записать(); Иначе //все остальные документы которые двигают остатки товаров ОбъектТовароДвижение Объект.ВыбратьСтроки(); Пока Объект.ПолучитьСтроку() = 1 Цикл Спр.Новый(); Спр.НазначитьТип("ОбъектТовароДвижение", ТипЗначенияСтр(Объект)+"."+Объект.Вид()); Спр.ОбъектТовароДвижение = Объект; Спр.ТипОбъекта = ТипЗначенияСтр(Объект); Спр.ВидОбъекта = Объект.Вид(); Спр.НазначитьТип("ОбъектЗначение", "Справочник.номенклатура"); Спр.ОбъектЗначение = Объект.Товар; БИ = СоздатьОбъект("БухгалтерскиеИтоги"); БИ.ИспользоватьСубконто(ВидыСубконто.Номенклатура,Объект.Товар.ТекущийЭлемент(),1,0); БИ.ИспользоватьСубконто(ВидыСубконто.МестаХранения,,1,0); БИ.ИспользоватьСубконто(ВидыСубконто.Партии,,1,0); БИ.ВыполнитьЗапрос(ТекущаяДата(),ТекущаяДата(),"41.1",,,1,,); БИ.ВыбратьСубконто(1); Пока БИ.ПолучитьСубконто(1) = 1 Цикл Спр.Остаток = БИ.СКД("К"); КонецЦикла; Спр.Действие = "ОбновитьОстатки"; Спр.Записать(); КонецЦикла; КонецЕсли; КонецЕсли; КонецЕсли; КонецПроцедуры  | 
|||
| 
    92
    
        ugorchina    
     12.04.18 
            ✎
    06:07 
 | 
         
        Всем сново привет 
 
        доплнил немножко свой код добавив Объект = ОбъектV77.ЗначениеВстрокуВнутр(НоменклатураОЛЕ.ТекущийЭлемент()); ИдентификаторОбъекта = СокрЛП(Объект); ДДД.ИД = ИдентификаторОбъекта; этим я получаю уникальный идентификатор выше я писал о том что хочу создать реквизит в 7-ке а после того как перенесу все элементы в 8-ку думал отправлять уник из 8-ки в 7-ку и записыавать его в свой реквизит теперь можно обойтись без этого  | 
|||
| 
    93
    
        Вася Теркин    
     12.04.18 
            ✎
    07:03 
 | 
         
        Не надо УРБД если есть оле. Просто создавай объект, заполняй его не записывая и пореквизитно сравнивай с Объект.ССылка.
 
        Если есть расхождения, то делай Объект.записать().  | 
|||
| 
    94
    
        ugorchina    
     12.04.18 
            ✎
    09:33 
 | 
         
        (93) ок спасибо!     
         | 
|||
| 
    95
    
        Сияющий в темноте    
     12.04.18 
            ✎
    10:29 
 | 
         
        Все строки неограниченной длины хранятся в одном файле блоками,поэтому,тормоза при работе с ними словами не описать
 
        для урбд у семерки отдельная компонента была,и,насколько я помню,ее покупать надо  | 
|||
| 
    96
    
        Сияющий в темноте    
     12.04.18 
            ✎
    10:30 
 | 
         
        оле использовать нельзя,это вам не восьмерка,все данные оле кочуют через границу процессов через сообщения Windows,тормознее ничего нет     
         | 
|||
| 
    97
    
        Сияющий в темноте    
     12.04.18 
            ✎
    10:36 
 | 
         
        Самое простое,это в функцию ПриЗаписи добавить алгоритм,который сравнивает все реквизиты обьекта,кроме периодических,с данными в базе,которые можно получить через ТекущийЭлемент или ТекущийДокумент,ведь в при записи,обьект еще не записан,и писать все изменения в файл в определенной директории,причем,для каждого подключения сделать свой файл
 
        потом,можно прочитать эти файлы и сделать в другой базе изменения по ним  | 
|||
| 
    98
    
        ugorchina    
     12.04.18 
            ✎
    15:11 
 | 
         
        (97) всем спасибо я буду рассматривать пример обойтись без ОЛЕ но если обходиться без оле то я в принципе могу напрямую сделать обмен с сайтом из 1с 7 но мне очень не нравится работа 1с 7 с сайтом я уже делал такое и как то там все через одно место на 8-ке мне больше нравится работать с сайтами вот и решил написать простенькую конфигу учета с полноценными справочниками номенклатуры характеристик прирулил картинки и т д сделал обмен между этой конфигу с сайтом теперь осталось передавать этой конфиге необходимые данные и отправлять из нее заказы (Для работы с сайтом при первом обмене замет достаточно много времени но потом в транзитном справочнике будет очень мало объектов а соответственно обмен будет работать быстро (по крайней мере я надеюсь на это )     
         | 
|||
| 
    99
    
        tesseract    
     12.04.18 
            ✎
    16:22 
 | 
         
        (95) Да отдельно продавалась. Гибкая штука была.  
 
        (96) Чего? Почитайте хоть, что такое COM/OLE и как работает RPC и не порите чушь. (97) А просто сделать регистр и туда писать измененные объекты не проще?  | 
|||
| 
    100
    
        ugorchina    
     12.04.18 
            ✎
    16:34 
 | 
         
        В регистр на 7-Ке? )     
         | 
|||
| 
    101
    
        ugorchina    
     12.04.18 
            ✎
    16:34 
 | 
         
        я пишу в справочник )     
         | 
|||
| 
    102
    
        Сияющий в темноте    
     12.04.18 
            ✎
    19:51 
 | 
         
        (99) как раз 1с7 это отдельное приложение,когда мы с ним общаемся через оле,то в нашем процессе создается прокси длл,которая передает данные процессу 1с через wm copydata,в отличие от 1с8,где в память процесса грузится длл,выполняющая подключение к базе,и работа идет в рамках одного процесса     
         | 
|||
| 
    103
    
        tesseract    
     12.04.18 
            ✎
    20:54 
 | 
         
        (102) Опять чушь. Или вы про Inproc сервер?     
         | 
|||
| 
    104
    
        ugorchina    
     13.04.18 
            ✎
    09:59 
 | 
         
        В общем можете мне толком объсянить выходит что у меня в одном справочнике не более сотни данных будет за день на каждый цикл обмена не оболее 10 элементов Вы уверяете меня что эта кухня будет день отрабатывать по ОЛЕ?     
         | 
|||
| 
    105
    
        Сияющий в темноте    
     13.04.18 
            ✎
    10:05 
 | 
         
        (103)Inproc сервер,это длл подгружаемая в память процесса,и,если размещение совпало по типу(apartment),то вызовы функций интерфейса идут напрямую,а если не совпало или сервер в отдельном процессе(localserver)или на другой машине,то для передачи всех данных используется интерфейс IMarshal,который реализоыан через rpc,но последняя в windows стандартно работает через SendMessage,приче  сообщение обычно WM_CopyData,а если в помнить,что у нас 1с работает через интерфейс IDispatch,то есть для каждого вызова сначала передается имя поля/метода чтобы получить его номер,а только вторым вызовом выполняется само действие,то скорость выполнения оказывается медленнее черепахи     
         | 
|||
| 
    106
    
        Сияющий в темноте    
     13.04.18 
            ✎
    10:07 
 | 
         
        но в семерке не все так плохо,можно просто открыть ее по оле,командой открыть внешнюю обработку,в процедуре приоткрытии ко орой размещен нужный код,и последний выпролнится достаточно быстро     
         | 
|||
| 
    107
    
        tesseract    
     13.04.18 
            ✎
    10:21 
 | 
         
        (105) Причем тут dll-то вообще? Dll от exe отличается только количеством точек входа. И с какого перепугу WM_Copydata и iMarshall который на 486 проце с 8 Мб оперативы работали вдруг стали медленными? 
 
        >> IDispatch И что медленного в этом интерфейсе? Я на p133 с ним работал нормально.  | 
|||
| 
    108
    
        ugorchina    
     13.04.18 
            ✎
    11:05 
 | 
         
        (104) по существу кто то скажет?     
         | 
|||
| 
    109
    
        tesseract    
     13.04.18 
            ✎
    11:10 
 | 
         
        (108) Будет, в чем проблема?  Все будет упираться в производительность конкретно 1С.     
         | 
|||
| 
    110
    
        ugorchina    
     13.04.18 
            ✎
    11:24 
 | 
         
        я заполнил данный справочник 2 тыс элементами и проверил как отрабатывает 1с 8 все выполняетс яв приделах 3 секунд
 
        в месте с подключением это долго?  | 
|||
| 
    111
    
        ugorchina    
     13.04.18 
            ✎
    11:25 
 | 
         
        +(109) Все будет упираться в производительность конкретно 1С 7 или 8?
 
        конкретно какой  | 
|||
| 
    112
    
        tesseract    
     13.04.18 
            ✎
    12:43 
 | 
         
        (111) В оба конца. Самый медленной будет базу в какую записывают. 
 
        (110) Чего-то слишком быстро, в режиме обмена данными делал?  | 
|||
| 
    113
    
        ugorchina    
     13.04.18 
            ✎
    13:32 
 | 
         
        я написал обработку она каждые 15 минут логинится к 1с 7 забирает данные при этом успользуя кучу условий, затем удаляет эти данные из 7-ки и отрывается от 7-ки     
         | 
|||
| 
    114
    
        tesseract    
     13.04.18 
            ✎
    13:33 
 | 
         
        (113) Молодец, так держать.     
         | 
|||
| 
    115
    
        ugorchina    
     13.04.18 
            ✎
    13:33 
 | 
         
        может это от того что у меня SSD? )     
         | 
|||
| 
    116
    
        ugorchina    
     13.04.18 
            ✎
    13:34 
 | 
         
        +(114) а что не так?     
         | 
|||
| 
    117
    
        tesseract    
     13.04.18 
            ✎
    13:35 
 | 
         
        (116) Все правильно, почему ты решил, что что-то не так?     
         | 
|||
| 
    118
    
        ugorchina    
     13.04.18 
            ✎
    15:35 
 | 
         
        (117) хз думал стебаетесь )     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |