Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Очень популярная тема (более 25 ответов) в справочнике реквизит имеет тип Неопределенный (число прочтений - 6827 )
dsclue
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 49
Местоположение: Санкт-Петербург
Зарегистрирован: 15. Апреля 2015
Пол: Мужской
в справочнике реквизит имеет тип Неопределенный
10. Июня 2015 :: 16:30
Печать  
Подскажите, пожалуйста,
в Справочник.ФиксированныеЦены  реквизит Объект имеет тип Неопределенный
это Строка, Перечисление.ЗонаДействия или справочник
Как получить его Descr, т.е. Наименование = Строку

SELECT  
     СпрНом.Descr as Номенклатура
     ,$СпрФиксЦены.Объект as ЗонаДействия
FROM
     $Справочник.ФиксированныеЦены As СпрФиксЦены

LEFT JOIN
     $Справочник.Номенклатура AS СпрНом
                        ON СпрНом.ID = $СпрФиксЦены.Номенклатура

WHERE (СпрНом.ISMARK=0) AND (СпрНом.ISFOLDER=2)
";
  
Наверх
 
IP записан
 
dsclue
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 49
Местоположение: Санкт-Петербург
Зарегистрирован: 15. Апреля 2015
Пол: Мужской
Re: в справочнике реквизит имеет тип Неопределенный
Ответ #1 - 10. Июня 2015 :: 19:55
Печать  
допустим так:

CREATE TABLE "+#ПеречисленияЗонаДействия+" (VAL CHAR(9));")
INSERT INTO #ПеречисленияЗонаДействия (VAL) VALUES ('"+Значение+"')

вязать по таблице #ПеречисленияЗонаДействия

во основной таблице:

INNER JOIN #ПеречисленияЗонаДействия AS Перечисл  ON $СпрФиксЦены.Объект = Перечисл.ID

НО по строке как
Как по справочнику?

ох поможите, пожалуйста, Профи.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: в справочнике реквизит имеет тип Неопределенный
Ответ #2 - 10. Июня 2015 :: 20:03
Печать  
(0) сколько строк в справочнике ?
Не легче ли завести несколько полей конкретного типа чем пытаться
запихнуть в одно поле.Как бы в subj мнимая экономия байтов,

Ну можешь еще о нормализации таблиц вспомнить.

И еще учти что в неопределенном типе не просто строка может храниться а строка не более 20 символов.

Ну и опиши задачу.
  
Наверх
 
IP записан
 
dsclue
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 49
Местоположение: Санкт-Петербург
Зарегистрирован: 15. Апреля 2015
Пол: Мужской
Re: в справочнике реквизит имеет тип Неопределенный
Ответ #3 - 10. Июня 2015 :: 20:15
Печать  
Z1 ,благодарю за ответ
справочник есть данная данность и он таков:

мне нужно подключаться к многим сиквельным базам /на выбор юзера/
выполнять одинаковый запрос
укладовать в таб по ЗонаДействия  - что есть /конфа 77 одинаковая/
"тип Неопределенный
это Строка, Перечисление.ЗонаДействия или справочник
Как получить его Descr, т.е. Наименование = Строку"

Получить эту ЗонаДействия как строку
и укомплектовать в отчетик по всем региональным базам.
ХЕЛП.
  
Наверх
 
IP записан
 
dsclue
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 49
Местоположение: Санкт-Петербург
Зарегистрирован: 15. Апреля 2015
Пол: Мужской
Re: в справочнике реквизит имеет тип Неопределенный
Ответ #4 - 10. Июня 2015 :: 20:32
Печать  
вид в конфе:
  

___________006.jpg ( 20 KB | Загрузки )
___________006.jpg
Наверх
 
IP записан
 
dsclue
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 49
Местоположение: Санкт-Петербург
Зарегистрирован: 15. Апреля 2015
Пол: Мужской
Re: в справочнике реквизит имеет тип Неопределенный
Ответ #5 - 10. Июня 2015 :: 20:42
Печать  
значения в нем прописаны в доке, который создает элементы автоматом/ОбработкаПроведения/

Если СпсОбъектов.Тип = "Маг" Тогда
     ФиксЦены.НазначитьТип("Объект","Справочник.Магазин");
ИначеЕсли СпсОбъектов.Тип = "Рег" Тогда
     ФиксЦены.НазначитьТип("Объект","Перечисление.Регионы");
ИначеЕсли СпсОбъектов.Тип = "Все" Тогда
     ФиксЦены.НазначитьТип("Объект","Строка",1);
КонецЕсли;                                                
ФиксЦены.Объект       = СпсОбъектов.Объект;
ФиксЦены.Записать();                        

вот так.

на одной базе считаю языков 1с-ки
а вот пробежаться по всем сиквельным базам с параметром базы могу одним отчетом подключениями и прямыми запросами.

  
Наверх
 
IP записан
 
dsclue
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 49
Местоположение: Санкт-Петербург
Зарегистрирован: 15. Апреля 2015
Пол: Мужской
Re: в справочнике реквизит имеет тип Неопределенный
Ответ #6 - 10. Июня 2015 :: 21:53
Печать  
Мысли придут поутру.
хоть и работаю программером с древности, /кстати, мы с Сашей Борковом аналог Волковкоммандера написали на год раньше./
надо и спать....
ох, если-б была одна задача:
и снеговик и клющки и теперь прямое через ВК на сиквел 2000, 2005...
Ух, чепуха - начальство!
где-то наши годыУлыбка)
мне свего-то 52, а учен в физ-мате 30-й
// извините, это ремарка была UP
Печаль
  
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: в справочнике реквизит имеет тип Неопределенный
Ответ #7 - 11. Июня 2015 :: 00:06
Печать  
Можно посмотреть примеры выборки разных вариантов, выделить в них ключевые префиксы, по которым и выбирать нужный вариант. Например: у Перечисление префикс будет "   4R  "- тогда CASE LEFT(field,8) WHEN "   4R  " THEN $Перечисление.Тип WHEN ... ну и т.д.
  
Наверх
ICQ  
IP записан
 
dsclue
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 49
Местоположение: Санкт-Петербург
Зарегистрирован: 15. Апреля 2015
Пол: Мужской
Re: в справочнике реквизит имеет тип Неопределенный
Ответ #8 - 11. Июня 2015 :: 00:52
Печать  
Salimbek, Дорогой
я последних две недели только в восьмерошной СКД купался
покажи,пож., как? воть один шаблончик.плиз
будут безмерно благодарен.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: в справочнике реквизит имеет тип Неопределенный
Ответ #9 - 11. Июня 2015 :: 08:00
Печать  
А занафига тебе его наименование ?
Типизируй его как $Неопределенный и привет

Ну или через case определяй вид объекта и соединяй с нужной табличкой.. один хрен в 23 есть и вид и тип.
  
Наверх
 
IP записан
 
dsclue
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 49
Местоположение: Санкт-Петербург
Зарегистрирован: 15. Апреля 2015
Пол: Мужской
Re: в справочнике реквизит имеет тип Неопределенный
Ответ #10 - 11. Июня 2015 :: 08:28
Печать  
<Eprst> Добрый день.
не понимаю - слабоват

как сделать: "Типизируй его как $Неопределенный и привет"

SELECT 
     СпрНом.Descr as Номенклатура
     ,$СпрФиксЦены.Объект as ЗонаДействия
FROM
     $Справочник.ФиксированныеЦены As СпрФиксЦены

LEFT JOIN
     $Справочник.Номенклатура AS СпрНом
                       ON СпрНом.ID = $СпрФиксЦены.Номенклатура
  
Наверх
 
IP записан
 
dsclue
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 49
Местоположение: Санкт-Петербург
Зарегистрирован: 15. Апреля 2015
Пол: Мужской
Re: в справочнике реквизит имеет тип Неопределенный
Ответ #11 - 11. Июня 2015 :: 08:33
Печать  
въехал

,$СпрФиксЦены.Объект as [ЗонаДействия $Неопределенный]
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: в справочнике реквизит имеет тип Неопределенный
Ответ #12 - 11. Июня 2015 :: 08:45
Печать  
Да, так и есть, имхо, более чем достаточно. Если только , остальные реквизиты с этого объекта не нужны.
  
Наверх
 
IP записан
 
dsclue
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 49
Местоположение: Санкт-Петербург
Зарегистрирован: 15. Апреля 2015
Пол: Мужской
Re: в справочнике реквизит имеет тип Неопределенный
Ответ #13 - 11. Июня 2015 :: 08:52
Печать  
что-то не получается

State 42S22, native 207, message [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid column name 'ЗонаДействия'.
|SELECT 
|      ФиксЦены.Номенклатура as Номенклатура
|      ,ФиксЦены.ЗонаДействия
|      ,ФиксЦены.Цена1 as Цена1
|      ,ФиксЦены.Цена2 as Цена2
|      ,ФиксЦены.Документ as Документ
|      ,ФиксЦены.ДатаЗавершения as ДатаЗавершения
|      ,ФиксЦены.Серия as Серия
|FROM
|      (
|SELECT 
|      СпрНом.Descr as Номенклатура
|      ,$СпрФиксЦены.Объект as [ЗонаДействия $Неопределенный]
|      ,$ПоследнееЗначение.ФиксированныеЦены.Цена1(СпрФиксЦены.ID, :НаДату) as Цена1
|      ,$ПоследнееЗначение.ФиксированныеЦены.Цена2(СпрФиксЦены.ID, :НаДату) as Цена2
|      ,$ПоследнееЗначение.ФиксированныеЦены.Документ(СпрФиксЦены.ID, :НаДату) as Документ
|      ,$ПоследнееЗначение.ФиксированныеЦены.ДатаЗавершения(СпрФиксЦены.ID, :НаДату) as ДатаЗавершения
|      ,$СпрФиксЦены.Серия as Серия
|FROM
|      $Справочник.ФиксированныеЦены As СпрФиксЦены
|LEFT JOIN
|      $Справочник.Номенклатура AS СпрНом ON СпрНом.ID = $СпрФиксЦены.Номенклатура
|
|
|WHERE (СпрНом.ISMARK=0) AND (СпрНом.ISFOLDER=2)
|   ) ФиксЦены
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: в справочнике реквизит имеет тип Неопределенный
Ответ #14 - 11. Июня 2015 :: 08:54
Печать  
Еще бы..
Типизировать надо во внешнем селекте

Который, и не нужен вовсе в этом запросе.
  
Наверх
 
IP записан
 
dsclue
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 49
Местоположение: Санкт-Петербург
Зарегистрирован: 15. Апреля 2015
Пол: Мужской
Re: в справочнике реквизит имеет тип Неопределенный
Ответ #15 - 11. Июня 2015 :: 09:19
Печать  
Наименование на локальной базе получаю.

На удаленной - Объект Не найден:

см.в отладчике
  

____________001.jpg ( 65 KB | Загрузки )
____________001.jpg
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: в справочнике реквизит имеет тип Неопределенный
Ответ #16 - 11. Июня 2015 :: 09:47
Печать  
Удаленная база - это че у вас ?
Запрос по оле что ле ?
Если объект не найден - его там тупо нет. ССылка есть, самого объекта нема (удалили его непосредственно там).

Ну или удаленная база - не прямой потомок.

ЗЫ: вы пытаетесь прямой запрос к удаленной базе делать, или что ?
Если да, то удаленная база - прямой потомок этой базы ? А то типизировать к объектам "этой" базы не получится.
ЗЫЫ: типизировать получится, если сторонняя база, например, архивная копия.
  
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: в справочнике реквизит имеет тип Неопределенный
Ответ #17 - 11. Июня 2015 :: 09:48
Печать  
Код
Выбрать все
|	,$СпрФиксЦены.Объект as [ЗонаДействия $Неопределенный] 


заменить на
Код
Выбрать все
|	,$СпрФиксЦены.Объект as ЗонаДействия 


а вот вверху типизировать
Код
Выбрать все
ФиксЦены.ЗонаДействия as [ЗонаДействия $Неопределенный] 

  
Наверх
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: в справочнике реквизит имеет тип Неопределенный
Ответ #18 - 11. Июня 2015 :: 09:49
Печать  
Прошу прощения у Ёпрст - не заметил комментарий
  
Наверх
IP записан
 
dsclue
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 49
Местоположение: Санкт-Петербург
Зарегистрирован: 15. Апреля 2015
Пол: Мужской
Re: в справочнике реквизит имеет тип Неопределенный
Ответ #19 - 11. Июня 2015 :: 10:08
Печать  
есть несколько баз с одинаковой конфой
подключаюсь к каждой и выполняю select
затем обрабатываю общую таблицу.
не олехой подключаюсь, а  вот так:

Запрос = ТекстЗапроса;

База   =   СоздатьОбъект("ODBCDataBase");
ЗапросКБазе=СоздатьОбъект("ODBCRecordSet");
МетаБух  =  СоздатьОбъект("MetaDataWork");
МетаБух.ПрисоединитьМД(Путь+"1Cv7.md");
База.ПрисоединитьИБ(Путь,"Контролер","");
База.УстТолькоЧтение(1);
ЗапросКБазе.УстБД(База);

ЗапросКБазе.ВыполнитьИнструкцию(Запрос,ТабРез,Очистить);

ЗапросКБазе.Закрыть();
База.Закрыть();
Возврат ТабРез;
  
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: в справочнике реквизит имеет тип Неопределенный
Ответ #20 - 11. Июня 2015 :: 10:39
Печать  
Типизация происходит уже в конечной 1С-ке - по полученным ИД-шникам 1С-ка лезет в текущую базу и ищет объекты. Разумеется в текущей базе у тебя Объектов другой базы нет, вот и выходит "Объект не найден". Можно лишь попытаться из другой базы получить Наименование.
Для получения шаблонов - можешь сделать запрос, типа "select distinct top 10 $СпрФиксЦены.Объект as ИсходныйВид, $СпрФиксЦены.Объект as [ЗонаДействия $Неопределенный] from  $Справочник.ФиксированныеЦены As СпрФиксЦены" в разных базах и посмотреть - что там в реальной выборке.
  
Наверх
ICQ  
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: в справочнике реквизит имеет тип Неопределенный
Ответ #21 - 11. Июня 2015 :: 10:48
Печать  
Единственное, можно типизировать к объектам Этой базы, если есть хоть какая-нить синхронизация между базами, например, ко коду/наименованию или еще как. Тогда просто левым соединением ищем объект из этой базы и всё.
  
Наверх
 
IP записан
 
dsclue
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 49
Местоположение: Санкт-Петербург
Зарегистрирован: 15. Апреля 2015
Пол: Мужской
Re: в справочнике реквизит имеет тип Неопределенный
Ответ #22 - 11. Июня 2015 :: 11:24
Печать  
Последние сделать КАК "просто левым соединением ищем объект из этой базы и всё."
??

SELECT 
     СпрНом.Descr as Номенклатура
     ,$СпрФиксЦены.Объект as ЗонаДействия
FROM
     $Справочник.ФиксированныеЦены As СпрФиксЦены
LEFT JOIN
     $Справочник.Номенклатура AS СпрНом ON СпрНом.ID = $СпрФиксЦены.Номенклатура
WHERE (СпрНом.ISMARK=0) AND (СпрНом.ISFOLDER=2)

LEFT JOIN ( SELECT  ....  ) as Текущая
on $СпрФиксЦены.Объект = Текущая.ЗонаДействия
  
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: в справочнике реквизит имеет тип Неопределенный
Ответ #23 - 11. Июня 2015 :: 11:32
Печать  
Здесь нужно не использовать ПрисоединитьИБ
Присоединять md в MetaDataWork, строить текст запроса и вязать его через ИмяБазы.dbo.ИмяТаблицы. Запрос выполнять в исходной базе. В этом случае получится соединение.
http://infostart.ru/public/16515/
Вот тут я делал сравнение в SQL проводок по документам. Посмотри.
  
Наверх
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: в справочнике реквизит имеет тип Неопределенный
Ответ #24 - 11. Июня 2015 :: 12:20
Печать  
Если базы на разных серверах скуля, то прилинковать сервак сперва, далее, так (мини пример для справочника, синхронизация по коду, потом , найдя объект в "этой" базе просто типизируешь):

Код
Выбрать все
Процедура Сформировать()


    рс=создатьОбъект("ODBCRecordSet");

     ТекстЗапроса = "
    |SELECT
    |    СпрНаш.DESCR as КлиентосВЭтойбазе  -- наименование клиентоса в  этой базе, можно и не присоединять справочник, а просто типизировать
    |    ,Спр.DESCR as КлиентосВУдаленнойБазе --наименование клиентоса в удаленной базе
    |FROM $Справочник.Контрагенты СпрНаш
    |left join dataBase2.dbo.@Справочник.Контрагенты Спр on СпрНаш.Code = Спр.Code
    |";
    глМД = СоздатьОбъект("MetaDataWork");
    ТекстЗапроса=глМД.ОбрМетаСКЛ(ТекстЗапроса);
    глМД2 = СоздатьОбъект("MetaDataWork");
    ПутьКБазе2 = "D:\полный путьк базе данных\";
    глМД2.ПрисоединитьМД(ПутьКБазе2+"1Cv7.md");
    ТекстЗапроса=СтрЗаменить(ТекстЗапроса,"@","$");
    ТекстЗапроса=глМД2.ОбрМетаСКЛ(ТекстЗапроса);

    Т = рс.ВыполнитьИнструкцию(ТекстЗапроса);
    Т.ВыбратьСтроку();

КонецПроцедуры 


  
Наверх
 
IP записан
 
dsclue
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 49
Местоположение: Санкт-Петербург
Зарегистрирован: 15. Апреля 2015
Пол: Мужской
Re: в справочнике реквизит имеет тип Неопределенный
Ответ #25 - 11. Июня 2015 :: 20:04
Печать  
Дорогие ДРУЗЬЯ,
слепил через Оле.
Пока, я слепил на 15 баз на разных sql серварах в прямом подключении через Олеху.
результат, конечно, получил, региональный менеджер доволен.
// юзеры поехали отдыхать
но хотел бы вспомнить молодость// см. выше
на снеговиках проще.

НО я сделаю - это принципиально.
Благодарю Вас Всех.
С Наступившим Праздником.
Спасибо.
всегда преданный Вам,
clue
Улыбка

  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать