|   |   | 
| 
 | 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) получилось путём добавления процедуры
  Процедура ОбойтиСтроки(Дерево,ДеревоКудаДобавлять) Для Каждого СтрокаДерева Из Дерево.Строки Цикл НС = ДеревоКудаДобавлять.Строки.Добавить(); ЗаполнитьЗначенияСвойств(НС,СтрокаДерева); ОбойтиСтроки(СтрокаДерева,НС); КонецЦикла; КонецПроцедуры теперь вопрос в другом, как здесь получить Уникальный Идентификатор... | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |