по началу нужно было написать обработку для загрузки excel файла в 1с, потом создать программно папку и подпапку в которую записать номенклатуру с файла. и короче сейчас нужно взять справочник номенклатура где есть реквизит "артикул" и записать туда содержимое колонки ITEMNO(содержимое из загруженного файла).
КОД:
Как я поняла нужно было добавить условие , снова обратиться к номенклатуре, присвоить значение и записать. Что не так тут?
КОД:
&НаСервере
Процедура ЗаписатьДанныеНаСервере()
Для Каждого СтрокаДанных Из Объект.ДанныеФайла Цикл
Наименование = СтрокаДанных.ITEMNO + " " + СтрокаДанных.GENDER + " " + СтрокаДанных.STORY + " " + СтрокаДанных.DESCRIPTION + " " + СтрокаДанных.COLOUR;
Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(Наименование, Истина);
Если Не ЗначениеЗаполнено(Номенклатура) Тогда
Номенклатура = Справочники.Номенклатура.СоздатьЭлемент();
Номенклатура.Наименование = Наименование;
Номенклатура.Родитель = СоздатьГруппу(СтрокаДанных);
//Функция на возвращение созданной группы. вернуть в переменную номенклатура.родитель
Номенклатура.Записать();
Иначе
Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(Наименование, Истина);
Если ЗначениеЗаполнено(Номенклатура) Тогда
Номенклатура.Артикул = СтрокаДанных.ITEMNO;
Номенклатура.Записать();
КонецЕсли;
КонецЕсли;
КонецЦикла;
Сообщить("Группы созданы");
Сообщить("Загрузка выполнена успешно!");
КонецПроцедуры
ПоказатьКак я поняла нужно было добавить условие , снова обратиться к номенклатуре, присвоить значение и записать. Что не так тут?
По теме из базы знаний
- Загрузка прайс-листа в 1С по артикулу, или коду, или наименованию номенклатуры
- Загрузка из файла Excel номенклатуры, с иерархией. Для конфигурации Управление Торговлей 11.4
- Загрузка данных из файла Excel в 1С: БП 2.0, 3.0, БАУ 2.0, УПП 1.3, УТ 10.3, 11.4 (установка Excel обязательно)
- Загрузка цен из Excel в 1С:Бухгалтерию 3.0
- Загрузка данных из файла Excel в 1С: БП 2.0, 3.0, БАУ 2.0, УПП 1.3, УТ 10.3, 11.4 (установка Excel не требуется)
Найденные решения
Если Не ЗначениеЗаполнено(Номенклатура) Тогда
Номенклатура = Справочники.Номенклатура.СоздатьЭлемент();
Номенклатура.Наименование = Наименование;
Номенклатура.Родитель = СоздатьГруппу(СтрокаДанных); //Сколько строк столько и групп?
Номенклатура.Записать();
Иначе //Не надо больше никаких условий. Оно уже поставлено. Значение либо заполнено либо нет
Ном = Номенклатура.ПолучитьОбъект(); //При заполненом значении объект не создается и его нет, пока не получишь
Ном.Артикул = СтрокаДанных.ITEMNO;
Ном.Записать();
КонецЕсли;
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(4)
Все верно, но при этом артикул не заполняется.
Не потом, а в случае, если найдена номенклатура, то только тогда установить артикул, но в этом случае вы артикул пытаетесь присвоить напрямую ссылке, как в ошибку не вываливается - не понятно.
если не заполнено значит создать элемент
Все верно, но при этом артикул не заполняется.
и потом если есть такая номенклатура то записать артикул
Не потом, а в случае, если найдена номенклатура, то только тогда установить артикул, но в этом случае вы артикул пытаетесь присвоить напрямую ссылке, как в ошибку не вываливается - не понятно.
(8) и как это прописать?
так понимаю условие:
Иначе
Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(Наименование, Истина);
Если ЗначениеЗаполнено(Номенклатура) Тогда
Номенклатура.Артикул = СтрокаДанных.ITEMNO;
Номенклатура.Записать();
КонецЕсли;
тут не подходит?
так понимаю условие:
Иначе
Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(Наименование, Истина);
Если ЗначениеЗаполнено(Номенклатура) Тогда
Номенклатура.Артикул = СтрокаДанных.ITEMNO;
Номенклатура.Записать();
КонецЕсли;
тут не подходит?
(9) не подходит.
Найдите отличия самостоятельно:
Найдите отличия самостоятельно:
............
Наименование = СтрокаДанных.ITEMNO + " " + СтрокаДанных.GENDER + " " + СтрокаДанных.STORY + " " + СтрокаДанных.DESCRIPTION + " " + СтрокаДанных.COLOUR;
Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(Наименование, Истина);
Если Не ЗначениеЗаполнено(Номенклатура) Тогда
Номенклатура = Справочники.Номенклатура.СоздатьЭлемент();
Иначе
Номенклатура = Номенклатура.ПолучитьОбъект();
КонецЕсли;
Номенклатура.Артикул = СтрокаДанных.ITEMNO;
Номенклатура.Наименование = Наименование;
Номенклатура.Родитель = СоздатьГруппу(СтрокаДанных);
//Функция на возвращение созданной группы. вернуть в переменную номенклатура.родитель
Номенклатура.Записать();
......
ПоказатьЕсли Не ЗначениеЗаполнено(Номенклатура) Тогда
Номенклатура = Справочники.Номенклатура.СоздатьЭлемент();
Номенклатура.Наименование = Наименование;
Номенклатура.Родитель = СоздатьГруппу(СтрокаДанных); //Сколько строк столько и групп?
Номенклатура.Записать();
Иначе //Не надо больше никаких условий. Оно уже поставлено. Значение либо заполнено либо нет
Ном = Номенклатура.ПолучитьОбъект(); //При заполненом значении объект не создается и его нет, пока не получишь
Ном.Артикул = СтрокаДанных.ITEMNO;
Ном.Записать();
КонецЕсли;
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот