4.
logarifm
1123
27.10.06 14:03
Сейчас в теме
Процедура глДобавитьСтрокиВСписок(Список,Знач ТипОбъекта,МультиДобавление=0,ВыборГруппы=1,Знач ВидыДляВыбора="") Экспорт
//*****
Перем ЗначОбъекта;
Перем ФлПервыйВход,ФлВыбран;
Перем Справ,Счет,Док;
Перем СписВидов,СписПарам,ВыбрВид;
Перем ТипСтр,Идент,Предст;
Перем Поз;
//*****
Если ТипЗначенияСтр(ТипОбъекта)="СписокЗначений" Тогда
ТипСтр="СписЗнач";
Иначе
Если Лев(ТипОбъекта,10)="Справочник" Тогда
ТипСтр="Справ";
ИначеЕсли Лев(ТипОбъекта,4)="Счет" Тогда
ТипСтр="Счет";
ИначеЕсли Лев(ТипОбъекта,8)="Документ" Тогда
ТипСтр="Докум";
Иначе
ТипСтр="Прочее";
КонецЕсли;
КонецЕсли;
//*****
Если ПустаяСтрока(ВидыДляВыбора)=0 Тогда
//*****
ВидыДляВыбора=ВидыДляВыбора+",";
СписВидов=СоздатьОбъект("СписокЗначений");
//*****
Пока ПустаяСтрока(ВидыДляВыбора)=0 Цикл
//*****
Поз=Найти(ВидыДляВыбора,",");
Идент=Лев(ВидыДляВыбора,Поз-1);
ВидыДляВыбора=Сред(ВидыДляВыбора,Поз+1);
//*****
Если ТипСтр="Справ" Тогда
Предст=Метаданные.Справочник(Идент).Представление();
ИначеЕсли ТипСтр="Докум" Тогда
Предст=Метаданные.Документ(Идент).Представление();
КонецЕсли;
СписВидов.ДобавитьЗначение(Идент,Предст);
//*****
КонецЦикла;
//*****
СписВидов.СортироватьПоПредставлению();
Если СписВидов.ВыбратьЗначение(ВыбрВид,"Выберите вид")=1 Тогда
ТипОбъекта=ТипОбъекта+"."+ВыбрВид;
Иначе
Возврат;
КонецЕсли;
//*****
КонецЕсли;
//*****
ФлПервыйВход=1;
Пока (ФлПервыйВход=1) ИЛИ (МультиДобавление=1) Цикл
//*****
ФлПервыйВход=0;
ЗначОбъекта=?(Список.ТекущаяСтрока()>0,Список.ПолучитьЗначение(Список.ТекущаяСтрока()),ПолучитьПустоеЗначение(ТипОбъекта));
//*****
Если ТипСтр="СписЗнач" Тогда
ФлВыбран=ТипОбъекта.ВыбратьЗначение(ЗначОбъекта,"Выберите значение:");
ИначеЕсли ТипСтр="Справ" Тогда
Справ=СоздатьОбъект(ТипОбъекта);
Справ.ВыборГруппы(ВыборГруппы);
Если ПустоеЗначение(ЗначОбъекта)=0 Тогда
Справ.НайтиЭлемент(ЗначОбъекта);
КонецЕсли;
ФлВыбран=Справ.Выбрать("Выберите элемент","");
Если ФлВыбран=1 Тогда
ЗначОбъекта=Справ.ТекущийЭлемент();
КонецЕсли;
Справ=0;
ИначеЕсли ТипСтр="Счет" Тогда
Счет=СоздатьОбъект(ТипОбъекта);
Счет.ВыборГруппы(ВыборГруппы);
Если ПустоеЗначение(ЗначОбъекта)=0 Тогда
Счет.НайтиСчет(ЗначОбъекта);
КонецЕсли;
ФлВыбран=Счет.Выбрать("Выберите счет","");
Если ФлВыбран=1 Тогда
ЗначОбъекта=Счет.ТекущийСчет();
КонецЕсли;
Счет=0;
Иначе
Если ТипОбъекта="Документ.Спецификация" Тогда
//***** это особый случай
ФлВыбран=0;
ЗначОбъекта=глВыборСпецификации(ПолучитьПустоеЗначение("Справочник.Номенклатура"),ЗначОбъекта,ФлВыбран);
Иначе
ФлВыбран=ВвестиЗначение(ЗначОбъекта,,ТипОбъекта);
КонецЕсли;
КонецЕсли;
//*****
Если ФлВыбран=1 Тогда
Если Список.Принадлежит(ЗначОбъекта)=1 Тогда
Предупреждение("Данный элемент уже есть в списке !!!");
Иначе
Если (ТипОбъекта="Документ.Спецификация") И (ПустоеЗначение(ЗначОбъекта)=1) Тогда
//***** это особый случай
Список.ДобавитьЗначение(ЗначОбъекта,"Базовая спецификация");
Иначе
Список.ДобавитьЗначение(ЗначОбъекта);
КонецЕсли;
Список.ТекущаяСтрока(Список.РазмерСписка());
КонецЕсли;
Иначе
Прервать;
КонецЕсли;
//*****
КонецЦикла;
//*****
КонецПроцедуры //глДобавитьСтрокиВСписок
//*****
Процедура глУдалитьСтрокиИзСписка(Список,РежОчистка) Экспорт
Если Список.РазмерСписка()>0 Тогда
Если РежОчистка=1 Тогда
Список.УдалитьВсе();
Иначе
Список.УдалитьЗначение(Список.ТекущаяСтрока());
КонецЕсли;
КонецЕсли;
КонецПроцедуры //глУдалитьСтрокиИзСписка