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

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

Автор сергей123, 20 фев 2019, 11:21

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

сергей123

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

прилагаю обработку


&НаСервере
Функция ПолучитьНоменклатуру(СтрокаТекст)

Запрос = Новый Запрос;
Артикул = СтрокаТекст.Артикул;
Наименование = СтрокаТекст.Наименование;

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

Выборка = Запрос.Выполнить().Выбрать();

//Если Выборка.Следующий() тогда

//НоменклатураСсылка = Выборка.Ссылка;

//Иначе

РодительСсылка = ГруппаНоменклатуры;

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

ВыборкаПроизводитель = Запрос.Выполнить().Выбрать();
Если ВыборкаПроизводитель.Следующий() тогда
ПроизводительСсылка = ВыборкаПроизводитель.Ссылка;
Иначе
ПроизводительОбъект = Справочники.ЗначенияСвойствОбъектов.СоздатьЭлемент();
ПроизводительОбъект.Владелец = ХарактеристикаПроизводитель;
ПроизводительОбъект.Наименование = ТекстПроизводитель;
Попытка
ПроизводительОбъект.Записать();
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
ПроизводительСсылка = ПроизводительОбъект.Ссылка;
КонецЕсли;
Иначе
ПроизводительСсылка = Справочники.ЗначенияСвойствОбъектов.ПустаяСсылка();
КонецЕсли;

НоменклатураОбъект = Справочники.Номенклатура.СоздатьЭлемент();
НоменклатураОбъект.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Товар;
НоменклатураОбъект.ВидНоменклатуры = ВидНоменклатуры;
НоменклатураОбъект.Качество = Перечисления.ГрадацииКачества.Новый;
НоменклатураОбъект.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;

ЗаполнитьЗначенияСвойств(НоменклатураОбъект, ВидНоменклатуры, , "Ссылка, Владелец, ПометкаУдаления, ВерсияДанных, Предопределенный, ЭтоГруппа, Родитель, Описание, Наименование, Код, ИмяПредопределенныхДанных");

Если ИспользоватьУпаковки тогда
НоменклатураОбъект.ИспользоватьУпаковки = ИспользоватьУпаковки;
НоменклатураОбъект.НаборУпаковок = НаборУпаковок;
НоменклатураОбъект.ЕдиницаИзмерения = НаборУпаковок.ЕдиницаИзмерения;
КонецЕсли;

ГруппаДоступаНоменклатурыДляКонтроля = ВидНоменклатуры.ГруппаДоступа;
ШаблонНаименованияДляПечати = ВидНоменклатуры.ШаблонНаименованияДляПечатиНоменклатуры;
ШаблонРабочегоНаименования = ВидНоменклатуры.ШаблонРабочегоНаименованияНоменклатуры;
ЗапретРедактированияНаименованияДляПечати = ВидНоменклатуры.ЗапретРедактированияНаименованияНоменклатурыДляПечати;
ЗапретРедактированияРабочегоНаименования = ВидНоменклатуры.ЗапретРедактированияРабочегоНаименованияНоменклатуры;
НаборСвойств = ВидНоменклатуры.НаборСвойств;
ИспользоватьХарактеристики = ВидНоменклатуры.ИспользоватьХарактеристики;
ЭтоНабор = Ложь;
ВидСодержитДрагоценныеМатериалы = Ложь;

НоменклатураОбъект.Наименование = Наименование;
НоменклатураОбъект.НаименованиеПолное = Наименование;
НоменклатураОбъект.Артикул = Артикул;
НоменклатураОбъект.Родитель = РодительСсылка;

ЗаписьПроизводитель = НоменклатураОбъект.ДополнительныеРеквизиты.Добавить();
ЗаписьПроизводитель.Значение = ПроизводительСсылка;
ЗаписьПроизводитель.Свойство = ХарактеристикаПроизводитель;

Попытка
НоменклатураОбъект.Записать();
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
НоменклатураСсылка = НоменклатураОбъект.Ссылка;

//КонецЕсли;

Возврат НоменклатураСсылка;

КонецФункции






прилагаю полный текст обработки
https://yadi.sk/i/ElPTXFFlA05M-g
https://yadi.sk/d/DCoitpQO-bw_jg

antoneus

Сергей, это уже пятая, кажется, тема. Товар не суммируется, потому что вы его не суммируете. Лично вы. 1С выполняет код, который вы пишете. У нее нет своих мозгов - только ваши. Поэтому берите отладчик в зубы и смотрите - в какой момент она создает новую номенклатуру и не суммирует ее с уже существующей.

alexandr_ll

А зачем вы делаете выборку по справочнику "Номенклатура", если все равно всегда создаете новый элемент?

сергей123


alexandr_ll

Цитата: сергей123 от 20 фев 2019, 13:39
проверяем артикул есть ли он в базе или его надо создать
У вас должно быть что-то вроде:
НайденнаяСсылка=Справочники.Номенклатура.НайтиПоРеквизиту("Артикул",Артикул)
Если НайденнаяСсылка = Справочники.Номенклатура.ПустаяСсылка() Тогда
НайденнаяСсылка =Справочники.Номенклатура.СоздатьЭлемент();

КонецЕсли;

сергей123


alexandr_ll

Цитата: сергей123 от 20 фев 2019, 17:27
куда вставить этот код в текст обработки?
Ну найдите у себя , где вы создаете новый элемент и создавайте его только при условии, что нет уже найденного по артикулу. Сейчас у вас такого условия нет.

Теги:

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

Рейтинг@Mail.ru

Поиск