Имя: Пароль:
1C
1C 7.7
v7: использоватьсписокэлементов() Пустой Список
,
0 CepeLLlka
 
27.08.13
10:57
Не могу найти ошибку.. аналогичный код для Контрагентов работает..
    Если НазваниеНабораПрав() = "Менеджер" Тогда
        
        СЗ     = СоздатьОбъект("СписокЗначений");
        Кнт = СоздатьОбъект("Справочник.РазрешенныеКонтрагенты");
        Кнт.ИспользоватьВладельца(глПользователь);
        Кнт.ВыбратьЭлементы();
        Пока Кнт.ПолучитьЭлемент() = 1 Цикл
            СЗ.ДобавитьЗначение(Кнт.ТекущийЭлемент().Контрагент.ЮрФизЛицо);        
        КонецЦикла;
        
        ИспользоватьСписокЭлементов(СЗ);
        ИерархическийСписок(0, 0);
    Иначе
        ИерархическийСписок(1, 1);    
    КонецЕсли;

Список пустой.. не вопросительные знаки как в большинстве тем что я нагуглил.. а пустой.. Ёпрст.. где ты :(
1 CepeLLlka
 
27.08.13
10:57
Это код процедуры - ПриОткрытии()
2 CepeLLlka
 
27.08.13
11:02
Денис.. вот смари.. в ПриОткрытии() формы списка справочника Контрагенты вот такой код и всё работает.
А аналогичный для СторонниеЮрЛица не работает :(



    Если НазваниеНабораПрав() = "Менеджер" Тогда
        
        СЗ     = СоздатьОбъект("СписокЗначений");
        Кнт = СоздатьОбъект("Справочник.РазрешенныеКонтрагенты");
        Кнт.ИспользоватьВладельца(глПользователь);
        Кнт.ВыбратьЭлементы();
        Пока Кнт.ПолучитьЭлемент() = 1 Цикл
            СЗ.ДобавитьЗначение(Кнт.ТекущийЭлемент().Контрагент);    
        КонецЦикла;
        
        ИспользоватьСписокЭлементов(СЗ);
        ИерархическийСписок(0, 0);
    Иначе
        ИерархическийСписок(1, 1);    
    КонецЕсли;
3 oslokot
 
27.08.13
11:04
непонятно, в цикл чтоле не попадает?
4 Ёпрст
 
27.08.13
11:04
5 CepeLLlka
 
27.08.13
11:05
(3) В цикл попадает.. Проверяю через РазмерСписка() и СЗ.ПолучитьЗначение(1) всё там есть
6 Rie
 
27.08.13
11:06
(0) Так, на всякий случай - а в каком справочнике этот код используешь?
7 Ёпрст
 
27.08.13
11:07
Это всё в какой форме списка пишешь ?

У тебя в первом случае, в списке значений справочник одного вида, в другом - другово.
Тебе нужно пихать ссылки именно того вида, который совпадает с видом формы открываемого справочника.
8 CepeLLlka
 
27.08.13
11:07
(7) Я именно так и делаю.
9 CepeLLlka
 
27.08.13
11:08
(7) Пишу в форме списка справочников, в первом случае - ЮрЛица, во втором в Контрагенты.
10 Ёпрст
 
27.08.13
11:08
Кнт.Контрагент - это Справочник.Контрагенты
Кнт.Контрагент.ЮрФизЛицо - это либо ЮрЛица либо ФизЛица .. работать не будет, если всё это в форме списка клиентосов.
11 CepeLLlka
 
27.08.13
11:09
(10) Второй вариант в форме списка справочника "ЮрЛица"
12 Ёпрст
 
27.08.13
11:11
ну проверь на то, что юрфизЛицо вообще есть и что оно, именно того вида.
13 Ёпрст
 
27.08.13
11:12
Если ПустоеЗначение(Кнт.Контрагент.ЮрФизЛицо) = 0 Тогда
  Если Кнт.Контрагент.ЮрФизЛицо.Вид()= "ЮрЛица" Тогда
       СЗ.ДобавитьЗначение(Кнт.Контрагент.ЮрФизЛицо);
   КонецЕсли;
КонецЕсли;
14 CepeLLlka
 
27.08.13
11:19
(12)Так я в СЗ.ПолучитьЗначение(1) вижу что оно того вида то :( Я пробую на 1ом элементе справочника
15 Rie
 
27.08.13
11:22
(14) Попробуй на втором. На третьем. На тринадцатом...
Проверку на Вид()=... - разве сложно поставить?
16 CepeLLlka
 
27.08.13
11:23
(13) Ок ок.. щас всё попробую как ты нарисовал
17 Морозов Александр
 
27.08.13
11:27
а енто... ЮрФизЛицо должен быть признаком (перечислением).... ну в нормальных конфах.

каким образом признак влияем на ИспользоватьСписокЭлементов, если   ЮрФизЛицо обычно имеет всего два значения?
18 Ёпрст
 
27.08.13
11:31
(12) у него тис/комплексная, там ЮрФизЛицо - тип <справочник> без вида, как правило, либо ЮлЛица либо ФизЛица..
19 CepeLLlka
 
27.08.13
11:32
20 CepeLLlka
 
27.08.13
11:50
(18) Всё равно не работает... никак.. что с (13), что без..
С (13) правильно конечно всё.. но не работает всё равно :(

В сз есть записи :(
21 CepeLLlka
 
27.08.13
11:51
(18) Попробуй у себя может где?
22 пипец
 
27.08.13
11:55
юрфизлицо реквизит неопределенного вида если мне память не изменяет
23 Ёпрст
 
27.08.13
11:57
(20) поправил на (13) и не работает ?
24 CepeLLlka
 
27.08.13
11:58
(22) Возможно кстати..
Может нужно новую выборку открывать из справочника ЮрЛица и искать по коду полученному?
Но в Отладчике то я вижу что у меня ссылка именно справочника.. там же и код показан даже..
25 CepeLLlka
 
27.08.13
11:58
(23) Угу
26 Ёпрст
 
27.08.13
11:59
закрой отладчик, сохрани конфу и проверь..
+ turbomd, надеюсь не стоит ?
27 Ёпрст
 
27.08.13
11:59
а то, может, не измененый модуль глядишь всегда.
28 CepeLLlka
 
27.08.13
11:59
(22) Да.. тип значения - Справочник.. из-за этого видимо.. буду второй выборкой ещё искать как писал выше..

(26) Нее.. не дорос до такого.. :)
29 Ёпрст
 
27.08.13
11:59
ну или дай по тимке посмотреть
30 Ёпрст
 
27.08.13
12:00
не надо искать еще раз.
31 Ёпрст
 
27.08.13
12:01
ради извращения, так можешь еще:

Если ПустоеЗначение(Кнт.Контрагент.ЮрФизЛицо) = 0 Тогда
  Если Кнт.Контрагент.ЮрФизЛицо.Вид()= "ЮрЛица" Тогда
       СЗ.ДобавитьЗначение(Кнт.Контрагент.ЮрФизЛицо.ТекущийЭлемент());
   КонецЕсли;
КонецЕсли;

хотя, это лишнее
32 Ёпрст
 
27.08.13
12:02
+ смотри в ПриОткрытии, у тя там отбора не стоит в этом справочнике еще при этом ?
33 mishaPH
 
модератор
27.08.13
12:16
юрлицо элемент на контрагенте разве не периодический?
34 пипец
 
27.08.13
12:21
(33) Оо :)))))  чо курил ?
ЗЫ теперь я знаю кто в типовых на "пол" - поставил справочник ;)))
35 mishaPH
 
модератор
27.08.13
12:25
(34) а что не так. контрагент может остатся "василек". а юрлицо у него меняться.
36 mishaPH
 
модератор
27.08.13
12:26
именно по этому в (0) и пустой список. там добавлять нечего. Попытка получить без даты периодический реквизит дает как раз пустоту
37 mishaPH
 
модератор
27.08.13
12:27
(22) кстати да. посмотрел у себя в торговле. он не периодический но неопределенный. точнее тупо справочник. Но не факт что у автора так
38 CepeLLlka
 
27.08.13
12:49
Ходил кушать..
(37) Если я тебя понял.. то у меня именно так.. об этом говорю в (28)
39 CepeLLlka
 
27.08.13
13:00
Да, в (28) я был прав..
Вот это работает.. очень тяжко всё это по сравнению с 8.х :)

    Если НазваниеНабораПрав() = "Менеджер" Тогда
        
        СЗ     = СоздатьОбъект("СписокЗначений");
        Кнт = СоздатьОбъект("Справочник.РазрешенныеКонтрагенты");
        ЮЛ = СоздатьОбъект("Справочник.ЮрЛица");
        Кнт.ИспользоватьВладельца(глПользователь);
        Кнт.ВыбратьЭлементы();
        Пока Кнт.ПолучитьЭлемент() = 1 Цикл
            Контрагент = Кнт.ТекущийЭлемент().Контрагент;
            Если ПустоеЗначение(Контрагент.ЮрФизЛицо) = 0 Тогда
                Если Контрагент.ЮрФизЛицо.Вид() = "ЮрЛица" Тогда
                    Если ЮЛ.НайтиПоКоду(Контрагент.ЮрФизЛицо.Код) = 1 Тогда
                        СЗ.ДобавитьЗначение(ЮЛ.ТекущийЭлемент());    
                    КонецЕсли;
                КонецЕсли;
            КонецЕсли;
        КонецЦикла;
        
        ИспользоватьСписокЭлементов(СЗ);
        ИерархическийСписок(0, 0);
    Иначе
        ИерархическийСписок(1, 1);    
    КонецЕсли;
40 mishaPH
 
модератор
27.08.13
13:05
(39) (38) да. вспоминается такой глючек с объектами если реквизит не определен.
41 CepeLLlka
 
27.08.13
13:12
Забыл кое-что кстати..

Огромное всем спасибо за участие! Очень рад что вы есть.. что вы отзывчивые такие..  С П А С И Б О !
42 Ёпрст
 
27.08.13
13:55
(39) изврат какой, тогда уж, найтиЭлемент, а не НайтиПоКоду
и.. для начала, как в (31).
43 cincout
 
27.08.13
14:16
(34) пол - тоже периодический?