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