:: Вопросы по 1С
Сохранение соединения 8.3 с 7.7
Аспид
Автор

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
Мне надо синхронизировать 8.3 и 7.7
Только со стороны 8.3
Все работает, но...
Есть функция коннекта с 7.7

Функция Соединение77() Экспорт
//Создадим Com объект для подключения к 1С 77
База77 = Новый COMObject("V77.Application");
//Устанавливаем соединение
_ConstПуть77 = Константы._ConstПуть77.Получить();
Открыта = База77.Initialize(База77.RMTrade,"/D " +_ConstПуть77+ " /N "+"Админ" + " /P "+"фывщк", "NO_SPLASH_SHOW");
Возврат База77;
КонецФункции
Обращение к 77 может быть неоднократным.
И сейчас, каждый раз вызывается эта функция.
Соединение я не закрываю.
Как, где можно сохранить ссылку на это соединение?
(Ну и проверять, есть ли оно)
Наверное что то с видимостью переменных?
Как это организовать?

Название темы конечно не то)


------------------
Ratings: 0 negative/0 positive
Re: Сохранение соединения 8.3 с 7.7
ssa

Сообщений: 13007
Откуда: Москва
Дата регистрации: 23.03.2005
1. Кроме 8.3 не плохо было указать в каком режиме это 8.3 запускается? ОФ? УФ? Толстый клиент? Тонкий? Фоновое задание? А от всего этого очень сильно зависят как раз области видимости.
2. Что толку от созерцания кода функции если интересует дальнейшая работа с результатом этой функции, а не процесс его получения?


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: Сохранение соединения 8.3 с 7.7
Аспид
Автор

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
Ну код привел просто так)
1С:Предприятие 8.3 (8.3.7.2008)

Бухгалтерия предприятия, редакция 3.0 (3.0.43.152)

Тонкий клиент.


------------------
Ratings: 0 negative/0 positive
Re: Сохранение соединения 8.3 с 7.7
ssa

Сообщений: 13007
Откуда: Москва
Дата регистрации: 23.03.2005
Остальное надо угадывать? Фраза про "интересует дальнейшая работа с результатом функции" ни на какие мысли не наталкивает? Надо все клещами тянуть?


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: Сохранение соединения 8.3 с 7.7
Аспид
Автор

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
Чес слово, не понимаю, что непонятно...
Функция соединение, возвращает переменную База77.
Это ссылка на соединение.
Хотелось бы сохранить эту ссылку, и при следующем обращении, не вызывать функцию соединения, по новой, а использовать имеющееся.
Т.е делать сто то типа
Если ЕСТЬNULL(База77) тогда
Соединение77();
конецесли;

Аналогия на фоксе
public MyObj
if isnull(MyObj)
MyObj=creatobject(NeedObj)
endif

Если правильно понял вопрос


------------------




Исправлено 1 раз(а). Последнее : Аспид, 29.03.16 09:56
Ratings: 0 negative/0 positive
Re: Сохранение соединения 8.3 с 7.7
ssa

Сообщений: 13007
Откуда: Москва
Дата регистрации: 23.03.2005
Аспид
Чес слово, не понимаю, что непонятно...
Оно и видно.
Цитата:
Функция соединение, возвращает переменную База77.
Это ссылка на соединение.
Кто бы мог подумать...
Цитата:
Если правильно понял вопрос
Неправильно. ГДЕ и КАК используется это соединение? В форме документа В форме обработки? В модуле документа? В модуле обработки? На сервере? На клиенте?

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: Сохранение соединения 8.3 с 7.7
pasha_usue

Сообщений: 3649
Откуда: Е-бург
Дата регистрации: 06.10.2006
Куда функция возвращает? На сервер? На клиент?

А сама функция где вызывается? На сервере? На клиенте?

Между сервером и клиентом соединение передать нельзя. Значит, соединение должно жить там где создано. Если на клиенте, то храните в реквизите формы. А вот, если на сервере, тогда опять же два варианта. Если есть контекст формы, то тоже можно в реквизите формы. Если контекста формы нет, то тут надо дальше разбираться, что как и откуда у вас вызывается.

PS. А, и да. Выполнение на сервере прерывается работой клиента?
PPS. Еще стопитсот вопросов.



Исправлено 1 раз(а). Последнее : pasha_usue, 29.03.16 10:17
Ratings: 0 negative/0 positive
Re: Сохранение соединения 8.3 с 7.7
Аспид
Автор

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
Цепочка такая.
Контрагенты.Форма элемента
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
//Запись в МС и 77
_WРаботаСMSSQL.СохранениеКонтрагента(ТекущийОбъект);
_WРаботаСMSSQL в общем модуле. И она уже вызывает функцию соединение.
pasha_usue
PS. А, и да. Выполнение на сервере прерывается работой клиента?
Я увы не понял вопроса(((

Для юзера все выглядит так:
Открывает справочник контрагентов. Заходит в конкретного котрагента, меняет, все сохраняется в 77.
Аналогично при добавлении нового.
Потом он может закрыть справочник, но не программу, а через какое то время, сделать такие же операции с другим котрагентом.

Надеюсь угадал теперь с ответом?


------------------
Ratings: 0 negative/0 positive
Re: Сохранение соединения 8.3 с 7.7
ssa

Сообщений: 13007
Откуда: Москва
Дата регистрации: 23.03.2005
Аспид
Цепочка такая.
Контрагенты.Форма элемента
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
//Запись в МС и 77
_WРаботаСMSSQL.СохранениеКонтрагента(ТекущийОбъект);
_WРаботаСMSSQL в общем модуле. И она уже вызывает функцию соединение.
pasha_usue
PS. А, и да. Выполнение на сервере прерывается работой клиента?
Я увы не понял вопроса(((
То есть директива &НаСервере тебе ничего не говорит? Если так, то это очень плохо. Может срочно устранить сей пробел в знаниях? Ибо без понимания как раздеделены в 1С клиент и сервер ты не будешь понимать ответы на твои вопросы и наши вопросы.
Цитата:

Для юзера все выглядит так:
Открывает справочник контрагентов. Заходит в конкретного котрагента, меняет, все сохраняется в 77.
Аналогично при добавлении нового.
Потом он может закрыть справочник, но не программу, а через какое то время, сделать такие же операции с другим котрагентом.

Надеюсь угадал теперь с ответом?
Почти. Уточнени, такой механизм только в этом справочнике или и в других используется?

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: Сохранение соединения 8.3 с 7.7
Аспид
Автор

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
ssa
такой механизм только в этом справочнике или и в других используется?
В настоящий момент только в этом.
Есть задумки и другие так же подтянуть.
Номенклатуру.

Смысл вопроса понял наверное.
Можно хранить где то, со справочником, а можно... по другому.

ssa
То есть директива &НаСервере тебе ничего не говорит?
Мое понимание очень мелко(((
Я представляю, что когда надо работать с данными, то это &НаСервере

Глубже... пока не доступно)


------------------
Ratings: 0 negative/0 positive
Re: Сохранение соединения 8.3 с 7.7
pasha_usue

Сообщений: 3649
Откуда: Е-бург
Дата регистрации: 06.10.2006
Тогда сюда: http://kb.mista.ru/

Только надо еще обвязку делать: COM жил. COM жив. COM будет жить!
Ratings: 0 negative/0 positive
Re: Сохранение соединения 8.3 с 7.7
pasha_usue

Сообщений: 3649
Откуда: Е-бург
Дата регистрации: 06.10.2006
Аспид
Смысл вопроса понял наверное.
Можно хранить где то, со справочником, а можно... по другому.
Нельзя хранить со справочником. Вам надо хранить не просто экземпляр объекта, а экземпляр объекта, который держит соединение, и все прочее, что за этим тянется. То-есть, экземпляр объекта должен продолжать жить в памяти сервера.

А сервер может что-то держать в своей памяти только то, что связано с конкретным сеансом. Все остальное он вытрет, рано или поздно. Обычно, сразу после очистки ссылки на объект.
Ratings: 0 negative/0 positive
Re: Сохранение соединения 8.3 с 7.7
Аспид
Автор

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
pasha_usue
Тогда сюда: http://kb.mista.ru/
Только надо еще обвязку делать: COM жил. COM жив. COM будет жить!

Только глянул на название - прямо оно)))
А гугл... неправильно ищет))))


------------------
Ratings: 0 negative/0 positive
Re: Сохранение соединения 8.3 с 7.7
Аспид
Автор

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
pasha_usue
Тогда сюда: kb.mista.ru
Я споткнулся.
Не пойму, какого типа должен быть
ПараметрыСеанса.АдресCOMОбъекта
на строке
ПараметрыСеанса.АдресCOMОбъекта=ПоместитьВоВременноеХранилище(База77,Новый УникальныйИдентификатор());
Если ЛюбаяСсылка - переданное значение не может быть помещено во временное хранилище.
Пробовал другие - то же.

Какой же тип выбрать?

Вот что накопал
Часть текста скрыта
В "1С:Предприятии 8.3" при помещении во временное хранилище значений, сериализация которых не поддерживается (например, ДокументОбъект.<Имя документа>, СправочникОбъект.<Имя справочника> и пр.), возникает ошибка "Переданное значение не может быть помещено во временное хранилище".

Для устранения несовместимости необходимо:

Выявить все места помещения значений во временное хранилище (поиском метода глобального контекста ПоместитьВоВременноеХранилище);
Проверить, что возможна сериализация типов значений объектов, помещаемых во временное хранилище. Для этого необходимо свериться с синтакс-помощником, убедившись, что в группе "Доступность" явно указана фраза "Сериализуется". При этом следует отличать сериализацию от XDTO-сериализации и XML-сериализации. Например, для типов СправочникОбъект.<Имя справочника> сериализация не поддерживается, хотя поддерживается XDTO-сериализация и XML-сериализация.
Если во временное хранилище значений помещается несериализуемое значение, следует пересмотреть проектное решение.


И как же быть? Получается способ не рабочий?
Сомневаюсь в возможности сериализации сом объекта))))


------------------




Исправлено 1 раз(а). Последнее : Аспид, 29.03.16 15:58
Ratings: 0 negative/0 positive
Re: Сохранение соединения 8.3 с 7.7
ssa

Сообщений: 13007
Откуда: Москва
Дата регистрации: 23.03.2005
Аспид
pasha_usue
Тогда сюда: kb.mista.ru
Я споткнулся.
Не пойму, какого типа должен быть
ПараметрыСеанса.АдресCOMОбъекта
на строке
ПараметрыСеанса.АдресCOMОбъекта=ПоместитьВоВременноеХранилище(База77,Новый УникальныйИдентификатор());
Если ЛюбаяСсылка - переданное значение не может быть помещено во временное хранилище.
Пробовал другие - то же.

Какой же тип выбрать?
Никакой. Ты где в коде с мисты увидел ПараметрыСеанса? Думаешь, если бы можно было вот так легко адрес процесса в памяти поместить в параметры сеанса народ бы стал извращаться с временным хранилищем?

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: Сохранение соединения 8.3 с 7.7
Аспид
Автор

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
Да ошибся в начале сообщения.
ПоместитьВоВременноеХранилище не работает.
Что и обозначил позднее.
Аспид
Если во временное хранилище значений помещается несериализуемое значение, следует пересмотреть проектное решение.

Т.е. изначальный вопрос остался.

В инете накопал, как сохранить на клиенте, на форме.
Не вижу смысла...


------------------
Ratings: 0 negative/0 positive
Re: Сохранение соединения 8.3 с 7.7
Foxtrot

Сообщений: 3408
Откуда: Куда:
Дата регистрации: 25.04.2003
самое простое наверное просто объявить глобальную переменную. хотя зло канешна


------------------
Мойте ноги, моя ноги вы моете и руки
Ratings: 0 negative/0 positive
Re: Сохранение соединения 8.3 с 7.7
pasha_usue

Сообщений: 3649
Откуда: Е-бург
Дата регистрации: 06.10.2006
Foxtrot
самое простое наверное просто объявить глобальную переменную. хотя зло канешна
Можно не глобальную. Можно локальную для общего модуля, который определен для повторного использования на время сеанса.

PS. Обсуждение с 40-ой записи: http://www.forum.mista.ru



Исправлено 1 раз(а). Последнее : pasha_usue, 30.03.16 13:45
Ratings: 0 negative/0 positive
Re: Сохранение соединения 8.3 с 7.7
Аспид
Автор

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
Foxtrot
самое простое наверное просто объявить глобальную переменную. хотя зло канешна
Да не вижу в таком контексте применение паблика зла.
Главное не злоупотреблять)))

Но вот где и как ее объявить?
Я настолько несведущ... (((

Плачь


------------------
Ratings: 0 negative/0 positive
Re: Сохранение соединения 8.3 с 7.7
pasha_usue

Сообщений: 3649
Откуда: Е-бург
Дата регистрации: 06.10.2006
Аспид
Что за фигня? Или только так кажется, и в этом есть какой то смысл.
Есть справочник КонтактныеЛица
Присваиваю Владелец (и ведь подсказка это поле выдает) а он фига, нету говорит.
С трудом нашел, что в данном случае, не владелец, а ОбъектВладелец.
Это зачем? Объекты, вроде как с одним интефейсом, какой то смысл есть?
"Владелец" это предопределенный реквизит. Он обеспечивает специальную фичу конфигурации для создания элементов справочника подчиненных элементам другого справочника (и не только).

Если надо создать свой реквизит, который содержит некоторую ссылку, то назвать ее именем предопределенного реквизита нельзя. Поэтому, в справочнике может присутствовать как реквизит "ОбъектВладелец" (или как хочешь названный), и предопределенный реквизит "Владелец".
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 7 (Гостей: 7)

© 2000-2024 Fox Club 
Яндекс.Метрика