Как выгрузить список новых созданных контрагентов (создаются программно)

1. Shecurok 08.04.21 11:26 Сейчас в теме
Здравствуйте. Вопрос в том, что загружаю данные из файла эксель, если контрагент не найден, создается новый:

СпрКонтрагент = Справочники.Контрагенты.СоздатьЭлемент();
			
			ДанныеДляЗаполнения = ДанныеЕдиныхГосРеестровПоИНН(ИННКонтрагента, ЭтоЮрЛицо);
			
			Если ЗначениеЗаполнено(ДанныеДляЗаполнения.ОписаниеОшибки) Тогда
				
				Сообщить("Контрагент не найден по ИНН:" + ИННКонтрагента + " Номер строки в файле "+ СтрокаТЗ.НомерСтрокиВФайле); //
				Возврат;
			ИначеЕсли ДанныеДляЗаполнения.Свойство("ЮридическоеФизическоеЛицо") Тогда
			Если ДанныеДляЗаполнения.Свойство("ЮридическоеФизическоеЛицо") Тогда	
				
				ЭтоЮрЛицо = (ДанныеДляЗаполнения.ЮридическоеФизическоеЛицо = ПредопределенноеЗначение("Перечисление.ЮридическоеФизическоеЛицо.ЮридическоеЛицо"));
				
				ДополнительныеПараметры = Новый Структура("АдресРеквизитовКонтрагента, ПроверитьИНН", ДанныеДляЗаполнения.АдресРеквизитовКонтрагента, Ложь);
				
				ЗаполнитьРеквизитыНаСервере(СпрКонтрагент, ДополнительныеПараметры.АдресРеквизитовКонтрагента, ДополнительныеПараметры.ПроверитьИНН, СтрокаТЗ);
			КонецЕсли;
			СпрКонтрагент.Записать();
Показать


Дальше мне надо создать таблицу значений, верно?

НовыеКонтаргенты = Новый ТаблицаЗначений;
			
				НовыеКонтаргенты.Колонки.Добавить("Контрагент");
				НовыеКонтаргенты.Колонки.Добавить("ИНН");
				НовыеКонтаргенты.Колонки.Добавить("КПП");
				НовыеКонтаргенты.Колонки.Добавить("Адрес");
				
			Для Каждого Строка Из НовыеКонтаргенты Цикл
				Строка= НовыеКонтаргенты.Добавить();
				Строка.Контрагент = СпрКонтрагент.Наименование;
				Строка.ИНН = СпрКонтрагент.ИНН;
				Строка.КПП = СпрКонтрагент.КПП;
				Строка.Адрес =  СпрКонтрагент.КонтактнаяИнформация.Представление;
			КонецЦикла;
Показать


И заполнить данными из СпрКонтрагент.

Но тут еще затык у меня в том, что таблица пустая выходит, даже без колонок. Где не так прописал?
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. user633533_encantado 11 08.04.21 11:30 Сейчас в теме
(1) вы создаете таблицу без строк и начинаете ее перебирать, естественно ничего не будет.

вам надо новых контрагентов куда-то сначала отложить, или добавлять в эту таблицу при записи.
3. UtSpar 134 08.04.21 11:30 Сейчас в теме
НовыеКонтаргенты = Новый ТаблицаЗначений;
            
                НовыеКонтаргенты.Колонки.Добавить("Контрагент");
                НовыеКонтаргенты.Колонки.Добавить("ИНН");
                НовыеКонтаргенты.Колонки.Добавить("КПП");
                НовыеКонтаргенты.Колонки.Добавить("Адрес");




инициализацию таблицы поднимите за цикл в самый самый верх.
4. UtSpar 134 08.04.21 11:30 Сейчас в теме
(3)


А уже добавлению в таблицу делайте после

СпрКонтрагент.Записать();



Строка= НовыеКонтаргенты.Добавить();
                Строка.Контрагент = СпрКонтрагент.Наименование;
                Строка.ИНН = СпрКонтрагент.ИНН;
                Строка.КПП = СпрКонтрагент.КПП;
                Строка.Адрес =  СпрКонтрагент.КонтактнаяИнформация.Представление;
Показать
5. UtSpar 134 08.04.21 11:32 Сейчас в теме
НовыеКонтаргенты = Новый ТаблицаЗначений;

