Имя: Пароль:
1C
1С v8
Про функцию СодержитТип
,
0 SMakcik
 
14.11.11
11:49
Привет всем!

Есть проблема. Не с того не с сего появилась такая проблема.
В Групповой обработке справочников и документов при отборе поступлений по определенному складу ничего в отборе не появляется.

Начал копать дальше. Оказывается при занесении отбора в копию построитель Склад остаетя пустым.

Пошел дальше есть такая процедура которая устанавливает значение из построителя источника в построитель копию. (УстановитьЗначениеВОтборе(Куда, Откуда))

там есть такая строчка

ИначеЕсли ЭтоСсылкаНаСправочникИлиДокумент(Куда) И ЭтоСсылкаНаСправочникИлиДокумент(Откуда) И (ТипЗнч(Куда) <> ТипЗнч(Откуда)) Тогда

и вот она дает положительный результат при таких значениях

Куда НЕОПРЕДЕЛЕНО возражает истину


есть копи скрин

ВЫРАЖЕНИЕ                                              ЗНАЧЕНИЕ ТИП
Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(Ссылка))    истина    Булево
Ссылка                         ПУСТО                        Неопределено
ТипЗнч(Ссылка)                 Неопределено                    Тип


Кто-нить может объяснить данный феномен?
1 Живой Ископаемый
 
14.11.11
11:55
что такое "возражает истину"?
2 SMakcik
 
14.11.11
11:56
Возращает. Ошибся в написании просто
3 SMakcik
 
14.11.11
11:57
Возвращает
4 SMakcik
 
14.11.11
11:57
))))
5 Ненавижу 1С
 
гуру
14.11.11
11:58
если тип составной он всегда содержит подтип Неопределено
6 Alex375
 
14.11.11
11:59
А чего тебе не ясно? Все верно тут :)
7 SMakcik
 
14.11.11
12:02
Как в справочниках или документах может быть тип НЕОПРЕДЕЛЕНО
8 Ненавижу 1С
 
гуру
14.11.11
12:03
(7) как-то так, может ))
9 SMakcik
 
14.11.11
12:03
Что же тут верного
10 Ненавижу 1С
 
гуру
14.11.11
12:03
(7) прими это за аксиому, тут ничего не поделаешь
это все равно что NULL
11 SMakcik
 
14.11.11
12:04
Ну значит 1с ПИШЕТ неправильно и не знает то, что сами написали
12 shuhard
 
14.11.11
12:04
(7) ты ни разу не слыхал про составные реквизиты ?
13 SMakcik
 
14.11.11
12:04
Конечно я подправил код и теперь все работает ну это же ппц
14 SMakcik
 
14.11.11
12:04
а причем тут составной тип
15 Ненавижу 1С
 
гуру
14.11.11
12:06
(14) при том, что он составной
Документы.ТипВсеСсылки() оперирует с составным типом
16 SMakcik
 
14.11.11
12:06
составные реквизиты это не есть справочник. И в запросе определено два типа. И ссылка не содержит типа, она неопределена ссылка
17 Ненавижу 1С
 
гуру
14.11.11
12:07
(16) поток букв?
18 shuhard
 
14.11.11
12:07
(16) ещё раз,
1С требует чтобы в реквизит составного типа писалось Неопределено,
не пустая ссылка и не NULL
19 SMakcik
 
14.11.11
12:09
(18) хорошо тогда какого хрена они в программе сами себе противоречат?
20 SMakcik
 
14.11.11
12:09
Групповая обработка ИХ детище и не переписывалось
21 SMakcik
 
14.11.11
12:10
Вот их код:


Процедура УстановитьЗначениеВОтборе(Куда, Откуда)
   
   Если Откуда = Неопределено Тогда
       Возврат;
   ИначеЕсли ЭтоСсылкаНаСправочникИлиДокумент(Куда) И ЭтоСсылкаНаСправочникИлиДокумент(Откуда) И (ТипЗнч(Куда) <> ТипЗнч(Откуда)) Тогда
       Возврат;
   ИначеЕсли (ТипЗнч(Куда) = Тип("СписокЗначений")) И (ТипЗнч(Откуда) = Тип("СписокЗначений")) Тогда
       Куда = Откуда.Скопировать();
       Возврат;
   КонецЕсли;
   
   Куда = Откуда;
   
КонецПроцедуры

Функция ЭтоСсылкаНаСправочникИлиДокумент(Ссылка)
   
   Если Ссылка = Неопределено Тогда
       Возврат Ложь;
   КонецЕсли;    
   
   Возврат Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(Ссылка)) ИЛИ Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(Ссылка));
   
КонецФункции


Нафига так писать
22 shuhard
 
14.11.11
12:10
(19)
(20)
в суд подай
23 SMakcik
 
14.11.11
12:11
(22) смешно
24 Ненавижу 1С
 
гуру
14.11.11
12:13
(21) они честно Неопределено отдельно обрабатывают
25 SMakcik
 
14.11.11
12:15
Ну вот я уже тоже обработал. Мне просто интересно, кого туда сожают?
Пришел к нам один после 1С, так он такие глупости говорит
26 Ненавижу 1С
 
гуру
14.11.11
12:18
(25) примеры
27 SMakcik
 
14.11.11
12:21
Ну к примеру. Задали ему вопрос про быстродействие и сказали сравнить проведение из тысячи строк в УТ и УПП. Так он поопробывал и дал ответ на ПоступленииТоваровУслуг.

Или для пользования торговыми операциями предлагает УПП.

И для того чтобы потом легче обновлять и не замарачиваться все движения исправлять подписками.

и т.д.
28 SMakcik
 
14.11.11
12:23
все через опу, лишь бы ничего не делать
29 izekia
 
14.11.11
12:26
(27) а чем подписки плохи?
30 zbv
 
14.11.11
12:33
(27) в чем "глупость" и как бы сделал ты ?

а то обвинять у нас все гаразды.
31 SMakcik
 
14.11.11
12:39
(29), (30) Подписки тем плохи, в данном случае, что мы второе проведение пишем и тем самым увеличиваем время проведения документа
32 shuhard
 
14.11.11
12:41
(31) отойди подальше от УПП,
подписка единственное решение,
всё остальное от лукавого
33 SMakcik
 
14.11.11
12:49
УПП мне ни каким боком не сдалось. Я и не предлагал этого. Это и не удобно с точки зрения обновления и с точки зрения ведения программы. Много лишнего и не нужного.

Подписки следует делать в том случае когда они не заменяют движения или когда просто тебе лень что делать и обновлять можно без напрягов. Вот тогда да.
34 SMakcik
 
14.11.11
12:49
Ну это бесполезный спор и ни к чему он.
35 shuhard
 
14.11.11
12:50
(34) ты флюд развёл на ровном месте,
про Неопределено в составном реквизите знают все,
топик закрыт
36 izekia
 
14.11.11
12:54
(31) какое второе проведение?
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс