|
ComConnector | VBA | Функции 1С
|
|||
---|---|---|---|
#18+
Hello world! Мне нужно из внешнего приложения(EXCEL) запустить запрос 1С. Для этого в книге EXCEL подключил соответствующую библиотеку: 1CV83 COM Connector Type Library А далее составил макрос, в котором идет обращение к справочнику Контрагенты. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Но этот запрос очень простой. А мне нужно научиться использовать такие 1С-функции как: функцииКонецДняВидГраницыДата Например такой макрос Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9.
отрабатывает с ошибкой, в которой говорится, что у v8 нет такого метода. Подскажите, как победить данную проблему? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 15:54 |
|
ComConnector | VBA | Функции 1С
|
|||
---|---|---|---|
#18+
Не пойму, что ты хочешь победить? У COMConnector нет метода Дата и это правильно. Для конвертации строки в дату запускать 1с наверное не самый лучший способ. Методы комка нужны для доступа к данным 1с, а не для вычислений, которые прекрасно можно сделать без подобных извращений. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 16:54 |
|
ComConnector | VBA | Функции 1С
|
|||
---|---|---|---|
#18+
DoroshНе пойму, что ты хочешь победить? Мне нужно из vba запустить 1c-запрос, который содержит параметры. Вот его часть: Код: sql 1.
Для инициализации переменных в 1с-ке используется такой код Код: sql 1.
Планировал адаптировать эго для запуска из VBA по Com-у. Как тогда менять параметры? Попробовал прописать жестко. Вот так. Код: sql 1.
получил ошибку не соответствия типов. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 17:37 |
|
ComConnector | VBA | Функции 1С
|
|||
---|---|---|---|
#18+
Yagrus2получил ошибку не соответствия типов а что "смущает"? это не дата и не строка чтобы работало неявное приведение типов ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 17:59 |
|
ComConnector | VBA | Функции 1С
|
|||
---|---|---|---|
#18+
Дата(2018,1,15) '2018.1.15' ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 20:02 |
|
ComConnector | VBA | Функции 1С
|
|||
---|---|---|---|
#18+
Алгоритм такой 1. Создаешь комок v8con As New V83.COMConnector 2. Подключаешься к нужной базе через v8con.Connect 3. Создаешь запрос примерно так Query = v8.NewObject("Query") 4. Устанавливаешь нужные запросу параметры методом Query.УстановитьПараметр(<название параметра>, <значение параметра>) 5. Выполняешь запрос и возвращаешь курсор с данными Query.Execute().Choose() 6. Крутишь в цикле курсор и читаешь что там есть ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2018, 09:30 |
|
ComConnector | VBA | Функции 1С
|
|||
---|---|---|---|
#18+
Программист 1сДата(2018,1,15) '2018.1.15'Все равно ошибка Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2018, 12:10 |
|
ComConnector | VBA | Функции 1С
|
|||
---|---|---|---|
#18+
DoroshАлгоритм такой 4. Устанавливаешь нужные запросу параметры методом Query.УстановитьПараметр(<название параметра>, <значение параметра>) Вот попробовал, не получилось Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2018, 12:28 |
|
ComConnector | VBA | Функции 1С
|
|||
---|---|---|---|
#18+
Надо вот так: Query.УстановитьПараметр("ДатаНачала", dtStart) ДатаНачала это строка, имя параметра, пихай в кавычки. Без кавычек у тебя вышло: Query.УстановитьПараметр("", dtStart), на что 1с тебя правильно обругал ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2018, 12:34 |
|
ComConnector | VBA | Функции 1С
|
|||
---|---|---|---|
#18+
А следующей ошибкой будет несоответствие типов. Ибо нефиг совать строку туда где должна быть дата и надеяться что 1с ее сам додумается ее преобразовать. Сделай в басике валидную дату и пихай ее значением параметра. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2018, 12:38 |
|
ComConnector | VBA | Функции 1С
|
|||
---|---|---|---|
#18+
Dorosh, Учел ваш советы. Получился такой макрос: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
Запрос 1С отрабатывает. Но не получается вытащить значение столбца организаия Ошибка возникает на строке Код: vbnet 1.
Подскажите, как вытащить значение этого столбца? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2018, 14:01 |
|
ComConnector | VBA | Функции 1С
|
|||
---|---|---|---|
#18+
Если попробовать так: Код: vbnet 1.
получаю аналогичную ошибку. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2018, 14:02 |
|
ComConnector | VBA | Функции 1С
|
|||
---|---|---|---|
#18+
Yagrus2, Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2018, 15:50 |
|
ComConnector | VBA | Функции 1С
|
|||
---|---|---|---|
#18+
VladimirKrYagrus2, Код: vbnet 1.
Конечно, Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2018, 15:52 |
|
ComConnector | VBA | Функции 1С
|
|||
---|---|---|---|
#18+
Вам уже ответили как правильно написать, а я объясню. Организация в 1с это справочник, сложный тип данных, то что в "нормальных" языках называют class или object. Запихать его в string не выйдет. Надо получить строковое представление объекта, используя функцию 1с ПРЕДСТАВЛЕНИЕ() или выбрав Организация.Наименование КАК Организация ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2018, 16:52 |
|
ComConnector | VBA | Функции 1С
|
|||
---|---|---|---|
#18+
Yagrus2Dorosh, Учел ваш советы. Получился такой макрос: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
Запрос 1С отрабатывает. Но не получается вытащить значение столбца организаия Ошибка возникает на строке Код: vbnet 1.
Подскажите, как вытащить значение этого столбца? блин ну тема пережована мульон раз что через ком туда-сюда "бесшовно" могут ходить только значения примитивных типов - числа, строки, булево и т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2018, 17:49 |
|
ComConnector | VBA | Функции 1С
|
|||
---|---|---|---|
#18+
Dorosh, Спасибо, за разъяснение! ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2018, 18:00 |
|
ComConnector | VBA | Функции 1С
|
|||
---|---|---|---|
#18+
Возможно куму пригодится. 1. Вариант COM-соединения через Automation Server Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29.
2. Вариант COM-соединения через COMConnector Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2018, 17:36 |
|
ComConnector | VBA | Функции 1С
|
|||
---|---|---|---|
#18+
Также хотел добавить, что приложение EXCEL должно быть x32 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2018, 17:37 |
|
ComConnector | VBA | Функции 1С
|
|||
---|---|---|---|
#18+
Тоже, ломал голову над похожей задачей. В итоге решил следующим способом: 1) создаем подключение, 2) выбираем объект 1С (справочник, регистр, документ и т.д.), 3) получаем перечень полей и формируем в динамической таблице excel структуру объекта, 4) формируем текстовую строку секции "ГДЕ", 5) формируем итоговый запрос, 6) выгружаем запрос на лист (динамическую таблицу). подробнее - https://analysiscore.wordpress.com/2019/09/23/finish-1c-excel/ ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2019, 13:10 |
|
ComConnector | VBA | Функции 1С
|
|||
---|---|---|---|
#18+
Прикольно, Но для корректных итогов нужно использовать Границу, а не дату+время. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2019, 15:51 |
|
ComConnector | VBA | Функции 1С
|
|||
---|---|---|---|
#18+
Чтобы не плодить сообщения. Вопрос следующий - сделал я в Excel и Access платформу для получения данных 1С через запрос по-средствам comconnectora. 1С и Office соответственно были 32 bit. Теперь мне Office поставили 64 bit - вылезла ошибка "Не могу создать объект актив икс". прочитал достаточно и понял что проблема в 32 битном comcntr.dll и импортирование в проект БД Access 64 с использованием контролов Access проблему не решает. Соответственно вопрос - что нужно сделать для того чтобы проект office 64 bit получал данные из 1С 8 32 битной? Основной "затык" возникает на Public v8 As Object Public Olev8 As Object Public Obj1C As Object Public Function cnn1C(ByVal ver1C As String, ByVal dbpath As String, Optional CloseFlag As Boolean = False) As Object 'connection Static ConObj1C As Object If (ConObj1C Is Nothing) And (Not CloseFlag) Then Dim Obj1C As Object Select Case ver1C Case "V81.COMConnector" Set Obj1C = CreateObject("V81.COMConnector") Case "V82.COMConnector" Set Obj1C = CreateObject("V82.COMConnector") Case "V83.COMConnector" Set Obj1C = CreateObject("V83.COMConnector") - вот здесь останов... End Select Set ConObj1C = Obj1C.Connect(dbpath) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 10:00 |
|
ComConnector | VBA | Функции 1С
|
|||
---|---|---|---|
#18+
Андрейка1 Соответственно вопрос - что нужно сделать для того чтобы проект office 64 bit получал данные из 1С 8 32 битной? обертка для ком-коннектора 1с. гугл ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 10:14 |
|
ComConnector | VBA | Функции 1С
|
|||
---|---|---|---|
#18+
Андрейка1, У вас получилось сделать обертку? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2019, 16:39 |
|
|
start [/forum/topic.php?fid=28&msg=39718979&tid=1518204]: |
0ms |
get settings: |
9ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
147ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 243ms |
0 / 0 |