Загрузка Данных из обработки в 1С

1. demonsed97 10.10.21 13:00 Сейчас в теме
Всем привет нужна помощь, я из экселя создаю номенклатуры, как бы мне у вновь созданных номенклатур получить только что присвоенный код и заполнить его в табличную часть с условием, что если в табличной части реквизит код(Инв) заполнен то не помещаем туда запись, а если код пустой по заполняем сам код:
тут мы прочли файл:
ТабДок = Новый ТабличныйДокумент;
	Попытка
		ТабДок.Прочитать(Объект.ПутьКФайлу, СпособЧтенияЗначенийТабличногоДокумента.Значение);	
	Исключение
		Сообщение = Новый СообщениеПользователю;
		Сообщение.Текст = "Не удалось прочитать файл по причине:" + ОписаниеОшибки();
		Сообщение.Сообщить();
		Возврат;
	КонецПопытки;
	
	КолличествоСтрок = ТабДок.ВысотаТаблицы;
		Для НомерСтроки = 2 По КоЛличествоСтрок Цикл
	СтрокаДанных = Объект.ТаблицаДляЗагрузки.Добавить(); 
	СтрокаДанных.ОсновноеСредство = ТабДок.ПолучитьОбласть("R" + Формат(НомерСтроки, "ЧГ=0") + "C" + 1).ТекущаяОбласть.Текст;
	СтрокаДанных.Инв = ТабДок.ПолучитьОбласть("R" + Формат(НомерСтроки,"ЧГ=0") + "C" + 2).ТекущаяОбласть.Текст;
	СтрокаДанных.МОЛ = ТабДок.ПолучитьОбласть("R" + Формат(НомерСтроки,"ЧГ=0") + "C" + 3).ТекущаяОбласть.Текст;
	СтрокаДанных.Местонахождение = ТабДок.ПолучитьОбласть("R" + Формат(НомерСтроки,"ЧГ=0") + "C" + 4).ТекущаяОбласть.Текст;
	СтрокаДанных.Сумма = ТабДок.ПолучитьОбласть("R" + Формат(НомерСтроки,"ЧГ=0") + "C" + 5).ТекущаяОбласть.Текст;

а тут создаем номенклатуру:
Для Каждого СтрокаДанных Из Объект.ТаблицаДляЗагрузки Цикл
		
		Номенклатура = Справочники.ОсновныеСредства.СоздатьЭлемент();
		Номенклатура.Наименование = СтрокаДанных.ОсновноеСредство;
		Номенклатура.НаименованиеПолное = СтрокаДанных.ОсновноеСредство;
		Номенклатура.Родитель = Справочники.ОсновныеСредства.НайтиПоНаименованию("Арендованные ОС");
	   	Номенклатура.Записать();
(вот тут я так понимаю нужно как то сказать что присвоенный код загнать в табличную часть строкаДанных.ОсновноеСредство.Инв но если в реквизить запись есть, то мы оставляем то что заполнено а если записи нет то заполняем только что присвоенный код)
		Сообщить("Запись, создана Успешно!");


	КонецЦикла;
Показать

Заранее спасибо
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
8. nomad_irk 72 10.10.21 14:33 Сейчас в теме
(1)Разделите действия:

1. прочитали файл, определили существующую номенклатуру по файлу
2. что не определилось, создали и поместили ссылки в ту же ТЧ, которую наполняли в п.1
3. сформировали нужные записи в нужных регистрах
2. TokarevV 30 10.10.21 13:38 Сейчас в теме
Если в справочнике уже есть элементы, то сначала надо поискать уже имеющиеся. Если для вас ориентир наименование, тогда по нему и ищите
Если Справочники.ОсновныеСредства.НайтиПоНаименованию(СтрокаДанных.ОсновноеСредство) =  Справочники.ОсновныеСредства.ПустаяСсылка() Тогда
///Ваш код
Иначе
СпрОбъект = СтрокаДанных.ОсновноеСредство.ПолучитьОбъект();
///Заполняем нужные поля по необходимости, как в вашем коде, однако код не трогаем, к примеру:
СпрОбъект.Родитель = Справочники.ОсновныеСредства.НайтиПоНаименованию("Арендованные ОС");
СпрОбъект.Записать();
КонецЕсли;
3. demonsed97 10.10.21 13:40 Сейчас в теме
(2)
Иначе

