Дополнение всех материалов в существующий элемент справочника с одинаковым названием
Есть обработка иморта из одной программы в 1С, которая при импорте создаёт Элементы справочника, справочник Спецификаций Номенклатуры, где добавляются материалы загруженного изделия.
Необходимо что бы при одинаковом наименовании загружаемой спецификации все элементы добавлялись в уже существующий Элемент справочника а не создавало новый с тем же названием ? (Соответсвенно если наименование другое то создавать новый)
Код который создаёт элемент справочника
Необходимо что бы при одинаковом наименовании загружаемой спецификации все элементы добавлялись в уже существующий Элемент справочника а не создавало новый с тем же названием ? (Соответсвенно если наименование другое то создавать новый)
Код который создаёт элемент справочника
&НаСервере
Процедура ПолучитьТекущиеИзделия(КодДокумента,НомерЗаказа)
//НомерЗаказа = Объект.НомерЗаказа;
Объект.НомерЗаказа = НомерЗаказа;
Менеджер = РегистрыСведений.ф_ЭлементыИзделия.СоздатьМенеджерЗаписи();
Длина = Менеджер.Длина;
Профиль = Менеджер.Профиль;
Если ЗаказПВХТипИзделия = Справочники.ТипыИзделий.Алюминий Тогда
ТипА = "Алюминий";
ИначеЕсли ЗаказПВХТипИзделия = Справочники.ТипыИзделий.ОкнаПВХ Тогда
ТипП = "ПВХ";
КонецЕсли;
ИзделияЗаказа = ПолучитьМассивИзделий(КодДокумента);
Номенклатура.Очистить();
СоответствияНоменклатуры.Очистить();
Объект.Изделия.Очистить();
ТаблицаИзделий.Очистить();
Для Каждого Изделие Из ИзделияЗаказа Цикл
НовоеИзделие = Объект.Изделия.Добавить();
Если Изделие.НаименованиеИТ5 = "Тип№1" Тогда
НовоеИзделие.Наименование = "Тип№1"; Иначе
НовоеИзделие.Наименование = "Светопрозрачная Конструкция " + ТипА + Длина + Формат(Объект.НомерЗаказа,"ЧГ=0") + " #" + Формат(Изделие.Номер,"ЧЦ=3; ЧВН=");
КонецЕсли;
НовоеИзделие.Количество = Изделие.Количество;
НовоеИзделие.Цвет = ПолучитьЦвет(Изделие.Цвет);
НовоеИзделие.Цена = Изделие.Цена;
НовоеИзделие.Сумма = Изделие.Сумма;
НовоеИзделие.СуммаАксессуаров = Изделие.СуммаАксессуаров;
НовоеИзделие.Площадь1Изд = Изделие.Площадь;
НовоеИзделие.Площадь = Изделие.Площадь * НовоеИзделие.Количество;
НовоеИзделие.СуммаИзделийАксессуаров = Изделие.Сумма + Изделие.СуммаАксессуаров;
НовоеИзделие.Эскиз = Изделие.Эскиз;
ДополнитьТаблицуСоответствий(Изделие.Номенклатура);
НоваяСтрокаИзделие = ТаблицаИзделий.Добавить();
НоваяСтрокаИзделие.Номер = Изделие.Номер;
НоваяСтрокаИзделие.Наименование = НовоеИзделие.Наименование;
НоваяСтрокаИзделие.Количество = Изделие.Количество;
НоваяСтрокаИзделие.Цвет = СокрЛП(Изделие.Цвет);
НоваяСтрокаИзделие.ЦветОкраски = ПолучитьЦвет(Изделие.Цвет);
НоваяСтрокаИзделие.Цена = Окр((Изделие.Сумма + Изделие.СуммаАксессуаров)/НоваяСтрокаИзделие.Количество,2);
НоваяСтрокаИзделие.Сумма = НоваяСтрокаИзделие.Цена*НоваяСтрокаИзделие.Количество;
НоваяСтрокаИзделие.Площадь = Изделие.Площадь;
НоваяСтрокаИзделие.Эскиз = Изделие.Эскиз;
НоваяСтрокаИзделие.НаименованиеИТ5 = Изделие.НаименованиеИТ5;
НоваяСтрокаИзделие.ТаблицаСпецификации.Загрузить(Изделие.Номенклатура);
КонецЦикла;
НайтиСоответствия();
КонецПроцедуры
ПоказатьПрикрепленные файлы:
По теме из базы знаний
- 50+ советов для успешной сдачи 1С: Специалист по платформе
- Концепция автоматизации многопрофильного Холдинга в системе АУБ на платформе 1С
- Повышение качества разработки. Статья 3. Ошибки программы
- Конфигурация Flowcon: Набор инструментов для управления задачами, проектами и бизнесом в 1С
- Комплексный контроль остатков. Для одного или сразу нескольких логически связанных регистров накопления. Универсальное решение уровня данных для контроля не только складских остатков
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
в вашем коде создается запись в регистре сведений, а не создается номенклатура
в коде, где у вас создается номенклатура надо написать что-то типа
в коде, где у вас создается номенклатура надо написать что-то типа
ЭлементНоменклатура = Справочник.Номенклатура.НайтиПоНаименованию(НаименованиеИзЗагрузки);
Если не значениеЗаполнено(ЭлементНоменклатура) Тогда
ЭлементНоменклатура = Справочник.Номенклатура.СоздатьЭлемент();
КонецЕсли;
(3) Что-то на подобии такого ? Только всё равно создаётся новый элемент в справочнике а не дополняется существующий
Запрос = Новый Запрос();
Запрос.Текст = "ВЫБРАТЬ
| СпецификацииНоменклатуры.Ссылка
|ИЗ
| Справочник.СпецификацииНоменклатуры КАК СпецификацииНоменклатуры
|ГДЕ
| СпецификацииНоменклатуры.ВыходныеИзделия.Номенклатура = &Номенклатура";
Запрос.УстановитьПараметр("Номенклатура", Номен.Ссылка);
Спецификация = Запрос.Выполнить().Выбрать();
Пока Спецификация.Следующий() Цикл
СпецОбъект = Спецификация.Ссылка.ПолучитьОбъект();
СпецОбъект.Активная = Ложь;
СпецОбъект.Записать();
КонецЦикла;
//Если Спецификация.Следующий() Тогда
// Спецификация = Спецификация.Ссылка.ПолучитьОбъект();
//Иначе
Спецификация = Справочники.СпецификацииНоменклатуры.СоздатьЭлемент();
Спецификация.ВидСпецификации = Перечисления.ВидыСпецификаций.Сборочная;
Спецификация.Наименование = Номен.Наименование;
Спецификация.Активная = Истина;
Спецификация.Состояние = Перечисления.СостоянияОбъектов.Утвержден;
Спецификация.ДатаУтверждения = ТекущаяДата();
Спецификация.Ответственный = ПараметрыСеанса.ТекущийПользователь;
ВИ = Спецификация.ВыходныеИзделия.Добавить();
ВИ.Номенклатура = Номен.Ссылка;
ВИ.Количество = 1;
ВИ.ЕдиницаИзмерения = Номен.ЕдиницаХраненияОстатков;
//КонецЕсли;
Показать//Если Спецификация.Следующий() Тогда
// Спецификация = Спецификация.Ссылка.ПолучитьОбъект();
//Иначе
Спецификация = Справочники.СпецификацииНоменклатуры.СоздатьЭлемент();
тут у вас вместо спецификации из запроса создается новый объект
Пока Спецификация.Следующий() Цикл
СпецОбъект = Спецификация.Ссылка.ПолучитьОбъект();
СпецОбъект.Активная = Ложь;
СпецОбъект.Записать();
КонецЦикла;
а тут просто активируется найденная спецификация
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот