|
v7: Передать параметры в запрос из 1С 7.7 в 1С 8.1 и прочитать результат по-COM соединению | ☑ | ||
---|---|---|---|---|
0
andrew76
01.02.22
✎
10:32
|
Добрый день !
Возможно ли параметры в запрос к регистру сведений из 1С 7.7 в 1С 8.1 и прочитать результат по-COM соединению ? |
|||
1
ДенисЧ
01.02.22
✎
10:33
|
Да
|
|||
2
Bigbro
01.02.22
✎
10:36
|
и наоборот - тоже да.
|
|||
3
andrew76
01.02.22
✎
10:38
|
А дату из 7.7 в 8.1 в параметр запроса как передаете ?
|
|||
4
andrew76
01.02.22
✎
10:40
|
Запрос =v8.NewObject("Запрос");
Запрос.Текст = "ВЫБРАТЬ | ГрафикиСотрудниковСрезПоследних.График, | Сотрудник КАК Сотрудник |ИЗ | РегистрСведений.ГрафикиСотрудников.СрезПоследних(&ДатаСреза, Сотрудник = &ТабНом) КАК ГрафикиСотрудниковСрезПоследних"; Запрос.УстановитьПараметр("ДатаСреза", ТекущаяДата()); Запрос.УстановитьПараметр("ТабНом", "980"); //Таб номер=980 - фильтр по 1 сотруднику |
|||
5
Bigbro
01.02.22
✎
10:45
|
формат даты насколько понимаю разный. соответственно переменную для даты надо тоже создавать там куда ком-соединение идет. тогда все работает.
|
|||
6
lubitelxml
01.02.22
✎
10:48
|
Запрос.УстановитьПараметр("ТабНом", "980"); - у тебя точно строковое измерение? Там по сути ссылка должна быть, а не строка, если РС типовой
|
|||
7
andrew76
01.02.22
✎
11:00
|
lubitelxml,да Сотрудник - в той конфигурации Строковый.Табельный номер Сотрудника.
|
|||
8
andrew76
01.02.22
✎
11:15
|
Bigbro,просто переменную в 1с 7 определить как дату и передать ее в в СOM ?
А сами это делать пробовали ? Это работает ? |
|||
9
Bigbro
01.02.22
✎
11:17
|
у меня обратная задача. я из 8ки обращаюсь в 7.7
там созданые необходимые глобальные переменные к ним обращаюсь через ком для установки значений и вызываю функции для получения результата |
|||
10
andrew76
01.02.22
✎
11:28
|
Нет, интересует процесс из 7 в 8.
|
|||
11
andrew76
01.02.22
✎
11:31
|
В общем ,чтобы я не делал ,дата не передается из 7 в параметр запроса 8.
я уже переделал запрос-без параметров.Чтобы Проверить- работает или нет. Zapros =v8.NewObject("Query"); Zapros.Text = "ВЫБРАТЬ | ГрафикиСотрудниковСрезПоследних.График, | Сотрудник КАК Сотрудник |ИЗ | РегистрСведений.ГрафикиСотрудников.СрезПоследних(ДатаВремя(2022,1,31), Сотрудник =980) КАК ГрафикиСотрудниковСрезПоследних"; Результат=Zapros.Выполнить().Выбрать(); По идее на выходе должна быть 1 строка результата. Но как ее прочитать в с 1c 7.7 ? |
|||
12
acht
01.02.22
✎
11:38
|
А как ты уже пробовал?
|
|||
13
andrew76
01.02.22
✎
11:41
|
Время то идет.
|
|||
14
Guk
01.02.22
✎
11:46
|
(11) выгрузи в ТЗ. только график и сотрудник должны быть примитивных типов (число, строка, дата)...
|
|||
15
andrew76
01.02.22
✎
11:48
|
НЕеее,график-это ссылка на справочник Графиков !
|
|||
16
Guk
01.02.22
✎
11:49
|
(15) ну и что ты тогда хочешь в семерке увидеть?...
|
|||
17
Bigbro
01.02.22
✎
11:49
|
ссылки не передаются, добро пожаловать.
|
|||
18
Bigbro
01.02.22
✎
11:50
|
увидишь COM-объект.
|
|||
19
andrew76
01.02.22
✎
11:55
|
Мне нужно прочитать значение из запроса.В данном случае график работы.
|
|||
20
andrew76
01.02.22
✎
11:55
|
Значит в 7 этого сделать нельзя ?
|
|||
21
acht
01.02.22
✎
11:59
|
Что ты собираешся делать с полученным значением дальше?
|
|||
22
andrew76
01.02.22
✎
12:01
|
У Графика (элемент справочника),есть табличные части.Мне их надо прочитать.
|
|||
23
acht
01.02.22
✎
12:08
|
Идем глубже.
Как ты будешь использовать данные из табличных частей? В данные 7.7 ты сможешь преобразовать только данные примитивных типов - число, строка, дата. Оптимально - запросить эти данные сразу в запросе на стороне 8.3 |
|||
24
andrew76
01.02.22
✎
12:14
|
Значит, мне этот запрос посадить в модуль внешнего соединения на 1с 8.1,и вызывать его через 7? (в СОM)
|
|||
25
acht
01.02.22
✎
12:15
|
Я тебя не понимаю.
Предлагаю остановится на том, что ты не сможешь этого сделать. |
|||
26
Bigbro
01.02.22
✎
12:22
|
это вроде бы простой вопрос, но поначалу у меня тоже вызывал порой ступор.
на самом деле все просто - у вас есть 2 среды. они разные. каждая со своими данными. и вы можете из одной в другую передавать только примитивные типы. через присвоение. но вы можете работать с объектами одной среды из другой. через точки пользуясь методами второй среды. и складывая объектные значения в том числе в переменные - но эти переменные тоже должны быть во второй среде. иначе - увы, мы помним что передаются только примитивные типы. вот и все. дальше аккуратно пишите код, расставляя мысленно галочки - вот это у меня запрос на стороне 8ки, а вот эта переменная на стороне 7ки и так далее. и все получится. |
|||
27
Bigbro
01.02.22
✎
12:24
|
то есть в8график = в8.ньюобжект("справочник.Графикиработы");
и потом |
|||
28
victuan1
01.02.22
✎
12:40
|
(27) ньюобжект?
|
|||
29
DCKiller
01.02.22
✎
13:44
|
(24) Необязательно вносить изменения в конфигурацию v8. У тебя уже есть обращение к ней на стороне 7.7, твоя задача теперь в этом же запросе получить данные из тех самых таб.частей графика, которые тебе нужны, и в нем же привести данные из них к примитивным типам, чтобы можно было их прочитать как они есть в 7.7. Далее, результат запроса выгружаешь в таблицу значений, потом эту таблицу значений на стороне v8 преобразуешь в текст посредством волшебного метода ЗначениеВСтрокуВнутр(). После чего эту строку уже на стороне 7.7 преобразуешь обратно в таблицу значений при помощи ЗначениеИзСтрокиВнутр(). Ну как бы и всё...
|
|||
30
andrew76
01.02.22
✎
14:17
|
Не представляю как это можно сделать:
Мне нужно Месяц1 в запросе (это таб.часть справочника) построчно прочитать: Zapros.Text = "ВЫБРАТЬ | ГрафикиСотрудниковСрезПоследних.График.Месяц1, |
|||
31
Guk
01.02.22
✎
14:47
|
(30) да докопайся уже в запросе до примитивных типов...
|
|||
32
acht
01.02.22
✎
15:41
|
(29) > таблицу значений на стороне v8 преобразуешь в текст посредством волшебного метода ЗначениеВСтрокуВнутр(). После чего эту строку уже на стороне 7.7 преобразуешь обратно в таблицу значений
И тут бац - взрывается вертолет! |
|||
33
DCKiller
01.02.22
✎
16:08
|
(32)
Ну либо парсить эту строку и потом распарсенную, разбитую на многострочный текст обходить и заполнять ее данными ТЗ, созданную на стороне семерки. Либо выгрузить в файл ТЗ на стороне восьмерки, а потом на стороне 7.7 считывать этот файл. Тут масса способов может быть, чего ты цепляешься к деталям?.. Хотя, судя по (30), тут про них говорить преждевременно, челу сперва нужно объяснить, что такое левое/правое соединение в запросе. |
|||
34
Злопчинский
01.02.22
✎
21:24
|
(31) ты думаешь - знает что такое примитивные типы ?
|
|||
35
Bigbro
02.02.22
✎
04:09
|
похоже для ТС ответ на вопрос темы все-таки - нет. (
|
|||
36
skafandr
02.02.22
✎
08:51
|
(30) +1
1) Дата спокойно передается из 7 как у вас написано Запрос.УстановитьПараметр("ДатаСреза", ТекущаяДата()); только надо понимать что время у даты восьмерки при этом будет 00.00. Если нужно нужно включение данных за указанную дату надо передавать ТекущаяДата()+1; 1) Сделать запрос до примитивных типов из вашего Месяц1 2) в 7-ке типа такого : Результат = Запрос.Выполнить(); ТЗ8 = Результат.Выгрузить(); Для инд=0 По ТЗ8.Количество()-1 Цикл ТекСтрока = ТЗ8.Получить(инд); ИННКонтрагент = ТекСтрока.Контрагент.ИНН; КонецЦикла; обращаю внимание что в ТЗ8 Контрагент это элемент справочника 8,те можно брать реквизиты примитивных типов Уффффффф |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |