Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 18:39

Почему не грузиться в 1с новый производитель с тем же артикулом? Как изменить обработку что-бы артикул не проверялся а сразу заводился в справочник?

Автор сергей123, 22 янв 2019, 17:04

0 Пользователей и 1 гость просматривают эту тему.

сергей123

Почему не грузиться в 1с новый производитель с тем же артикулом? Как изменить обработку что-бы артикул не проверялся а сразу заводился в справочник?

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

сергей123


Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск