Имя: Пароль:
1C
1С v8
свойства номенклатуры
0 Woolf
 
10.08.11
17:04
Всем доброго времени суток! Вот чего то никак сообразить не могу:

обработкой записал в регистр сведений ЗначенияСвойствОбъектов Цвета и Размеры. Открываю справочник Номенклатуры. Цвета записаны, а Размеры нет. Подскажите, плз, чего проверить

вот в упрощенном виде обработка:
       НовЗапись.Объект   = ТоварСсылка;
   НовЗапись.Свойство = пвхСвойство.Ссылка;
   НовЗапись.Значение = сСпрЗначСвОб;
   НаборЗаписейЗначенияСвойств.Записать();
1 Михаил Козлов
 
10.08.11
17:05
Посмотите прямо в регистре, что записано.
2 ssh2006
 
10.08.11
17:07
"вот в упрощенном виде обработка" - мало кода. Приведи код
3 Woolf
 
10.08.11
17:08
(1)-в том то и дело, что в регистре все красиво записано.
И размер тоже, а открываю закладку "свойства" у этого товара - а там пусто. Чего не так?
4 ssh2006
 
10.08.11
17:08
(3) ошибка в коде
5 Woolf
 
10.08.11
17:10
(2)

Перем Excel;
Перем МетаДок;
Перем ИмяДокумента;
Перем ТаблицаРеквизитов;
Перем НовыйДокУЦН;
Перем ОшибкиКоличество;
Перем ИмяФайла;
Перем СпрТЦ;

Процедура ДобавитьШК(Товар, ШК)
   Набор = РегистрыСведений.Штрихкоды.СоздатьМенеджерЗаписи();
   Набор.Владелец = Товар;
   Набор.Качество = Справочники.Качество.Новый;
   Набор.ЕдиницаИзмерения = Товар.ЕдиницаХраненияОстатков;
   Набор.ТипШтрихкода = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN13;
   Набор.Штрихкод = ШК;
   Попытка
       Набор.Записать();
   Исключение
       Сообщить("Произошла ошибка " + ОписаниеОшибки() + "Штрих-код не записан " + ШК + ".");
   КонецПопытки;
   Сообщить("Для товара: " + СокрЛП(Товар.Наименование) + " добавлен штрих-код " + ШК);
КонецПроцедуры

Функция ПоискНоменклатуры(Штрихкод)
   
   СпрНомРа = Справочники.Номенклатура;
   Товар    = СпрНомРа.ПустаяСсылка();    
   Запрос   = Новый Запрос("
   | ВЫБРАТЬ
   | Штрихкоды.Штрихкод,
   | Штрихкоды.Владелец  КАК Товар
   | ИЗ
   | РегистрСведений.Штрихкоды КАК Штрихкоды
   | ГДЕ
   | Штрихкоды.Штрихкод = &Штрихкод
   |");
   
   запрос.УстановитьПараметр("Штрихкод",Штрихкод);
   Результат = Запрос.Выполнить().Выбрать();
   Пока Результат.Следующий() Цикл
       Товар = Результат.товар;
   КонецЦикла;    
   
   Возврат Товар;
   
КонецФункции

Функция КонтрольЦелесообразностиЗаписиЦеныНоменклатуры(РезПоиска,МассивТипЦен,СамаЦена)
   
   Целесообразность = Истина;
   
   Запрос   = Новый Запрос("
   | ВЫБРАТЬ
   | ЦеныСрезПоследних.Цена КАК Цена,
   | ЦеныСрезПоследних.ТипЦен
   | ИЗ
   | РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаОкончания,ТипЦен В (&МассивТипЦен)) КАК ЦеныСрезПоследних
   | ГДЕ
   | ЦеныСрезПоследних.Номенклатура = &Номенклатура
   |");
   
   Запрос.УстановитьПараметр("ДатаОкончания",ТекущаяДата());
   Запрос.УстановитьПараметр("МассивТипЦен", МассивТипЦен);
   Запрос.УстановитьПараметр("Номенклатура", РезПоиска);
   Результат = Запрос.Выполнить().Выбрать();    
   Пока Результат.Следующий() Цикл
       Цена = Результат.Цена;
   КонецЦикла;    
   
   Попытка
       Если Цена = Число(СамаЦена) Тогда
           Целесообразность = Ложь;
       КонецЕсли;
   Исключение
       Сообщить(ОписаниеОшибки());
   КонецПопытки;    
   
   
   
   
   
   Возврат Целесообразность;
   
КонецФункции    

Процедура ЗаписатьСвойство(ТоварСсылка,НаименованиеСвойства,ЗначениеСвойства)
   пвхСвойство = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию(НаименованиеСвойства,Истина);
   Если пвхСвойство = неопределено Тогда
       пвхСвойство = ПланыВидовХарактеристик.СвойстваОбъектов.СоздатьЭлемент();
       пвхСвойство.Наименование = НаименованиеСвойства;
       
       пвхСвойство.Записать(ложь);
   КонецЕсли;
   
   СпрЗначСвОб  = Справочники.ЗначенияСвойствОбъектов;
   сСпрЗначСвОб = СпрЗначСвОб.НайтиПоНаименованию(ЗначениеСвойства,Истина);
   Если сСпрЗначСвОб = СпрЗначСвОб.ПустаяСсылка() Тогда
       НовРазмер   = СпрЗначСвОб.СоздатьЭлемент();
       НовРазмер.Наименование = ЗначениеСвойства;
       НовРазмер.Владелец = пвхСвойство;
       НовРазмер.Записать();
       сСпрЗначСвОб = НовРазмер.Ссылка;
   КонецЕсли;
   
   НаборЗаписейЗначенияСвойств = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей();
   
   НаборЗаписейЗначенияСвойств.Отбор.Объект.Установить(ТоварСсылка);
   НаборЗаписейЗначенияСвойств.Отбор.Свойство.Установить(пвхСвойство.Ссылка);
   
   НаборЗаписейЗначенияСвойств.Прочитать();
   
   Если НаборЗаписейЗначенияСвойств.Количество()=0 Тогда
       НовЗапись = НаборЗаписейЗначенияСвойств.Добавить();
   Иначе
       НовЗапись = НаборЗаписейЗначенияСвойств[0];
   КонецЕсли;
   
   НовЗапись.Объект   = ТоварСсылка;
   НовЗапись.Свойство = пвхСвойство.Ссылка;
   НовЗапись.Значение = сСпрЗначСвОб;
   НаборЗаписейЗначенияСвойств.Записать();
КонецПроцедуры


Процедура ИмпортИзExcel() экспорт
   
   Если НайтиФайлы(ПутьКФайлу).Количество() = 0  Тогда
       Предупреждение("Не найден файл экспорта MS Excel");
       Возврат;
   КонецЕсли;
   
   Сообщить("Инициализация MS Excel ...");
   
   Попытка
       Excel = Новый COMОбъект("Excel.Application");
   Исключение
       Предупреждение("Не удалось инициализировать MS Excel");
       Возврат;
   КонецПопытки;
   
   СпрНомРа            = Справочники.Номенклатура;
   РодительскаяПапка   = Справочники.Номенклатура.НайтиПоНаименованию("Импорт из EXCEL");
   СпрКлЕдИзм          = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию("шт");
   СпрТЦ               = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Закупочные");
   ТекВалюта           = Справочники.Валюты.НайтиПоНаименованию("руб.");
   ВидНоменклатуры     = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Товар (пр. ТМЦ)");
   СтавкаНДС           = Перечисления.СтавкиНДС.БезНДС;
   СпрГТД              = Справочники.НомераГТД;
   СпрНомГруппа        = Справочники.НоменклатурныеГруппы;
   
   СпрСтрана           = Справочники.КлассификаторСтранМира;
   СпрХарКа     = Справочники.ХарактеристикиНоменклатуры;
   СпрСерии     = Справочники.СерииНоменклатуры;
   НаборЗаписей = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей();
   
   //СпрЕдиницыИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("");
   
   Если СпрКлЕдИзм.Пустая() Тогда
       Предупреждение("Единица измерения не найдена!");
       Возврат;
   КонецЕсли;
   Если СпрТЦ.Пустая() Тогда
       Предупреждение("Тип цен не найден!");
       Возврат;
   КонецЕсли;
   Если ТекВалюта.Пустая() Тогда
       Предупреждение("Валюта не обнаружена!");
       Возврат;
   КонецЕсли;
   
   Попытка
       Excel.Workbooks.Open(ПутьКФайлу);
       ОшибкиКоличество = 0;
       ОчиститьСообщения();
       ВремяСтарта = ТекущаяДата();
       
       Для Каждого Лист Из Excel.Sheets Цикл
           
           //Проверка на соответствие ячеек
           //"НомерСтроки"-"Наименование товара"-"Код"-"ШтрихКод"-"Количество"-"Цена"
           
           ОписаниеОшибкиСодержанияПолей = "";
           
           Если Лист.Cells(3,1).Value <> "Н стр" Тогда
               ОписаниеОшибкиСодержанияПолей = ОписаниеОшибкиСодержанияПолей + "В первом столбце должен Номер строки!";    
           КонецЕсли;
           Если Лист.Cells(3,2).Value <> "Артикул" Тогда
               ОписаниеОшибкиСодержанияПолей = ОписаниеОшибкиСодержанияПолей + Символы.ПС + "Во втором столбце должен быть Артикул!";
           КонецЕсли;
           Если Лист.Cells(3,3).Value <> "Номенклатура" Тогда
               ОписаниеОшибкиСодержанияПолей = ОписаниеОшибкиСодержанияПолей + Символы.ПС + "В третьем столбце должна быть Номенклатура!";
           КонецЕсли;
           //
           Если Лист.Cells(3,4).Value <> "Группа" Тогда
               ОписаниеОшибкиСодержанияПолей = ОписаниеОшибкиСодержанияПолей + Символы.ПС + "В четвёртом столбце должна быть Группа!";
           КонецЕсли;    
           //
           Если Лист.Cells(3,5).Value <> "Цвет" Тогда
               ОписаниеОшибкиСодержанияПолей = ОписаниеОшибкиСодержанияПолей + Символы.ПС + "В пятом столбце должен быть Цвет!";
           КонецЕсли;
           Если Лист.Cells(3,6).Value <> "Размер" Тогда
               ОписаниеОшибкиСодержанияПолей = ОписаниеОшибкиСодержанияПолей + Символы.ПС + "В шестом столбце должен быть Размер!";    
           КонецЕсли;
           Если Лист.Cells(3,7).Value <> "Полнота" Тогда
               ОписаниеОшибкиСодержанияПолей = ОписаниеОшибкиСодержанияПолей + Символы.ПС + "В седьмом столбце должно быть Количество!";    
           КонецЕсли;
           Если Лист.Cells(3,8).Value <> "Код" Тогда
               ОписаниеОшибкиСодержанияПолей = ОписаниеОшибкиСодержанияПолей + Символы.ПС + "В восьмом столбце должен быть Код!";
           КонецЕсли;
           Если Лист.Cells(3,9).Value <> "Штрихкод" Тогда
               ОписаниеОшибкиСодержанияПолей = ОписаниеОшибкиСодержанияПолей + Символы.ПС + "В девятом столбце долджен быть штрихкод!";
           КонецЕсли;
           Если Лист.Cells(3,10).Value <> "ГТД" Тогда
               ОписаниеОшибкиСодержанияПолей = ОписаниеОшибкиСодержанияПолей + Символы.ПС + "В десятом столбце должен быть ГТД!";
           КонецЕсли;
           Если Лист.Cells(3,11).Value <> "Страна" Тогда
               ОписаниеОшибкиСодержанияПолей = ОписаниеОшибкиСодержанияПолей + Символы.ПС + "В одиннадцатом столбце должна быть Страна!";
           КонецЕсли;
           Если Лист.Cells(3,12).Value <> "Кол" Тогда
               ОписаниеОшибкиСодержанияПолей = ОписаниеОшибкиСодержанияПолей + Символы.ПС + "В двенадцатом столбце должно быть Количество!";
           КонецЕсли;
           Если Лист.Cells(3,13).Value <> "Цена" Тогда
               ОписаниеОшибкиСодержанияПолей = ОписаниеОшибкиСодержанияПолей + Символы.ПС + "В тринадцатом столбце должна быть Цена!";
           КонецЕсли;
           
           Если ОписаниеОшибкиСодержанияПолей <> "" Тогда
               //Сообщить(ОписаниеОшибкиСодержанияПолей);
               Продолжить;
           КонецЕсли;    
           
           КЧ = Новый КвалификаторыЧисла(15,2);
           КС = Новый КвалификаторыСтроки();
           
           Массив = Новый Массив;
           Массив.Добавить(Тип("Строка"));
           ОписаниеТиповС = Новый ОписаниеТипов(Массив, , КС);
           Массив.Очистить();
           Массив.Добавить(Тип("Число"));
           ОписаниеТиповЧ = Новый ОписаниеТипов(Массив, , ,КЧ);
           
           ЕдиницыИзмерения = Справочники.ЕдиницыИзмерения;
           
           ИмяЛиста = Врег(СокрЛП(Лист.Name));
           
           НовыйДокУЦН = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент();
           НовыйДокУЦН.Дата                       = ТекущаяДата();    
           НовыйДокУЦН.НеПроводитьНулевыеЗначения = Истина;    
           
           НоваяСтрока = НовыйДокУЦН.ТипыЦен.Добавить();
           НоваяСтрока.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Закупочные");
                       
           ПоследняяСтрока = Лист.UsedRange.Rows.Count;
           Для Строка = 4 По ПоследняяСтрока Цикл
               
               Индикатор =  цел(Строка/ПоследняяСтрока*100);
               ОбработкаПрерыванияПользователя();
               
               НСтр             = Лист.Cells(Строка,1).Value;
               Артикул          = Лист.Cells(Строка,2).Value;
               ИхНоменклатура   = Лист.Cells(Строка,3).Value;
               ИхНомГруппа      = Лист.Cells(Строка,4).Value;
               Цвет             = Лист.Cells(Строка,5).Value;
               Размер           = Лист.Cells(Строка,6).Value;
               Полнота          = Лист.Cells(Строка,7).Value;
               Код              = Лист.Cells(Строка,8).Value;
               Штрихкод         = Лист.Cells(Строка,9).Text;
               ГТД              = Лист.Cells(Строка,10).Text;
               Страна           = Лист.Cells(Строка,11).Value;
               Кол              = Число(Лист.Cells(Строка,12).Text);
               Цена             = Лист.Cells(Строка,13).Text;
               
               //находим номенклатуру в справочнике
               //по штрихкоду
               //если нет - создаём её
               РезПоиска      = ПоискНоменклатуры(Штрихкод);
               Если РезПоиска = СпрНомРа.ПустаяСсылка() Тогда
                   //Создаём новый элемент
                   НовыйТовар                         = СпрНомРа.СоздатьЭлемент();
                   
                   НовыйТовар.Артикул                 = Артикул;
                   НовыйТовар.Наименование            = СокрЛП(ИхНоменклатура);
                   НовыйТовар.НаименованиеПолное      = СокрЛП(ИхНоменклатура);
                   НовыйТовар.БазоваяЕдиницаИзмерения = СпрКлЕдИзм;
                   НовыйТовар.ВидНоменклатуры         = ВидНоменклатуры;
                   НовыйТовар.Родитель                = РодительскаяПапка;
                   НовыйТовар.СтавкаНДС               = СтавкаНДС;
                   
                   //
                   сНомГруппа = СпрНомГруппа.НайтиПоНаименованию(ИхНомГруппа,Истина);
                   Если сНомГруппа              = СпрНомГруппа.ПустаяСсылка() Тогда
                       НоваяГруппа              = СпрНомГруппа.СоздатьЭлемент();
                       НоваяГруппа.Наименование = ИхНомГруппа;
                       НоваяГруппа.Записать();
                       сНомГруппа               = НоваяГруппа.Ссылка;
                   КонецЕсли;    
                   НовыйТовар.НоменклатурнаяГруппа    = сНомГруппа;
                   //
                   
                   //поиск в справочнике стран
                   СпрСтрана = Справочники.КлассификаторСтранМира.НайтиПоНаименованию(Страна,Истина);
                   Если СпрСтрана.Пустая() Тогда
                       ТекСтрана                    = Справочники.КлассификаторСтранМира.СоздатьЭлемент();
                       ТекСтрана.Наименование       = Страна;
                       ТекСтрана.НаименованиеПолное = Страна;
                       ТекСтрана.Записать();
                       СпрСтрана = ТекСтрана.Ссылка;
                   КонецЕсли;
                   НовыйТовар.СтранаПроисхождения        = СпрСтрана;
                   
                   СсылкаГТД            = СпрГТД.НайтиПоКоду(ГТД);
                   
                   Если СсылкаГТД       = Справочники.НомераГТД.ПустаяСсылка() Тогда    
                       НовыйГТД             = СпрГТД.СоздатьЭлемент();
                       НовыйГТД.Код         = ГТД;
                       НовыйГТД.Записать();
                       СсылкаГТД            = НовыйГТД.Ссылка;
                   КонецЕсли;
                   
                   НовыйТовар.ВестиУчетПоСериям       = Истина;
                   НовыйТовар.НомерГТД                = СсылкаГТД;
                   НовыйТовар.Записать();
                   
                   СпрСерии                = Справочники.СерииНоменклатуры;
                   НоваяСерия              = СпрСерии.СоздатьЭлемент();
                   НоваяСерия.Владелец     = НовыйТовар.Ссылка;
                   НоваяСерия.НомерГТД     = СсылкаГТД;
                   НоваяСерия.Наименование = ГТД;
                   НоваяСерия.Записать();
                   
                   ЕИ = ЕдиницыИзмерения.СоздатьЭлемент();
                   ЕИ.Наименование = "шт";
                   ЕИ.Владелец     = НовыйТовар.Ссылка;
                   ЕИ.Коэффициент  = 1;
                   ЕИ.Записать();
                   
                   НовыйТовар.ЕдиницаХраненияОстатков = ЕИ.Ссылка;
                   
                   НовыйТовар.Записать();
                   
                   РезПоиска = НовыйТовар.Ссылка;
                   
                   ДобавитьШК(РезПоиска, Штрихкод);
               Иначе    
                   НайденнаяСсылкаЕИ      =  ЕдиницыИзмерения.НайтиПоНаименованию("шт",Истина,,РезПоиска);
                   Если НайденнаяСсылкаЕИ =  ЕдиницыИзмерения.ПустаяСсылка() Тогда
                       ЕИ = ЕдиницыИзмерения.СоздатьЭлемент();
                       ЕИ.Наименование    = "шт";
                       ЕИ.Владелец        =  РезПоиска;
                       ЕИ.Записать();
                       РезПоиска.ЕдиницаХраненияОстатков = ЕИ.Ссылка;
                       РезПоиска.Записать();
                   Иначе    
                       ЕИ = НайденнаяСсылкаЕИ;
                       
                   Конецесли;
                   
                   СсылкаГТД            = СпрГТД.НайтиПоКоду(ГТД);
                   
                   Если СсылкаГТД       = Справочники.НомераГТД.ПустаяСсылка() Тогда    
                       НовыйГТД             = СпрГТД.СоздатьЭлемент();
                       НовыйГТД.Код         = ГТД;
                       НовыйГТД.Записать();
                       СсылкаГТД            = НовыйГТД.Ссылка;
                   КонецЕсли;
                   
                   ОбъектНомРа = РезПоиска.ПолучитьОбъект();
                   ОбъектНомРа.ВестиУчетПоСериям          = Истина;
                   ОбъектНомРа.ВестиУчетПоХарактеристикам = ложь;
                   ОбъектНомРа.НомерГТД                   = СсылкаГТД;
                   
                   Если Артикул <> "" Тогда
                       ОбъектНомРа.Артикул = Артикул;
                   КонецЕсли;
                   
                   Если РезПоиска.НоменклатурнаяГруппа = СпрНомГруппа.ПустаяСсылка() Тогда
                       сНомГруппа = СпрНомГруппа.НайтиПоНаименованию(ИхНомГруппа,Истина);
                       Если сНомГруппа              = СпрНомГруппа.ПустаяСсылка() Тогда
                           НоваяГруппа              = СпрНомГруппа.СоздатьЭлемент();
                           НоваяГруппа.Наименование = ИхНомГруппа;
                           НоваяГруппа.Записать();
                           сНомГруппа               = НоваяГруппа.Ссылка;
                       КонецЕсли;    
                       ОбъектНомРа.НоменклатурнаяГруппа    = сНомГруппа;
                   КонецЕсли;
                   
                   ОбъектНомРа.Записать();
                   
                   СпрСерии                = Справочники.СерииНоменклатуры;
                   ВыборкаСерий            = СпрСерии.Выбрать(,РезПоиска);
                   псСпрСерии              = СпрСерии.ПустаяСсылка();
                   НайденаСерия            = псСпрСерии;
                   Пока ВыборкаСерий.Следующий() Цикл
                       НайденаСерия = ВыборкаСерий.Ссылка;
                       Прервать;
                   КонецЦикла;    
                   Если НайденаСерия = СпрСерии.ПустаяСсылка() Тогда
                       НоваяСерия              = СпрСерии.СоздатьЭлемент();
                       НоваяСерия.Владелец     = РезПоиска;
                       НоваяСерия.НомерГТД     = СсылкаГТД;
                       НоваяСерия.Наименование = ГТД;
                       НоваяСерия.Записать();
                   КонецЕсли;    
                   
                   Сообщить("Для существующего товара " + СокрЛП(РезПоиска) + " установлен ГТД: " + СокрЛП(ГТД));
                   
               КонецЕсли;
               
               //ЗаписатьСвойство(РезПоиска,НаименованиеСвойства,ЗначениеСвойства);
               ЗаписатьСвойство(РезПоиска,"размер",Размер);
               
               ЗаписатьСвойство(РезПоиска,"цвет",Цвет);
               
               //ЗаписатьСвойство(РезПоиска,"торговая марка",ТорговаяМарка);
               
               Если Строка(Полнота) <> "" Тогда
                   ЗаписатьСвойство(РезПоиска,"полнота",полнота);
               КонецЕсли;
               
               //А нужно ли устанавливать цены?
               //Может они уже записаны в таком же значении?
               МассивТипЦен = Новый Массив;
               МассивТипЦен.Добавить(СпрТЦ);
               
               ЦелесообразностьВводаНовойЦены = КонтрольЦелесообразностиЗаписиЦеныНоменклатуры(РезПоиска,МассивТипЦен,Цена);
               
               Если ЦелесообразностьВводаНовойЦены = Истина Тогда
                   
                   НоваяСтрока                  = НовыйДокУЦН.Товары.Добавить();
                   НоваяСтрока.ТипЦен           = СпрТЦ;
                   НоваяСтрока.Номенклатура     = РезПоиска;
                   НоваяСтрока.ЕдиницаИзмерения = ЕИ.Ссылка;
                   НоваяСтрока.Цена             = Цена;
                   НоваяСтрока.Валюта           = ТекВалюта;
               КонецЕсли;
           КонецЦикла;
           
           НовыйДокУЦН.Ответственный     = ПараметрыСеанса.ТекущийПользователь;
           НовыйДокУЦН.Комментарий       = "Документ сформирован на основании файла excel " + СокрЛП(лПолучитьИмяФайлаИзПолногоПути(ПутьКФайлу));
           //НовыйДокУЦН.ПолучитьФорму().Открыть();
           
           НовыйДокУЦН.Записать(РежимЗаписидокумента.Запись);
           Документы.УстановкаЦенНоменклатуры.ПолучитьФормуСписка().Открыть();
       КонецЦикла;
       
       Если ОписаниеОшибкиСодержанияПолей <> "" Тогда
           Сообщить(ОписаниеОшибкиСодержанияПолей);
       КонецЕсли;
       
       //СоздатьТаблицуПоЛисту(ТаблицаРеквизитов,"Лист1");
       
       Если ОшибкиКоличество > 0 Тогда
           ЗавершениеОбработки();
           Возврат;
       КонецЕсли;
       
       //ДобавитьДокументы();
       //
       //Документы[ИмяДокумента].ПолучитьФормуСписка().Открыть();
       
       ВремяФиниша = ТекущаяДата();
       ВремяРаботыМин = Цел((ВремяФиниша - ВремяСтарта)/60);
       ВремяРаботыСек = (ВремяФиниша - ВремяСтарта) - ВремяРаботыМин * 60;
       Сообщить(?(ОшибкиКоличество>0,"Выявлено " + СокрЛП(строка(ОшибкиКоличество))+ " ошибок",""),СтатусСообщения.Информация);        
       Сообщить("Время выполнения:" + строка(ВремяРаботыМин) + " мин. " + строка(ВремяРаботыСек) +  " сек.",СтатусСообщения.Информация);
       
       ЗавершениеОбработки();
       
       Сообщить("Обработка завершена!",СтатусСообщения.Информация);  
       
       Надпись = "Выполнено";
       
   Исключение
       ЗавершениеОбработки();
       Предупреждение(ОписаниеОшибки());
   КонецПопытки;
   
КонецПроцедуры
6 ssh2006
 
10.08.11
17:20
Используй отладку - поставь точку останова в процедуре записи и посмотри, появляются ли там размеры вообще
7 Жан Пердежон
 
10.08.11
17:20
пвх подчиненный наверно
8 Aprobator
 
10.08.11
17:22
сдается мне, что где то отбор включен по умолчанию.
9 Aprobator
 
10.08.11
17:30
а не - все проще. Назначение свойства кто указывать будет? Вот свойство цвет явно уже было у номенклатуры, а свойство размер создавалось в коде. А там ляп - назначение свойства (Справочник Номенклатура) не указан.
10 Жан Пердежон
 
10.08.11
17:33
точнее да, не подчиненный, а
НазначениеСвойства - не заполнено
11 Woolf
 
10.08.11
17:54
(9) - я жутко извиняюсь, но ранее я прописал у номенклатуры и Цвет, и Размер. То есть, выражаясь по простонародному, в карточке номенклатуры напротив "Цвет" стоит "красный", а напротив "Размер" ничего нет. А в регистре красота - все написано и прописано.
12 Aprobator
 
10.08.11
17:55
(11) ищи одноименное свойство, но не у справочника номенклатура. Больше в голову ничего не приходит.
13 Aprobator
 
10.08.11
17:56
+(12) у тебя же нет контрольки, что свойство именно от Номенклатуры схватилось.
14 Woolf
 
10.08.11
17:59
(13) опа
в точку у "Характеристик номенклатуры" тоже есть Размер
"у тебя же нет контрольки" - а как ее прописать?
15 Жан Пердежон
 
10.08.11
18:19
вот этот кусок кода исправить надо:

   пвхСвойство = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию(НаименованиеСвойства,Истина);
   Если пвхСвойство = неопределено Тогда
       пвхСвойство = ПланыВидовХарактеристик.СвойстваОбъектов.СоздатьЭлемент();
       пвхСвойство.Наименование = НаименованиеСвойства;
       
       пвхСвойство.Записать(ложь);
   КонецЕсли;
16 Woolf
 
10.08.11
18:24
(15) - эт понятно, а как НазначениеСвойства указать?
пвхСвойство.НазначениеСвойства =
17 Aprobator
 
11.08.11
09:49
(16) после = проблема что поставить что ли?
18 Aprobator
 
11.08.11
09:51
в обработке лучше укажи список свойств явно через реквизиты. Тебе так проще будет. Код в (15) вообще не катит.
19 Aprobator
 
11.08.11
09:53
а еще проще на время работы твоей обработки, раз уж свойство создано. Переименуй Размер у характеристики номенклатуры в Размер1 например. После того как обработка отработает - вернешь все взад.
20 Жан Пердежон
 
11.08.11
10:54
(16) там предопределенное значение будет, в первая строка в (15) тоже не катит