Имя: Пароль:
1C
1С v8
Как сделать так чтобы в колонку МодельныйНомер Добавлялись значения свойств
0 mr_andruxa
 
20.04.15
14:19
Есть вот такой код:
Процедура ПрочитатьЛистНоменклатура(Excel, ExcelЛист, ТД) Экспорт
    НачатьТранзакцию();
    Ошибка = Ложь;
    xlLastCell = 11;
    
    РеквизитВесНетто = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("ВесНетто");
    ПроверитьЗначение(РеквизитВесНетто,"ДополнительныеРеквизитыИСведения - ВесНетто (Тип Число 10.3)");
    
    РеквизитКодТНВД = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("КодТНВД");
    ПроверитьЗначение(РеквизитКодТНВД,"ДополнительныеРеквизитыИСведения - КодТНВД (Тип Строка 50)");
    
    РеквизитМодельНомер = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("МодельНомер");
    ПроверитьЗначение(РеквизитМодельНомер,"ДополнительныеРеквизитыИСведения - МодельНомер (Тип Строка 50)");    

    
    РеквизитМодельныйГод = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("МодельныйГод");
    ПроверитьЗначение(РеквизитМодельныйГод,"ДополнительныеРеквизитыИСведения - МодельныйГод (Тип Строка 50)");
    
    РеквизитСтавкаТП = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("СтавкаТП");
    ПроверитьЗначение(РеквизитСтавкаТП,"ДополнительныеРеквизитыИСведения - СтавкаТП (Тип Строка 50)");
    
    Попытка     
        ActiveCell = Excel.ActiveCell.SpecialCells(xlLastCell);
        RowCount = ActiveCell.Row;
        ColumnCount = ActiveCell.Column;
        Row = Число(ПерваяСтрока);
        
        Пока ЗначениеЗаполнено(ExcelЛист.Cells(Row,1).Text) Цикл        
            Артикул             = СокрЛП(ExcelЛист.Cells(Row,1).Text);
            Наименование         = СокрЛП(ExcelЛист.Cells(Row,2).Text);  
            Модель                = СокрЛП(ExcelЛист.Cells(Row,3).Text);
            АртикулПоставщика    = СокрЛП(ExcelЛист.Cells(Row,4).Text);
            ЕдиницаИзмерения     = СокрЛП(ExcelЛист.Cells(Row,5).Text);
            СтранаПроисхождения    = СокрЛП(ExcelЛист.Cells(Row,6).Text);
            ВесНетто            = СокрЛП(ExcelЛист.Cells(Row,7).Text);
            ВесБрутто            = СокрЛП(ExcelЛист.Cells(Row,8).Text);
            Объем                = СокрЛП(ExcelЛист.Cells(Row,9).Text);
            ВидНоменклатуры        = СокрЛП(ExcelЛист.Cells(Row,10).Text);
            КодТНВД                = СокрЛП(ExcelЛист.Cells(Row,11).Text);
            СтавкаТП            = СокрЛП(ExcelЛист.Cells(Row,12).Text);
            Производитель        = СокрЛП(ExcelЛист.Cells(Row,13).Text);
            ШКЕАН                = СокрЛП(ExcelЛист.Cells(Row,14).Text);
            ШКУПС                = СокрЛП(ExcelЛист.Cells(Row,15).Text);
            УчетПоГТД            = СокрЛП(ExcelЛист.Cells(Row,16).Text);
            ЦеноваяГруппа        = СокрЛП(ExcelЛист.Cells(Row,17).Text);
            Папка1                = СокрЛП(ExcelЛист.Cells(Row,19).Text);
            Папка2                = СокрЛП(ExcelЛист.Cells(Row,20).Text);
            Папка3                = СокрЛП(ExcelЛист.Cells(Row,21).Text);
            Папка4                = СокрЛП(ExcelЛист.Cells(Row,22).Text);
            МодельНомер            = СокрЛП(ExcelЛист.Cells(Row,23).Text);
            МодельныйГод        = СокрЛП(ExcelЛист.Cells(Row,24).Text);
            
            // Создание структуры папок //                
            Если ЗначениеЗаполнено(Папка1)  Тогда
                Если Справочники.Номенклатура.НайтиПоНаименованию(Папка1) = Справочники.Номенклатура.ПустаяСсылка() Тогда
                    НовОбъект = Справочники.Номенклатура.СоздатьГруппу();
                    НовОбъект.Наименование = Папка1;
                    НовОбъект.Записать();                                    
                КонецЕсли;
            КонецЕсли;
            
            ГруппаПоиска = Справочники.Номенклатура.НайтиПоНаименованию(Папка1);        
            
            Если ЗначениеЗаполнено(Папка1)  Тогда
                Если ЗначениеЗаполнено(Папка2) Тогда
                    Если Справочники.Номенклатура.НайтиПоНаименованию(Папка2, Истина, ГруппаПоиска) = Справочники.Номенклатура.ПустаяСсылка() Тогда
                        НовОбъект = Справочники.Номенклатура.СоздатьГруппу();
                        НовОбъект.Наименование = Папка2;
                        НовОбъект.Родитель = Справочники.Номенклатура.НайтиПоНаименованию(Папка1);
                        НовОбъект.Записать();
                    КонецЕсли;
                КонецЕсли;
            КонецЕсли;
            
            ГруппаПоиска = Справочники.Номенклатура.НайтиПоНаименованию(Папка2);        
            
            Если ЗначениеЗаполнено(Папка1)  Тогда
                Если ЗначениеЗаполнено(Папка2) Тогда
                    Если ЗначениеЗаполнено(Папка3) Тогда
                        Если Справочники.Номенклатура.НайтиПоНаименованию(Папка3, Истина, ГруппаПоиска) = Справочники.Номенклатура.ПустаяСсылка() Тогда
                            НовОбъект = Справочники.Номенклатура.СоздатьГруппу();
                            НовОбъект.Наименование = Папка3;
                            НовОбъект.Родитель = Справочники.Номенклатура.НайтиПоНаименованию(Папка2);
                            НовОбъект.Записать();
                        КонецЕсли;
                    КонецЕсли;                     
                КонецЕсли;
            КонецЕсли;
            
            // Единицы измерения //
            Если Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(ЕдиницаИзмерения) =
                Справочники.ЕдиницыИзмерения.ПустаяСсылка() Тогда                    
                Сообщить("Для строки " + Row + " в базе нет такой единицы измерения " + ЕдиницаИзмерения);
                Описание = "В базе нет такой единицы измерения ";
                ЗаписатьВФайл(ТД, Row, Артикул, Наименование, ЕдиницаИзмерения, Описание);
                Отказ = Истина;                
                Ошибка = Истина;
            КонецЕсли;
            
            // Создание вида номенклатуры //
            Если Справочники.ВидыНоменклатуры.НайтиПоНаименованию(ВидНоменклатуры, Истина) = Справочники.ВидыНоменклатуры.ПустаяСсылка() Тогда
                ВНом = Справочники.ВидыНоменклатуры.СоздатьЭлемент();
                ВНом.Наименование = ВидНоменклатуры;
                ВНом.ТипНоменклатуры = Перечисления.ТипыНоменклатуры[СокрЛП(ВидНоменклатуры)];
                ВНом.Записать();
                Описание = "В базе создан новый вид номенклатуры ";
                ЗаписатьВФайл(ТД, Row, Артикул, Наименование, ВидНоменклатуры, Описание);        
            КонецЕсли;
            
            // Создание ценовой группы //
            Если ЗначениеЗаполнено(ЦеноваяГруппа) Тогда
                Если Справочники.ЦеновыеГруппы.НайтиПоНаименованию(ЦеноваяГруппа, Истина) = Справочники.ЦеновыеГруппы.ПустаяСсылка() Тогда                        
                    ЦГ = Справочники.ЦеновыеГруппы.СоздатьЭлемент();                            
                    ЦГ.Наименование = ЦеноваяГруппа;
                    ЦГ.Записать();
                    Описание = "В базе создана новая ценовая группа ";
                    ЗаписатьВФайл(ТД, Row, Артикул, Наименование, ЦеноваяГруппа, Описание);
                КонецЕсли;
            КонецЕсли;
            
            Если ЗначениеЗаполнено(СтранаПроисхождения) Тогда
                Если Справочники.КлассификаторСтранМира.НайтиПоНаименованию(СтранаПроисхождения, Истина) = Справочники.КлассификаторСтранМира.ПустаяСсылка() Тогда                        
                    Сообщить("Не найдена страна " + СтранаПроисхождения + " необходимо создать её и запустить загрузку номенклатуры заново!");
                    Ошибка = Истина;
                    Прервать;
                КонецЕсли;
            КонецЕсли;
            
            Номенклатура = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", Артикул);
            
            Если Номенклатура = Справочники.Номенклатура.ПустаяСсылка() Тогда
                
                // Создание элемента номенклатуры
                
                Номенклатура = Справочники.Номенклатура.СоздатьЭлемент();
                Если ЗначениеЗаполнено(СтранаПроисхождения) Тогда
                    Номенклатура.СтранаПроисхождения = СтранаПроисхождения;
                КонецЕсли;    
                Номенклатура.Наименование         = Наименование;
                Номенклатура.НаименованиеПолное = Наименование;
                Номенклатура.Артикул            = Артикул;
                Номенклатура.ВестиУчетПоХарактеристикам = Ложь;
                
                Попытка
                    Номенклатура.ВидНоменклатуры    = Справочники.ВидыНоменклатуры.НайтиПоНаименованию(ВидНоменклатуры, Истина);
                Исключение
                    Сообщить("Не найден Вид номенклатуры: " + ВидНоменклатуры);                     
                КонецПопытки;
                
                Если Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(ЕдиницаИзмерения) =
                    Справочники.КлассификаторЕдиницИзмерения.ПустаяСсылка() Тогда
                    Сообщить("Создайте единицу измерения " + ЕдиницаИзмерения);                
                Иначе                
                    Номенклатура.БазоваяЕдиницаИзмерения    =
                    Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(ЕдиницаИзмерения);
                КонецЕсли;    
                
                //Номенклатура.Весовой = ЗначениеЗаполнено(ВесНетто);    
                
                Если УчетПоГТД = "Да"
                    ИЛИ УчетПоГТД = "да" Тогда
                    Номенклатура.ВестиУчетПоСериям     = Истина;
                    Номенклатура.ВестиПартионныйУчетПоСериям = Истина;
                Иначе
                    Номенклатура.ВестиУчетПоСериям     = Ложь;
                    Номенклатура.ВестиПартионныйУчетПоСериям = Ложь;
                КонецЕсли;
                
                Номенклатура.СтавкаНДС = Перечисления.СтавкиНДС.НДС18;
                
                // Присваеваем ценовую группу
                Если ЗначениеЗаполнено(ЦеноваяГруппа) Тогда
                    Номенклатура.ЦеноваяГруппа = Справочники.ЦеновыеГруппы.НайтиПоНаименованию(ЦеноваяГруппа);
                Иначе
                    Номенклатура.ЦеноваяГруппа = Справочники.ЦеновыеГруппы.ПустаяСсылка();
                КонецЕсли;
                
                // Устанавливаем основного поставщика
                Если ЗначениеЗаполнено(Производитель) Тогда
                    Номенклатура.ОсновнойПоставщик = Справочники.Контрагенты.НайтиПоНаименованию(Производитель);
                Иначе
                    Номенклатура.ОсновнойПоставщик = Справочники.Контрагенты.ПустаяСсылка();
                КонецЕсли;
                
                // Помещаем в папку                                
                Если ЗначениеЗаполнено(Папка1)  Тогда
                    Если ЗначениеЗаполнено(Папка2) Тогда
                        Если ЗначениеЗаполнено(Папка3) Тогда
                            Если ЗначениеЗаполнено(Папка4) Тогда
                                Номенклатура.Родитель = Справочники.Номенклатура.НайтиПоНаименованию(Папка4);
                            Иначе
                                Номенклатура.Родитель = Справочники.Номенклатура.НайтиПоНаименованию(Папка3);
                            КонецЕсли;
                        Иначе
                            Номенклатура.Родитель = Справочники.Номенклатура.НайтиПоНаименованию(Папка2);
                        КонецЕсли;
                    Иначе
                        Номенклатура.Родитель = Справочники.Номенклатура.НайтиПоНаименованию(Папка1);
                    КонецЕсли;                    
                КонецЕсли;         
                
            // Артикул существует
            Иначе
                Номенклатура = Номенклатура.ПолучитьОбъект();
                
                Если ЗначениеЗаполнено(СтранаПроисхождения) Тогда
                    Номенклатура.СтранаПроисхождения = СтранаПроисхождения;
                КонецЕсли;
                
                Если ЗначениеЗаполнено(Наименование) Тогда
                    Номенклатура.Наименование = Наименование;
                    Номенклатура.НаименованиеПолное = Наименование;
                КонецЕсли;                
                
                Если УчетПоГТД = "Да"
                    ИЛИ УчетПоГТД = "да" Тогда
                    Номенклатура.ВестиУчетПоСериям     = Истина;
                    Номенклатура.ВестиПартионныйУчетПоСериям = Истина;
                Иначе
                    Номенклатура.ВестиУчетПоСериям     = Ложь;
                    Номенклатура.ВестиПартионныйУчетПоСериям = Ложь;
                КонецЕсли;
                
                Номенклатура.ВестиУчетПоХарактеристикам = Ложь;
                
                // Присваеваем ценовую группу
                Если ЗначениеЗаполнено(ЦеноваяГруппа) Тогда
                    Номенклатура.ЦеноваяГруппа = Справочники.ЦеновыеГруппы.НайтиПоНаименованию(ЦеноваяГруппа);                 
                КонецЕсли;
                
                // Устанавливаем основного поставщика
                Если ЗначениеЗаполнено(Производитель) Тогда
                    Номенклатура.ОсновнойПоставщик = Справочники.Контрагенты.НайтиПоНаименованию(Производитель);
                Иначе
                    Номенклатура.ОсновнойПоставщик = Справочники.Контрагенты.ПустаяСсылка();
                КонецЕсли;

                // Помещаем в папку                                
                Если ЗначениеЗаполнено(Папка1)  Тогда
                    Если ЗначениеЗаполнено(Папка2) Тогда
                        Если ЗначениеЗаполнено(Папка3) Тогда
                            Если ЗначениеЗаполнено(Папка4) Тогда
                                Номенклатура.Родитель = Справочники.Номенклатура.НайтиПоНаименованию(Папка4);
                            Иначе
                                Номенклатура.Родитель = Справочники.Номенклатура.НайтиПоНаименованию(Папка3);
                            КонецЕсли;
                        Иначе
                            Номенклатура.Родитель = Справочники.Номенклатура.НайтиПоНаименованию(Папка2);
                        КонецЕсли;
                    Иначе
                        Номенклатура.Родитель = Справочники.Номенклатура.НайтиПоНаименованию(Папка1);
                    КонецЕсли;                    
                КонецЕсли;
                        
            КонецЕсли;
            
            Попытка
                Номенклатура.Записать();
                ПроверитьЕдиницуХраненияОстатков(Номенклатура);
                ПроверитьЕдиницаДляОтчетов(Номенклатура);
                
                НоменклатураЕдиницаХраненияОстатков = Номенклатура.ЕдиницаХраненияОстатков.ПолучитьОбъект();
                Если ЗначениеЗаполнено(ВесБрутто) Тогда
                    НоменклатураЕдиницаХраненияОстатков.Вес = мПривестиКЧислу(ВесБрутто);
                КонецЕсли;    
                НоменклатураЕдиницаХраненияОстатков.Объем     = мПривестиКЧислу(Объем);
                НоменклатураЕдиницаХраненияОстатков.Записать();
                                
                ЗаписатьСвойство(Номенклатура, РеквизитСтавкаТП, СтавкаТП);
                ЗаписатьСвойство(Номенклатура, РеквизитМодельНомер, МодельНомер);
                ЗаписатьСвойство(Номенклатура, РеквизитМодельныйГод, МодельныйГод);
                ЗаписатьСвойство(Номенклатура, РеквизитКодТНВД, КодТНВД);
                ЗаписатьСвойство(Номенклатура, РеквизитВесНетто, мПривестиКЧислу(ВесНетто));
                
                Номенклатура.Записать();
            Исключение
                Сообщение = "Не удалось изменить значения номенклатуры с атрикулом ";
                Сообщить("" + Сообщение + " " + Артикул);
                ЗаписатьВФайл(ТД, Row, Артикул, Наименование, Артикул, Сообщение);
            КонецПопытки;

            // ШтрихКоды
            Если НЕ ЗначениеЗаполнено(ШКЕАН) Тогда
                ШКЕАН = Неопределено;
            КонецЕсли;
            
            Если НЕ ЗначениеЗаполнено(ШКУПС) Тогда
                ШКУПС = Неопределено;
            КонецЕсли;
            
            Если ШКЕАН <> Неопределено Тогда
                ЗаписатьШтрихКод(Номенклатура.Ссылка, ШКЕАН, Row, ТД, Артикул, ПланыВидовХарактеристик.ТипыШтрихкодов.EAN13);
            КонецЕсли;
            
            Если ШКУПС <> Неопределено Тогда
                ЗаписатьШтрихКод(Номенклатура.Ссылка, ШКУПС, Row, ТД, Артикул, ПланыВидовХарактеристик.ТипыШтрихкодов.Code128);                                    
            КонецЕсли;
            
            Row = Row + 1;
        КонецЦикла;
    Исключение
        Сообщить("Ошибка. Возможно неверно указана первая строка или не так составлен файл (Дубль наименований).");
        ОтменитьТранзакцию();
        Возврат;
    КонецПопытки;
    Сообщить("Обработанно " +  (Row - 2) + " позиций");
    Если Ошибка Тогда
        ОтменитьТранзакцию();    
    Иначе    
        ЗафиксироватьТранзакцию();
    КонецЕсли;    
КонецПроцедуры

Почему то после его выполнения Не записывается значение свойства МодельныйНомер. Точнее так оно записывается но только в колонку которую руками прописываю а автоматически не работает.
1 extrim-style
 
20.04.15
14:27
(0) м.б.птмчт МодельНомер <> МодельныйНомер?
2 mr_andruxa
 
20.04.15
15:26
Нужна колонка МодельНомер
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс