|
Передача результата запроса в внешней обработке ?? | ☑ | ||
---|---|---|---|---|
0
1С_Обезьян
20.08.13
✎
11:10
|
Пишу обработку берет из exel файле номер в первой колонке ищет в заказах в 1с .
вобщем вот код суть вопроса как передать результат запроса и серверной функции в клиентскую процедуру вываливает ошибка {Форма.Форма.Форма(89)}: Ошибка при вызове метода контекста (ДокЗапр) Рез = ДокЗапр(); по причине: Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа. по причине: Ошибка преобразования данных XDTO: Запись значения свойства 'ret': форма: Элемент имя: {http://v8.1c.ru/8.2/managed-application/modules}ret по причине: Ошибка отображения типов: Отсутствует отображение для типа 'РезультатЗапроса' |
|||
1
1С_Обезьян
20.08.13
✎
11:11
|
&НаКлиенте
Процедура загрузить(Команда) Режим = РежимДиалогаВыбораФайла.Открытие; ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим); ДиалогОткрытияФайла.ПолноеИмяФайла = ""; Фильтр = "Текст(*,xls)|*.xls"; ДиалогОткрытияФайла.Фильтр = Фильтр; ДиалогОткрытияФайла.МножественныйВыбор = Ложь; ДиалогОткрытияФайла.Заголовок = "Выберите файл"; Если ДиалогОткрытияФайла.Выбрать() Тогда ПутьКФайлу = ДиалогОткрытияФайла.ПолноеИмяФайла; КонецЕсли КонецПроцедуры &НаСервере Функция ДокЗапр(); //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗаказПоставщику.Номер, | ЗаказПоставщику.Товары.( | Номенклатура.Вес, | Количество, | Цена | ) |ИЗ | Документ.ЗаказПоставщику КАК ЗаказПоставщику"; РезльтатЗапроса = Запрос.Выполнить(); Возврат РезльтатЗапроса; КонецФункции &НаКлиенте Процедура ЗаписатьВФайл(Команда) Док = ПолучитьCOMОбъект(ПутьКФайлу); КоличествоСтраниц = 1; Для ТекНомер = 1 По КоличествоСтраниц Цикл Номер = Док.Sheets(ТекНомер).Cells(1,1).Value; Наименование = Док.Sheets(ТекНомер).Cells(1,2).Value; Вес = Док.Sheets(ТекНомер).Cells(2,3).Value; Количество = Док.Sheets(ТекНомер).Cells(2,4).Value; Цена = Док.Sheets(ТекНомер).Cells(2,5).Value; счСтроки = 3; Сообщить( Номер+""+Наименование+""+Вес+""+Количество+""+Цена); Пока СокрЛП(Номер) <> "" Цикл // можно использовать другой признак // окончания данных на листе Номер = Док.Sheets(ТекНомер).Cells(СчСтроки,1).Value; Наименование = Док.Sheets(ТекНомер).Cells(СчСтроки,2).Value; Вес = Док.Sheets(ТекНомер).Cells(СчСтроки,3).Value; Количество = Док.Sheets(ТекНомер).Cells(СчСтроки,4).Value; Цена = Док.Sheets(ТекНомер).Cells(СчСтроки,4).Value; Сообщить(Номер); счСтроки = счСтроки + 1; Рез = ДокЗапр(); выборка = Рез.Выбрать(); Пока выборка.Следующий() Цикл Сообщить (Выборка.Цена); КонецЦикла; КонецЦикла; КонецЦикла; Док.Application.Quit(); КонецПроцедуры |
|||
2
ДенисЧ
20.08.13
✎
11:12
|
РезультатЗапроса на клиент не полезет...
Обрабатывай на сервер |
|||
3
1С_Обезьян
20.08.13
✎
11:13
|
каким макаром передают результат запроса в внешних обработках? кто подскажет
|
|||
4
1С_Обезьян
20.08.13
✎
11:13
|
а на сервере остальной кусок кода не работает .вот получается путаница
|
|||
5
Euguln
20.08.13
✎
11:16
|
(2) + 1
или передавай тип, который можно передать, список значений, например. |
|||
6
1С_Обезьян
20.08.13
✎
11:18
|
Euguln а подробнее моно? я же запрос в список не выгружу для чего мне список ?
|
|||
7
Rie
20.08.13
✎
11:20
|
(6) Есть ТаблицаЗначений.
|
|||
8
1С_Обезьян
20.08.13
✎
11:21
|
Rie есть . а если документов до хрена . не буду же я все в таблицу выгружать для обработки ?
|
|||
9
Зойч
20.08.13
✎
11:25
|
Поместить во временное хранилище
|
|||
10
1С_Обезьян
20.08.13
✎
11:26
|
Зойч или подсмотреть как это делают в типовых сами 1с
|
|||
11
Rie
20.08.13
✎
11:26
|
(8) Обработай на сервере. Передай клиенту только то, что ему нужно (всё равно ведь передавать-то).
Причём можно и по кусочкам передавать. |
|||
12
1С_Обезьян
20.08.13
✎
11:27
|
они делают связь у низ запрос не в функции обработки .а в общем модуле аж.)
|
|||
13
1С_Обезьян
20.08.13
✎
11:28
|
Rie клеинт не не видит тип
Ошибка отображения типов: Отсутствует отображение для типа 'РезультатЗапроса' |
|||
14
Rie
20.08.13
✎
11:29
|
(13) А я разве говорил результат запроса передавать?
Обработай на сервере. Сформируй таблицу значений. Отправь её клиенту. |
|||
15
1С_Обезьян
20.08.13
✎
11:32
|
Rie тоесть обработаю запрос вгружу его в таблицу таблицу передам клиенту .а если данных туево кукуево и сколько в таблицу грузить тогда? база не вылетит?
|
|||
16
alexei366
20.08.13
✎
11:34
|
(15) Ты что клиенту должен вернуть , какой результат?
|
|||
17
Rie
20.08.13
✎
11:37
|
(15) Если данные клиенту нужны - их же всё равно ему придётся передавать, сколько бы их не было, не так ли?
Если очень боишься - передай по частям. |
|||
18
1С_Обезьян
20.08.13
✎
11:39
|
alexei366 результат запроса номер докум вес цена наименование
|
|||
19
Ork
20.08.13
✎
11:39
|
Какие проблемы завести у обработки реквизит ТабличнаяЧасть? И заполнять ее на сервере? Все ее данные вполне отображаются на клиенте. В чем трудность?
|
|||
20
1С_Обезьян
20.08.13
✎
11:40
|
Ork ты будешь 5 тыс документов заполнять в таб часть?
|
|||
21
Rie
20.08.13
✎
11:42
|
(20) Если тебе они нужны - тебе всё равно придётся их передать. Тем или иным способом - но придётся.
|
|||
22
Ork
20.08.13
✎
11:43
|
(20) Я вам дал вполне работоспособную альтернативу. Ваш вариант с РезльтатЗапроса или ТаблицаЗначений при вашей постановке неработоспособны. Нельзя передать с сервера на клиент ни одно, ни другое. Даже не для 5 тыс документов. Даже для одного нельзя.
|
|||
23
1С_Обезьян
20.08.13
✎
11:45
|
Ork реквезит с каким типом ? еще раз пожайлоста реквизит ТабличнаяЧасть
|
|||
24
Ork
20.08.13
✎
11:45
|
+ (22) И потом - я сомневаюсь, что вам действительно нужно отображать на клиенте табличные части 5 тыс документов. А обрабатывать вполне можно на сервере. Отображать уже готовый результат.
|
|||
25
alexei366
20.08.13
✎
11:46
|
Да все мужики, ща автор ещё повыпендривается, ну а потом сделает через реквизит формы "ТаблицаЗначений" или вообще ТабДок будет заполнять.
|
|||
26
1С_Обезьян
20.08.13
✎
11:46
|
Rie да частями возможно моно будет. опробуем
|
|||
27
1С_Обезьян
20.08.13
✎
11:47
|
alexei366 а ты чето дельное можешь сказать или ухмылятсья в кулачок?
|
|||
28
1С_Обезьян
20.08.13
✎
11:49
|
Ork вот мне и надо передать этот готовый результат из 5 т документов в клиент и там уже обработать условием
|
|||
29
Ork
20.08.13
✎
11:49
|
||||
30
Ork
20.08.13
✎
11:50
|
(28) Почему не передать условие для обработки на сервер?
|
|||
31
1С_Обезьян
20.08.13
✎
11:53
|
Ork щас попробуем следую вашему совету
|
|||
32
alexei366
20.08.13
✎
11:57
|
(27) Я те ток одно скажу, если будешь тягать резудьтат в таблицу и заполнять её в цикле на Клиенте, то вызывай серверную без контекста, а то задержки будут хорошие))
|
|||
33
1С_Обезьян
20.08.13
✎
11:59
|
Функция ДокЗапр();
//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗаказПоставщику.Номер, | ЗаказПоставщику.Товары.( | Номенклатура.Вес, | Количество, | Цена | ) |ИЗ | Документ.ЗаказПоставщику КАК ЗаказПоставщику"; РезльтатЗапроса = Запрос.Выполнить(); Выборка= РезльтатЗапроса.Выбрать(); Пока Выборка.Следующий() Цикл Если Номер = Выборка.Номер Тогда //Номер клиент Сообщить("РРР ура!"); КонецЕсли; КонецЦикла; КонецФункции |
|||
34
1С_Обезьян
20.08.13
✎
11:59
|
клиентские переменные на сервер .не удалось вызвать
|
|||
35
1С_Обезьян
20.08.13
✎
12:00
|
alexei366 хорошо . воспользуюсь советом
|
|||
36
Ork
20.08.13
✎
12:07
|
(33) Это : "Если Номер = Выборка.Номер Тогда" что?
Почему не вставить условие в запрос? Что б не лопатить все документы. А просто взять с правильным номером. |
|||
37
1С_Обезьян
20.08.13
✎
12:08
|
Ork я в запрос не вставлю условие только потому.что я Номер получаю из exel и делаю это в клиенте
|
|||
38
1С_Обезьян
20.08.13
✎
12:11
|
тогда Сообщить(" ура!"); номер в доке совпал с номером в колjнке exel файла это просто здорво)
|
|||
39
Ork
20.08.13
✎
12:14
|
(37) И что?
Конструкции типа : &НасервереБезКонтекста Функция ДокЗапр( НомерДляПоиска ) ... КонецФункции; &Наклиенте ... ДокЗапр( НомерИзExcel ); уже в 1С запрещены? |
|||
40
alexei366
20.08.13
✎
12:15
|
(39) я так и предлагал, раз не хош данные с экселя во временную таблицу или массив пихать чтоб в целом на сервак кинуть, то цикл на клиенте с безконтекстными вызовами
|
|||
41
1С_Обезьян
20.08.13
✎
12:17
|
ща проверим ваши предложения
|
|||
42
Ork
20.08.13
✎
12:18
|
+ (39) Непонятно назначение Функции, которая ничего никому никогда не возвращает. Традиции С++?
|
|||
43
1С_Обезьян
20.08.13
✎
12:20
|
Ork результат обработки запроса возвращет
|
|||
44
1С_Обезьян
20.08.13
✎
12:26
|
короче ,короче,склифацовзкие из вас тут толком никто ни чего не знает ,сделаю я сам глядя на типовую как эталон 1с .
вот мой вам ответ .уж простите меня . спасибо за советы . вчера уже их все опробовал . а с таб значений щас еще повожусь. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |