Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   Внешний источник данных - файл EXCEL (http://forums.kuban.ru/f1040/vneshnij_istochnik_dannyh_-_fajl_excel-7840506.html)

bma1 22.06.2016 11:11

Внешний источник данных - файл EXCEL
 
есть файл экселя. в нем технические параметры комплектующих. Причем у разных единиц набор параметров может отличаться по количеству параметров (у кого-то только один диаметр присоединительной резьбы, у другого - два диаметра, у третьего четыре, у пятого есть еще и угол изгиба и т.п.).
Т.е. заранее сколько будет полей (и листов) в файле неизвестно. Но хотелось бы использовать эти данные в запросе через внешний источник данных. Вот только непонятно, как обработчик будет работать с такой структурой... Кто-нибудь делал что-нибудь похожее?

101 22.06.2016 11:50

ну в 1С 7.7 делали )))

VZ 22.06.2016 12:15

0-bma1 > А эти самые ексели, что, делаются разными людьми, со своим собственными [em]хохряками[/em]? Тады никак.
Иначе вначале разрабатываем шаблоны. И пока не удастся исполнителей им следовать (уговорами, угрозами увольнения, отстрелом, ets.) про обработчик даже не думаем.

1-101 > В 7.7 формировали ТЗ, в 8.х можно формировать структуру. Тем паче, что Клиент ТЗ не знает.

VZ 22.06.2016 12:24

SQLite можно припахать. Два шага: на первом создаем .db, на втором из 1С присасываемся к .db

bma1 22.06.2016 12:48

(1) На клюшках любой дурак сделает.
(2) Ну, что-то типа правил заполнения создать можно. Но все равно, структура листов будет разная. Вот это и смущает.

USSR 22.06.2016 12:49

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

USSR 22.06.2016 12:51

либо читать как есть и потом парсить )

VZ 22.06.2016 12:59

6-USSR > "потом парсить" - это просто откладывать неизбежное на другой этап. Алгоритм распознавания никак не изменится.

USSR 22.06.2016 13:02

(7)я согласен )

USSR 22.06.2016 13:04

Наличие четких спецификаций существенно повышает ответственность сторон, участвующих в процессе ) ID вида файла, в нем ID видов листов, в листе ID параметров и их значения

bma1 22.06.2016 13:07

2(5) Формально правила будут примерно такие:
на каждом листе номенклатура с одинаковым набором параметров.
На листе первой строкой идут слово "артикул" и потом названия колонок (стандартизованные, названия параметров из внутренней документации берется (там есть чертежи всех этих комплектующих с ключевыми размерами и их обозначениями латиницей и цифирью, типа L - Длина (общая), LT12 - длина хвостовика первого присоединения (у всех)), DD31 - диаметр третьей присоединительной части, FX1 - смещение оси первой присоединительной части от базы по оси х и т.п.)
И со второй строки сами позиции и значения параметров без пропусков.
Конструктора так ведут свою документацию.
Проанализировать врукопашную файл без запросов - элементарно, а вот загнать его во внешний источник данных, чтоб внутри запроса его раскручивать и в отчеты можно было выводить - тут уже у меня затык в мозгах...

VZ 22.06.2016 13:21

10-bma1 > Просто для каждого варианта таблицы делаешь отдельный файл .db - Type1.db, Type2.db ets. В каждой таблице свой набор полей.
Потом, при соединении просто пишешь:
ПараметрыСоединения = Новый ПараметрыСоединенияВнешнегоИсточникаДанных;
ПараметрыСоединения.СтрокаСоединения = "DRIVER=SQLite3 ODBC Driver;Database=" + Type1 + ";BigInt=1;";
ВнешниеИсточникиДанных.Type1.УстановитьОбщиеПараметрыСоединения(ПараметрыСоединения);
ВнешниеИсточникиДанных.Type1.УстановитьСоединение();
Запрос = Новый Запрос();
Запрос.Текст = "ВЫБРАТЬ
....
Как-то так ...

bma1 22.06.2016 13:25

2(11) Заранее варианты не создать. Это же конструктора, они себе черта в ступе нарисуют и в свой файлик закинут. И там будет такой набор параметров, что никак заранее предусмотреть не можно.

VZ 22.06.2016 13:45

12-bma1 > Ну, извини. У компа интеллекта нема. Для него слово "Диаметр" - просто набор байтов. Он их не понимает.

USSR 22.06.2016 13:57

(13)По поводу диаметра не совсем соглашусь, потому что в прикладном решении, которое будет читать (это видимо 1С) можно завести словарь идентификаторов и программа будет прекрасно понимать, что "диаметр" это "диаметр", а не просто набор байтов

bma1 22.06.2016 14:19

2(13, 14) Да ничего там расшифровывать не надо. Данные будут называться как колонки в экселе: LT12, FX2 etc. так пользователям и требуется.

android 22.06.2016 16:56

Выход: написать "преобразователь", который будет превращать неформализованные мысли конструкторов в структурированные таблицы. И уже эти таблицы - давать на вход отчета.


Текущее время: 00:44. Часовой пояс GMT +3.