Завантаження будь-якої таблиці с даними в 1С

Це доволі цікаве рішення, воно підійде у випадку якщо потрібно в 1С завантажити, наприклад товари, але немає єдиного формату даних які ми отримуємо. Хтось надсилає нам рахунки на сплату у форматі Excell, хтось у форматі Word, у якому на одному з листів є таблиця з товарами, або взагалі у форматі pdf . Писати обробку кожного формату файлу – не рішення, бо на це піде багато часу і все одно ми не зможемо обробити всі формати.
Для цього є краще рішення, просте і зручне. Для завантаження товарів ми використаємо буфер обміну який працює в будь якій програмі і інструменти для роботи з таблицями які нам пропонує 1С 8, також будь якої версії. Головна вимога в нашому випадку – дані повинні бути у вигляді таблиці.
Одразу зауважу, стосовно формату pdf є деякі обмеження. А саме: існують pdf файли, які конвертовані з картинки, з них не можна скопіювати дані, а ось з “правильних” pdf, які наприклад створені із Excel або Word можна дані скопіювати в буфер.
Етапи нашої розробки будуть такі:
- Створюємо форму з таблицею та налаштуваннями для обробки цієї таблиці.
 - Пишемо код обробки отриманих даних.
 
1. Створюємо форму з таблицею та налаштуваннями для обробки цієї таблиці.
Можна створити загальну форму, форму документу, або обробку, це залежить від потреби. Мені це потрібно було зробити в одному документі тому я зробив форму саме в цьому документі. На створену форму вставляємо табличне поле, декілька простих полів типу число для вказування номерів колонок з яких будемо забирати дані і кнопка завантаження:

2. Пишемо код обробки отриманих даних.
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36  | 
						Процедура ЗагрузитьТовары(Кнопка)    //Так як форму я додав до документу то одразу отримаємо документ і в нього занесемо отримані дані    ДокуменОбъект = ЭтаФорма.ВладелецФормы.ДокументОбъект;    //Вибираємо всі заповнені рядки	    Для а = НомерСтрокиНачала по ЭлементыФормы.ПолеТабличногоДокумента.ВысотаТаблицы Цикл       //згідно налаштувань отримуємо дані з потрібних колонон та рядків		       НаименованиеТовара = ЭлементыФормы.ПолеТабличногоДокумента.Область(а,НоменКолонкиТовар,а,НоменКолонкиТовар).Текст;                 Цена               = ЭлементыФормы.ПолеТабличногоДокумента.Область(а,НоменКолонкиЦена,а,НоменКолонкиЦена).Текст;                   Количество         = ЭлементыФормы.ПолеТабличногоДокумента.Область(а,НоменКолонкиКоличество,а,НоменКолонкиКоличество).Текст;       // завантажуємо в документ, попередньо шукаємо товар по найменуванню        НайденныйТовар = Справочники.Номенклатура.НайтиПоНаименованию(НаименованиеТовара,Истина);       Если НайденныйТовар.Пустая() Тогда            Сообщить("Не найден товар: "+НаименованиеТовара,СтатусСообщения.Важное); 	   Если НЕ ДобавитьСтрокиПоНеНайденнымТоварам Тогда 	      Продолжить; 	   КонецЕсли;       КонецЕсли;       НоваяСтрока  = ДокуменОбъект.ис_ТоварыУслуги.Добавить();       НоваяСтрока.Номенклатура = НайденныйТовар;       НоваяСтрока.Количество   = Количество;       НоваяСтрока.Цена         = Цена;       НоваяСтрока.Сумма        = НоваяСтрока.Количество * НоваяСтрока.Цена ;       //виводимо повідомлення про завантаження товару	       Сообщить("Загружен товар: "+НаименованиеТовара );    КонецЦикла;    //Закриваємо форму    Закрыть(); КонецПроцедуры  | 
					
Як бачимо рішення достатньо просте і може буди використане для інших задач.