Как правильно создавать номенклатуру программно?

1. user1400191 23.06.20 23:13 Сейчас в теме
созданию номенклатуру программно, беру значения из excel, но вот попросили добавить новые реквезиты и никак не могу их назначить... Как их правильно назначить? Для примера написал какие значения должны бить, а что дальше делать не знаю...


НоваяНомеклатура.Наименование = строка.Наименование;
		НоваяНомеклатура.НаименованиеПолное = строка.Наименование;
		НоваяНомеклатура.Артикул = строка.Артикул;
		НоваяНомеклатура.ЕдиницаИзмерения = ЕдиницыИзмерения;
		НоваяНомеклатура.ЕдиницаДляОтчетов = ЕдиницыИзмерения;
		НоваяНомеклатура.Производитель = НайтиПроизводителя(строка.Производитель);
		НоваяНомеклатура.Родитель = НайтиРодителя(строка.Группа);                                                                                                              
		НоваяНомеклатура.ВидНоменклатуры = ВидТовара;


                ///// Вот тут ниже  я не знаю дальше как вставить значения... 




		//Параметры для удачного создания номенклатуры 
		//НоваяНомеклатура.Качество =  "новое";
		//НоваяНомеклатура.ГруппаФинансовогоУчета = "Товары";
		//НоваяНомеклатура.СтавкаНДС = 	18%;
		//НоваяНомеклатура.ТипНоменклатуры = "товары";
		//НоваяНомеклатура.СхемаОбеспечения = "Основная схема обеспечения (создана при обновлении ИБ)";
		//НоваяНомеклатура.РейтингПродаж = "низкий";
Показать
По теме из базы знаний
Найденные решения
13. veselon 24.06.20 11:00 Сейчас в теме
(1)
///// Вот тут ниже я не знаю дальше как вставить значения...
//Параметры для удачного создания номенклатуры
//НоваяНомеклатура.Качество = "новое";
//НоваяНомеклатура.ГруппаФинансовогоУчета = "Товары";
//НоваяНомеклатура.СтавкаНДС = 18%;
//НоваяНомеклатура.ТипНоменклатуры = "товары";
//НоваяНомеклатура.СхемаОбеспечения = "Основная схема обеспечения (создана при обновлении ИБ)";
//НоваяНомеклатура.РейтингПродаж = "низкий";

НАчнем с простого (у меня УТ11)... открываешь конфигурацию открываешь справочники.Номенклатура и смотришь что в реквизитах
например "Качество"
Качество является ссылкой на перечисление и писать нужно Код
НоваяНомеклатура.Качество = перечисления.ГрадацииКачества.Новый;

Если ты начнешь писать "перечисления." он тебе начнет подсказывать в 1с конфигураторе
Идем дальше ГруппаФинансовогоУчета является ссылкой на справочник
НоваяНомеклатура.ГруппаФинансовогоУчета = справочники.ГруппыФинансовогоУчетаНоменклатуры.НайтиПоНаименованию("Товары"); 

соответственно справочнике ГруппыФинансовогоУчетаНоменклатуры у тебя должна быть создана запись "Товары"
НоваяНомеклатура.СтавкаНДС =перечисления.СтавкиНДС.НДС18;
НоваяНомеклатура.ТипНоменклатуры = перечисления.ТипыНоменклатуры.Товар;
 НоваяНомеклатура.СхемаОбеспечения = справочники.СхемыОбеспечения.НайтиПоНаименованию("Основная схема обеспечения (создана при обновлении ИБ)");
НоваяНомеклатура.РейтингПродаж = справочники.РейтингиПродажНоменклатуры.НайтиПоНаименованию("низкий");


вообще у тебя в коде есть Функция НайтиПроизводителя();
которая скорее всего ищет производителя в справочнике "производители" и если не находит то создает. можешь по аналогии создать свои функции на справочники ГруппаФинансовогоУчета СхемыОбеспечения РейтингиПродажНоменклатуры
И код в функции примерно такой
функция НайтиПроизводителя(Производитель)
 ссылкаНаПроизводителя = Справочники.Производители.НайтиПоНаименованию(Производитель);

Если ссылкаНаПроизводителя = справочники.производители.ПустаяСсылка() тогда

спробъект = справочники.Производители.СоздатьЭлемент();
спробъект.Наименование = Производитель;
// какие-то обязательные реквизиты ещё заполняются;
спробъект.Записать();
возврат спробъект.Ссылка();
иначе
возврат ссылкаНаПроизводителя ;
Конецесли;

Конецфункции
Показать
user1706724; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user705522_constantin_h 36 23.06.20 23:20 Сейчас в теме
(1)
НоваяНоменклатура = Справочники.Номенклатура.СоздатьЭлемент()
НоваяНомеклатура.Наименование = строка.Наименование;
        НоваяНомеклатура.НаименованиеПолное = строка.Наименование;
        НоваяНомеклатура.Артикул = строка.Артикул;
        НоваяНомеклатура.ЕдиницаИзмерения = ЕдиницыИзмерения;
        НоваяНомеклатура.ЕдиницаДляОтчетов = ЕдиницыИзмерения;
        НоваяНомеклатура.Производитель = НайтиПроизводителя(строка.Производитель);
        НоваяНомеклатура.Родитель = НайтиРодителя(строка.Группа);                                                                                                              
        НоваяНомеклатура.ВидНоменклатуры = ВидТовара;
        НоваяНомеклатура.Записать()
Показать
4. user1400191 23.06.20 23:28 Сейчас в теме
(2) у меня проблема тут, а не в том что я не знаю как записывать((

  //Параметры для удачного создания номенклатуры 
        //НоваяНомеклатура.Качество =  "новое";
        //НоваяНомеклатура.ГруппаФинансовогоУчета = "Товары";
        //НоваяНомеклатура.СтавкаНДС =     18%;
        //НоваяНомеклатура.ТипНоменклатуры = "товары";
        //НоваяНомеклатура.СхемаОбеспечения = "Основная схема обеспечения (создана при обновлении ИБ)";
        //НоваяНомеклатура.РейтингПродаж = "низкий";
3. Xershi 1496 23.06.20 23:27 Сейчас в теме
(1) точно так же пишите функции поиска.
5. user1400191 23.06.20 23:29 Сейчас в теме
(3)Без функций поиска никак? Я пока вроде смог сделать пару пунктов
НоваяНомеклатура.СтавкаНДС = перечисления.СтавкиНДС.НДС18;
НоваяНомеклатура.Качество = Справочники.Качество.Новый;
7. user705522_constantin_h 36 23.06.20 23:34 Сейчас в теме
(5)Без функций поиска только предопределенные значения или перечисления.
8. Vix 29 23.06.20 23:37 Сейчас в теме
(7)Если данные их excel повторяются, сделайте соответствия справочник, при дальнейшем будите находить в нем значения, которые уже есть в вашей базе
9. user1400191 23.06.20 23:43 Сейчас в теме
(7)Предопредление пойдет, мне нужно заполнить любымы значениями, лишь бы номенклатура создавалась без проблем
12. Xershi 1496 24.06.20 08:34 Сейчас в теме
(7) так а в чем проблема? Код писать не умеете?
10. user1400191 24.06.20 00:16 Сейчас в теме
(5)Вот это не работает
НоваяНомеклатура.Качество = Справочники.Качество.Новый;
11. user705522_constantin_h 36 24.06.20 00:35 Сейчас в теме
(10)А есть справочник Качество? И в нём есть предопределённый элемент Новый? Тогда должно работать.
6. Vix 29 23.06.20 23:32 Сейчас в теме
(1)у вы должны иметь представление какому реквизиту номенклатуры присвоить данные значение. Качество какой тип имеет? ставка НДС ищется через поиск с в справочнике Справочники.СтавкиНДС.НайтиПоНаименованию("18%) - это как пример, ни знаю как у вас в базе ставки записаны, может отделять числа нужно и искать по реквизиту ставка.
ТипНоменклатуры это скорее всего перечисление нужно подставлять "ТипыНоменклатуры" или "ВидыНоменклатуры", Перечисления.ТипыНоменклатуры["Товары"]
13. veselon 24.06.20 11:00 Сейчас в теме
(1)
///// Вот тут ниже я не знаю дальше как вставить значения...
//Параметры для удачного создания номенклатуры
//НоваяНомеклатура.Качество = "новое";
//НоваяНомеклатура.ГруппаФинансовогоУчета = "Товары";
//НоваяНомеклатура.СтавкаНДС = 18%;
//НоваяНомеклатура.ТипНоменклатуры = "товары";
//НоваяНомеклатура.СхемаОбеспечения = "Основная схема обеспечения (создана при обновлении ИБ)";
//НоваяНомеклатура.РейтингПродаж = "низкий";

НАчнем с простого (у меня УТ11)... открываешь конфигурацию открываешь справочники.Номенклатура и смотришь что в реквизитах
например "Качество"
Качество является ссылкой на перечисление и писать нужно Код
НоваяНомеклатура.Качество = перечисления.ГрадацииКачества.Новый;

Если ты начнешь писать "перечисления." он тебе начнет подсказывать в 1с конфигураторе
Идем дальше ГруппаФинансовогоУчета является ссылкой на справочник
НоваяНомеклатура.ГруппаФинансовогоУчета = справочники.ГруппыФинансовогоУчетаНоменклатуры.НайтиПоНаименованию("Товары"); 

соответственно справочнике ГруппыФинансовогоУчетаНоменклатуры у тебя должна быть создана запись "Товары"
НоваяНомеклатура.СтавкаНДС =перечисления.СтавкиНДС.НДС18;
НоваяНомеклатура.ТипНоменклатуры = перечисления.ТипыНоменклатуры.Товар;
 НоваяНомеклатура.СхемаОбеспечения = справочники.СхемыОбеспечения.НайтиПоНаименованию("Основная схема обеспечения (создана при обновлении ИБ)");
НоваяНомеклатура.РейтингПродаж = справочники.РейтингиПродажНоменклатуры.НайтиПоНаименованию("низкий");


вообще у тебя в коде есть Функция НайтиПроизводителя();
которая скорее всего ищет производителя в справочнике "производители" и если не находит то создает. можешь по аналогии создать свои функции на справочники ГруппаФинансовогоУчета СхемыОбеспечения РейтингиПродажНоменклатуры
И код в функции примерно такой
функция НайтиПроизводителя(Производитель)
 ссылкаНаПроизводителя = Справочники.Производители.НайтиПоНаименованию(Производитель);

Если ссылкаНаПроизводителя = справочники.производители.ПустаяСсылка() тогда

спробъект = справочники.Производители.СоздатьЭлемент();
спробъект.Наименование = Производитель;
// какие-то обязательные реквизиты ещё заполняются;
спробъект.Записать();
возврат спробъект.Ссылка();
иначе
возврат ссылкаНаПроизводителя ;
Конецесли;

Конецфункции
Показать
user1706724; +1 Ответить
16. slavyan_arena 09.09.21 13:05 Сейчас в теме
(1)
вот вам самое гениальное решение )))

скопируем = справочники.Номенклатура.НайтиПоКоду("00-00091526");
		новаяНоменклатура = скопируем.Скопировать();


и дальше меняете название, вес или что там нужно было
nikolka75; kubatay; +2 Ответить
14. muskul 25.06.20 03:49 Сейчас в теме
есть функция заполнить настройки по умолчанию по типу номенклатуры
Номенклатура.ВидНоменклатуры = ВидНоменклатуры;
Номенклатура.ТипНоменклатуры = ВидНоменклатуры.ТипНоменклатуры;
Справочники.Номенклатура.ЗаполнитьРеквизитыПоВидуНоменклатуры(Номенклатура,,,ложь);
Номенклатура.Наименование = Наименование;
15. user1400191 25.06.20 13:30 Сейчас в теме
(14)Справочники.Номенклатура.ЗаполнитьРеквизитыПоВидуНоменклатуры(НоваяНомеклатура);
Это очень помогло, спасибо большое
Оберон; +1 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот