|
Как сделать так чтобы в колонку МодельныйНомер Добавлялись значения свойств | ☑ | ||
---|---|---|---|---|
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
|
Нужна колонка МодельНомер
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |