Всем привет нужна помощь, я из экселя создаю номенклатуры, как бы мне у вновь созданных номенклатур получить только что присвоенный код и заполнить его в табличную часть с условием, что если в табличной части реквизит код(Инв) заполнен то не помещаем туда запись, а если код пустой по заполняем сам код:
тут мы прочли файл:
ТабДок = Новый ТабличныйДокумент;
Попытка
ТабДок.Прочитать(Объект.ПутьКФайлу, СпособЧтенияЗначенийТабличногоДокумента.Значение);
Исключение
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Не удалось прочитать файл по причине:" + ОписаниеОшибки();
Сообщение.Сообщить();
Возврат;
КонецПопытки;
КолличествоСтрок = ТабДок.ВысотаТаблицы;
Для НомерСтроки = 2 По КоЛличествоСтрок Цикл
СтрокаДанных = Объект.ТаблицаДляЗагрузки.Добавить();
СтрокаДанных.ОсновноеСредство = ТабДок.ПолучитьОбласть("R" + Формат(НомерСтроки, "ЧГ=0") + "C" + 1).ТекущаяОбласть.Текст;
СтрокаДанных.Инв = ТабДок.ПолучитьОбласть("R" + Формат(НомерСтроки,"ЧГ=0") + "C" + 2).ТекущаяОбласть.Текст;
СтрокаДанных.МОЛ = ТабДок.ПолучитьОбласть("R" + Формат(НомерСтроки,"ЧГ=0") + "C" + 3).ТекущаяОбласть.Текст;
СтрокаДанных.Местонахождение = ТабДок.ПолучитьОбласть("R" + Формат(НомерСтроки,"ЧГ=0") + "C" + 4).ТекущаяОбласть.Текст;
СтрокаДанных.Сумма = ТабДок.ПолучитьОбласть("R" + Формат(НомерСтроки,"ЧГ=0") + "C" + 5).ТекущаяОбласть.Текст;
а тут создаем номенклатуру:
Для Каждого СтрокаДанных Из Объект.ТаблицаДляЗагрузки Цикл
Номенклатура = Справочники.ОсновныеСредства.СоздатьЭлемент();
Номенклатура.Наименование = СтрокаДанных.ОсновноеСредство;
Номенклатура.НаименованиеПолное = СтрокаДанных.ОсновноеСредство;
Номенклатура.Родитель = Справочники.ОсновныеСредства.НайтиПоНаименованию("Арендованные ОС");
Номенклатура.Записать();
(вот тут я так понимаю нужно как то сказать что присвоенный код загнать в табличную часть строкаДанных.ОсновноеСредство.Инв но если в реквизить запись есть, то мы оставляем то что заполнено а если записи нет то заполняем только что присвоенный код)
Сообщить("Запись, создана Успешно!");
КонецЦикла;
1. прочитали файл, определили существующую номенклатуру по файлу
2. что не определилось, создали и поместили ссылки в ту же ТЧ, которую наполняли в п.1
3. сформировали нужные записи в нужных регистрах
Если в справочнике уже есть элементы, то сначала надо поискать уже имеющиеся. Если для вас ориентир наименование, тогда по нему и ищите
Если Справочники.ОсновныеСредства.НайтиПоНаименованию(СтрокаДанных.ОсновноеСредство) = Справочники.ОсновныеСредства.ПустаяСсылка() Тогда
///Ваш код
Иначе
СпрОбъект = СтрокаДанных.ОсновноеСредство.ПолучитьОбъект();
///Заполняем нужные поля по необходимости, как в вашем коде, однако код не трогаем, к примеру:
СпрОбъект.Родитель = Справочники.ОсновныеСредства.НайтиПоНаименованию("Арендованные ОС");
СпрОбъект.Записать();
КонецЕсли;
нет, там все в списке будет новыми, просто далее я буде в регистры сведений заносить инвентарные номера, для некоторых позиций номера уже предопределены а для остальных инвентарный номер будет равен коду номенклатуры
(2)поэтому мне и надо получить код только что сформрованной номенклатуры поместить его в таблчасть, а если значение заполнено значит инвентарный номер будет не равен коду а свой
Я не понял. Если буде заполнять данными регистры сведений. Тогда в них надо запрашивать, если такая номенклатура с кодом.
Если хотите получить код только что созданного элемента тогда
СсылкаНового = Справочники.ОсновныеСредства.ПолучитьСсылку();
Номенклатура = Справочники.ОсновныеСредства.СоздатьЭлемент();
Номенклатура.Наименование = СтрокаДанных.ОсновноеСредство;
Номенклатура.НаименованиеПолное = СтрокаДанных.ОсновноеСредство;
Номенклатура.Родитель = Справочники.ОсновныеСредства.НайтиПоНаименованию("Арендованные ОС");
Номенклатура.УстановитьСсылкуНового(СсылкаНового);
Номенклатура.Записать();
КодТолькочтоСозданного = СсылкаНового.Код;
(7) я не в коем случае не в обиду и без притесаний,я наоборот пытаюсь понгять где я туплю)))), еще раз по порядку
1, мне не нужно сверять номенклатуры загружаемые с номенклатурами в базе,
2. при нажатии команды "Создать номенклатуры ОС" хочу чтоб все номенклатуры из табличной части (на скрине) создались в базе, и код который им присвоился попал в колонку "Инв" а если у (например стул у него есть реквизит таб части Инв заполнен, соответственно ему код присвоенный сюда не переносим, а вот стол без кода и сюда в реквизит Инв должен попасть код номенклатуры)
(11) А не проще заранее сгенерировать коды (шаблон как в базе).Протянув в Экселе колонку (создадутся коды по порядку). Уже имеющиеся коды заменить в том же Экселе. И присваивать эти коды созданным элементам.
ОсновныеСредства.Код =
Тогда у нас уже будут в экселе коды. И их можно будет загрузить в Регистр сведений стандартной обработкой "ЗагрузкаДанныхИзТабличногоДокумента_УФ_v2".
(15)
Создать на тестовой базе новый элемент. Он создаться с максимальным номером. От него и протянуть. вряд ли больше будут. Можно в форме списка справочника упорядочить по коду и просмотреть глазами какой последний.
(17) В обработке, ни один механизм не работает. Проще воспользоваться стандартной обработкой "ЗагрузкаДанныхИзТабличногоДокумента_УФ_v2". Генерируем Коды, заливаем в Основные средства. Затем этой же обработкой заливаем в табличную часть заранее созданного документа Операция.
(18)
(18) [IS-QUOTE]Проще воспользоваться стандартной обработкой[/QUO
а в "ЗагрузкаДанныхИзТабличногоДокумента_УФ_v2", как мне заполнить док операции введенные в ручную ?? просто создам я номенклатуру и тд, далее мне нужно в "операции введенные в ручную" нуджно созданные номенклатуры загнать на 001 счет?
не ну тот только наименование запрашивает, а где счет ДТ, покупатель, ос? или я не пойму как подрубить, вот например как я хочу заполнить файл, как такое обработке сделать?
(21) Тогда такое предложение, при создании номенклатуры, заполняем у новых объектов комментарий, к примеру "Загрузка 10.09.21". По ссылке описано создание документа операция и проводок по регистру бухгалтерии. https://helpf.pro/faq/view/813 Соответственно по нашему комментарию запросом извлекаем всю нужную номенклатуру и в цикле создаём проводки в регистре.