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

Настройка сортировки изделий номенклатуры 1с.предприятие

Автор Yanawerg, 07 июн 2024, 13:13

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

Yanawerg

При загрузке заказа через обработку создаётся новый элемент в справочнике в котором сохраняться данные материалов загружаемого заказа, прописал что бы при загрузке заказа при одинаковом наименовании материалы сохранялись в существующий элемент справочника с тем же названием но все ещё создаётся новый с тем же наименованием.
Что не правильно прописал или не дописал?

КОД:

     НоваяСтрокаИзделие = Справочники.СпецификацииНоменклатуры.НайтиПоНаименованию(Изделие.НаименованиеИТ5 = "Тип№1");
   Если НоваяСтрокаИзделие = Справочники.СпецификацииНоменклатуры.ПустаяСсылка() Тогда
      НоваяСтрокаИзделие = ТаблицаИзделий.Добавить();
      НоваяСтрокаИзделие.Номер         = Изделие.Номер;
      НоваяСтрокаИзделие.Наименование    = НовоеИзделие.Наименование;
      НоваяСтрокаИзделие.Количество       = Изделие.Количество;
      НоваяСтрокаИзделие.Цвет          = СокрЛП(Изделие.Цвет);
      НоваяСтрокаИзделие.ЦветОкраски      = ПолучитьЦвет(Изделие.Цвет);
      НоваяСтрокаИзделие.Цена            = Окр((Изделие.Сумма + Изделие.СуммаАксессуаров)/НоваяСтрокаИзделие.Количество,2);
      НоваяСтрокаИзделие.Сумма          = НоваяСтрокаИзделие.Цена*НоваяСтрокаИзделие.Количество;
      НоваяСтрокаИзделие.Площадь         = Изделие.Площадь;
      НоваяСтрокаИзделие.Эскиз         = Изделие.Эскиз;
      НоваяСтрокаИзделие.НаименованиеИТ5    = Изделие.НаименованиеИТ5;
      НоваяСтрокаИзделие.ТаблицаСпецификации.Загрузить(Изделие.Номенклатура);
    Иначе
     СтрокаИзделие = НоваяСтрокаИзделие.ПолучитьЭлемент();
     СтрокаИзделие.Номер         = Изделие.Номер;
      СтрокаИзделие.Наименование    = НовоеИзделие.Наименование;
      СтрокаИзделие.Количество       = Изделие.Количество;
      СтрокаИзделие.Цвет          = СокрЛП(Изделие.Цвет);
      СтрокаИзделие.ЦветОкраски      = ПолучитьЦвет(Изделие.Цвет);
      СтрокаИзделие.Цена            = Окр((Изделие.Сумма + Изделие.СуммаАксессуаров)/НоваяСтрокаИзделие.Количество,2);
      СтрокаИзделие.Сумма          = НоваяСтрокаИзделие.Цена*НоваяСтрокаИзделие.Количество;
      СтрокаИзделие.Площадь         = Изделие.Площадь;
      СтрокаИзделие.Эскиз         = Изделие.Эскиз;
      СтрокаИзделие.НаименованиеИТ5    = Изделие.НаименованиеИТ5;
   КонецЕсли;

LexaK

Yanawerg, а этот код у вас вообще работает? под отладчиком проходили?
если помогло нажмите: Спасибо!

Yanawerg

LexaK, Да он работает, разве что он как раньше создаёт новый элемент а не исправляет существующий

LexaK

Yanawerg, а что эта команда получает? что за элемент?
СтрокаИзделие = НоваяСтрокаИзделие.ПолучитьЭлемент();
если помогло нажмите: Спасибо!

Yanawerg

LexaK, Вероятнее всего её то и не правильно прописал, потому что получается что она ничего не получает.

LexaK

Yanawerg, вообще схема такая должна быть, ваш код это вообще что-то промежуточное, загрузка таблицы обработки...

    ИзделиеСсылка = Справочники.СпецификацииНоменклатуры.НайтиПоНаименованию(Изделие.НаименованиеИТ5 = "Тип№1");
    Если ИзделиеСсылка = Справочники.СпецификацииНоменклатуры.ПустаяСсылка() Тогда
        ИзделиеОбъект = Справочники.СпецификацииНоменклатуры.СоздатьЭлемент();
    Иначе   
        ИзделиеОбъект = ИзделиеСсылка.ПолучитьОбъект();
    КонецЕсли; 
    //сот здесь пере/заполняете объект
    //ИзделиеОбъект.рекв = Знач;
   
    //и затем записываете
    ИзделиеОбъект.Записать();
   
   
если помогло нажмите: Спасибо!

Yanawerg

LexaK, Всё работает прекрасно только одно но, как правильно указать "ТаблицуИзделий" ?
Если прописать ИзделиеОбъект = ТаблицаИзделий.Добавить(); тогда он просто добавляет новый
А если не указывать ТаблицаИзделий.Добавить(); тогда он не находит строки которые должны заполняться.

LexaK

Yanawerg, примерно такой окд должен быть (вниманеие! могут быть опечатки)

НоваяСтрокаИзделие = ТаблицаИзделий.Найти(Изделие.Наименование,"Наименование");
Если НоваяСтрокаИзделие = Неопределено Тогда
//строка не найдена, добавляем, заполняем
      НоваяСтрокаИзделие = ТаблицаИзделий.Добавить();
      НоваяСтрокаИзделие.Номер = Изделие.Номер;
      НоваяСтрокаИзделие.Наименование = Изделие.Наименование;
      НоваяСтрокаИзделие.Количество = Изделие.Количество;
      НоваяСтрокаИзделие.Цвет = СокрЛП(Изделие.Цвет);
      НоваяСтрокаИзделие.ЦветОкраски = ПолучитьЦвет(Изделие.Цвет);
      НоваяСтрокаИзделие.Цена = Окр((Изделие.Сумма + Изделие.СуммаАксессуаров)/НоваяСтрокаИзделие.Количество,2);
      НоваяСтрокаИзделие.Сумма = НоваяСтрокаИзделие.Цена*НоваяСтрокаИзделие.Количество;
      НоваяСтрокаИзделие.Площадь = Изделие.Площадь;
      НоваяСтрокаИзделие.Эскиз = Изделие.Эскиз;
      НоваяСтрокаИзделие.НаименованиеИТ5= Изделие.НаименованиеИТ5;
      НоваяСтрокаИзделие.ТаблицаСпецификации.Загрузить(Изделие.Номенклатура);
Иначе                             
  //строка найдена, увеличиваем количество, пересчитываем сумму
      НоваяСтрокаИзделие.Количество = НоваяСтрокаИзделие.Количество + Изделие.Количество;
      НоваяСтрокаИзделие.Сумма = НоваяСтрокаИзделие.Цена*НоваяСтрокаИзделие.Количество;
КонецЕсли;
если помогло нажмите: Спасибо!

Yanawerg

LexaK, Возможно ошибочный метод: "Найти" в строке
НоваяСтрокаИзделие = ТаблицаИзделий.Найти(Изделие.Наименование,"Наименование");

LexaK

Yanawerg, при выполнении что пишет?
текст ошибки приведите...

и подробнее про ваш реквизит ТаблицаИзделий - это что? его Тип? и т.д.
если помогло нажмите: Спасибо!

Теги:

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

Рейтинг@Mail.ru

Поиск