ATitov
Junior Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору Коллеги, по программированию в 8.2 подскажите. Есть задача - восстановить характеристику номенклатуры у товаров Написал код, по отладчику все проходит и записывается, а вот результата нет... что-то я упускаю. Процедура КнопкаВыполнитьНажатие(Кнопка) // Вставить содержимое обработчика. РазмерЭлементСвойстваОбъектов = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Размер"); ТекстЗапроса ="ВЫБРАТЬ | ЗначенияСвойствОбъектов.Наименование, | ЗначенияСвойствОбъектов.Ссылка |ИЗ | Справочник.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов |ГДЕ | ЗначенияСвойствОбъектов.Владелец = &Владелец"; запрос = Новый Запрос; запрос.Текст = ТекстЗапроса; запрос.УстановитьПараметр("Владелец",РазмерЭлементСвойстваОбъектов); ТабРазмеров = запрос.Выполнить().Выгрузить(); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Наименование КАК Наименование, | Номенклатура.Ссылка КАК Ном, | Номенклатура.Артикул |ИЗ | Справочник.Номенклатура КАК Номенклатура | |УПОРЯДОЧИТЬ ПО | Наименование"; Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл НоменклатураСпр = ВыборкаДетальныеЗаписи.Ном; //.getobject(); Если НоменклатураСпр.ЭтоГруппа = Истина Тогда Продолжить; КонецЕсли; // номенклатуру получили - теперь понять что у нас с размерами Выборка = Справочники.ХарактеристикиНоменклатуры.Выбрать(,НоменклатураСпр); Пока выборка.Следующий() Цикл // начинаем перебор характеристик РазмерСтр = Сред(СокрЛП(Выборка.Наименование),1,Число(Найти(СокрЛП(Выборка.Наименование), ","))-1); Если ЗначениеЗаполнено(РазмерСтр) Тогда НайденнаяСтрока = ТабРазмеров.Найти(РазмерСтр); Если НЕ ЗначениеЗаполнено(НайденнаяСтрока) ТОгда //Создадим Новый элемент Размер = Справочники.ЗначенияСвойствОбъектов.СоздатьЭлемент(); Размер.Наименование = РазмерСтр; Размер.Владелец = РазмерЭлементСвойстваОбъектов; Размер.Записать(); Размер = Размер.Ссылка; НоваяЗапись = ТабРазмеров.Добавить(); НоваяЗапись.наименование = РазмерСтр; НоваяЗапись.Ссылка = Размер; //Сообщить("Создан новый размер"+Размер); Иначе Размер = НайденнаяСтрока.Ссылка; КонецЕсли; выборкаХ = Справочники.ХарактеристикиНоменклатуры.Выбрать(,НоменклатураСпр); Пока выборкаХ.Следующий() Цикл Если СокрЛП(ВыборкаХ.Наименование) = СокрЛП(Выборка.Наименование) ТОгда // нашли нужную характеристику ////и свойства характеристики тоже создадим сразу Набор = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей(); Набор.Отбор.Объект.Установить(выборкаХ.Ссылка); Набор.Отбор.Свойство.Установить(РазмерЭлементСвойстваОбъектов.Ссылка); Набор.Прочитать(); //размер // Попытка Если Набор.Количество() = 0 Тогда Запись = Набор.Добавить(); Запись.Объект = выборкаХ.Ссылка; Запись.Свойство = РазмерЭлементСвойстваОбъектов; ИначеЕсли Набор.Количество() = 1 Тогда // НовыйКурс = НаборКурсов[0]; Запись = Набор[0]; Иначе Предупреждение("Хрень.", 60); // Возврат; КонецЕсли; Запись.Значение = Размер; сообщить("записали "+Выборка.Наименование); Набор.Записать(истина); Набор.Очистить(); КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; КонецЦикла; КонецПроцедуры Добавлено: код правильный все работает у меня в базе ошибка была - характреристика Размер была заведена 2 раза и не правильно. |