Заполнение табличной части: Загрузка из файла Excel (КА, ERP)

01.04.26

Интеграция - Загрузка и выгрузка в Excel

Пример внешней обработки для загрузки из Excel в табличную часть документа Прочие расходы

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Заполнение табличной части: Загрузка из файла Excel (КА, ERP)
.epf 9,21Kb
1 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Публикация поможет в разработке обработки для загрузки в документ "Прочие расходы" данных из файла Excel. По сути саму обработку можно разделить на несколько этапов.

1. Создание внешней обработки с видом Заполнение ТЧ

2. Загрузка и чтение файла эксель

3. Заполнение документа

1. Создание внешней обработки с видом Заполнение ТЧ

Начнем с модуля обработки. Укажем сведения о внешней обработки. Используем модуль БСП для вызова конструктора для регистрации обработки:

Функция СведенияОВнешнейОбработке() Экспорт
	
	ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке(СтандартныеПодсистемыСервер.ВерсияБиблиотеки());
	ПараметрыРегистрации.Информация = НСтр("ru = 'Загрузка прочих расходов'");
	ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиЗаполнениеОбъекта();
	ПараметрыРегистрации.Версия = "1.0";
	ПараметрыРегистрации.БезопасныйРежим = Ложь;
	ПараметрыРегистрации.Назначение.Добавить("Документ.ПрочиеДоходыРасходы");
	
	Команда = ПараметрыРегистрации.Команды.Добавить();
	Команда.Представление = НСтр("ru = 'Загрузка прочих расходов'");
	Команда.Идентификатор = "ЗагрузкаПрочихРасходов";
	Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
	Команда.ПоказыватьОповещение = Истина;
	
	Возврат ПараметрыРегистрации;
	
КонецФункции

Далее всю разработку будем вести в форме обработки.

Для целей отладки обработки добавим 1 реквизит Ссылка и создадим основную форму обработки

Добавим форму обработки.

 

 

Уже на данном этапе, если подгрузить обработку в базу, у нас появится кнопка в документе. При нажатии на данную кнопку у нас откроется форма обработки.

 

 

2. Загрузка и чтение файла эксель

Давайте теперь реализуем программный код по загрузке из файла Excel и подготовки таблицы для заполнения документа.

Добавим событие ПриОткрытии

Владельцем нашей формы будет форма открытого документа. Для целей дальнейшей отладки формы добавим, что если владелец формы неопределен, то код по формированию диалога открытия файла не будет формироваться.

В конце процедуры укажем Отказ = Истина. Это значит, что сама форма обработки не будет показана пользователю.

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	Если ЭтотОбъект.ВладелецФормы = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	ДополнительныеПараметры = Новый Структура("ВладелецФормы", ЭтотОбъект.ВладелецФормы);
	Обработчик = Новый ОписаниеОповещения("ВыборФайлаЗавершение", ЭтотОбъект, ДополнительныеПараметры);
	
	ПараметрыЗагрузки = ФайловаяСистемаКлиент.ПараметрыЗагрузкиФайла();
	ПараметрыЗагрузки.ИдентификаторФормы = УникальныйИдентификатор;
	ПараметрыЗагрузки.Диалог.Заголовок = НСтр("ru = 'Выберите файл для загрузки данных резерва ОС'");
	ПараметрыЗагрузки.Диалог.Фильтр = НСтр(
		"ru='Файл Excel (*.xls;*.xlsx)|*.xls;*.xlsx'");
	ПараметрыЗагрузки.Диалог.ПредварительныйПросмотр = Ложь;
	ПараметрыЗагрузки.Диалог.ИндексФильтра = 1;
	ПараметрыЗагрузки.Диалог.ПроверятьСуществованиеФайла = Истина;
	
	ФайловаяСистемаКлиент.ЗагрузитьФайл(Обработчик, ПараметрыЗагрузки);
	
	Отказ = Истина;
КонецПроцедуры

При открытии формы у нас будет формироваться диалог для загрузки файла Excel.

Далее накидаем процедуры по чтению файла и формированию таблицы с данными для загрузки.

&НаКлиенте
Процедура ВыборФайлаЗавершение(Результат, ДополнительныеПараметры) Экспорт

	Если Результат = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	ЗагрузитьФайл(Результат, ДополнительныеПараметры);
	
КонецПроцедуры

