23.11.2006, 19:07
общий
это ответ
Здравствуйте, Darina!
В Вашей обработке в строке 5 указано позиционирование на конкретном элементе. Используйте цикл…
//*******************************************
//С циклом перебора всех элементов справочника
Процедура Сформировать()
вСпр=СоздатьОбъект("Справочник.Номенклатура");
вСпр.ВыбратьЭлементы();
Пока вСпр.ПолучитьЭлемент()>0 Цикл
Тек=вСпр.ТекущийЭлемент();
Если Тек.ЭтоГруппа()=1 Тогда
Продолжить;
КонецЕсли;
вПериодический=СоздатьОбЪект("Периодический");
// Создаем периодический обЪект.
вПериодический.ИспользоватьОбъект("Себестоимость",Тек);
// Связываем обЪекты.
вПервый=1;
// Для того чтобы не потереть 1-й элемент, тк он достаточно важен, даже если и ноль.
вПериодический.ВыбратьЗначения();
// Открываем выборку значений.
Пока (вПериодический.ПолучитьЗначение()=1) Цикл
// Выбираем значение из списка.
// Не первый элемент.
Если (вПериодический.Значение=0) Тогда
// Удаляем это значение.
вПериодический.Удалить();
Иначе
вПервый=0;
// Пропускаем первое значение.
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
//*******************************************
// Если хотите анализировать элементы только определенной группы
// ВыбГруппа – наш элемент диалога
Процедура Сформировать()
вСпр=СоздатьОбъект("Справочник.Номенклатура");
вСпр.ИспользоватьРодителя(ВыбГруппа);
вСпр.ВключатьПодчиненные(1);
вСпр.ВыбратьЭлементы();
Пока вСпр.ПолучитьЭлемент()>0 Цикл
Тек=вСпр.ТекущийЭлемент();
Если Тек.ЭтоГруппа()=1 Тогда
Продолжить;
КонецЕсли;
вПериодический=СоздатьОбЪект("Периодический");
// Создаем периодический обЪект.
вПериодический.ИспользоватьОбъект("Себестоимость",Тек);
// Связываем обЪекты.
вПервый=1;
// Для того чтобы не потереть 1-й элемент, тк он достаточно важен, даже если и ноль.
вПериодический.ВыбратьЗначения();
// Открываем выборку значений.
Пока (вПериодический.ПолучитьЗначение()=1) Цикл
// Выбираем значение из списка.
// Не первый элемент.
Если (вПериодический.Значение=0) Тогда
// Удаляем это значение.
вПериодический.Удалить();
Иначе
вПервый=0;
// Пропускаем первое значение.
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
//*******************************************
// Если используете вместо элемента диалога список значений
// ВыбСписок – список значений
Процедура Сформировать()
вСпр=СоздатьОбъект("Справочник.Номенклатура");
вСпр.ВыбратьЭлементы();
Пока вСпр.ПолучитьЭлемент()>0 Цикл
Тек=вСпр.ТекущийЭлемент();
Если ВыбСписок.Принадлежит(Тек)=0 Тогда
Продолжить;
КонецЕсли;
Если Тек.ЭтоГруппа()=1 Тогда
Продолжить;
КонецЕсли;
вПериодический=СоздатьОбЪект("Периодический");
// Создаем периодический обЪект.
вПериодический.ИспользоватьОбъект("Себестоимость",Тек);
// Связываем обЪекты.
вПервый=1;
// Для того чтобы не потереть 1-й элемент, тк он достаточно важен, даже если и ноль.
вПериодический.ВыбратьЗначения();
// Открываем выборку значений.
Пока (вПериодический.ПолучитьЗначение()=1) Цикл
// Выбираем значение из списка.
// Не первый элемент.
Если (вПериодический.Значение=0) Тогда
// Удаляем это значение.
вПериодический.Удалить();
Иначе
вПервый=0;
// Пропускаем первое значение.
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
Удачи!