#0
by kalleka
цепляюсь через v83.ComConnector с бп 3.0 к бп 3.0 ... Смотрю в отладчике - все странно. то что должно быть датой - comобъект, ссылочные реквизиты - имеют тип дата или число, табличная часть товары - вообще строка. И каждый раз может все это отличаться. Никто не сталкивался с таким?
#2
by kalleka
Сие есть субъективное толкование) Если дадите разумное объяснение, то плюс вам в карму)
#6
by kalleka
Пытаюсь создать новый документ РТУ, а создает не пойми что, счет учета - ложь, руководитль - строка, таб часть товары - строка, соответственно ругается на добавление строки
#13
by kalleka
у меня создание документа идет б.Документы.реализациятоваровуслуг.СоздатьДокумент; Там документобъект возвращается
#15
by МимохожийОднако
Об этом не спорю. Но сообщение об ошибках никак не согласуется с приведенным кодом.
#26
by kalleka
если кратко - то я цепляюсь к нескольким базам бп 2 и бп 3 и засовываю соединения в массив, все это на сервере. выполняю там разные действия, потом пытаюсь в этих базах создать РТУ. И если например работать с 2 базами бп 2.0 и бп 3.0, то он начинает косячить. Причем то в бп 3 корректно заведет рту, а в бп 2 нет, то наоборот. И как с этим справится - не пойму
#27
by kalleka
и вот на добавлении строки в табл товары в новосозданном документе он спотыкается. Если смотреть через отладчик, то там как будто не документобъект создается посредством СоздатьДокумент, а что то неведомое с набором реквизитов от рту, а типами значений совсем другими
#29
by Franchiser
Делать коннет в цикле и писать в массив это неправильно, возможно в массиве базы переопеределяются, может получится что все базы в результате сошлются на одну единственную имхо.
#31
by kalleka
создатьдокументвдопбазе(док,номб,массивбаз[номб-1]) ... ну а как работать с несколлькими базами? Эта обработка изначально работала на 8.2 с бп 2.0 и еще и с 7-ми базами.
#33
by Franchiser
Попробуй добавлять массив не используя переменную v8. И вообще приведе весь код, в одном месте б у тебя ком-обьект в другом б это база, где и как используется соединениявернуть.
#37
by Franchiser
Возможно объект в процедуре на сервере утебы нет сам объет а псевдообъект, попробуй еобразовать его в ревизитформывзначение. Процедура создатьдокументы расположена в модуле формы что ли? Не проще было сделать процедуру в модуле объекта или в модуле менеджера? Тогда директива наклиенте не нужна.
#38
by kalleka
Команда да, но потом на сервере идет подключение, и работа в подключении же и идет на сервере
#39
by kalleka
Вообще можно как то уточнить - в какой именно базе соединение? для проверки, а то я уже сам сомневаюсь
#40
by Franchiser
Обратись к какой нибудь константе базы, например заголовок окна программы. Ну и что что на сервере идет подключение, на сервере можно обратиться к реквизитам формы . Директива насервере это позволяет, ошибка будет только если директива насерверебезконтекста.
#41
by Franchiser
Ты передаешь контекст текущей формы на сервер, реквизит объект - реквизит формы, а не сам объект, думаю в этом и ошибка.
#42
by kalleka
а можно подробнее?? Что то я недопонимаю чьей именно контекст и в каком месте передается
#43
by Franchiser
У тебя процедура есть в форме Процедура ОсновныеДействияФормыСоздатьДокументыСервер У нее ты не указал директиву, поэтому считается что директива у нее &насервере. При этом возможно обращение как к реквизитам формы так и к рекизитам объекта. Если откроешь документ то в нем есть реквизит который называется Объект - это псевдореквизит самого объекта, к нему ты по ошибке и обращаешься.
#45
by Franchiser
Напиши перед этой процедурой &насерверебезконтекста тогда у тебя вообще будет ошибка так как объект будет недоступен вообще.
#46
by Franchiser
Тебе нужно использовать реквизитформывзначение тогда ты преобразуешь все что есть на форме в объект прикладного типаи дальше будешь работать с ним.
#47
by Franchiser
В серверно процедуре пишешь Док = реквизитформывзначение("объект") дальше обращаешься к доку.
#49
by kalleka
Спасибо, это я сейчас отработаю, но мне не ясно как это связано с где б - из массива массивбаз, переменной объявленной на сервере. причем б.документы.РеализацияТоваровУслуг.найтипономеру срабатывает корректно - данные действительно похожи на документссылка
#50
by Franchiser
Убери пока заполнитьзначениясвойств посмотри какие типы у созданного документа в отладчике
#52
by Franchiser
Насколько корректно платформа относится к хранению com-объектов в реквизите формы непонятно, нужно было в серверной процедуре создавать массив, а на форме хранить строки в списке аверно.
#53
by Franchiser
Просто выходит что ты хранишь ком-объекты полученные подключением на сервере на клиенте что ли, что-то непонятное.
#54
by kalleka
в серверной процедуре создается массив и в нем хранятся эти подключения, с клиентом не пересекается. Переменная создается в серверной части, на форме и в объекте переменной с таким именем нет
#56
by Franchiser
образец у тебя com объект ссылка, нд -- comобъет -объект. Непонятно как тут отработает заполнитьзначения свойств. Может оба сделать объектами. Или запрлнять как то иначе.
#57
by kalleka
Кажется начинаю разбираться. Если переоткрыть программу и оставить в списке баз только одну базу, то он подключится, без проблем, хоть к бп 2, хоть к бп 3 Если он например подключится к бп 2.0, то пока не переоткрыть клиента, он некорректно будет работать с бп 3.0 И соответственно наоборот. Получается что нельзя работать с бп 2 и с бп 3 по-очереди. Что то глючит. А по отдельности, все ок
#59
by kalleka
вот нашел похожую тему, только там человек с 8.1 и 8.2 работал одновременно Так и не нашел вопроса как корректно закрывать
#60
by kalleka
мне даже переоткрытие обработки не помогает. Приходится переоткрывать клиента, чтобы все заработало. Моэно конечно инструкцию накатать - сначала работайте с базами бп 2, потом переоткройте 1с и работайте с базами бп 3.0))))
#61
by Franchiser
Вероятно надо избавиться от такой записи б = новый COMОбъект("v83.ComConnector"); может массив какой то сделать куда писать все ком-соединения. Без использования б
#62
by kalleka
Это локальная переменная, в маленькой процедурке. я пробовал переименовать, я даже пробовал новое создавание подключения каждый раз - не помогает
#63
by Franchiser
Или же сделать б83 = новый COMОбъект("v83.ComConnector"); и б82 = новый COMОбъект("v83.ComConnector");
#65
by Franchiser
в управляемых формах хитро все работает. Соединение будет существовать до тех пор пока не обнулишь все объекты которые имеют отношение к соединению сам сталкивался с эти, то есть всякие ком-справочники и документы нужно очищать.
#66
by Franchiser
Присвой значение неопреределено всем созданным справочника , документам , тч, найденным ссылкам и тд.
#67
by kalleka
Так если я обработку закрываю и все-равно не срабатывает? Сейчас конечно попробую обнулить
#68
by Franchiser
После выполнения процедуры не должно оставаться com-объекта иначе косяки были такие же при подключении к следующей базе. Кстати вспомнил натыкался как раз на то же самое) подключение правда делал к 1с7.7 из тонкого клиента бп 3.0. И проблема решилась после обнуления.
#70
by Franchiser
Точнее там даже не косяк был просто ошибка неизвестная при попытке соединиться со следующей базой.
#72
by kalleka
я обработку с бп 2 на бп 3 переделываю. Я сами подключения обнуляю. Неужели и все переменные надо обнулять, что использовались? Они же локальные и закрываются, по сути
#74
by Franchiser
у меня также было в обычных формах работало, перевел на управляемые подключалась только первая база. Обнулял подключения не помогло, как все ком-объекты обнулил, стали подключаться остальные базы.
#77
by ДенисЧ
Ну вот. Тогда они у тебя не локальные а глобальные. Или явно обнуляй, или явно объявляй в пределах функции.
#79
by kalleka
для каждого стр из Объект.таблбаз цикл сообщить("устанавливается подключение к базе "+стр.путькбазе+""); вот тестовое соединение - все обнуляю в цикле, но все-равно вываливается с ошибкой на 2 строчке
#80
by Franchiser
Попробуй каждый объект явно определять и в конце устанавливать в неопределено. Тч товары опиши как то . Может порядок обнуления имеет значение. Контроллируй в отладчике что значение неопределено устанавливается.
#81
by Franchiser
Еще можешь контроллировать что ком-соединение пропало, открыв базу к которой подключаешься и посмотрев активные подключения.
#82
by Franchiser
Для баз 1с 8 возможна так надо: Может так попробуете: ВывестиСообщение("Подключение не было установлено!");
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- Выгрузка-загрузка данных в формате XML из БП 2.0 в 3.0
- КД2 Конвертация Справочника в перечисление
- Мобильное приложение. Интерактивный выбор файла.
- Обслуживание базы в SQL Express 2008 R2
- Как удалить договора в ут11, контрагент в которых удален
- Розница 2.0 и ТСД Opticon OPL-9728-1Mb Атол - ограничения по длине наименования
- Как убрать ошибку при подключении к Ado ?
- код подразделения ОВД ленинского административного округа города омска
- обновления для Бухгалтерия строительной организации
- Framework 4.5 RegAsm.exe валится с ошибкой
- Проблемы с печатью 1С 83 Linux и не только
- Торговля 11 и Мобильное приложение 1С: Заказы клиентов
- Инициализация переменной в модуле
- 1с 8.3. Отображение группировок динамического списка в веб клиенте
- HTML Как убрать рамку у ячейки.
- ЗУП КОРП 2.5 внешние печатные формы (управляемое приложение)
- Как на клиенте получить справочник?
- 1С УФ: Выбор из списка значений на форме
- УТ 10.3 Шаблон Чека ККМ
- Буква Ж в чеке ККМ