IPB Style© Fisana

Перейти к содержимому


Код справочника число как строка


  • Чтобы отвечать, сперва войдите на форум
15 ответов в теме

#1 g789

g789

    Полковник

  • Пользователи
  • ФишкаФишкаФишкаФишкаФишкаФишка
  • 213 Сообщений:
44
  • ГородКиев , ,

Опубликовано 14 February 2012 - 10:43

В базе есть документ (пусть будет Документ), у него есть реквизит шапки типа Справочник. У Справочника установлен тип кода "Числовой" - Длина 5.
В коде обработки пишем так
КодРекв = Документ.Справочник.Код;
Если КодРекв = 2 Тогда
  ....
КонецЕсли
Это не работает, работает
КодРекв = Документ.Справочник.Код;
Если КодРекв = "2" Тогда
  ....
КонецЕсли
т.е. проверка на число не работает, работает проверка на строку :blink: . Почему?

#2 Valerka

Valerka

    Генералиссимус

  • Модераторы
  • 1299 Сообщений:
218
  • ГородКаменец-Подольский

Опубликовано 14 February 2012 - 10:45

Посмотрите в отладчике, что передает выражение
Документ.Справочник.Код
Можно ответить на любой вопрос, если вопрос задан правильно.
Если сообщение помогло Вам - не забудьте нажать на МАЛЕНЬКУЮ стрелочку справа снизу :)

#3 g789

g789

    Полковник

  • Пользователи
  • ФишкаФишкаФишкаФишкаФишкаФишка
  • 213 Сообщений:
44
  • ГородКиев , ,

Опубликовано 14 February 2012 - 10:47

Прочитать сообщениеValerka, 14 February 2012 - 10:45, написал:

Посмотрите в отладчике, что передает выражение
Документ.Справочник.Код
так строку и возвращает. В конфигураторе тип - Число. В базе код можно ставить, только чиловой. а возвращает Строку. :blink:

#4 5_kopeek

5_kopeek

    Генерал-лейтенант

  • Модераторы
  • 576 Сообщений:
296
  • ГородУкраина

Опубликовано 14 February 2012 - 11:09

Вы уверены, что в конфигурации смотрите именно на тот же справочник, который используете в коде? Иногда бывают названия похожи или еще чего... Или, может, какие неявные функции преобразования типа значения используете?

#5 Valerka

Valerka

    Генералиссимус

  • Модераторы
  • 1299 Сообщений:
218
  • ГородКаменец-Подольский

Опубликовано 14 February 2012 - 11:12

Значит данный метод возвращает строку :)
Можно ответить на любой вопрос, если вопрос задан правильно.
Если сообщение помогло Вам - не забудьте нажать на МАЛЕНЬКУЮ стрелочку справа снизу :)

#6 g789

g789

    Полковник

  • Пользователи
  • ФишкаФишкаФишкаФишкаФишкаФишка
  • 213 Сообщений:
44
  • ГородКиев , ,

Опубликовано 14 February 2012 - 11:17

Прочитать сообщение5_kopeek, 14 February 2012 - 11:09, написал:

Вы уверены, что в конфигурации смотрите именно на тот же справочник, который используете в коде? Иногда бывают названия похожи или еще чего... Или, может, какие неявные функции преобразования типа значения используете?
Конфа старая АБТ с кучей добавок, переписанная вдоль и поперек (CRM, 1с++ и т.д.) да и "писателей" до меня было нимало, поэтому ни в чем не уверен. :unsure:
Проблема возникла на справочнике ВидыНалогов, в типовых код строковый ( "НДС20") - у меня числовой (2). при переписке импорта в xml воткнулся в такой полтергейст

#7 g789

g789

    Полковник

  • Пользователи
  • ФишкаФишкаФишкаФишкаФишкаФишка
  • 213 Сообщений:
44
  • ГородКиев , ,

Опубликовано 14 February 2012 - 11:20

Прочитать сообщениеValerka, 14 February 2012 - 11:12, написал:

Значит данный метод возвращает строку :)

Документ.Справочник.Код - ни одного метода - одни свойства :rolleyes:
Вот только где бы почитать о таких не явных преобразованиях :angry:

#8 pak

pak

    Генерал-майор

  • Модераторы
  • 273 Сообщений:
77
  • ГородСолнечный Крым

Опубликовано 14 February 2012 - 11:20

Если вопрос не принципиальный, написать :

КодРекв = Число(Документ.Справочник.Код);

и забыть.

Если принципиальный - бог в помощь

#9 g789

g789

    Полковник

  • Пользователи
  • ФишкаФишкаФишкаФишкаФишкаФишка
  • 213 Сообщений:
44
  • ГородКиев , ,

Опубликовано 14 February 2012 - 11:22

Прочитать сообщениеpak, 14 February 2012 - 11:20, написал:

Если вопрос не принципиальный, написать :

КодРекв = Число(Документ.Справочник.Код);
так и написал, но "осадок-то остался"

#10 5_kopeek

5_kopeek

    Генерал-лейтенант

  • Модераторы
  • 576 Сообщений:
296
  • ГородУкраина

Опубликовано 14 February 2012 - 11:40

Интересно стало, оказывается, в методе ПоискПоКоду при числовом типе кода ищет и когда код задан как строка, и когда код задан как число. А атрибут Код всегда содержит строку.

#11 g789

g789

    Полковник

  • Пользователи
  • ФишкаФишкаФишкаФишкаФишкаФишка
  • 213 Сообщений:
44
  • ГородКиев , ,

Опубликовано 14 February 2012 - 11:42

Взял типовую БУ, в демо базе есть заполнений Справочник.Инвестиции. Написал такой код
спр = СоздатьОбъект("Справочник.Инвестиции");
спр.ВыбратьЭлементы();
Пока спр.ПолучитьЭлемент() = 1 Цикл
Если спр.Код = Строка(спр.Код) Тогда
  Сообщить(Строка(спр.Код) + " " + Спр.Наименование);
КонецЕсли;
КонецЦикла;
получил тоже самое - числовой код возвращает строку

#12 g789

g789

    Полковник

  • Пользователи
  • ФишкаФишкаФишкаФишкаФишкаФишка
  • 213 Сообщений:
44
  • ГородКиев , ,

Опубликовано 14 February 2012 - 11:48

а вот еще такой запрос
SELECT ВидыНалогов.CODE Код
, ВидыНалогов.DESCR Наименование
FROM $Справочник.ВидыНалогов AS ВидыНалогов With (NOLOCK)
WHERE (ВидыНалогов.CODE = '2')
не возвращает значений, а такой
SELECT ВидыНалогов.CODE Код
, ВидыНалогов.DESCR Наименование
FROM $Справочник.ВидыНалогов AS ВидыНалогов With (NOLOCK)
WHERE (ВидыНалогов.CODE = 2)
возвращает.
Значит в БД хранится Число, а не строка.

#13 5_kopeek

5_kopeek

    Генерал-лейтенант

  • Модераторы
  • 576 Сообщений:
296
  • ГородУкраина

Опубликовано 14 February 2012 - 11:49

Лучше проверять через ТипЗначенияСтр(Спр.Код), чем Спр.Код=Строка(Спр.Код). В общем, дает строку. Похоже, атрибут Код преобразовывает.

#14 pak

pak

    Генерал-майор

  • Модераторы
  • 273 Сообщений:
77
  • ГородСолнечный Крым

Опубликовано 14 February 2012 - 11:50

Вот окаянные, :)))

Взял демо базу, открыл словарь данных,
У всех справочников
F=CODE |object code |C  
тип - Char

Век живи - век учись.

#15 Valerka

Valerka

    Генералиссимус

  • Модераторы
  • 1299 Сообщений:
218
  • ГородКаменец-Подольский

Опубликовано 14 February 2012 - 11:53

Хех :)
Можно ответить на любой вопрос, если вопрос задан правильно.
Если сообщение помогло Вам - не забудьте нажать на МАЛЕНЬКУЮ стрелочку справа снизу :)

#16 5_kopeek

5_kopeek

    Генерал-лейтенант

  • Модераторы
  • 576 Сообщений:
296
  • ГородУкраина

Опубликовано 14 February 2012 - 12:02

Мда...




1 пользователей читают эту тему

0 пользователей, 1 гостей, 0 невидимых