Взаимодействие с 1С снаружи. #538823


#0 by vergilij
Здравствуйте! Требуется написать модуль для синхронизации системы Sherp и 1С (от 8.2 и вниз). На данный момент есть внешняя обработка для 8, которая запускается в базе и выгружает в MS SQL некоторые документы. Хочется делать примерно то же, но при этом никак не трогать 1С, просто подключаться к ней, как к COM объекту, или нечто вроде этого. Конкретно требуется выполнить на стороне 1С запрос, который поместит нужные данные в нужные таблицы в ms sql. Проблема в том, что для формирования этого запроса из 8 приходится запрашивать отдельно каждое поле, причём сейчас упёрся в то, что не могу получить у себя значение GUID объекта, т.к. не могу придумать, как его прочитать через COM. Пишу на Visual Basic. Судя по документации, в 7 мне достаточно было бы взять эту же внешнюю обработку, вставить в её текст нужные значения, и передать её текст в 1С через ВыполнитьПакет, а в 8 не могу найти похожей возможности. Направьте, пожалуйста, на путь истинный. Сам на 8 никогда не писал, да и на 7.7 последний раз 7 лет назад.
#1 by Ненавижу 1С
1. делать запросом 2. ГУИД можно передать из 1С строкой примерно так Соединение.String(Ссылка.UUID)
#2 by lxs
"Сам на 8 никогда не писал, да и на 7.7 последний раз 7 лет назад" - есть же счастливчики..
#3 by vergilij
1. Запросом не пойму, как. Сначала ведь я делаю выборку документов, а потом из их реквизитов формирую обычный SQL-ный INSERT. Разве можно это завернуть в один запрос? 2. Так пробовал, тоже, видимо, недопонимаю механизм. Вызов функции String будет идти через объект Соединение, а Ссылку я получил ранее из запроса, как их объединить в одном вызове? Какой же я счастливчик? Знал бы 1С - жил бы дома припеваючи, т.к. 1Сникам и платят очень хорошо и спрос на них огромный, а так пришлось собирать самые не дырявые манатки и ехать в Понаехавск за хоть какой-нибудь копеечкой...
#4 by Ненавижу 1С
выборку запросом, одним, потом по результатам оной делаешь на каждую запись INSERT ты получил ссылку из той же базы, все будет хорошо
#5 by vergilij
Вот код: Dim i As Integer На предпоследнюю строку ругается на "recSet.Получить(i).Ссылка", что не может применить "+" к строке и COM объекту. Вместо слова "Ссылка" пробовал UUID, UUID, Ссылка, Ссылка.UUID, Ссылка.UUID - ругань не менятся.
#6 by Ненавижу 1С
+v8con.String(recSet.Получить(i).Ссылка.UUID)
#7 by MNS_Ротерта
Я 1С ник с самого окончания института уже. Уехал из глубинки в понаехавск так как в понаехавске кризис начался и все начали сокращать или платить с задержками огромными. Так что правильно сделал что уехал в понаехавск - выбора нет другово. А так можешь в любой франч пойти пару лет наберешься опыта и уаля ты 1С ник. У меня были примеры подобных превращений так как хотели зарплату программистов
#8 by vergilij
В 1С я бы пошёл только с целью вернуться домой, т.к. жить тут на съёмной квартире малоприятно, а для жизни в Москве хватает и другой работы.
#9 by vergilij
Написал так: For i = 0 To recSet.Количество - 1 На экран вывелись номер документа, его дата и потом окно с сообщением об ошибке: "Ошибка Необработанное исключение! System.Runtime.InteropServices.COMexception(0x80020003): Член группы не найден.(Exception from HRESULT: 0x80020003 (DISP_E_MEMBERNOTFOUND)) и т.д."
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С