нет, там все в списке будет новыми, просто далее я буде в регистры сведений заносить инвентарные номера, для некоторых позиций номера уже предопределены а для остальных инвентарный номер будет равен коду номенклатуры
4. demonsed97 10.10.21 13:41 Сейчас в теме
(2)поэтому мне и надо получить код только что сформрованной номенклатуры поместить его в таблчасть, а если значение заполнено значит инвентарный номер будет не равен коду а свой
5. TokarevV 30 10.10.21 13:55 Сейчас в теме
Я не понял. Если буде заполнять данными регистры сведений. Тогда в них надо запрашивать, если такая номенклатура с кодом.
 Если хотите получить код только что созданного элемента тогда
СсылкаНового = Справочники.ОсновныеСредства.ПолучитьСсылку();
Номенклатура = Справочники.ОсновныеСредства.СоздатьЭлемент();
Номенклатура.Наименование = СтрокаДанных.ОсновноеСредство;
Номенклатура.НаименованиеПолное = СтрокаДанных.ОсновноеСредство;
Номенклатура.Родитель = Справочники.ОсновныеСредства.НайтиПоНаименованию("Арендованные ОС");
Номенклатура.УстановитьСсылкуНового(СсылкаНового);
Номенклатура.Записать();
КодТолькочтоСозданного = СсылкаНового.Код;
Показать
6. demonsed97 10.10.21 14:13 Сейчас в теме
(5)
ики.ОсновныеСредства.СоздатьЭлемент();
Номенклатура.Наименование = С

ну получил я код а в табличную часть (ОсновноеСредство) как поместить
9. TokarevV 30 10.10.21 14:51 Сейчас в теме
(6)
Прикрепленные файлы:
7. TokarevV 30 10.10.21 14:19 Сейчас в теме
Что значит ваше "ну"? Я вам задолжать успел?
Прошу пояснить в какую табличную часть, какого объекта вы хотите поместить этот код?
10. demonsed97 10.10.21 17:30 Сейчас в теме
(7) я не в коем случае не в обиду и без притесаний,я наоборот пытаюсь понгять где я туплю)))), еще раз по порядку
1, мне не нужно сверять номенклатуры загружаемые с номенклатурами в базе,
2. при нажатии команды "Создать номенклатуры ОС" хочу чтоб все номенклатуры из табличной части (на скрине) создались в базе, и код который им присвоился попал в колонку "Инв" а если у (например стул у него есть реквизит таб части Инв заполнен, соответственно ему код присвоенный сюда не переносим, а вот стол без кода и сюда в реквизит Инв должен попасть код номенклатуры)
Прикрепленные файлы:
11. demonsed97 10.10.21 17:32 Сейчас в теме
(10)
о сверя

реквизит табличной части самой обработки, тоесть мы прочли туда попали значения файла, создали номенклатуры в нее же попали коды номенклатур)
12. TokarevV 30 10.10.21 17:55 Сейчас в теме
(11) Строка = ЭтотОбъект.ТабличнаяЧасть.Добавить();
Строка.Инв = СсылкаНового.Код;
Не сработает?
Можете прикрепить свою обработку к сообщению?
14. demonsed97 10.10.21 18:17 Сейчас в теме
(12)
(12)
ока = ЭтотОбъ

не тут он строку новую создаст и поместит туда код
Прикрепленные файлы:
ЗагрузитьЭксель.epf
13. TokarevV 30 10.10.21 18:02 Сейчас в теме
(11) А не проще заранее сгенерировать коды (шаблон как в базе).Протянув в Экселе колонку (создадутся коды по порядку). Уже имеющиеся коды заменить в том же Экселе. И присваивать эти коды созданным элементам.
ОсновныеСредства.Код =
Тогда у нас уже будут в экселе коды. И их можно будет загрузить в Регистр сведений стандартной обработкой "ЗагрузкаДанныхИзТабличногоДокумента_УФ_v2".
15. demonsed97 10.10.21 18:23 Сейчас в теме
(13)
ут в экселе коды. И их можн

я просто думаю нет ли риска нарваться на код который в базе уже есть
16. TokarevV 30 10.10.21 18:37 Сейчас в теме
(15)
Создать на тестовой базе новый элемент. Он создаться с максимальным номером. От него и протянуть. вряд ли больше будут. Можно в форме списка справочника упорядочить по коду и просмотреть глазами какой последний.
17. demonsed97 10.10.21 18:38 Сейчас в теме
(16)
а тестовой базе новый элемент. Он создаться с максимальным номером. О

можно и так, спасибо))
18. TokarevV 30 10.10.21 18:59 Сейчас в теме
(17) В обработке, ни один механизм не работает. Проще воспользоваться стандартной обработкой "ЗагрузкаДанныхИзТабличногоДокумента_УФ_v2". Генерируем Коды, заливаем в Основные средства. Затем этой же обработкой заливаем в табличную часть заранее созданного документа Операция.
19. demonsed97 10.10.21 19:17 Сейчас в теме
(18)
(18) [IS-QUOTE]Проще воспользоваться стандартной обработкой[/QUO
а в "ЗагрузкаДанныхИзТабличногоДокумента_УФ_v2", как мне заполнить док операции введенные в ручную ?? просто создам я номенклатуру и тд, далее мне нужно в "операции введенные в ручную" нуджно созданные номенклатуры загнать на 001 счет?
20. TokarevV 30 10.10.21 19:26 Сейчас в теме
(19) Обработка поддерживает заполнение табличной части Таблица регистров сведений документа "Операция".
Прикрепленные файлы:
21. demonsed97 10.10.21 19:32 Сейчас в теме
(20)
ца регис

не ну тот только наименование запрашивает, а где счет ДТ, покупатель, ос? или я не пойму как подрубить, вот например как я хочу заполнить файл, как такое обработке сделать?
Прикрепленные файлы:
22. TokarevV 30 10.10.21 19:44 Сейчас в теме
(21) Тогда такое предложение, при создании номенклатуры, заполняем у новых объектов комментарий, к примеру "Загрузка 10.09.21". По ссылке описано создание документа операция и проводок по регистру бухгалтерии. https://helpf.pro/faq/view/813
Соответственно по нашему комментарию запросом извлекаем всю нужную номенклатуру и в цикле создаём проводки в регистре.
23. TokarevV 30 10.10.21 20:06 Сейчас в теме
&НаСервере
Процедура СоздатьНаСервере()
	ДокОперация = Документы.ОперацияБух.СоздатьДокумент();
ДокОперация.Дата = ДатаДокумента;
ДокОперация.Организация = Организация;
ДокОперация.Ответственный = Ответственный;
ДокОперация.Содержание = Содержание;
ДокОперация.Комментарий = Комментарий;
ДокОперация.Записать();
ДокОперацияСсылка = ДокОперация.Ссылка;
   
РегХозрасчетный = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
РегХозрасчетный.Отбор.Регистратор.Значение = ДокОперацияСсылка;
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ОсновныеСредства.Ссылка КАК Ссылка
		|ИЗ
		|	Справочник.ОсновныеСредства КАК ОсновныеСредства
		|ГДЕ
		|	ОсновныеСредства.Комментарий ПОДОБНО ""Загрузка 10.10.21""";
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
	ОсновноеСредство = ВыборкаДетальныеЗаписи.Ссылка;
    РегЗапись = РегХозрасчетный.Добавить();
    РегЗапись.Период = ДатаДокумента;
    РегЗапись.Регистратор = ДокОперацияСсылка;
    РегЗапись.Организация = Организация;
    РегЗапись.Содержание  = "Корректировка стоимости ОС с 0 стоимостью";
    РегЗапись.СчетДт = Сч001;
    БухгалтерскийУчет.УстановитьСубконто(РегЗапись.СчетДт, РегЗапись.СубконтоДт, "Контрагенты", Контрагент);
    БухгалтерскийУчет.УстановитьСубконто(РегЗапись.СчетДт, РегЗапись.СубконтоДт, "ОсновныеСредства", ОсновноеСредство);
    РегЗапись.Сумма = ДБФ.Sum;
    
 КонецЦикла;   
РегХозрасчетный.Записать(); 
КонецПроцедуры
Показать

(21)
24. demonsed97 10.10.21 21:40 Сейчас в теме
(23)
1;
БухгалтерскийУчет.Устан

воооо щас попробую, пряяям спасииибо огроменное
Оставьте свое сообщение

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