как перенести группы в справочниках в 1С 7.7 используя список значений

Тема в разделе "1C и всё что с ней связано", создана пользователем sergeyji, 24 сен 2008.

Статус темы:
Закрыта.
  1. sergeyji

    sergeyji Гость

    У меня справочник в 1С77 иерархический.Когда заношу с помощью определеннного фильтра элементы справочника в сисок значений и использую "использовать список элементов" для формы списка то когда пытаюсь использовать "иерархический список" в форме появляются какие-то несуществующие в справочнике строки.Что не пытался делать -все равно появляются.Сталкивался ли кто-нибудь с этим.Кто может знает как это устранить?
     
  2. SeverBap

    SeverBap Well-Known Member

    Регистрация:
    18 сен 2007
    Сообщения:
    440
    Симпатии:
    0
    Ясен пень будет куча проблем и элементов с восклицательным значком красного значения!!!!!!
    Перед использованием иерархического списка (как я понял) тебе надо ИспользоватьСписокЭлементов("") а потом вся морковь ..... тоесть надо вернуть в первоначальное состояние а то не может понять что за борода в списке !!!!!!! :unsure:
     
  3. sergeyji

    sergeyji Гость

    не получается
    я вставил код
    ИспользоватьСписокЭлементов("");
    иерархическийсписок(1,1);
    все равно тоже самое появляются пустые элементы
    к тому же при переходе к иерархическому списку нужно сохранить фильтр как это в совокупности сделать
     
  4. SeverBap

    SeverBap Well-Known Member

    Регистрация:
    18 сен 2007
    Сообщения:
    440
    Симпатии:
    0
    А этот спраовчник не подчиненный???? а то получается что да подчиненный!!!
     
  5. sergeyji

    sergeyji Гость

    Привожу код того что я делаю справочник не подчиненный
    процедура иерарх()
    ИспользоватьСписокЭлементов("");
    иерархическийсписок(1,1);


    ИспользоватьСписокЭлементов(Список);
    конецпроцедуры
    Процедура приоткрытии()
    иерархическийсписок(0,1);
    Список=создатьОбъект("СписокЗначений");
    Буфер = СоздатьОбъект("Справочник.фио");
    Буфер1 = СоздатьОбъект("Справочник.фио");
    // ИерархическийСписок(1,1);
    // отбираем только те элементы, которые могут отображаться в текущем списке
    Буфер.ИспользоватьРодителя(ИспользоватьРодителя());
    Буфер.ВключатьПодчиненные(0);
    Буфер.ВыбратьЭлементы();
    Пока Буфер.ПолучитьЭлемент() = 1 Цикл
    // если буфер.этогруппа()=1 тогда
    Список.ДобавитьЗначение(Буфер.текущийэлемент());
    // сообщить(список.текущаястрока());

    буфер1.использоватьродителя(буфер);
    Буфер1.ВыбратьЭлементы();
    Пока Буфер1.ПолучитьЭлемент() = 1 Цикл
    если буфер1.этогруппа()=0 тогда
    если буфер1.родитель=буфер.текущийэлемент() тогда
    // // отбираем только те элементы, которые удовлетворяют заданному признаку
    Если (найти(Буфер1.документ.документоснование.видвыплаты,"ппенд")>0) Тогда
    Список.ДобавитьЗначение(Буфер1.текущийэлемент());

    КонецЕсли;
    КонецЕсли;
    КонецЕсли;
    //КонецЕсли;
    КонецЦикла;
    //КонецЕсли;
    КонецЦикла;

    ИспользоватьСписокЭлементов(Список);
    КонецПроцедуры

    В форме списка я сделал кнопку и запускаю процедуру иерарх.Эффект -те же красные вопросительные знаки
    переменную список я объявляю в начале модуля тут нету
     
  6. puh14

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    Во первых - скольки уровневый у тебя справочник? а то судя по коду он у тебя может одни и те-же элементы несколько раз выбирать

    буфер1.использоватьродителя(буфер); - Это как ? мож таки Буфер.ТекущийЭлемент()
     
  7. sergeyji

    sergeyji Гость

    Справочник 2-х уровневый.Элементы в список значений заносятся нормально - я проверял через сообщить()
    И группы заносятся при этом коде и дочерние элементы.Глюк состоит в том ,что при переходе в режим иерархический список появляется уже перетертое выше.Если режим неиерархического списка то все нормально показывает.Вот сделай какой-нибудь маленький 2-уровневый справочник и проверь тему.
     
  8. SeverBap

    SeverBap Well-Known Member

    Регистрация:
    18 сен 2007
    Сообщения:
    440
    Симпатии:
    0
    Налей мне - я зестрелюсь! :) Где такой код надыбал??????
    Код (Text):
    Процедура ПриОткрытии()
    ИерархическийСписок(0,1);
    Список=СоздатьОбъект("СписокЗначений");
    Буфер = СоздатьОбъект("Справочник.фио");
    Буфер.ВыбратьЭлементы();
    Пока Буфер.ПолучитьЭлемент()=1 Цикл
    Если Буфер.ЭтоГруппа()=0 Тогда
    Если Найти(Буфер.Документ.ДокументОснование.ВидВыплаты,"ппенд")>0 Тогда
    Список.ДобавитьЗначение(Буфер.ТекущийЭлемент());
    Если Список.НайтиЗначение(Буфер.ТекущийЭлемент().Родитель)=0 Тогда
    Список.ДобавитьЗначение(Буфер.ТекущийЭлемент().Родитель);
    КонецЕсли;
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;
    ИспользоватьСписокЭлементов(Список);
    КонецПроцедуры
    Вот только я непойму начерта тебе это ?????? :blink:
    да вот еще так или иначе у тебя будут проблемы со списком!!!!
    доработай этот код!!! он не совершенен!!!
    :blink:
     
  9. sergeyji

    sergeyji Гость

    Я этот код получил экспериментально,были и другие варианты но тогда не все элементы заносились в список значений ак так если в режиме без иерархии нормально показывает форма то есть все чисто все красиво то почему в режиме иерархии это теряется.Беда 1С в том что не видно как происходит это механизм.это от нас закрыто.Это явно глюк................

    Я этот код получил экспериментально,были и другие варианты но тогда не все элементы заносились в список значений ак так если в режиме без иерархии нормально показывает форма то есть все чисто все красиво то почему в режиме иерархии это теряется.Беда 1С в том что не видно как происходит это механизм.это от нас закрыто.Это явно глюк................
     
  10. SeverBap

    SeverBap Well-Known Member

    Регистрация:
    18 сен 2007
    Сообщения:
    440
    Симпатии:
    0
    Что есть то есть!!! :)
     
  11. sergeyji

    sergeyji Гость

    Так что делать.Мне надо разделить справочник фио в зависимости от фильтра на разных пользователей сохранив группы.И для работы с формой списка надо именно иерахический список с переходом на неиерахический т.е. надо чтобы были переходы.При работе с формой в процессе элементы переходят из одной группы в другую.когда справочник не отфильтрован все получается нормально и эффектно.При фильтре получается перетертая тема.
     
  12. SeverBap

    SeverBap Well-Known Member

    Регистрация:
    18 сен 2007
    Сообщения:
    440
    Симпатии:
    0
    Есть маленькая тупая идея, есть процедура (предоприделенная) - ПриСменеИерархии(Флаг);
    Вот, У нас есть СписокЗначений отфильтрованный, что если попробовать в этой процедурке написать код который позволялбы сэмитировать заполнение списка элементов???
    Тоесть как я предпологаю: туда пихаем сначала все грыппы. потом смотрим родителя если там идет смена выбрасываем список элементов ....
    ну чет в этом духе код конечно сутра не прит но строчек 10 всего будет!!! :(
     
  13. sergeyji

    sergeyji Гость

    так не получается но идеей твоей я воспользовался.режимом иерахический список вообще пользоваться не надо.Эти красные вопросительные знаки появляются всегда обязательно когда иерахический список 1.Надо отключить этот режим .Я сделал вот как:сделал кнопку а на кнопку повесил код
    Список=создатьОбъект("СписокЗначений");
    Буфер1 = СоздатьОбъект("Справочник.фио");

    если текущийэлемент().этогруппа()=1 тогда
    буфер1.использоватьродителя(текущийэлемент());
    Буфер1.ВыбратьЭлементы();
    Пока Буфер1.ПолучитьЭлемент() = 1 Цикл
    если буфер1.этогруппа()=0 тогда
    // // отбираем только те элементы, которые удовлетворяют заданному признаку
    Если (найти(Буфер1.документ.документоснование.видвыплаты,"ппенд")>0) Тогда
    Список.ДобавитьЗначение(Буфер1.текущийэлемент());
    сообщить(буфер1.текущийэлемент());
    КонецЕсли;
    КонецЕсли;
    //КонецЕсли;
    //КонецЕсли;
    КонецЦикла;
    //КонецЕсли;
    //КонецЦикла;

    ИспользоватьСписокЭлементов(Список);


    иначе
    буфер1.использоватьродителя(текущийэлемент().родитель);
    Буфер1.ВыбратьЭлементы();
    Пока Буфер1.ПолучитьЭлемент() = 1 Цикл
    если буфер1.этогруппа()=0 тогда
    // // отбираем только те элементы, которые удовлетворяют заданному признаку
    Если (найти(Буфер1.документ.документоснование.видвыплаты,"ппенд")>0) Тогда
    Список.ДобавитьЗначение(Буфер1.текущийэлемент());
    сообщить(буфер1.текущийэлемент());
    КонецЕсли;
    КонецЕсли;
    //КонецЕсли;
    //КонецЕсли;
    КонецЦикла;
    //КонецЕсли;
    //КонецЦикла;

    ИспользоватьСписокЭлементов(Список);




    конецесли;

    при повторном нажатии кнопки я повесил код как при открытии
    Тогда все нормально.
    Вообще без иерархии.
    Например можно сначала показать только группы а потом нажать кнопочку.Вот если бы этот код можно было повесить на значок иерархический список.а так этот значок надо вообще убирать.
     
  14. SeverBap

    SeverBap Well-Known Member

    Регистрация:
    18 сен 2007
    Сообщения:
    440
    Симпатии:
    0
    Все чики пуки!!!! не получится убрать????? ставь при открытии ИерархическийСписок(0,0) ... :( сам не пробовал не знаю!!!!
     
  15. sergeyji

    sergeyji Гость

    Когда ставишь иерахический список(0,0) значок исчезает а вот если бы на него повесить этот код ,я пробовал так
    Процедура ПриСменеИерархии(ф)
    если ф=1 тогда
    присменеиерархии(0);


    иначе
    тот код где кнопка
    КонецЕсли;
    //КонецЦикла;

    все дело в том что при смене иерархии (1)
    то же самое что иерархичемский список(1)
    КонецПроцедуры
     
  16. SeverBap

    SeverBap Well-Known Member

    Регистрация:
    18 сен 2007
    Сообщения:
    440
    Симпатии:
    0
    Ну и как продвигаешся в этом вопросе? или уже кинул и решил написать другое чет??? :)
     
  17. sergeyji

    sergeyji Гость

    Я решил оставить вариант с кнопкой и без значка иерахический список такой интерфейс хоть не совсем 1с -овский
    но зато рабочий.Программа которая я внедряю-это депонирование выплат из кассы.этих выплат несколько видов-зарплата,стиппендия,кая-то премия и т.д.справочник фио-это справочник депонентов.группы-это депонированные лица.они подразделяются на уже получившие деньги,еще не получившие,деньги перечислены в бюджет и .д..Эффектней было бы как в 1с-щелкнул на крестик и группа раскрылась .если у кого-то= может у тебя есть желание над этим поработать-ты мне и так помог решить вопрос то я остановлюсь на том че есть-нада внедрять программу.спасибо Вар.привет.sergeyji.
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей