1С Загрузка контрагентов из файла

Автор: | 25.04.2022

Обработка для загрузки контрагентов в 1С из TXT, DBF, CSV, XML и Excel файлов

Первое что должен научиться делать начинающий программист 1С это загружать данные в информационную базу из различных файлов, например, TXT, DBF, CSV, XML и Excel. Это самые популярные форматы с помощью которых происходит обмен. Так же нужно уметь и выгружать данные из 1С. В предыдущих статьях я рассказал про то как можно прочитать данные из этих файлов, сегодня же расскажу как создать контрагентов на основе прочитанных данных. Для того чтобы лучше понять смысл сегодняшней статьи рекомендую прочитать предыдущие материалы на эту тему.

Чтение TXT, CSV файлов.

Чтение DBF файлов.

Чтение XML файлов.

Чтение Excel файлов.

Как в 1С загружать данные из разных файлов

В предыдущих статьях мы создавали универсальную обработку для чтения TXT, DBF, CSV, XML и Excel файлов. На форме был создан переключатель который позволял выбрать тип файла а так же окно выбора, табличная часть в которой отображаются прочитанные данные и две команды «Прочить» и «Загрузить».

Принцип работы обработки такой, сначала отмечаем необходимый формат, после этого в окне выбора отображаются файлы только этого форматы, после нажатия кнопки «Прочитать» происходит чтение выбранного файла, после чего прочитанные данные отображаются в табличной части обработки. Теперь нужно сделать процедуру для команды «Загрузить» которая бы добавляла контрагентов в справочник «Контрагенты». Для этого добавляем действие для команды.

1С Загрузка контрагентов из файла

Далее выбираем «Создать на клиенте и процедуру на сервере».

Обработка для загрузки контрагентов в 1С из TXT, DBF, CSV, XML и Excel файлов

И пишем вот такой код.

&НаСервере
Процедура ЗагрузитьНаСервере()
	// Вставить содержимое обработчика.
	МассивИНН = Новый Массив;
	Для каждого СтрокаДанных Из Объект.ДанныеФайла Цикл
		МассивИНН.Добавить(Число(СтрокаДанных.ИНН));
	КонецЦикла;
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	Контрагенты.Ссылка КАК Ссылка,
		|	Контрагенты.ИНН КАК ИНН
		|ИЗ
		|	Справочник.Контрагенты КАК Контрагенты
		|ГДЕ
		|	Контрагенты.ИНН В(&МассивИНН)";
	
	Запрос.УстановитьПараметр("МассивИНН", МассивИНН);
	РезультатЗапроса = Запрос.Выполнить();
    ТабКонтрагентов = РезультатЗапроса.Выгрузить();
	
	Для каждого СтрокаДанных Из Объект.ДанныеФайла Цикл
		
		НайденныйКонтрагент = ТабКонтрагентов.Найти(Число(СтрокаДанных.ИНН));
 		Если НайденныйКонтрагент <> Неопределено Тогда
			Продолжить;
		КонецЕсли;
		
		НовыйКонтрагент = Справочники.Контрагенты.СоздатьЭлемент();
		НовыйКонтрагент.Наименование = СтрокаДанных.Наименование;
		НовыйКонтрагент.Расшифровка = СтрокаДанных.Расшифровка;
		НовыйКонтрагент.ИНН = СтрокаДанных.ИНН;
		НовыйКонтрагент.Записать();
	
	КонецЦикла;
	
	Сообщить("Создание когтрагентов успешно завершено!")
КонецПроцедуры

Для того чтобы данные не задваивались сделаем проверку контрагентов по ИНН. Для этого создаем массив в который добавляем все прочитанные ИНН, после этого с помощью запроса проверяем сразу все прочитанные ИНН. Тут можно обойтись и без запроса, но в этом случае увеличиться количество запросов к базе. После чего в цикле обходим табличную часть обработки и создаем новые элементы справочника.

Как в 1С загружать данные из разных файлов

Остается только проверить работоспособность, открываем файл нажимаем «Прочитать» после того как данные будут прочитаны и отобразятся жмем «Загрузить».

Как загрузить список контрагентов в 1С

После появления сообщения об успешном создании контрагентов, открываем этот справочник и проверяем.

1C как загрузить контрагентов из TXT, DBF, CSV, XML или Excel файлов

Как видите сделать обработку для загрузки контрагентов из TXT, DBF, CSV, XML или Excel файлов достаточно просто. В этом нет абсолютно ничего сложного, но если у Вас что-то не получается или есть вопросы обязательно напишите об этом.

1С Загрузка контрагентов из файла: 4 комментария

  1. Артур

    Как заполнить значения пустых реквизитов, сохранив заполненные реквизиты, у существующих элементов справочника?

  2. admin Автор записи

    Проверить на наличие данных ЗначениеЗаполнено(<Значение>)

    1. Артур

      А как правильно будет это вставить в данный цикл?
      Для каждого СтрокаДанных Из Объект.ДанныеФайла Цикл

      НайденныйПользователь = ТабПользователей.Найти(Строка(СтрокаДанных.Фио));

      Если НайденныйПользователь Неопределено Тогда
      Продолжить;
      КонецЕсли;

      НовыйПользователь = Справочники.Пользователи.СоздатьЭлемент();
      ;
      НовыйПользователь.Фио = ЗначениеЗаполнено(СтрокаДанных.Фио);
      НовыйПользователь.Почта = СтрокаДанных.Почта;
      НовыйПользователь.Записать();

      КонецЦикла;

  3. Артур

    А как правильно будет это вставить в данный цикл?
    // Вставить содержимое обработчика.
    МассивФио = Новый Массив;
    Для каждого СтрокаДанных Из Объект.ДанныеФайла Цикл
    МассивФио.Добавить(Строка(СтрокаДанных.Фио));
    КонецЦикла;

    Запрос = Новый Запрос;
    Запрос.Текст =
    «ВЫБРАТЬ
    | Пользователи.Ссылка КАК Ссылка,
    | Пользователи.Фио КАК Фио,
    | Пользователи.Почта КАК Почта
    |ИЗ
    | Справочник.Пользователи КАК Пользователи
    |ГДЕ
    | Пользователи.Фио В(&МассивФио)»;

    Запрос.УстановитьПараметр(«МассивФио», МассивФио);
    РезультатЗапроса = Запрос.Выполнить();
    ТабПользователей = РезультатЗапроса.Выгрузить();

    Для каждого СтрокаДанных Из Объект.ДанныеФайла Цикл

    НайденныйПользователь = ТабПользователей.Найти(Строка(СтрокаДанных.Фио));
    Если НайденныйПользователь Неопределено Тогда
    Продолжить;
    КонецЕсли;

    НовыйПользователь = Справочники.Пользователи.СоздатьЭлемент();
    ;
    НовыйПользователь.Фио = СтрокаДанных.Фио;

    НовыйПользователь.Почта = СтрокаДанных.Почта;

    НовыйПользователь.Записать();

    КонецЦикла;

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *