Есть ли 1Сники?

Любые обсуждения, не нарушающие правил форума.

Модератор: Модераторы

Ответить
Аватара пользователя
Brainenjii
энтузиаст
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Есть ли 1Сники?

Сообщение Brainenjii »

Приветствую,

понимаю, что вопрос сильно оффтопичен, но надо ^_^ Потихоньку допиливаю дипломный проект для планирования и анализа деятельности предприятия. И вот, наконец, проект дорос до уровня, когда потребовалось получить данные из 1С, которая на данный момент полностью подчинила себе нашу фирмочку ^_^ Послушав нашего программиста 1С и отбросив первоначальную идею получать справочники напрямую из MS SQL, решил получать справочники в виде XML выгрузок. В принципе, всё прошло на ура, за исключением маленькой детали - выгрузки производятся вручную. При том, что получить так сразу большой справочник - не удалось, перед записью в файл 1С сначала создаёт весь XML файл в памяти (или даже всю структуру справочника), после чего выгрузка вылетает с исключением на нехватку памяти (делалось на машине самого программиста, на сервере запускать выгрузку пока не пробовали). На мой вопрос "а можно ли организовать инкрементальную выгрузку справочников" (т.е. написать скрипт (ну, или пусть будет обработку), который получит все записи справочника, созданные или изменнённые в определённый период), 1Сник сказал, что это невозможно. Я не верю ^_^ Так вот, если вдруг здесь есть люди, разбирающиеся в 1С, подскажите - в какую сторону там хотя бы смотреть - попробую сам что-нибудь накатать подобное ^_^

Спасибо.
Timid
постоялец
Сообщения: 290
Зарегистрирован: 21.11.2007 20:33:15

Сообщение Timid »

Насколько мне известно, 1С.Предприятие предоставляет возможность взаимодействия со сторонним приложением посредством СОМ(OLE), существует даже серия статей. Посмотрите, к примеру, на Дельфи-исходниках.

Портировать пример не должно представлять сложности, если Вы разобралисть с XML :)

И, кстати, ради бога, не просите Вашего 1С-ника создавать файлы XML или Excel - работа с ними там крайне "костылява" и очень медленна. Лучше вообще автоматизировать все "большие выгрузки" через стороннее приложение (как Ваше, к примеру) ;)

И, ждем от Вас урок "Лазарь против 1С" :D
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Brainenjii писал(а):отбросив первоначальную идею получать справочники напрямую из MS SQL

А почему? Я, в своё время, получал данные не только из справочников. :)
Аватара пользователя
stikriz
энтузиаст
Сообщения: 612
Зарегистрирован: 15.03.2006 08:37:47

Сообщение stikriz »

Проверьте, что версия платформы не ниже 1С:Предприятие 8.2 (8.2.12.75)
Вроде, там поправили работу с памятью.
Лучше всего подключиться из 1С через АДО к Вашим таблицам и постить туда.
Соединение = Новый COMОбъект("ADODB.Connection");
Соединение.ConnectionString = СтрокаПодключения;
Соединение.ConnectionTimeOut =1200;
Соединение.CursorLocation = 3;
Попытка
Соединение.Open(Соединение.ConnectionString);
Возврат Соединение;
Исключение
Сообщить("Ошибка соединение!");
ВызватьИсключение;
КонецПопытки;


Попытка
Комманда = Новый COMОбъект("ADODB.Command");
Комманда.ActiveConnection = Соединение;

Комманда.CommandText = Запрос;
НаборЗаписей = Новый COMОбъект("ADODB.Recordset");
НаборЗаписей = Комманда.Execute();
// Возврат НаборЗаписей;
Исключение
Сообщить("Ошибка выполнения запроса! "+Запрос);
ВызватьИсключение;
КонецПопытки;

Что-то в этом роде.
Аватара пользователя
Brainenjii
энтузиаст
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Сообщение Brainenjii »

У нас 8.1. Если всё правильно понял, то особой разницы, между подключением к моим таблицам через ADO из 1С и подключением к 1С через COM нет. Так что я попробую второй вариант, спасибо Timid за наводку ^_^
2Vadim: работать с базой опасаюсь, потому как вдруг что изменится в 1С - потом иди-свищи - в каком месте поломалась выгрузка из базы. А пример с статье довольно, и с виду никаких опасений не вызывает ^_^ Буду пробовать ^_^

Спасибо!
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Brainenjii писал(а):потому как вдруг что изменится в 1С

Brainenjii писал(а):потребовалось получить данные из 1С

Отсюда логический вывод - тебе нужно только брать оттудова данные, а не заносить их туды. Так что не бойся... :) Да и, наверное, быстрее будет.
В своё время потребовалось руководству делать красивый график продаж (обязательно с ежедневным повышением :D ). Когда ему такую фиговину сделал 1С-ник, то, во-первых, перепугал несчастного начальника 1С-ным интерфейсом, а во-вторых, на постройку графика требовалось около получаса. А если бухгалтерия в это время делала какой-нибудь вселенский отчёт, то и вообще около двух часов. "Гиганта мысли" спас обычный Excel, который делал выборку напрямую из базы и тут же строил график. На это требовалось около минуты (точно не засекал). Мне сразу предложили перевестись в 1С-ники, но я гордо отказался. :D
Timid
постоялец
Сообщения: 290
Зарегистрирован: 21.11.2007 20:33:15

Сообщение Timid »

"1Совый бейсик" работает крайне медленно и занимает очень много памяти. Так что лучше подключаться именно к интерфейсу 1С со стороны. Из "нормальной" среды. :)
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Timid писал(а):Так что лучше подключаться именно к интерфейсу 1С со стороны

Так если подключится "со стороны", разве там не будет работать тот же самый бейсик? Ведь всё равно, через COM-интерфейс запускается та же 1С и начинает выполнять свои функции как обычно.
serg48
новенький
Сообщения: 12
Зарегистрирован: 21.03.2010 14:46:07

Сообщение serg48 »

В 1С справочники не хранят историю измения данных. Это возможно только с помощью доработки конфигурации! По поводу XML могу сказать, что работа в 8.1 с ним происходит нормально, в отличие от 7.7, в которой платформа полностью зависала при больших объемах данных! Пробовал выгружать файлы XML размером больше 1 Гб! Если будут вопросы - обращайся!
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

OFF TOP - ссори...

Почитал тут про данный "чуда" продукт и он у меня вызывает только неприязнь. Хотя придётся :cry:

Хотелось бы услышать мнение людей работавших с онной системой:
каким всё-же способом лучше и менее затратней обмениваться данными с данным (загрузка/выгрузка справочников и допустим номенклатуры) чудом?

ps Было время, что я занимался поддержкой бухов, но я был студентом и систему просто админил (наплевался и на проклянался) и даже не подозревал, что есть костыли и при обмене данных.
ps ps И обмен данными непосредственно с базой данных, считаю не рациональным, т.к. кто знает, что им придёт в голову в следующем обновлении..
Аватара пользователя
Brainenjii
энтузиаст
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Сообщение Brainenjii »

2Mr.Smart: Номенклатура - один из справочников. Собственно топик посвящен именно этому вопросу - как обменяться (в моём случае только получить данные) информацией с 1С.
2Vadim: как и Mr.Smart'a меня тоже беспокоит - вдруг в следующем обновлении чуть-чуть поменяется струкутра базы и сорвётся работа моего проекта... Заносить данные туда пока и не думаю (если вдруг заваруха-война - ref'ы всех позиций всех справочников будут и можно собрать и тот же xml, который 1Сник уже раскидает, куда ему надо).
serg48: вот! Очень плохо, что нет истории изменения ^_^ Хотя, 1С сама по себе задачу анализа и не должна решать (по-крайней мере как понял в ходе не очень плотного моего с ней знакомства). По поводу XML - работает действительно замечательно, XML валидны, обрабатываются как по маслу... Но вот как организоваться экспорт огромного справочника (той же номенклатуры), который ещё связан с десятком других справочников - вопрос... Только что если действительно оставлять на выходные на сервере выгружаться... Так ведь опять же, чтобы потом получить изменения - опять эту полубезумную процедуру устраивать...
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Brainenjii писал(а):вдруг в следующем обновлении чуть-чуть поменяется струкутра базы и сорвётся работа моего проекта...

Смена структуры базы при обновлении - это страшно. :)
Честно говоря, я не помню, чтобы в 7.7 менялась структура при обновлении. Возможно в 8.хх это стало обычной практикой, не знаю... Кстати, в 7.7 обычно прикладывался текстовый файл со структурой базы, по которой оная структура проверялась при загрузки 1С. В 8.х этого уже нет? Просто я с ней не работал, не знаю...
serg48
новенький
Сообщения: 12
Зарегистрирован: 21.03.2010 14:46:07

Сообщение serg48 »

Для обмена данными в 1С имеется конфигурация "Конвертация данных". С её помощью создаются правила, по которым с помощью обработок выгружаются данные в xml файл и загружаются из него, причем если в справочнике есть реквизиты со ссылками на другие справочники, то можно настроить, чтобы они тоже выгружались и загружались. Как я понял, то тебе нужно только выгрузить данные. Выгрузку, если есть опыт работы с конвертацией данных, можно настроить минимум за минут 20 (в зависимости от сложности обмена). Далее (если будешь загружать не в 1С) нужно будет вручную обрабатывать xml файл.
Ответить