|
Передача данных с клиента на сервер. | ☑ | ||
---|---|---|---|---|
0
GreenDay1986
22.09.22
✎
13:26
|
Здравствуйте. УФ. Получаю данные(реквизиты) в клиентской функции(через соединение с базой SQL, пробовал то же самое в серверной процедуре, соединение не устанавливается). Необходимо заполнить данные существующей формы на основании этих реквизитов.
Как это сделать в клиентской процедуре? Либо каким способом переместить эти данные с клиента на сервер, для последующего заполнения реквизитов? |
|||
1
Жан Пердежон
22.09.22
✎
13:28
|
смотри параметры в ОткрытьФорму()
|
|||
2
GreenDay1986
22.09.22
✎
13:30
|
(1) Данные после заполнения записать можно будет?
|
|||
3
Ryzeman
22.09.22
✎
13:31
|
(1) 3 раза перечитал (0)... Как ты вообще понял что у него за проблема?
>>Как это сделать в клиентской процедуре? Либо каким способом переместить эти данные с клиента на сервер, для последующего заполнения реквизитов? (0)У тебя проблема перетащить с клиента на сервер или с сервера на клиент? В рамках одной обработки\ в контексте одной формы? |
|||
4
Мигрень
22.09.22
✎
13:33
|
(0) код "соединения с базой SQL" любопытственно было бы глянуть
|
|||
5
Галахад
гуру
22.09.22
✎
13:36
|
Хм. А нельзя что-ли:
Объект.А = Б; |
|||
6
GreenDay1986
22.09.22
✎
13:36
|
(3) Данные получаю на клиенте. Проблема или перетащить их с клиента на сервер. Или каким-то образом изменить реквизиты формы на соновании этих данных. Записать их в реквизиты в клиенте. Но. Реквизиты на клиенте недоступны. Поэтому видимо перетащить их из клиента на сервер.
Образно. Подключение на клиенте получаю данные ТипВключения и ТипУстановки через SQL-соединение с внешней базой(не 1С). Задача эти данные записать в реквизиты справочника. |
|||
7
Ryzeman
22.09.22
✎
13:36
|
(4) Да 99% что через COMОбъект. Там как раз не особо интересно)
|
|||
8
GreenDay1986
22.09.22
✎
13:38
|
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ЗаводскойНомер = ПолучитьНомер(ПараметрКоманды); UdlФайл = Новый Файл(КаталогПрограммы() + "ConnectionPoint.udl"); Если Не UdlФайл.Существует() Тогда ПоказатьПредупреждение(Неопределено, "Не найден файл подключения к БД '" + КаталогПрограммы() + "ConnectionPoint.udl" + "'"); Иначе СтрокаСоединенияССерверомElArchive = "File Name=" + КаталогПрограммы() + "\ConnectionPoint.udl" ; Сообщить(СтрокаСоединенияССерверомElArchive); Соединение = Новый COMОбъект("ADODB.Connection"); Соединение.ConnectionString = (СтрокаСоединенияССерверомElArchive); МассивФайлов = Новый Массив; Попытка Соединение.Open(); РекордСет=Новый COMОбъект("ADODB.REcordset"); Поток=Новый COMОбъект("ADODB.Stream"); Поток.Type=1; Поток.Mode=3; Поток.Open(); РекордСет.ActiveConnection=Соединение; РекордСет.CurSorLocation=3; Попытка РекордСет.Open("Select Address, PhasesCount, Place, TypeOn, PlaceType, CounterTypeName From dbo.Counters_ForBuh Where CounterSerialNumber='"+СокрЛП(ЗаводскойНомер)+"'",Соединение); Если РекордСет.RecordCount=0 Тогда ПоказатьПредупреждение(Неопределено, "По ОС № "+СокрЛП(ЗаводскойНомер)+" данные не найдены"); Иначе РекордСет.MoveFirst(); Попытка УдалитьФайлы(КаталогВременныхФайлов(),"*.bmp"); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; Пока РекордСет.EOF()=0 Цикл Адрес=РекордСет.Fields("Address").Value; ЧислоФаз=РекордСет.Fields("PhasesCount").Value; МестоУстановки = РекордСет.Fields("Place").Value; ТипВключения = РекордСет.Fields("TypeOn").Value; ТипМестности = РекордСет.Fields("PlaceType").Value; НаименованиеТипаСчетчика = РекордСет.Fields("CounterTypeName").Value; Сообщить(Адрес +" "+Строка(ЧислоФаз)+" "+МестоУстановки+" "+ТипВключения+" "+ТипМестности+" "+НаименованиеТипаСчетчика); РекордСет.MoveNext(); КонецЦикла; КонецЕсли; Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; Поток.Close(); РекордСет.Close(); Соединение.Close(); МассивФайлов.Очистить(); Исключение Сообщить("Не могу подключиться к базе!!! "); КонецПопытки; КонецЕсли; КонецПроцедуры |
|||
9
GreenDay1986
22.09.22
✎
13:40
|
В (8) в клиенте записи получаю, на сервере не получаю. Собственно и вопрос, как дальше действовать, чтобы записать полученные данные в реквизиты справочника.
|
|||
10
1Сергей
22.09.22
✎
13:40
|
(9) см (5)
|
|||
11
lubitelxml
22.09.22
✎
13:42
|
(8) в чем проблема? эта процедура где выполняется? возьми полученные данные, передай их на сервер, там получи объект и запищи его. Если это в контексте справочника, то просто как в (5) тебе написали
|
|||
12
GreenDay1986
22.09.22
✎
13:44
|
(11) Я и спрашиваю как передать их на сервер с клиента.
|
|||
13
Мигрень
22.09.22
✎
13:45
|
(11) проблема в том, что мы пока не разобрались, что хочет записать ТС: реквизиты формы или реквизиты объекта
|
|||
14
lubitelxml
22.09.22
✎
13:46
|
(12) где у тебя располагается эта команда?
|
|||
15
GreenDay1986
22.09.22
✎
13:47
|
(13) Реквизиты объекта. Следовательно нужно передать данные с клиента на сервер каким-то образом.
|
|||
16
GreenDay1986
22.09.22
✎
13:47
|
(14) На форме справочника
|
|||
17
Мигрень
22.09.22
✎
13:49
|
(15) я бы разобрался, почему на сервере твой код соединения с sql не работает, а не городил бы костыли с передачей данных с клиента на сервер
|
|||
18
GreenDay1986
22.09.22
✎
13:51
|
(17) попробую.
|
|||
19
kubik_live
22.09.22
✎
13:56
|
(0) "Читаю... немцы какие-то..." ©
То: КаталогПрограммы() + "\ConnectionPoint.udl" В другом месте: КаталогПрограммы() + "ConnectionPoint.udl" А зачем в каталог программы пихать? |
|||
20
Ryzeman
22.09.22
✎
13:59
|
(16) На форме элемента справочника доступны основные реквизиты элемента. У формы есть обязательный реквизит "Объект". При записи из формы элемента все данные записанные в него записываются непосредственно в объект справочника.
Если же это не форма объекта, то сериализуй получаемые данные во что нибудь что может прожевать 1с (например, структура) и внутри цикла добавляй в неё элементы, через ЗаполнитьЗначенияСвойств, например. Переноси на сервер параметром и делай что хочешь |
|||
21
GreenDay1986
22.09.22
✎
14:00
|
(19) исправил, пытался просто прописать путь - всё одно. На клиенте соединение устанавливается, на сервере нет.
|
|||
22
kubik_live
22.09.22
✎
14:01
|
(21) Отладчик что говорит?
|
|||
23
kubik_live
22.09.22
✎
14:05
|
(21) Вангую: файл ConnectionPoint.udl не обнаружен
|
|||
24
Ryzeman
22.09.22
✎
14:08
|
(23) да что угодно может быть. Компоненту не установили на серваке, нет доступа относительный путь к расшаренной папке
|
|||
25
Kassern
22.09.22
✎
14:11
|
(21) "На клиенте соединение устанавливается, на сервере нет." - потому что сервер может вообще не иметь файла по пути клиента.
|
|||
26
kubik_live
22.09.22
✎
14:14
|
(25) +1
|
|||
27
GreenDay1986
22.09.22
✎
14:19
|
(25) Файл есть. Пробовал через дфс \\watt\1CV83\8.3.19.1522\bin\ConnectionPoint.udl также не доступен с сервера. С сервера приложений файл виден, доступ к нему есть.
|
|||
28
lubitelxml
22.09.22
✎
14:21
|
(27) ну тогда либо права настраивай, либо в (20) все четко разжевано как сделать
|
|||
29
kubik_live
22.09.22
✎
14:21
|
(27) Юзай через временное хранилище, Примеров в инете масса
|
|||
30
Kassern
22.09.22
✎
14:30
|
(27) "С сервера приложений файл виден, доступ к нему есть." - доступ есть у кого? У вас под юзвером Петя, или пользователя, который запускает службу 1с?
|
|||
31
1Сергей
22.09.22
✎
14:37
|
(23) (25) Потому что на сервере линух
гыгыгы) |
|||
32
GreenDay1986
22.09.22
✎
14:39
|
(30) Спасибо. С этим моментом затупил. Админы придут проверим.
|
|||
33
Kassern
22.09.22
✎
15:01
|
(32) ПоместитьВоВременноеХранилище решит этот вопрос, без ожидания админов
|
|||
34
rudnitskij
22.09.22
✎
16:12
|
(0) Передавать эти данные как параметры серверной процедуры, которую будете вызывать с клиента - вариант неприемлемый, потому что слишком простой?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |