#0
by vinogradъ
Помогите с решением проблемы. Есть справочник,в котором хранятся некие значения на документ. Основные реквизиты: Товар, Склад, ТипЗначения, Документ, Значение и др. Значение имеет тип Неопределенный. Может хранить в себе число или ссылку. В скуле имеет тип char. Как получаю значения: Тут все гуд: если получаю число, то возвращается число, если ссылку на элемент справочника - тоже что надо, благодаря типизации. Но если использую функцию GetValueByDoc в запросе (прямом), то тут беда: при получении числа возвращает 'N 29640', ссылки - 'B1 DK F '. Как тут получить нужное значение? Если надо, сама функция: CREATE function GetValueByDoc(@tov char, @skl char, @type char, @doc char) returns char begin declare char set = 0 select top 1 = p.sp9214 from sc9210 as p (nolock) where order by p.sp9265 desc return end Чую, что может как-то подвязать поле TSP9214, где как я понимаю хранится тип значения SP9214? Помогите кто чем может.
#1
by Rie
А если просто первую букву глянуть? N - число, S - строка, B - справочник, O - документ (если мне память не изменяет). И в зависимости от этого - интерпретировать "хвост".
#2
by vinogradъ
делать еще одну функцию по разбору строки, которую вернула функция из и вызывать функции, которые буду возвращать в зависимоcти от результата разбора либо строку с ID справочника, либо число?
#3
by Rie
Не совсем понятно, как эта функция используется в запросе. Может, проще не значение извлекать, а то значение, что из запроса, к 23-символьному преобразовывать.
#4
by vinogradъ
например, тут должно быть как число: select ... $ds.Количество * dbo.GetValueByDoc(Ост.Субконто1, Ост.Субконто2, $Перечисление.ТипыЗначений.Цена, Ост.Субконто3) as Сумма Здесь как ИД select ... Просто раньше тип реквизита Значение был Число, но понадобилось, чтобы хранились и ссылки. Поэтому и сделал тип Неопределенный. В разовом получении значения помогает типизация, а как получить значение нужного типа в запросе - не знаю.
#5
by Rie
Тогда остаётся только анализировать первый символ 23-значного значения, IMHO. Из TSP-полей тип не извлечь. Пару слов на эту тему есть здесь: .
#6
by vinogradъ
Мысли вслух: Может, как вариант, завести новый реквизит ЗначениеСсылка с типом Справочник, а текущий переименовать в ЗначениеЧисло и вернуть тип Число? Тогда сделать функцию с возвращаемым значением numeric и еще одну с char?
#7
by vinogradъ
Блин, еще и дату надо хранить в Значение... Но дату можно писать в char и, получая, делать cast as datetime
#9
by vinogradъ
потом делать, к примеру, cast(ltrim(<значение>) as numeric(14,2)) для числа? для остальных типов как?
#10
by Rie
Для ссылок - просто вырезать 13 символов, начиная с 3-го (или 9 - пропустив вид). Для строк - взять хвост.
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- v7: v7 : НДС при возврате
- Как из типа значения (Тип) получить значение по умолчанию данного типа?
- v7: Что нужно чтоб подключить ККМ Меркурий 112F к 1с V7 Торговля + склад
- v7: v7.7 премещение элемента справочника
- v7: v8: v7: Кто-нибудь сумел скачать комплект отчетности за I квартал 2007 года
- Тип(Реквизит.Тип) = Тип("Строка")
- Тип(Реквизит.Тип) = Тип("Строка")
- Как в неопределенный тип записать нужный тип документа
- v7: 1С V7.7 в сети
- v7: 1C:V7 starter program (for SQL) - обнаружена ошибка
- Как привести значение типа "Описание типов" к значению типа "Тип"
- v7: Перенос данных Бухгалтерия из v7 в v8
В этой группе 1С
- Как получить остатки без учета движений проводимого документа?
- УТ 11 и печатная форма чека ККМ
- Загрузка номенклатуры только с новым штрихкодом. Конвертация данных.
- Создание отчётов другими способами, СКД для управляемых форм, а их ненада
- Загрузка файлов в ИБ и сохранение на диск
- расхождение между счет фактурой и книгой продаж 1с, 8.1 бп
- Штрих-М-ФР-К журнал операций
- Убрать проверку стандартных реквизитов
- Бухгалтерия 3.0. Как убрать диаграмму из отчетов руководителя?
- 1с82 Интерфейс. Как в меню в интерфейсе добавить внешний отчет?
- v7: Проверить существование реквизита на форме
- v8: Не выводится графический элемент на печатную форму
- Можно ли в динамическом списке сделать динамические колонки?
- OFF: Слетает авторизация. Опера, последняя сборка
- Как в окне конфигурации 1с 8.2 сменить цвет фона?
- Вытащить месяц из даты в СКД
- Взаимодействие устройств
- УПП, серийные номера номенклатуры
- Доступ к функции модуля внешней обработки из дополнительной формы
- Условия связи для Наборов данных СКД