8.х Несоответствие типов (параметр номер "1")

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Саша82, 15 дек 2007.

  1. TopicStarter Overlay
    Саша82
    Offline

    Саша82 Активный ученик

    Регистрация:
    11 окт 2007
    Сообщения:
    307
    Симпатии:
    0
    Баллы:
    26
    Для Товар и Поставщик есть поля ввода с сылками на Справочник.Номенклатура и Справочник.Поставщик.

    Код:
    Процедура ОтборНажатие(Элемент)   
    
    СтруктураОтбора = Новый Структура;
    СтруктураОтбора.Вставить("Товар",Товар);
    СтруктураОтбора.Вставить("Поставщик", Поставщик); 
    СтруктураРесурсов = РегистрыСведений.РегистрСведений1.Получить(СтруктураОтбора);
    Цена = СтруктураРесурсов.Цена;
    Сообщить(Цена);
    КонецПроцедуры
    
    
    Выдает вот такую ошибку:{Обработка.РаспоряжениеНаУстановкуЦенПокупателя.Форма.Форма(63)}: Ошибка при вызове метода контекста (Получить): Несоответствие типов (параметр номер "1")
    СтруктураРесурсов = РегистрыСведений.РегистрСведений1.Получить(ДатаУстановки, СтруктураОтбора);
    по причине:
    Несоответствие типов (параметр номер "1")
    И ничего не помогает. В чем может быть дело? Ргистр сведений имеет измерения товар поставщик и вес с типом данных "Строка". Может тип данных должен быть ссылка на справочники? Может из зи этого ошибка? Но если изменю это в регистре то появляется ошибка "Записи регистра сведений стали не уникальными: Регистр сведений1". Что он кстати тоже значит?
  2. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Дык а регистр периодический или нет?
    Если не периодический (судя по сообщению) - то нафига туда дата пихается?
  3. TopicStarter Overlay
    Саша82
    Offline

    Саша82 Активный ученик

    Регистрация:
    11 окт 2007
    Сообщения:
    307
    Симпатии:
    0
    Баллы:
    26
    Удалил "ДатаУстановки" из процедуры. Ошибка выходит таже самая только без "ДатаУстановки"! :unsure:
    Это все я взял из другой обработки и там это работает. Сравнивал ее со своей все вроде одинаково только там измерения ссылки на справочники. Может из за этого?
  4. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Дык вес - это измерение? тогда не прокатит - требуется указание ВСЕХ измерений в этой функции.
  5. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Да, лучше воспользуйтесь запросом! Вообще не стоит привыкать работать с регистрами через методы.
  6. TopicStarter Overlay
    Саша82
    Offline

    Саша82 Активный ученик

    Регистрация:
    11 окт 2007
    Сообщения:
    307
    Симпатии:
    0
    Баллы:
    26
    Сделал вот такой запрос:
    Код:
    Запрос= Новый Запрос("ВЫБРАТЬ РегистрСведений1.Постовщик, РегистрСведений1.Цена
    | ИЗ
    |    РегистрСведений.РегистрСведений1 КАК РегистрСведений1
    | ГДЕ
    |РегистрСведений1.Постовщик = &Какаду И
    |РегистрСведений1.Цена < &Цена");
    
    Запрос.УстановитьПараметр("Какаду",Поставщик); 
    Запрос.УстановитьПараметр("Цена",10);
    Выборка= запрос.выполнить();
    ht=выборка.Выбрать();
    Пока ht.Следующий() цикл
    Сообщить(выборка.товар);
    
    Конеццикла
    
    Но он что то не работает :unsure:
    Поставщик это на форме поле с ссылкой на справочник Поставщики. Данные у него Поставщик. И вобще если можно в двух словах зачем нужно это "Данные" что в нем указывать для поля ввода?
  7. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    1. Я рекомендую писать грамотно - меньше путаницы будет, "ПостОвщик" через "о" не пишется!
    2. В отладчике смотрите какие данные вы передаете, может поставщик у вас Неопределено
    3. Не используйте смесь языков английского и русского

    А вообще рекомендую вам для начала книжку прочесть, Радченко, например.
  8. TopicStarter Overlay
    Саша82
    Offline

    Саша82 Активный ученик

    Регистрация:
    11 окт 2007
    Сообщения:
    307
    Симпатии:
    0
    Баллы:
    26
    1.Спасибо за совет. Книжку читаю назвывается "Профессиональная разработка в системе 1С Предприятие 8.0" :unsure:
    2.Поставщик передается "Какаду" собственно как я и выбираю в поле ввода. А вот ht отладчик пишет
    "Ошибка чтения значения"!?
    3.Почему же не использовать смесь языков. Я вобще хотел на английском пописать. Вот только незнаю как сделать чтоб подсказка (после точки) была на английском и синтаксис помошник показывал то что я выбираю при (shift f1). Если поставить английскую версию это что то даст?
  9. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Сравни свой код:
    Код:
    Выборка= запрос.выполнить();
    ht=выборка.Выбрать();
    Пока ht.Следующий() цикл
    Сообщить(выборка.товар);   
    Конеццикла
    
    с правильным кодом:
    Код:
    Выборка= запрос.выполнить().Выбрать();
    Пока Выборка.Следующий() цикл
    Сообщить(выборка.товар);    
    Конеццикла
    
    ЗЫ. Ты пытался обратится к РЕЗУЛЬТАТУ запроса (Выборка), а не выборке (ht) - следи за именами переменных.
  10. TopicStarter Overlay
    Саша82
    Offline

    Саша82 Активный ученик

    Регистрация:
    11 окт 2007
    Сообщения:
    307
    Симпатии:
    0
    Баллы:
    26
    Код:
    Запрос= Новый Запрос("ВЫБРАТЬ РегистрСведений1.Постовщик, РегистрСведений1.Цена
    | ИЗ
    |    РегистрСведений.РегистрСведений1 КАК РегистрСведений1
    | ГДЕ
    |РегистрСведений1.Постовщик = &Какаду И
    |РегистрСведений1.Цена > &Цена");
    
    Запрос.УстановитьПараметр("Какаду",Поставщик);
    Запрос.УстановитьПараметр("Цена",Цена);
    Выборка= запрос.выполнить().Выбрать();
    Пока Выборка.Следующий() цикл
    Сообщить(Выборка.Товар);
    Конеццикла
    
    Ничего не получается :unsure: Может потому что в регистр запись в измерение "Постовщик" я сделал не сразу а делаю потом. Ну тоесть отдельно открыл "Список РегистрСведений1" и добавил в это поле "Поставщик" к некоторым записям "Какаду".? Ошибки не какой не выдает. Просто не выводит наименование товара. Ведь даже если эти поля вобще не заполнять должен показать наименование всех товаров кроме где "Какаду". Или может потому что "цена" это ресурс?
  11. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Покажи срин структуры регистра и скрин, что у тебя там храниться.
    Нефига не понимаю :)
  12. TopicStarter Overlay
    Саша82
    Offline

    Саша82 Активный ученик

    Регистрация:
    11 окт 2007
    Сообщения:
    307
    Симпатии:
    0
    Баллы:
    26
    Прикрепил к сообщению файлы изображений. Попробовал вставить изображение но там надо ввести полный url. Попробовал эти файлы закачать к себе на сайт и ввести путь до них. Но они не показываются. Может надо из в Html страничку вначале вставить? Как это тут на форуме правильно делать?

    Вложения:

    • 1.JPG
      1.JPG
      Размер файла:
      166,1 КБ
      Просмотров:
      246
    • 2.JPG
      2.JPG
      Размер файла:
      150,9 КБ
      Просмотров:
      210
    • 3.JPG
      3.JPG
      Размер файла:
      145,8 КБ
      Просмотров:
      164
    • 4.JPG
      4.JPG
      Размер файла:
      149,1 КБ
      Просмотров:
      158
    • 5.JPG
      5.JPG
      Размер файла:
      216,6 КБ
      Просмотров:
      150
  13. AlexFF
    Offline

    AlexFF Разбирающийся

    Регистрация:
    6 мар 2007
    Сообщения:
    565
    Симпатии:
    1
    Баллы:
    26
    Ну если я тебя правильно понял то Реквизит формы "Поставщик" имеет Тип значения СправочникСсылка.Поставщик в регистре же у тебя "Поставщик" это строка.
    Соответсвенно передавая параметр в запрос ты передаешь ссылку на элемент справочника а не как не название "Какаду"
  14. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    УжОс!

    Значиться:

    ПостАвщик - СправочникСсылка.Контрагенты
    Товар - СправочникСсылка.Номенклатура
    Вес убрать в ресурсы - если только не совсем специфично, ибо тормозить будет не по-детски при больших объемах данных, выставить как Число
    Цена - Число

    Естессно, что у тебя нефига не работает :)

    ЗЫ. При смене типа - данные похерятся.

    Добавлено:

    А вес, в твоем случае - это вообще в единицы измерения.
  15. TopicStarter Overlay
    Саша82
    Offline

    Саша82 Активный ученик

    Регистрация:
    11 окт 2007
    Сообщения:
    307
    Симпатии:
    0
    Баллы:
    26
    Попробовал сделать измерению "Постовщик" "СправочникCсылка.Поставщики" и теперь ничего не происходит.

    Попробовал полю ввода "Поставщик" сделать тип значения "Строка" и выводит вот такую ошибку:
    "{Обработка.РаспоряжениеНаУстановкуЦенПокупателя.Форма.Форма(84)}: Поле объекта не обнаружено (Товар)
    Сообщить(Выборка.Товар);"
    Как тогда туда передать название Какаду? Выбирая в поле ввода из "СправочникCсылка.Поставщики".
    1.При изменение регистра и нажатие F5 выдает вот так "Записи регистра сведений стали не уникальными:РегистрСведений1"и потом помогает только загрузка конфигурации из базы данных. Почему то обратное изменение регистра все равно не помогает. Ошибка это все равно вылезает!?
    2.Почему то сутра после включение компьютера эти записи "Какаду" из регистра исчезли! Но все остальное осталось на месте. Почему так B) ?
    3. Дело все в том что эти все записи в регистр я записываю обработкой. Ну короче сам пытаюсь состряпать обработку которая бы из Excel листа сразу грузила в Справочник.Номенклатуру и при желании в регист. И когда я измерениям делаю ссылку на справочник то эта обработка мая перестают работать :D Тут кстати можно что то сделать? А вес мне в регистре вобще не нужен. Я его вставил только потому что некотрые товары одинаковы по названию но у них разный вес. Если я его вставлю в ресурсы то ничего не выйдет. А почему нефига не работает я так и не понял :unsure:
  16. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Поставщик.Наименование - но этой ужасный способ, изучи, что такое ссылка на объект и как этим пользоваться.
    Потому измерения обнулились - удали нафиг этот регистр и создай новый.

    Изобретаешь велокат - такая обработка уже есть.

    Вратце - тебе надо искать соответствие по наименованию и другим параметрам и сохранять ссылку на
    этот объект, либо создавать новый и, опять-таки, сохранять ссылку на него. Но это очень вкратце.
  17. AlexFF
    Offline

    AlexFF Разбирающийся

    Регистрация:
    6 мар 2007
    Сообщения:
    565
    Симпатии:
    1
    Баллы:
    26
    ну для начала я думаю можно убить регистр вААбще и не мучиться (или как вариант написать обработку которая из этих строк сделает ссылки и запихнет в другой регистр) Создавай новый регистр
    И присваивой значения Поставщик - Справочник.Контрагенты Товары-Справочник.Номенклатура.
    Обработку которая у тебя из екселя в Справочник номенклатура гонит правишь. Раз записываешь элемент в справочник значит и ссылку на него имеешь тогда Регистр.Товар -это НЕ ЗНАЧЕНИЕ ЯЧЕЙКИ екселя, а ссылка на элемент который ты только что записал в справочник.номенклатура а поставщика соотвественно можешь найти по наименованию. И опятьже регистр.поставщик у тебя должно быть не значение ячейки экселя а ссылка на элемент который ты нашел или создал. Если есть книжка простые примеры разработки там как раз есть пример загрузки из екселя. Или сейчас попробую найти вроде у меня он был.
  18. AlexFF
    Offline

    AlexFF Разбирающийся

    Регистрация:
    6 мар 2007
    Сообщения:
    565
    Симпатии:
    1
    Баллы:
    26
    Код:
    Процедура КнопкаВыполнитьНажатие(Кнопка)
    
    Если ЭлементыФормы.ПутьКФайлу.Значение = ""  Тогда
    Предупреждение("Не выбран файл");
    Возврат;    
    КонецЕсли; 
    
    Док = ПолучитьCOMОбъект(ЭлементыФормы.ПутьКФайлу.Значение); 
    // получаем родителя для которого производиться загрузка номенклатуры
    Канцтовары = Справочники.Номенклатура.НайтиПоКоду("40050400111");
    счСтроки = 1; 
    
    Пока Док.Sheets(1).Cells(СчСтроки,1).Value <> Неопределено Цикл
    
    Товар = СокрЛП(Док.Sheets(1).Cells(СчСтроки,1).Value);
    ЕдИзм = СокрЛП(Док.Sheets(1).Cells(СчСтроки,2).Value); 
    Цена = Число(Док.Sheets(1).Cells(СчСтроки,3).Value); 
    
    //Выделяем артикул (первые сиволы до пробела)
    Артикул = Лев(Товар, Найти(Товар, " "));
    //Пытаемся найти этот артикул в номенклатуре 
    //(искать будем только в канцтоварах. Артикул забит в наименовании и он уникальный)
    ЭлементСсылка = Справочники.Номенклатура.НайтиПоНаименованию(Артикул,,Канцтовары,);
    
    Если ЭлементСсылка.Пустая() Тогда
    
    СпрНом = Справочники.Номенклатура.СоздатьЭлемент();
    СпрНом.Родитель = Канцтовары;
    СпрНом.Наименование = Товар;
    СпрНом.НаименованиеПолное = Товар;
    СпрНом.СтавкаНДС = Перечисления.СтавкиНДС.НДС18;
    Если ЕдИзм = "шт." Тогда
    СпрНом.БазоваяЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоКоду("796");
    ИначеЕсли ЕдИзм = "наб." Тогда
    СпрНом.БазоваяЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоКоду("501");
    ИначеЕсли ЕдИзм = "уп." Тогда    
    СпрНом.БазоваяЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоКоду("8");
    КонецЕсли;    
    СпрНом.Комментарий = "Добавлено из прайса от " + Строка(ТекущаяДата());
    СпрНом.Записать();
    ЭлементСсылка = СпрНом.Ссылка;  
    
    КонецЕсли;    
    
    счСтроки = счСтроки + 1; 
    КонецЦикла; 
    Сообщить("Обработано " + Строка(счСтроки-1) + " позиций");
    Док.Application.Quit(); 
    
    
    КонецПроцедуры
    
    
    
    Значение измерения "Товар" твоего регистра должно быть равно ЭлементСсылка
    Также находишь по наименованию и поставщика
    Постащик = Справочники.Контрагенты.НайтиПоНаименованию("Наименование")
    и записываещь в измерение Поставщик = Поставщик.Ссылка

    Код на работоспособность не проверял. Но вроде все правильно. Главное улови смысл.
  19. TopicStarter Overlay
    Саша82
    Offline

    Саша82 Активный ученик

    Регистрация:
    11 окт 2007
    Сообщения:
    307
    Симпатии:
    0
    Баллы:
    26
    Вроде уловил. Спасибо.
  20. TopicStarter Overlay
    Саша82
    Offline

    Саша82 Активный ученик

    Регистрация:
    11 окт 2007
    Сообщения:
    307
    Симпатии:
    0
    Баллы:
    26
    А что значит измерения обнулись?
    А вобще если постоянно удалять измерения создавать менять что в конфигурации в ней могут накапливаться какие не будь ошибки? Ну, как в Windows когда устанавливаешь какие не будь программы потом удаляешь какой то мусор от них может оставаться. В 1С базе данных такое есть? Если да то это можно как то чистить?

Поделиться этой страницей