НовыеКонтаргенты.Колонки.Добавить("Контрагент");
НовыеКонтаргенты.Колонки.Добавить("ИНН");
НовыеКонтаргенты.Колонки.Добавить("КПП");
НовыеКонтаргенты.Колонки.Добавить("Адрес");
          
/////////////
где то тут должен быть цикл вы же не одного контрагента создаете???
//////
СпрКонтрагент = Справочники.Контрагенты.СоздатьЭлемент();
            
            ДанныеДляЗаполнения = ДанныеЕдиныхГосРеестровПоИНН(ИННКонтрагента, ЭтоЮрЛицо);
            
            Если ЗначениеЗаполнено(ДанныеДляЗаполнения.ОписаниеОшибки) Тогда
                
                Сообщить("Контрагент не найден по ИНН:" + ИННКонтрагента + " Номер строки в файле "+ СтрокаТЗ.НомерСтрокиВФайле); //
                Возврат;
            ИначеЕсли ДанныеДляЗаполнения.Свойство("ЮридическоеФизическоеЛицо") Тогда
            Если ДанныеДляЗаполнения.Свойство("ЮридическоеФизическоеЛицо") Тогда    
                
                ЭтоЮрЛицо = (ДанныеДляЗаполнения.ЮридическоеФизическоеЛицо = ПредопределенноеЗначение("Перечисление.ЮридическоеФизическоеЛицо.ЮридическоеЛицо"));
                
                ДополнительныеПараметры = Новый Структура("АдресРеквизитовКонтрагента, ПроверитьИНН", ДанныеДляЗаполнения.АдресРеквизитовКонтрагента, Ложь);
                
                ЗаполнитьРеквизитыНаСервере(СпрКонтрагент, ДополнительныеПараметры.АдресРеквизитовКонтрагента, ДополнительныеПараметры.ПроверитьИНН, СтрокаТЗ);
            КонецЕсли;
            СпрКонтрагент.Записать();

//////////////////////////

Строка= НовыеКонтаргенты.Добавить();
Строка.Контрагент = СпрКонтрагент.Наименование;
Строка.ИНН = СпрКонтрагент.ИНН;
Строка.КПП = СпрКонтрагент.КПП;
Строка.Адрес = СпрКонтрагент.КонтактнаяИнформация.Представление;
Показать
7. Shecurok 08.04.21 11:45 Сейчас в теме
(5) да, увидел ошибку. Исправил. А не подскажите случайно как эту ТЗ выгрузить в эксель? Определенный документ на диске.

И еще контактную информацию надо как то вытащить, но это уже сам.
10. user856012 13 08.04.21 12:21 Сейчас в теме
(7)
А не подскажите случайно как эту ТЗ выгрузить в эксель? Определенный документ на диске.
Подскажем:
https://infostart.ru/public/566078/
https://infostart.ru/1c/articles/372778/
https://infostart.ru/1c/articles/190399/
13. Shecurok 08.04.21 12:37 Сейчас в теме
(10) посомтрел все. самый простой и бстрый метод странно работает, ошибка при открывании документа

	ПострПечать = Новый ПостроительОтчета;
			ПострПечать.ИсточникДанных = Новый ОписаниеИсточникаДанных(НовыеКонтаргенты);
			ТабДок = Новый ТабличныйДокумент;                  
			ПострПечать.Вывести(ТабДок);
			ТабДок.Записать("D:\Test Base\...\НовыеКонтрагенты.xlsx");



я прочитал, что метод не самый быстрый, но у меня там булет от силы 20-30 строчек. Не сталкивались?
14. user856012 13 08.04.21 12:45 Сейчас в теме
(13)
Не сталкивались?
С чем именно? Вы не написали - какой статьей руководствовались?
15. Shecurok 08.04.21 12:46 Сейчас в теме +1 $m
(14) эта статья https://infostart.ru/1c/articles/372778/
но метод из комментраиев. Перый в списке.
16. user856012 13 08.04.21 12:50 Сейчас в теме
(15)
метод из комментраиев. Перый в списке.
Попробуйте прочитать до восьмого, как минимум. ;)
11. UtSpar 134 08.04.21 12:27 Сейчас в теме
(7) ну по сохранению в эксель вариантов море, ищатся даже здесь на ура. советовать ничего не буду посмотрите и увидите какой вам больше по душе и кажется легче - несмотря на то насколько какой лучше - задачу выполняет это главное.
8. Shecurok 08.04.21 11:57 Сейчас в теме
(5)
где то тут должен быть цикл вы же не одного контрагента создаете???


тут цикл идет, да
6. Jimbo 9 08.04.21 11:35 Сейчас в теме
Что это за перл ? Масло масляное. Вы создали пустую таблицу значений. В этот цикл никогда не зайдете.
В обходе коллекции менять итератор в цикле - ну такое...

Для Каждого Строка Из НовыеКонтаргенты Цикл
Строка= НовыеКонтаргенты.Добавить();
9. DenisVol 3 08.04.21 12:09 Сейчас в теме
             НовыеКонтаргенты = Новый ТаблицаЗначений;

             НовыеКонтаргенты.Колонки.Добавить("Контрагент");
             НовыеКонтаргенты.Колонки.Добавить("ИНН");
             НовыеКонтаргенты.Колонки.Добавить("КПП");
             НовыеКонтаргенты.Колонки.Добавить("Адрес");

            
            ДанныеДляЗаполнения = ДанныеЕдиныхГосРеестровПоИНН(ИННКонтрагента, ЭтоЮрЛицо);
            
            Если ЗначениеЗаполнено(ДанныеДляЗаполнения.ОписаниеОшибки) Тогда
                
                      Сообщить("Контрагент не найден по ИНН:" + ИННКонтрагента + " Номер строки в файле "+ 
                                        СтрокаТЗ.НомерСтрокиВФайле); //
                       //Возврат;
                       СпрКонтрагент = Справочники.Контрагенты.СоздатьЭлемент();
                       ЗаполнитьРеквизитыНаСервере(СпрКонтрагент, 
                               ДополнительныеПараметры.АдресРеквизитовКонтрагента, 
                               ДополнительныеПараметры.ПроверитьИНН, СтрокаТЗ);
                        //другие реквизиты контрагента
                       СпрКонтрагент.Записать();
                       
                       Строка= НовыеКонтаргенты.Добавить();
                       Строка.Контрагент = СпрКонтрагент.Наименование;
                       Строка.ИНН = СпрКонтрагент.ИНН;
                       Строка.КПП = СпрКонтрагент.КПП;
                       Строка.Адрес = СпрКонтрагент.КонтактнаяИнформация.Представление;

            ИначеЕсли ДанныеДляЗаполнения.Свойство("ЮридическоеФизическоеЛицо") Тогда
                      Если ДанныеДляЗаполнения.Свойство("ЮридическоеФизическоеЛицо") Тогда    
                
                              ЭтоЮрЛицо = (ДанныеДляЗаполнения.ЮридическоеФизическоеЛицо =          
                              ПредопределенноеЗначение("Перечисление.ЮридическоеФизическоеЛицо.ЮридическоеЛицо"));
                
                               ДополнительныеПараметры = Новый Структура("АдресРеквизитовКонтрагента, ПроверитьИНН", 
                               ДанныеДляЗаполнения.АдресРеквизитовКонтрагента, Ложь);
                
                               ЗаполнитьРеквизитыНаСервере(СпрКонтрагент, 
                               ДополнительныеПараметры.АдресРеквизитовКонтрагента, 
                               ДополнительныеПараметры.ПроверитьИНН, СтрокаТЗ);
                      КонецЕсли;
            КонецЕсли;

Показать


Короче говоря:
не нашли клиента: создаем,заполняем реквизиты, а потом записываем этого клиента в ТЗ.
12. DenisVol 3 08.04.21 12:37 Сейчас в теме
Создать макет в этой обработке, заполнить макет из ТЗ и сохранить в файл экселя
17. user856012 13 08.04.21 13:03 Сейчас в теме
+(16) Если непонятно, о чем речь, то попробуйте так:
ТабДок.Записать("D:\Test Base\...\НовыеКонтрагенты.xlsx",ТипФайлаТабличногоДокумента.XLSX);
Оставьте свое сообщение
Вакансии
Программист 1С
Казань
зарплата от 150 000 руб.
Полный день

Разработчик 1С
Москва
зарплата от 200 000 руб. до 300 000 руб.
Полный день

Программист 1С (удаленно)
Самара
зарплата от 230 000 руб. до 230 000 руб.
Полный день

Руководитель группы разработки 1С
Москва
зарплата от 250 000 руб. до 250 000 руб.
Полный день

Специалист техподдержки
Санкт-Петербург
зарплата от 100 руб. до 150 руб.
Полный день