&НаКлиенте
Процедура ЗагрузитьФайл(ДанныеФайла, ДополнительныеПараметры) Экспорт
	
	ФормаДокумента = Неопределено;
	ОбъектДокумента = Неопределено;
	//++ Для отладки
	Если ДополнительныеПараметры = Неопределено Тогда
		ФормаДокумента = ПолучитьФорму("Документ.ПрочиеДоходыРасходы.ФормаОбъекта", Новый Структура("Ключ", Объект.Ссылка));
		ФормаДокумента.Открыть();
		ОбъектДокумента = ФормаДокумента.Объект;
	Иначе//--Для отладки
		ФормаДокумента = ДополнительныеПараметры.ВладелецФормы;
		ОбъектДокумента = ФормаДокумента.Объект;
	КонецЕсли;
	
	ПутьНастройки = "НастройкаСчетовУчета";
	
	ДанныеНастройкиСчетовУчета = ОбщегоНазначенияУТКлиентСервер.ПолучитьДанныеМеханизмаИзКэшаФормы(ФормаДокумента, ПутьНастройки);
	ЗаполнитьДокументНаСервере(ДанныеФайла, ОбъектДокумента, ДанныеНастройкиСчетовУчета);
	ФормаДокумента.КэшДанныхМеханизмов[ПутьНастройки] = ДанныеНастройкиСчетовУчета;
	ДоходыИРасходыКлиентСервер.СтатьяАналитикаДоходовРасходовПриИзменении(ФормаДокумента, ПутьНастройки);
	
	Если ФормаДокумента <> Неопределено Тогда	
		КопироватьДанныеФормы(ОбъектДокумента, ФормаДокумента.Объект);
		ФормаДокумента.Модифицированность = Истина;
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Функция ЗаполнитьДокументНаСервере(ДанныеФайла, ОбъектДокумента, ДанныеНастройкиСчетовУчета)
		
	ТаблицаДляЗаполнения = ПрочитатьФайлВТаблицу(ДанныеФайла);
	
	ЗаполнитьТабличнуюЧасть(ТаблицаДляЗаполнения, ОбъектДокумента, ДанныеНастройкиСчетовУчета);
	
КонецФункции

&НаСервере
Функция ПрочитатьФайлВТаблицу(ДанныеФайла)
	
	ТабличныйДокумент = Новый ТабличныйДокумент;

	Расширение = ОбщегоНазначенияКлиентСервер.ПолучитьРасширениеИмениФайла(ДанныеФайла.Имя);	
	ДвоичныеДанные = ПолучитьИзВременногоХранилища(ДанныеФайла.Хранение);
	ИмяВременногоФайла = ПолучитьИмяВременногоФайла(Расширение);
	ДвоичныеДанные.Записать(ИмяВременногоФайла);
	ТабличныйДокумент.Прочитать(ИмяВременногоФайла);
	
	ВсегоСтрок = ТабличныйДокумент.ВысотаТаблицы;
	ТаблицаДляЗаполнения = Новый ТаблицаЗначений;
	ТаблицаДляЗаполнения.Колонки.Добавить("Подразделение", ОбщегоНазначения.ОписаниеТипаСтрока(50));
	ТаблицаДляЗаполнения.Колонки.Добавить("ПодразделениеНаименование", ОбщегоНазначения.ОписаниеТипаСтрока(150));
    ТаблицаДляЗаполнения.Колонки.Добавить("СтатьяЗатрат", ОбщегоНазначения.ОписаниеТипаСтрока(50));
	ТаблицаДляЗаполнения.Колонки.Добавить("Сумма", ОбщегоНазначения.ОписаниеТипаЧисло(15,2));
	ТаблицаДляЗаполнения.Колонки.Добавить("СуммаБУ", ОбщегоНазначения.ОписаниеТипаЧисло(15,2));
	
	Для НомерСтроки = 2 По ВсегоСтрок Цикл
		Подразделение = ТабличныйДокумент.Область(НомерСтроки, 1).Текст;
		СтатьяЗатрат = ТабличныйДокумент.Область(НомерСтроки, 3).Текст;	
		
		Если Не ЗначениеЗаполнено(Подразделение) Или Не ЗначениеЗаполнено(СтатьяЗатрат) Тогда
			Продолжить;
		КонецЕсли;
		
		НоваяСтрока = ТаблицаДляЗаполнения.Добавить();
		НоваяСтрока.Подразделение = Подразделение;
		НоваяСтрока.ПодразделениеНаименование = ТабличныйДокумент.Область(НомерСтроки, 2).Текст;
		НоваяСтрока.СтатьяЗатрат = СтатьяЗатрат;
		НоваяСтрока.Сумма = ТабличныйДокумент.Область(НомерСтроки, 4).Текст;
		НоваяСтрока.СуммаБУ = ТабличныйДокумент.Область(НомерСтроки, 5).Текст;
		
	КонецЦикла;	

	УдалитьФайлы(ИмяВременногоФайла);
	
	Возврат ТаблицаДляЗаполнения;
	
КонецФункции

Подробнее хотел рассказать про процедуру ЗагрузитьФайл

Здесь в дополнительных параметрах приходит Форма документа. Чтобы заполнить настройки счетов учета и сформировать корректные надписи с настройкой счетов учета, нам необходимо выгрузить из кэша формы Структуру с данными настройки счетов учета.

ПутьНастройки = "НастройкаСчетовУчета";
ДанныеНастройкиСчетовУчета = ОбщегоНазначенияУТКлиентСервер.ПолучитьДанныеМеханизмаИзКэшаФормы(ФормаДокумента, ПутьНастройки);

Данную структуру мы заполним на сервере, а потом вернем на форму и обновим настройки отображени

ФормаДокумента.КэшДанныхМеханизмов[ПутьНастройки] = ДанныеНастройкиСчетовУчета;
ДоходыИРасходыКлиентСервер.СтатьяАналитикаДоходовРасходовПриИзменении(ФормаДокумента, ПутьНастройки);

 

3. Заполнение формы документа

Осталось заполнить саму табличную часть.

Без нюансов как всегда не обошлось. На форме документа формируются гиперссылки с описанием настройки. На самом деле сама настройка представляет из себя ссылку на справочник НастройкиСчетовУчетаПрочихОпераций. При чем пока документ не записан с данными настройками, то сами ссылки на справочник не созданы. И еще такой нюанс, что справочник привязан к самому документу через реквизит ВладелецНастройки. Тут конечно вопрос к 1С... Зачем генерировать новые ссылки на справочник с одинаковыми настройками? Ну хотя бы в документе не создается несколько ссылок.

&НаСервере
Процедура ЗаполнитьТабличнуюЧасть(ТаблицаДляЗаполнения, ОбъектДокумента, ДанныеНастройкиСчетовУчета) 
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	Таблица.Подразделение КАК Подразделение,
		|	Таблица.ПодразделениеНаименование КАК ПодразделениеНаименование,
		|	Таблица.СтатьяЗатрат КАК СтатьяЗатрат,
		|	Таблица.Сумма КАК Сумма,
		|	Таблица.СуммаБУ КАК СуммаБУ
		|ПОМЕСТИТЬ Т
		|ИЗ
		|	&Таблица КАК Таблица
		|;
		|
		|////////////////////////////////////////////////////////////////////////////////
		|ВЫБРАТЬ
		|	Т.Подразделение КАК ПодразделениеКод,
		|	Т.ПодразделениеНаименование КАК ПодразделениеНаименование,
		|	Т.СтатьяЗатрат КАК СтатьяЗатратКод,
		|	Т.Сумма КАК Сумма,
		|	Т.СуммаБУ КАК СуммаБУ,
		|	СтатьиРасходов.Ссылка КАК СтатьяРасходов,
		|	СтруктураПредприятия.Ссылка КАК Подразделение
		|ИЗ
		|	Т КАК Т
		|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СтруктураПредприятия КАК СтруктураПредприятия
		|		ПО Т.Подразделение = СтруктураПредприятия.Код
		|		ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.СтатьиРасходов КАК СтатьиРасходов
		|		ПО Т.СтатьяЗатрат = СтатьиРасходов.Код";
	
	Запрос.УстановитьПараметр("Таблица", ТаблицаДляЗаполнения);
	
	РезультатЗапроса = Запрос.Выполнить();
	
	Выборка = РезультатЗапроса.Выбрать();

	СтатьяАктивовПассивов = ПланыВидовХарактеристик.СтатьиАктивовПассивов.НайтиПоНаименованию("Резерв под демонтаж ОС");	
	
	ПараметрыНастройки = НастройкаСчетовУчетаКлиентСервер.СоставНастройкиСчетовУчета();
	ПараметрыНастройки.СчетУчета = ПланыСчетов.Хозрасчетный.РезервыПредстоящихРасходовПрочие;//96.09;
	ПараметрыНастройки.Субконто1 = Справочники.Резервы.НайтиПоНаименованию("Резерв на демонтаж и вывод ОС из эксплуатации");//Субконто1;
	ПараметрыНастройки.Вставить("НастройкаСчетовУчета", "НастройкаСчетовУчета");
	
	Пока Выборка.Следующий() Цикл
		
		Если Не ЗначениеЗаполнено(Выборка.Подразделение) Тогда
			ТекстСообщения = СтрШаблон("Подразделение %1 не найдено по коду %2",
				Выборка.ПодразделениеНаименование, Выборка.ПодразделениеКод);
			ОбщегоНазначения.СообщитьПользователю(ТекстСообщения);	
			Продолжить;
		КонецЕсли;
		
		Если Не ЗначениеЗаполнено(Выборка.СтатьяРасходов) Тогда
			ТекстСообщения = СтрШаблон("Статья расходов не найдена по коду %1",
				Выборка.СтатьяЗатратКод);
			ОбщегоНазначения.СообщитьПользователю(ТекстСообщения);	
			Продолжить;
		КонецЕсли;
		
		НастройкаСчетовУчета = НастройкаСчетовУчетаСлужебныйВызовСервера.СсылкаНовогоЭлементаНастройкиСчетовУчета();	
		ДанныеНастройкиСчетовУчета.НастройкиСчетовУчета.Вставить(НастройкаСчетовУчета, ПараметрыНастройки);
		
		НоваяСтрока = ОбъектДокумента.ПрочиеРасходы.Добавить();
		
		ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка);
		
		НоваяСтрока.Сумма            = Выборка.СуммаБУ;
		НоваяСтрока.СуммаБезНДС      = Выборка.СуммаБУ;
		НоваяСтрока.СуммаУпр         = Выборка.СуммаБУ;
		НоваяСтрока.СуммаРегл        = Выборка.СуммаБУ;
		НоваяСтрока.ВременнаяРазница = Выборка.СуммаБУ;
		
		НоваяСтрока.АналитикаРасходов     = Выборка.Подразделение;
		НоваяСтрока.СтатьяАктивовПассивов = СтатьяАктивовПассивов;
		НоваяСтрока.КорПодразделение      = Выборка.Подразделение;
		НоваяСтрока.ДатаОтражения         = ОбъектДокумента.Дата;			
		НоваяСтрока.НастройкаСчетовУчета  = НастройкаСчетовУчета;
		
		НоваяСтрока[ПараметрыНастройки.НастройкаСчетовУчета] = НастройкаСчетовУчета;
		
		НоваяСтрока.ПредставлениеОтраженияВРеглУчете = НастройкаСчетовУчетаКлиентСервер.ПредставлениеНастройкиОтражения(НоваяСтрока, ПараметрыНастройки, ДанныеНастройкиСчетовУчета);
	КонецЦикла;	
	
КонецПроцедуры

Для целей отладки создадим команду, которая будет открывать форму и вызывать диалог загрузки файла:

&НаКлиенте
Процедура ЗаполнитьДанные(Команда)
		
	Обработчик = Новый ОписаниеОповещения("ВыборФайлаЗавершение", ЭтотОбъект);
	
	ПараметрыЗагрузки = ФайловаяСистемаКлиент.ПараметрыЗагрузкиФайла();
	ПараметрыЗагрузки.ИдентификаторФормы = УникальныйИдентификатор;
	ПараметрыЗагрузки.Диалог.Заголовок = НСтр("ru = 'Выберите файл для загрузки данных резерва ОС'");
	ПараметрыЗагрузки.Диалог.Фильтр = НСтр(
		"ru='Файл Excek (*.xls;*.xlsx)|*.xls;*.xlsx'");
	ПараметрыЗагрузки.Диалог.ПредварительныйПросмотр = Ложь;
	ПараметрыЗагрузки.Диалог.ИндексФильтра = 0;
	ПараметрыЗагрузки.Диалог.ПроверятьСуществованиеФайла = Истина;
	
	ФайловаяСистемаКлиент.ЗагрузитьФайл(Обработчик, ПараметрыЗагрузки);
		
КонецПроцедуры

В итоге, после загрузки файла на форме будет заполнена табличная часть, сформированы гиперссылки с настройками счетов учета.

 

Проверено на следующих конфигурациях и релизах:

  • 1С:Комплексная автоматизация 2, релизы 2.5.22.129
  • 1С:ERP Управление предприятием 2, релизы 2.5.22.129

Вступайте в нашу телеграмм-группу Инфостарт

Внешняя обработка заполнение табличной части загрузка из Excel КА ERP

См. также

SALE! 30%

Загрузка и выгрузка в Excel Оптовая торговля Бухгалтер Пользователь 1С:Предприятие 8 1С:Бухгалтерия 2.0 1С:Бухгалтерия 3.0 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Управление холдингом 1С:Комплексная автоматизация 1.х 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 10 1С:Управление торговлей 11 1С:Розница 2 1С:Розница 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Универсальная обработка для загрузки документов из Excel в 1С. Забудьте о ручном вводе: загружайте документы из Excel в 1С за секунды! Не требует указания параметров (номера колонок, номер первой строки таблицы и т.д.) и предварительной настройки. Просто выбираете файл эксель, документ 1С и нажимаете кнопку "Загрузить"

8000 7200 руб.

09.11.2016    271637    1197    955    

1111

Загрузка и выгрузка в Excel Розничная торговля Логистика, склад и ТМЦ Ценообразование, анализ цен Прайсы Системный администратор Программист 1С:Предприятие 8 1С:Комплексная автоматизация 1.х 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Загрузка номенклатуры из файлов Excel (xls, xlsx, ods, csv, mxl) в УТ11, КА 2, ERP 2, Розница 2. Задействованы все возможности конфигурации - заполнение реквизитов номенклатуры, дополнительных реквизитов и сведений, характеристики, доп.реквизиты и сведения характеристик. Дополнительные обработки для расширения возможностей.

12444 руб.

29.10.2014    230859    742    530    

494

Загрузка и выгрузка в Excel Логистика, склад и ТМЦ Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Бухгалтер Пользователь 1С:Предприятие 8 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Эволюция не стоит на месте - новая удобная версия функциональной обработки для Вашего бизнеса! Что же Вы получаете? Удобный и интуитивно понятный интерфейс с 3-мя этапами работы. 2 режима - автоматический и ручной. Чтение XLSX, XLSM, CSV, XML/YML форматов без офиса, на любом сервере! Визуальное связывание колонок файла и реквизитов простым перетаскиванием колонок. Создание или обновление номенклатуры с иерархией, характеристик, доп. реквизитов, упаковок, загрузка практически неограниченного количества картинок на одну номенклатуру (с возможностью загрузки в несколько потоков одновременно), с хранением в томах или в базе. Загрузка номенклатуры поставщиков или поиск по их данным номенклатуры. Загрузка доп. реквизитов в характеристики. Загрузка штрихкодов с генерацией новых. Создание элементов справочников и ПВХ "на лету" для выбранных реквизитов. (Обновление от 27.03.2026, версия 9.3.1 - 10.7.1)

20740 руб.

20.11.2015    173237    426    396    

542

WEB-интеграция Загрузка и выгрузка в Excel Программист Пользователь 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Розничная и сетевая торговля (FMCG) Россия Платные (руб)

Расширение освободит вас от необходимости вручную обновлять информацию о товарах в группах ВКонтакте. Достаточно задать правила один раз, и система автоматически формирует файлы yml для дальнейшей загрузки в группы в ВК. Вы сможете легко выбирать, какие товары публиковать, создавая гибкие критерии отбора. Например, можно добавить важные для покупателей параметры: цвет, размер или другие характеристики.

12200 руб.

29.08.2025    2402    6    6    

8

ЭДО и ОФД Загрузка и выгрузка в Excel Бухгалтер 1С:Предприятие 8 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Платные (руб)

Кто получает документы в формате XML из различных сервисов ЭДО (формат 820 приказ ФНС 31 мая 2019 или формат 970 (2025г) 19.12.2023 № ЕД-7-26/970@) и набивает их вручную в 1С, тот наверняка хотел бы автоматизировать этот процесс. Поддержка конфигураций: Бухгалтерии 3, УПП 1.3, 1С:КА 2.4 и 1С:КА 2.5, УТ10, УТ11.4 и УТ11.5. Для бухгалтерии 3 добавлена поддержка формат 5.03 от 23/01/2025

5084 руб.

11.02.2020    102982    342    159    

255
Для отправки сообщения требуется регистрация/авторизация