• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы sergeyji
  • Дата начала
Статус
Закрыто для дальнейших ответов.
S

sergeyji

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

SeverBap

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

sergeyji

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

SeverBap

А этот спраовчник не подчиненный???? а то получается что да подчиненный!!!
 
S

sergeyji

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


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

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

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

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

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

puh14

Во первых - скольки уровневый у тебя справочник? а то судя по коду он у тебя может одни и те-же элементы несколько раз выбирать

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

sergeyji

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

SeverBap

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

sergeyji

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

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

sergeyji

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

SeverBap

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

sergeyji

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

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

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


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

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




конецесли;

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

SeverBap

Все чики пуки!!!! не получится убрать????? ставь при открытии ИерархическийСписок(0,0) ... :( сам не пробовал не знаю!!!!
 
S

sergeyji

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


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

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

SeverBap

Ну и как продвигаешся в этом вопросе? или уже кинул и решил написать другое чет??? :)
 
S

sergeyji

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!