Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
21 сен 2021, 16:41

Подскажите, как реализовать задачу

Автор Саша Лаврова, 19 июн 2017, 06:27

0 Пользователей и 1 гость просматривают эту тему.

Саша Лаврова

Есть конфигурацию ЗУП 2.5, есть обработка, считывает карту и выводит инфу о ней, нужно обработку выгрузить в другую конфу и подцеплятся этой обработкой в ЗУП по ком порту, брать данные о карте и выводить на экран, в общем, Делать она должна тоже самое, только из другой базы, где нет никакой инфы
Спасибо

LexaK

не надо обработку ни куда выгружать, просто из другой базы по ком соединению обращайтесь к этой обработке и получайте результат в отдаленной базе. Только проверьте и все ссылки где есть, на ПРЕДСТАВЛЕНИЕ замените.
ответ Понравился? (в смысле пригодился?)

Саша Лаврова

Цитата: LexaK от 19 июн 2017, 10:05
не надо обработку ни куда выгружать, просто из другой базы по ком соединению обращайтесь к этой обработке и получайте результат в отдаленной базе. Только проверьте и все ссылки где есть, на ПРЕДСТАВЛЕНИЕ замените.

А можно поподробней как это сделать и от куда ? Ну т.е. в пустой базе где писать код подключения к базе ?

V8 = Новый COMОбъект("V82.Application");
Открытие = V8.Connect("Srvr=""srvzuo""; Ref = ""zup""; Usr=""usradmin""; pwd=""passadmin"";");

Обработка = V8.обработки.мояобработка;
ФормаОбработки = Обработка.ПолучитьФорму("Форма");
ФормаОбработки.ОткрытьМодально();
Открытие=Неопределено;
V8.ЗавершитьРаботуСистемы(ложь);
верно ?

LexaK

немного не так, форма обработки вам не нужна, просто в обработке сделайте процедуру которая по коду карты вернет вам данные.
а ввод кода карты делайте в локальной форме.

а вообще если это вам срочно и для работы надо, то к фрилансам,
если чисто для себя, то лучше с каких ни будь примеров начать.
ответ Понравился? (в смысле пригодился?)

Саша Лаврова

Цитата: LexaK от 20 июн 2017, 11:23
немного не так, форма обработки вам не нужна, просто в обработке сделайте процедуру которая по коду карты вернет вам данные.
а ввод кода карты делайте в локальной форме.

а вообще если это вам срочно и для работы надо, то к фрилансам,
если чисто для себя, то лучше с каких ни будь примеров начать.

Обработка уже готова и работает в ЗУП, нужно просто запускать её не с ЗУПа

AIFrame

Еще раз. Вы не покажете в одной конфигурации одной базы форму обработки другой конфигурации другой базы.
Вы можете через com-соединение выполнить обработку другой базы с использованием вводных данных своей базы (если нужно) по данным той базы и полчить вывод через экспортные функции обработки той базы.
Структура будет такова
Б1 - база инициатор
Б2 - база приемник

Б1 -> Б2 : V8 = com-соединение
V8 -> обработка.Создать
массив = V8 -> обработка.ИмяЭкспортнойФункции
И все, в массив на базе Б1 упадут значения, которые будут получены в результате выполнения функции на базе Б2.
Желательно выводить такие значения как текст и числа и уже потом нужные ссылки получать методами поиска (по имени, коду, реквизиту).
Потому что ссылка из базы Б2 для базы Б1 будет пустым звуком.

Саша Лаврова

Цитата: AIFrame от 21 июн 2017, 07:41
Еще раз. Вы не покажете в одной конфигурации одной базы форму обработки другой конфигурации другой базы.
Вы можете через com-соединение выполнить обработку другой базы с использованием вводных данных своей базы (если нужно) по данным той базы и полчить вывод через экспортные функции обработки той базы.
Структура будет такова
Б1 - база инициатор
Б2 - база приемник

Б1 -> Б2 : V8 = com-соединение
V8 -> обработка.Создать
массив = V8 -> обработка.ИмяЭкспортнойФункции
И все, в массив на базе Б1 упадут значения, которые будут получены в результате выполнения функции на базе Б2.
Желательно выводить такие значения как текст и числа и уже потом нужные ссылки получать методами поиска (по имени, коду, реквизиту).
Потому что ссылка из базы Б2 для базы Б1 будет пустым звуком.

Ну у меня получается следующее:
пустая база должна как то делать то, что делает обработка в рабочей базе, там так:
На экране эта штука http://s019.radikal.ru/i637/1706/94/8192ef22fc80.png
Возможно ли это реализовать так, как написали Вы ?

AIFrame

Легко. Просто нарисуйте эту форму (и печ.форму) в "пустой базе", а данные для вывода и заполнения получайте из другой базы (экспортными функциями обработки).
Если после работы с формой в пустой базе еще и нужно что-то сделать в другой базе - таким же методом вызываете экспортную функцию или процедуру, передав в нее нужные значения строками и числами.

Саша Лаврова

Цитата: AIFrame от 21 июн 2017, 12:38
Легко. Просто нарисуйте эту форму (и печ.форму) в "пустой базе", а данные для вывода и заполнения получайте из другой базы (экспортными функциями обработки).
Если после работы с формой в пустой базе еще и нужно что-то сделать в другой базе - таким же методом вызываете экспортную функцию или процедуру, передав в нее нужные значения строками и числами.

Вот не совсем понятно как их получать ((
Добавлено: 21 июн 2017, 12:51


Я Скопировала обработку эту в пустую базу, добавила туда

&НаКлиенте
Процедура Команда1(Команда)
ВыполнитьПодключениеЧерезCOM()
КонецПроцедуры

Процедура ВыполнитьПодключениеЧерезCOM()

// Формируем строку подключения
СтрокаПодключения =
"srvr='lic1c'; ref='zup_test3'; usr='admmin'; pwd='123456789';";
ComConnector = ПолучитьCOMОбъектПоВерсииПлатформы();
СообщениеПользователю = Новый СообщениеПользователю;

Попытка
ComConnection = COMConnector.Connect(СтрокаПодключения);
Исключение
СообщениеПользователю.Текст = "Ошибка подключения: " + ОписаниеОшибки();
СообщениеПользователю.Сообщить();
Возврат;
КонецПопытки;
а = ComConnection
      КонецПроцедуры

Функция ПолучитьCOMОбъектПоВерсииПлатформы() Экспорт

// Определяем имя COM-объекта по версии платформы
ИмяComОбъекта = "";
Инфо = Новый СистемнаяИнформация;
Если СтрНайти(Инфо.ВерсияПриложения, "8.3") > 0 Тогда
ИмяComОбъекта = "V83.COMConnector";
ИначеЕсли СтрНайти(Инфо.ВерсияПриложения, "8.2") > 0 Тогда
ИмяComОбъекта = "V82.COMConnector";
Иначе
ВызватьИсключение "Не удалось определить версию платформы";
КонецЕсли;

// Инициализируем COM-объект и соединение
COMConnector = Новый COMОбъект(ИмяComОбъекта);

Возврат COMConnector;

КонецФункции

Добавлено: 21 июн 2017, 12:51


Не понимаю, как данные получать из базы рабочей

AIFrame

Не нужно копировать туда эту обработку.
Достаточно написать там процедуру для соединения с вашим zup_test.
А уже в обработке, которая находится на zup_test создать функцию вида
Функция ПолучитьДанные(СтрокаВхода) Экспорт
    СтрокаВыхода  = "";   
    // какие-то манипуляции
    Возврат СтрокаВыхода;
КонецФункции

Теги:

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск