|
v8: Ошибка. Несоответствие типов (параметр номер '1') | ☑ | ||
---|---|---|---|---|
0
bUbA
15.05.13
✎
12:44
|
Есть такая процедура
Процедура ДействиякнПодбор(Кнопка) Запрос = База.NewObject("Запрос"); Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Наименование КАК Наименование, | Номенклатура.Код, | Номенклатура.Артикул |ИЗ | Справочник.Номенклатура КАК Номенклатура | |УПОРЯДОЧИТЬ ПО | Наименование ИЕРАРХИЯ"; Запрос.УстановитьПараметр("ПапкаТовары", Общий.ПолучитьЗначениеПараметраКонфигурации("ПапкаТовары")); Результат = Запрос.Выполнить(); Дерево = Результат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией); ОбойтиУровеньДерева(Дерево.Строки, База); База.ЗаписатьКонецЭлемента(); КонецПроцедуры При выполнении запроса выдаётся ошибка {Документ.СвязкаНоменклатуры.Форма.ФормаДокумента.Форма(47)}: Ошибка при вызове метода контекста (Выгрузить) Дерево=Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией); по причине: Произошла исключительная ситуация (1C:Enterprise 8.2.16.362): Несоответствие типов (параметр номер '1') Хотя судя по синтакс-помощнику там всё верно должно быть. |
|||
1
Shrike
15.05.13
✎
12:45
|
База.ОбходРезультатаЗапроса.ПоГруппировкамСИерархией
|
|||
2
Fish
15.05.13
✎
12:47
|
База.ЗаписатьКонецЭлемента() - улыбнуло :)
|
|||
3
ДенисЧ
15.05.13
✎
12:48
|
Дерево = Результат.Выгрузить(База.ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
|
|||
4
Волшебник
15.05.13
✎
12:49
|
||||
5
bUbA
15.05.13
✎
12:58
|
спасибо, с этой проблемой всё ясно
(2) а что здесь не так? |
|||
6
Fish
15.05.13
✎
12:59
|
(5) Название интригующее :)
|
|||
7
bUbA
15.05.13
✎
13:01
|
(6) просто перед этим есть процедура ОбойтиУровеньДерева(Строки, Запись)
эта строка к той процедуре относится |
|||
8
Fish
15.05.13
✎
13:03
|
(7) Да это понятно. Просто в 1С некоторые названия процедур веселят. А бесит, когда смешивают в одном названии английские буквы и русские. Например: WebЦвета.
|
|||
9
bUbA
15.05.13
✎
13:07
|
а что может быть не так в записи Запись.ЗаписатьНачалоЭлемента("Элемент");
Метод объекта не обнаружен (ЗаписатьНачалоЭлемента) может это только с xml работает? |
|||
10
Fish
15.05.13
✎
13:10
|
(9) Что такое у тебя Запись?
|
|||
11
bUbA
15.05.13
✎
13:20
|
(10) в смысле что такое? здесь всё по синтакс-помощнику описано
|
|||
12
Fish
15.05.13
✎
13:30
|
(11) Я имел в виду, какого типа у тебя переменная "запись"?
|
|||
13
bUbA
15.05.13
✎
13:37
|
получается строковый тип. но я почитал, что Запись записывает элемент XML. получается, что это не подходит?
|
|||
14
Fish
15.05.13
✎
13:47
|
(13) Всё верно. У строки нету методов - это примитивный тип. Поэтому и ошибка в (9).
|
|||
15
bUbA
15.05.13
✎
13:52
|
(14) а по-другому это реализовать можно как то?
дата, число и булево тоже примитивные типы? |
|||
16
hhhh
15.05.13
✎
13:59
|
(15) ну, создавай объект, типа ЗаписьХМЛ, с ним и работай.
|
|||
17
palpetrovich
15.05.13
✎
14:02
|
вот как "ЗаписатьКонецЭлемента" - так База, а как "ЗаписатьНачалоЭлемента" - так Запись ...несправедливо :)
|
|||
18
bUbA
15.05.13
✎
14:09
|
сейчас получается такой код
Процедура ДействиякнПодбор(Кнопка) Запрос = База.NewObject("Запрос"); Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Наименование КАК Наименование, | Номенклатура.Код, | Номенклатура.Артикул |ИЗ | Справочник.Номенклатура КАК Номенклатура | |УПОРЯДОЧИТЬ ПО | Наименование ИЕРАРХИЯ"; Запрос.УстановитьПараметр("ПапкаТовары", АКС_Общий.ПолучитьЗначениеПараметраКонфигурации("ПапкаТовары")); Результат = Запрос.Выполнить(); тз = Результат.Выгрузить(База.ОбходРезультатаЗапроса.ПоГруппировкамСИерархией); тз.ВыбратьСтроку(); //ОбойтиУровеньДерева(Дерево.Строки, База); //Запись.ЗаписатьКонецЭлемента(); КонецПроцедуры я убрал процедуру ОбойтиУровеньДерева, всё вроде бы работает, но выводится в отдельном окне. а как его заставить выводиться в табличной части формы? |
|||
19
ДенисЧ
15.05.13
✎
14:10
|
(18) вместо тз.ВыбратьСтроку(); сделай заполнения табличной части. Ваш К.О.
|
|||
20
bUbA
15.05.13
✎
14:13
|
(19) вместо тз записал ЭлементыФормы.Номенклатура. Но это поле недоступно для записи.
|
|||
21
ДенисЧ
15.05.13
✎
14:14
|
(20) логично...
А почему бы не заполнять именно табличную часть, не элемент формы? Кроме того... У тебя в тз что находиится? строки, числа и даты? Если больше - то овоща ты таким образом сделаешь... |
|||
22
bUbA
15.05.13
✎
14:27
|
В тз строки и числа.
Эта табличная часть недоступна для заполнения. Если просто нажать на кнопку Добавить, то тогда построчно можно заполнить из справочника. Но если надо заполнить запросом, тогда не получается. |
|||
23
ДенисЧ
15.05.13
✎
14:39
|
обогиядумне...
Для Каждого стр из тз Цикл стр1 = ИмяТабличнойЧастиОбработки.Добавить(); ЗаполниьтЗначенияСвойств(стр1, стр); КОнецЦикла; |
|||
24
ice777
15.05.13
✎
14:49
|
эта.. я смущен.
В чем смысл вместо: Запрос = новый запрос; писать: Запрос = База.NewObject("Запрос"); |
|||
25
Shrike
15.05.13
✎
15:24
|
(24) В том, что запрос через ОЛЕ
|
|||
26
palpetrovich
15.05.13
✎
16:06
|
bUbA, если (25) верно, то ЗаполниьтЗначенияСвойств из (23) не прокатит, надо предватрительно найти номенклатуру, к примеру - по наимменованию
|
|||
27
ДенисЧ
15.05.13
✎
16:17
|
(26) читай (22)
Я специально уточнил |
|||
28
bUbA
15.05.13
✎
17:47
|
(26) получилось путём добавления процедуры
Процедура ОбойтиСтроки(Дерево,ДеревоКудаДобавлять) Для Каждого СтрокаДерева Из Дерево.Строки Цикл НС = ДеревоКудаДобавлять.Строки.Добавить(); ЗаполнитьЗначенияСвойств(НС,СтрокаДерева); ОбойтиСтроки(СтрокаДерева,НС); КонецЦикла; КонецПроцедуры теперь вопрос в другом, как здесь получить Уникальный Идентификатор... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |