Как сделать загрузку данных из ексель документа
По теме из базы знаний
- Загрузка данных из excel в 1С ЗиК 77 полученных от ПФР
- Концепция автоматизации многопрофильного Холдинга в системе АУБ на платформе 1С
- Конфигурация "Обмен данными Excel"
- SynchroWB — интеграция 1С и Wildberries: автоматизация заказов и остатков по API с УТ, КА, ERP, УНФ, Розница 3
- Временная интеграция
Найденные решения
&НаКлиенте
Процедура ПутьКФайлуНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
Оповещение = Новый ОписаниеОповещения("ОбработатьВыборФайла", ЭтотОбъект);
НачатьПомещениеФайла(Оповещение, , , истина, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьВыборФайла(Результат,Адрес, ВыбранноеИмяФайла,ДополнительныеПараметры) экспорт
если не Результат тогда
Возврат;
Конецесли;
ПутьКФайлу = ВыбранноеИмяФайла;
КонецПроцедуры
&НаКлиенте
Процедура Загрузить(Команда)
СформироватьНаСервере(ПутьКФайлу);
КонецПроцедуры
Процедура СформироватьНаСервере(ПутьКФайлу)
ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать(ПутьКФайлу, СпособЧтенияЗначенийТабличногоДокумента.Значение);
ПостроительЗапроса = новый ПостроительЗапроса;
ПостроительЗапроса.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабДок.Область("Sheet1"));
ПостроительЗапроса.Выполнить();
ТабЗнач = ПостроительЗапроса.Результат.Выгрузить();
ЧислоСтрок = ТабЗнач.Количество();
Для Строка=0 по ЧислоСтрок-1 цикл
СтрокаТЗ = ТабЗнач[Строка];
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Детали.Ссылка КАК Детали
|ИЗ
| Справочник.Детали КАК Детали
|ГДЕ
| Детали.Наименование = &Наименование";
Запрос.УстановитьПараметр("Наименование", СтрокаТЗ.Наименование);
Выборка = Запрос.Выполнить().Выбрать();
если Выборка.Следующий() тогда
Продолжить;
иначе
если Справочники.ГОСТЫ.НайтиПоНаименованию(СтрокаТЗ.ГОСТ)=Справочники.ГОСТЫ.ПустаяСсылка() тогда
ГОСТ = Справочники.ГОСТЫ.СоздатьЭлемент();
ГОСТ.Наименование = СтрокаТЗ.ГОСТ;
ГОСТ.Записать();
Конецесли;
если Справочники.ЕдиницыИзмерения.НайтиПоНаименованию(СтрокаТЗ.ЕдиницаИзмерения)=Справочники.ЕдиницыИзмерения.ПустаяСсылка() тогда
ЕД = Справочники.ЕдиницыИзмерения.СоздатьЭлемент();
ЕД.Наименование = СтрокаТЗ.ЕдиницаИзмерения;
ЕД.Записать();
Конецесли;
если Справочники.ТипыДеталей.НайтиПоНаименованию(СтрокаТЗ.Тип)=Справочники.ТипыДеталей.ПустаяСсылка() тогда
ТД = Справочники.ТипыДеталей.СоздатьЭлемент();
ТД.Наименование = СтрокаТЗ.Тип;
ТД.Записать();
Конецесли;
если Справочники.Детали.НайтиПоНаименованию(СтрокаТЗ.Наименование) = Справочники.Детали.ПустаяСсылка() тогда
Деталь = Справочники.Детали.СоздатьЭлемент();
Деталь.Наименование = СтрокаТЗ.Наименование;
Деталь.ГОСТ = Справочники.ГОСТЫ.НайтиПоНаименованию(СтрокаТЗ.ГОСТ);
Деталь.Артикул = СтрокаТЗ.Артикул;
Деталь.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию(СтрокаТЗ.ЕдиницаИзмерения);
Деталь.Тип = Справочники.ТипыДеталей.НайтиПоНаименованию(СтрокаТЗ.Тип);
Деталь.Цена = СтрокаТЗ.Цена;
Деталь.Количество = СтрокаТЗ.Количество;
Деталь.Записать();
Конецесли;
Конецесли;
Конеццикла;
КонецПроцедуры;
ПоказатьПопробуй этим кодом воспользоваться, если нужно грузить в другие Справочники а не только реквизиты то придется писать еще условия с созданием записей
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(10)
Во-вторых, автор уже отметил выложенный код как решение, так что и ему ваша "штука" вряд ли пригодится.
На будущее: вы пришли на профессиональный форум - будьте внимательнее. ;-)
Есть вот такая штука.
Мне-то "такая штука" зачем? Во-первых, автор - не я и проблема не у меня.
Во-вторых, автор уже отметил выложенный код как решение, так что и ему ваша "штука" вряд ли пригодится.
На будущее: вы пришли на профессиональный форум - будьте внимательнее. ;-)
(6) Ну раз платят, то придется. Так пойдет:
&НаСервере
Процедура ЗапуститьОбработку(Источник) Экспорт
День = ДеньНедели(ТекущаяДата());
Пользователь = Справочники.Пользователи.НайтиПоНаименованию(".....");
СписокДляХраненияАдресатов = Новый СписокЗначений;
СписокДляХраненияАдресатов.Добавить(Пользователь);
НачатьТранзакцию();
Попытка
Для каждого Адресат Из СписокДляХраненияАдресатов Цикл
Н = Гиф(День);
Т = Текст(День);
ТекстВопроса = Т + Н;
Телеграм = Справочники.Телеграм.СоздатьЭлемент();
Телеграм.Пользователь = Адресат.Значение;
Телеграм.ДатаСообщения = ТекущаяДата();
Телеграм.ВТелеграм = ТекстВопроса;
Телеграм.Кнопки = "";
Попытка
Телеграм.Записать();
Исключение
КонецПопытки;
КонецЦикла;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
КонецПопытки;
КонецПроцедуры
&НаСервере
Функция Гиф(День)
Стр = "";
Если День = 1 Тогда
Стр = "🌹";
ИначеЕсли День = 2 Тогда
Стр = "😏";
ИначеЕсли День = 3 Тогда
Стр = "🌻";
ИначеЕсли День = 4 Тогда
Стр = " 😘";
ИначеЕсли День = 5 Тогда
Стр = "🌸";
ИначеЕсли День = 6 Тогда
Стр = "😊";
ИначеЕсли День = 7 Тогда
Стр = "🏵";
КонецЕсли;
Возврат Стр;
КонецФункции
&НаСервере
Функция Текст(День)
Стр = "";
Если День = 1 Тогда
Стр = "....., ты сегодня прекрасно выглядишь ";
ИначеЕсли День = 2 Тогда
Стр = "....., доброго утра и хорошего настроения ";
ИначеЕсли День = 3 Тогда
Стр = "....., ты очень красивая ";
ИначеЕсли День = 4 Тогда
Стр = "....., ты сегодня прекрасно выглядишь ";
ИначеЕсли День = 5 Тогда
Стр = "....., ты очень красивая ";
ИначеЕсли День = 6 Тогда
Стр = "....., доброго утра и хорошего настроения ";
ИначеЕсли День = 7 Тогда
Стр = "....., ты сегодня прекрасно выглядишь ";
КонецЕсли;
Возврат Стр;
КонецФункции
Показать
(7) Слабак! Вот правильный код:
&НаСервере
Процедура ДобавитьНаборПечатныхФормПоКлиентуВДерево(ДеревоПечатныхФорм, ДанныеКлиента, ИдентификаторКлиента, ПечатныеФормыКлиента)
СтрокаОтбораИсточника = "Организация,Партнер,Контрагент,Источник";
СтруктураОтбораИсточника = Новый Структура(СтрокаОтбораИсточника);
ИсточникиПечатныхФорм = ПечатныеФормыКлиента.Скопировать(, СтрокаОтбораИсточника);
ИсточникиПечатныхФорм.Свернуть(СтрокаОтбораИсточника);
Для Каждого СтрокаИсточника Из ИсточникиПечатныхФорм Цикл
ОтборСуществующихСтрок = Новый Структура;
ОтборСуществующихСтрок.Вставить("ИдентификаторКлиента", ИдентификаторКлиента);
ОтборСуществующихСтрок.Вставить("Источник", СтрокаИсточника.Источник);
ОтборСуществующихСтрок.Вставить("ЭтоГруппа", Истина);
СуществующиеСтрокиИсточника = ДеревоПечатныхФорм.Строки.НайтиСтроки(ОтборСуществующихСтрок);
Если СуществующиеСтрокиИсточника.Количество() Тогда
НастройкаИсточника = СуществующиеСтрокиИсточника[0];
НастройкаИсточника.Строки.Очистить();
Иначе
НастройкаИсточника = ДеревоПечатныхФорм.Строки.Добавить();
НастройкаИсточника.ЭтоГруппа = Истина;
НастройкаИсточника.ИдентификаторКлиента = ИдентификаторКлиента;
НастройкаИсточника.ПредставлениеПечатнойФормы = Строка(СтрокаИсточника.Источник);
НастройкаИсточника.Источник = СтрокаИсточника.Источник;
НастройкаИсточника.Печатать = Истина;
КонецЕсли;
ЗаполнитьЗначенияСвойств(СтруктураОтбораИсточника, СтрокаИсточника);
ПечатныеФормыИсточника = ПечатныеФормыКлиента.НайтиСтроки(СтруктураОтбораИсточника);
Для Каждого СтрокаПечатнойФормы Из ПечатныеФормыИсточника Цикл
Если ТипЗнч(СтрокаПечатнойФормы.ТабличныйДокумент) = Тип("ТабличныйДокумент") И СтрокаПечатнойФормы.ТабличныйДокумент.ВысотаТаблицы > 0 Тогда
// Добавляем запись в дерево печатных форм
НастройкаПечатнойФормы = НастройкаИсточника.Строки.Добавить();
НастройкаПечатнойФормы.ИдентификаторКлиента = ИдентификаторКлиента;
НастройкаПечатнойФормы.ИдентификаторПечатнойФормы = СтрокаПечатнойФормы.Идентификатор;
НастройкаПечатнойФормы.ПредставлениеПечатнойФормы = СтрокаПечатнойФормы.СинонимМакета;
НастройкаПечатнойФормы.КоличествоЭкземпляров = СтрокаПечатнойФормы.Экземпляров;
НастройкаПечатнойФормы.ИмяМакета = СтрокаПечатнойФормы.ИмяМакета;
НастройкаПечатнойФормы.Источник = СтрокаПечатнойФормы.Источник;
НастройкаПечатнойФормы.Печатать = Истина;
ДобавитьНаборЭлементовПечатнойФормы(СтрокаПечатнойФормы.Идентификатор);
ЭтаФорма["ПечатнаяФорма_" + СтрокаПечатнойФормы.Идентификатор] = СтрокаПечатнойФормы.ТабличныйДокумент;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
Показать&НаКлиенте
Процедура ПутьКФайлуНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
Оповещение = Новый ОписаниеОповещения("ОбработатьВыборФайла", ЭтотОбъект);
НачатьПомещениеФайла(Оповещение, , , истина, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьВыборФайла(Результат,Адрес, ВыбранноеИмяФайла,ДополнительныеПараметры) экспорт
если не Результат тогда
Возврат;
Конецесли;
ПутьКФайлу = ВыбранноеИмяФайла;
КонецПроцедуры
&НаКлиенте
Процедура Загрузить(Команда)
СформироватьНаСервере(ПутьКФайлу);
КонецПроцедуры
Процедура СформироватьНаСервере(ПутьКФайлу)
ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать(ПутьКФайлу, СпособЧтенияЗначенийТабличногоДокумента.Значение);
ПостроительЗапроса = новый ПостроительЗапроса;
ПостроительЗапроса.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабДок.Область("Sheet1"));
ПостроительЗапроса.Выполнить();
ТабЗнач = ПостроительЗапроса.Результат.Выгрузить();
ЧислоСтрок = ТабЗнач.Количество();
Для Строка=0 по ЧислоСтрок-1 цикл
СтрокаТЗ = ТабЗнач[Строка];
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Детали.Ссылка КАК Детали
|ИЗ
| Справочник.Детали КАК Детали
|ГДЕ
| Детали.Наименование = &Наименование";
Запрос.УстановитьПараметр("Наименование", СтрокаТЗ.Наименование);
Выборка = Запрос.Выполнить().Выбрать();
если Выборка.Следующий() тогда
Продолжить;
иначе
если Справочники.ГОСТЫ.НайтиПоНаименованию(СтрокаТЗ.ГОСТ)=Справочники.ГОСТЫ.ПустаяСсылка() тогда
ГОСТ = Справочники.ГОСТЫ.СоздатьЭлемент();
ГОСТ.Наименование = СтрокаТЗ.ГОСТ;
ГОСТ.Записать();
Конецесли;
если Справочники.ЕдиницыИзмерения.НайтиПоНаименованию(СтрокаТЗ.ЕдиницаИзмерения)=Справочники.ЕдиницыИзмерения.ПустаяСсылка() тогда
ЕД = Справочники.ЕдиницыИзмерения.СоздатьЭлемент();
ЕД.Наименование = СтрокаТЗ.ЕдиницаИзмерения;
ЕД.Записать();
Конецесли;
если Справочники.ТипыДеталей.НайтиПоНаименованию(СтрокаТЗ.Тип)=Справочники.ТипыДеталей.ПустаяСсылка() тогда
ТД = Справочники.ТипыДеталей.СоздатьЭлемент();
ТД.Наименование = СтрокаТЗ.Тип;
ТД.Записать();
Конецесли;
если Справочники.Детали.НайтиПоНаименованию(СтрокаТЗ.Наименование) = Справочники.Детали.ПустаяСсылка() тогда
Деталь = Справочники.Детали.СоздатьЭлемент();
Деталь.Наименование = СтрокаТЗ.Наименование;
Деталь.ГОСТ = Справочники.ГОСТЫ.НайтиПоНаименованию(СтрокаТЗ.ГОСТ);
Деталь.Артикул = СтрокаТЗ.Артикул;
Деталь.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию(СтрокаТЗ.ЕдиницаИзмерения);
Деталь.Тип = Справочники.ТипыДеталей.НайтиПоНаименованию(СтрокаТЗ.Тип);
Деталь.Цена = СтрокаТЗ.Цена;
Деталь.Количество = СтрокаТЗ.Количество;
Деталь.Записать();
Конецесли;
Конецесли;
Конеццикла;
КонецПроцедуры;
ПоказатьПопробуй этим кодом воспользоваться, если нужно грузить в другие Справочники а не только реквизиты то придется писать еще условия с созданием записей
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот