Имя: Пароль:
1C
1С v8
Структура листов Excel - как хранить в 1С
0 Genayo
 
23.10.12
11:32
Есть задача ежемесячно импортировать в 1С данные из примерно 50-70 файлов Excel. Причем состав колонок и положение нужных строк исходных файлов может меняться без предварительного уведомления. Возникла мысль каким-либо образом хранить структуру этих файлов, а при импорте получать отчет об изменившихся файлах.
Подскажите, как бы вы подошли к решению данной задачи?
1 dk
 
23.10.12
11:38
«автоматизируя хаос – получите автоматизированный хаос»
2 shamashs
 
23.10.12
11:39
Хранить структуру колонок и если кто то из поставщиков поменяет формат своего прайсы нужно в автоматическом виде отправлять сообщение об ошибке программисту.

Проверять на заполненность данных в ключевых полях как цена.

Четко ставте вопрос.
3 dk
 
23.10.12
11:39
какая-то формализация нужна обязательно
4 ProProg
 
23.10.12
11:40
(0) готовая система для 1Ски http://subsystems.ru/catalog/27/595/
5 shamashs
 
23.10.12
11:40
Допустим делаете загрузку из excel есть ключевые поля Цена + Напименование если в один момент при загрузке в одном из этих полей нет данных значит, у нас проблемы и мы отрабатываем исключение.

Саму структуру я думаю нет смысла хранить.
6 ProProg
 
23.10.12
11:41
(0) логирование импорта.
7 ProProg
 
23.10.12
11:42
(5) если не хранить настройки как ты их автоматом то грузить будешь?) По сабжу кстати полно не 1Сных решений где все уже давно сделано. У нас автопрайс есть например. КОторый я вот в 1Ску перевожу.
8 shamashs
 
23.10.12
11:44
(7) Универсальные решение лишние бывают очень часто, допустим я занимаюсь поставкой оборудования для сельхоз техники поставщиков запчастей куча, у каждого колхоз в прайсах и необходим нормальный подчиненный регистр, нормальный отчет по этому регистру как минимум, а загрузить из excel я смогу из zronet.ru
9 shamashs
 
23.10.12
11:47
(7) Никому из клиентов не нужно 500 кнопок, максимум что можно заставить сделать это выбрать файл где лежит файл.
10 shamashs
 
23.10.12
11:47
*Выбрать каталог.
11 Genayo
 
23.10.12
11:48
Еслиб это были прайсы - вопросов бы не было. Это отчеты примерна десятка различных отделов и служб колонок на 20-30 на тысячи строк, из которых нужно грузить дай бог процентов 10. Поменять бизнес-процессы не предлагать, я там не штатный программист.
12 shamashs
 
23.10.12
11:49
(11) А полуавтоматический вариант не предлагать?
13 ProProg
 
23.10.12
11:50
(9) какие то фантастическии истории. Если у вас есть откуда залить структуризированно все - не надо всех под свою гребенку ставить. Не у всех ваша отрасль и не у всех заливка с zronet.ru
14 Genayo
 
23.10.12
11:50
(2) Колонок недостаточно, нужны еще конкретные диапазоны строк с единым заголовком.
15 zladenuw
 
23.10.12
11:51
если в екселе только ТЗ. и 1 строка наименование колонок.
Читаем 1 строку в ТЗ нашу.
в тз колонки (Имяколонки,использовать,типприемника)
типприемника - можешь придумать все что угодно. аля алгоритм поиска. и потом процедуру ВсеЗабацать :)
ну и самое главное хранить эту настройку можно как угодно.
как то так.
16 ProProg
 
23.10.12
11:51
(11) ну тогда нечего и предлагать. если ты нештатный - то нам и подавно вообще пофигу.
17 mikecool
 
23.10.12
11:51
(7) я хранил настройки, автоматом подгружал по каждому клиенту, никаких проблем
18 Genayo
 
23.10.12
11:51
(11) В смысле грузить, а если не загрузится - то значит файл изменился? Так оно и сейчас сделано, хочется упростить себе работу...
19 shamashs
 
23.10.12
11:51
(14) Конкретно какая ситуация, есть человек ему приходят отчеты, он может форму этих отчетов утвердить? Может заставить  отправлять в бланке который он будет всем отправлять?
20 ProProg
 
23.10.12
11:52
Ща сек. может подойдет. на ИС есть публикашка
http://infostart.ru/public/156276/
Наверное твой вариант.
21 zladenuw
 
23.10.12
11:53
(20) прикольно
22 Genayo
 
23.10.12
11:53
(19) Люди, составляющие эти отчеты, вообще могут не знать, что они еще куда-то там грузятся...
23 shamashs
 
23.10.12
11:53
(20) Это надо ему свои алгоритмы под правила переписать
24 ProProg
 
23.10.12
11:53
(19) а вдруг они отчеты эти получают от конкурентов путем промышленного шпионажа. хотят грузить и анализировать.
25 shamashs
 
23.10.12
11:55
Уникальный идентификатор нужен какой то. Если сам специалист не сможет сделать именованую ячейку Форма 1, то только по (15)
26 shamashs
 
23.10.12
11:57
(25) Можно брать диагональный срез данных по листу, чтобы туда попадали ячейки с названием колонок. и шапки с подвалом. Не меняющихся время от времени.
27 Genayo
 
23.10.12
11:57
(20)Это конечно интересно, но процедуры загрузки уже написаны. Пока задача отслеживать изменения исходных файлов, с 0 всю загрузку переписывать бюджет никто не выделит.
28 ProProg
 
23.10.12
11:59
(27) тогда попытка исключение. Неудачная загрузка - лог. выдача юзеру для перенастройки и повторной загрузки.
29 Genayo
 
23.10.12
12:03
(28) Перенастройку пользователь делать не будет, будет программист (т.е. я) изменять алгоритмы загрузки. И потом, данные могут быть удачно загружены, но совсем не те, которые нужны. А это выяснится только уже после загрузки...
30 ProProg
 
23.10.12
12:07
(29) ну чо сказать....ничо.
31 Genayo
 
23.10.12
12:20
Ну ладно, спасибо за советы, походу буду изобретать свой велосипед...
32 mikecool
 
23.10.12
12:23
есть у экселя функция Find - решает большинство проблем с определением - толи, что надо в этом файле
33 ProProg
 
23.10.12
12:25
у нас тоже порядка 80 прайсов в автозапчстях. и у очень многих надо загружать не все. а например у конкретных производителей из прайса конкретного контрагента.
Поэтому все очень просто - условие на колонку и пипец. Включения/исключения.

Либо если что то лишнее - ну и уй с ним. в отчетах то все равно выбирают что надо.
34 ProProg
 
23.10.12
12:26
Те даже не диапазоны строк, а справочник условий. в котором указано по какому фильтру конкретного партнера и конкретных условий должен быть импорт. Ничего сложного.
35 ProProg
 
23.10.12
12:27
Нашел по колонке нужного производителя - грузим строку, какой то левый - наух.
36 ProProg
 
23.10.12
12:28
Все что тебе нужно сделать справочники настроек, условий, фильтров. которые будут задавать юзеры.
37 Genayo
 
23.10.12
12:39
(32) Да, это мысль, спасибо...
38 shamashs
 
23.10.12
12:53
(36) не будут пользователи этим заниматься.
39 ProProg
 
23.10.12
12:54
(38) будут. еще как будут. вопрос в том насколько 1Сник умеет доводить до умов то что это не работа программиста.
40 ProProg
 
23.10.12
12:55
Я бы вообще послал бы нафиг если бы мне кто то сказал в обязанности сидеть прайсы заливать.
41 ProProg
 
23.10.12
12:56
Либо пусть девочку ищут которая будет пользоваться инструментами. Или это не работа а черт знает что.
Разве что за 5 тыщ евра в месяц согласился бы.
42 vmv
 
23.10.12
13:01
(0) я решал подобную задачу на РС, т.е. регистры хранили данные

1. РССоставЭксель
Измерения
-ВариантФайла: Справочник вариантов(Отчет такой-то, Отчет сякой-то)
-НомерЛиста-лист колонка значение
-НомерКолонки

Ресурсы
- НаименованиеКолонки

Регистр периодический и как видино, позволяет собрать макеты листов в СКД

2. РСДанныеЭксель

Измерения
-ВариантФайла: Справочник вариантов(Отчет такой-то, Отчет сякой-то)
-НомерЛиста-лист колонка значение
-НомерКолонки

Ресурсы
- ЗначениеЯчейки

вообщем понятно, далее тупое СКД по этим регистрам строит аналоги эксель со всеми няхами компоновки
43 shamashs
 
23.10.12
13:02
(41) Перебирая резюме из 8 девушек, только 2 знали как делать автофильтр в екселе, и только одна из них работал в 1с 10.2, как она сказала. Лично у меня нет времени по пол года выбирать и общаться с девушками мне надо, что работа была сделана, поэтому и автоматизируется все.
44 ProProg
 
23.10.12
13:04
(43) надо делать программы чтобы даже обезъянка смогла работать. У нас вот берут таких. учат и нормально сидят работают.
45 ProProg
 
23.10.12
13:05
ПОэтому на ткую работу надо брать не парясь что кто умеет. а учить. Если бы все умные были наверное хрен бы кто согласился.
46 Genayo
 
23.10.12
13:10
(42) Тоже вариант, спасибо. От примера как "тупое СКД по этим регистрам строит аналоги эксель" не отказался бы, в программной работе с СКД пока не очень силен...
47 shamashs
 
23.10.12
13:11
(44) Именно поэтому и надо делать без автофильтров и настроек, а чтобы кнопку 1 нажала,
(45) Научишь и фьють ушла на повышение или зарплату уже давай сопоставимую с зам. глав буха ей давай.

Вы Как маленький не понимаете таких вещей.

У нас настоящая компьютерная грамотность стоит зарплаты в 25-30т.р не в москве.

Такие деньги не всякий глав. бух получает. Соответственно, что вы ожидаете от девочки за 12-15т.р?
48 vmv
 
23.10.12
13:15
(47) ожидание классическое "я бы вдул"
49 Genayo
 
23.10.12
13:16
(44) Если будет поставлена задача и выделен бюджет сделать программу для обезьяны - это будет сделано. Пока же мне платят не почасовую, а фиксированную сумму за фиксированную работу. И в моих интересах минимизировать свои трудозатраты.
50 Genayo
 
23.10.12
13:18
(47) Таки людей надо учить, но это нифига не задача программистов...
51 vmv
 
23.10.12
13:18
(49) т.е. ты лодырь и дармоед, да?
52 shamashs
 
23.10.12
13:22
(50) Программистов...

я прямо фигею, а кто кроме нас будет учить?) Дяда вася петров?) Обучальщиков никто не нанимает учит либо старший сотрудник, либо человек который знает систему не снимайте с себя ответственности.
53 Genayo
 
23.10.12
13:24
Яж грю, я не в штате. По договору разрабатываю ПО только если будет ТЗ и выделен бюджет.
54 Genayo
 
23.10.12
13:25
Дело программистов - писать хорошие программы и инструкции к ним. Обучение - вопрос кадровых служб.
55 ProProg
 
23.10.12
13:25
Если 1Сник хочет избавится от работы которую навешают на него - то лучше все таки ему учить)
56 ProProg
 
23.10.12
13:25
особенно своим программам
57 ProProg
 
23.10.12
13:26
(54) фирмы в которых есть такие кадровые службы. заморачиваются вопросом чтобы 1Сник делал не свою работу.
58 ProProg
 
23.10.12
13:26
не делал не вою работу.
59 Genayo
 
23.10.12
13:31
(55) Т.е учить пользователей работе с тестовыми редакторами, архиваторами и т.п. - работа программиста? Нет, спасибо. Мое дело написать понятную инструкцию (если таковой нет). А что потом будут пользователи с этой инструкцией делать - не моя забота.
60 ProProg
 
23.10.12
13:44
(59) епт. а что по твоему ПО? программное обеспечение. а программист кто ? Сотрудник отдела ИТ.
61 ProProg
 
23.10.12
13:45
или по твоему бухи и кадровички должны выполнять работу программиста и учить юзеров 1Ске?
62 Genayo
 
23.10.12
13:54
(61) Они должны либо подбирать людей со знанием необходимых программ, либо посылать их на соответствующие курсы с последующим тестированием, от результатов которого зависит их з/п.
Когда ко мне подходили пользователи с просьбой рассказать, как работать в экселе, в лучшем случае я предлагал им почитать соответствующую литературу. И те, кто поумнее - таки читали...
63 Genayo
 
23.10.12
13:55
(60) А что, сотрудник отдела ИТ должен в совершенстве владеть всем ПО, используемым на предприятии? Мда...
64 ProProg
 
23.10.12
13:58
(63) В данном случае обсуждается конкретная задача связанная тестно с 1С. не надо придумывать отмазки лишь бы ничего не делать. Это и без того известно что 1Сники все тупые, ленивые и жадные.
65 Genayo
 
23.10.12
14:05
(64) Разработал ПО, написал к нему инструкцию, инструкцию отдал пользователям. Какое еще обучение нужно то???
66 HeroShima
 
23.10.12
14:21
О! Есть идея...
67 Genayo
 
23.10.12
14:25
(66) Ну так не молчи, поделись...
68 HeroShima
 
23.10.12
22:06
(67) просто в тему заглянул и по моей частной задачке осенило вдруг. Эврика, типа
69 vmv
 
23.10.12
22:30
(68) не будь как все "тупым и жадным", будь лучьше
70 zladenuw
 
23.10.12
23:56
(69) это явно не про 1есовцев.
71 HeroShima
 
24.10.12
00:11
:) Вот, послушайте мою историю.
Из набора имеющихся данных нужно подготовить отчет в Экселе. Отчёт формируется на основе шаблона, подготавливаемого так же в виде экселевской книжки. Имеющаяся в наличии, более-менее работающая библиотечка читает и пишет из/в *.xls практически всё, но, не читает формулы, хотя умеет их писать. Времени на поиск замены библиотеке нет, с СОМ изначально решено не связываться.
Решение: добавить формулам в шаблоне маркер, например "!" перед "=" и читать их как обычние текстовые значения ячеек, но на основе уникальности префикса "!=" обрабатывать как формулы.
И, да: это всё не в 1С.
72 HeroShima
 
31.10.12
02:42
Мы славно поработали и славно отдохнём!)

def corrfunc(f, r, bsr, ontail=False, first=0, last=0):
   rws = re.compile('\s')
   rcell = re.compile('\$?[A-Za-z]+\d+')
   rparts = re.compile('(\$?[A-Za-z]+)(\d+)')
   
   def process(m):
       v = m.group()
       ci, ri = rparts.match(v).groups()
       if ontail:
           s, e = m.start(), m.end()
           if f[e:][:1] == ':':
               return '%s%s' % (ci, int(ri) - bsr + first)
           elif f[:s][-1:] == ':':
               return '%s%s' % (ci, int(ri) - bsr + last)
       return '%s%s' % (ci, bsr - int(ri) + r)
   
   f = rws.sub('', f)
   return rcell.sub(process, f)

def process_row_info(i, proc=None, ontail=False):
               if i in ts.rowinfo_map:
                   ws.row(self.m_cri).height = ts.rowinfo_map[i].height
               for c in xrange(dcols):
                   pv = None
                   if proc:
                       pv = proc(i, c) # returns None if not modified
                   if not pv:
                       pv = ts.cell(i, c).value
                       #print ts.cell(i, c).ctype
                   if unicode(pv)[:2] == '!=':
                       if ontail:
                           pv = xlwt.Formula(corrfunc(pv[2:], self.m_cri + 1, 3, ontail, self.m_bdstart + 1, self.m_bdend + 1))
                       else:
                           pv = xlwt.Formula(corrfunc(pv[2:], self.m_cri + 1, 3))
                   ws.write(self.m_cri, c, pv, copy_style(ts, i, c))
73 Genayo
 
31.10.12
07:41
Это на чем код?
74 ДенисЧ
 
31.10.12
07:43
(73) это не код, это копрокод :-)
на каком нибудь хаскеле...
75 HeroShima
 
31.10.12
10:17
(74) Это питон и код вполне нормальный
76 Genayo
 
31.10.12
10:25
(75)А... Ну слава богу, а то я уж испугался, что это Perl :))
77 HeroShima
 
31.10.12
10:26
(76) неужели похож?)
78 Genayo
 
31.10.12
10:29
Не... Perl ищщо непонятней... Первый раз код на питоне вижу :)
79 HeroShima
 
31.10.12
10:37
То же самое на любом другом наречье было бы как минимум раза в два объёмнее.
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.