gifts2017

DDE-калькулятор 1С8

Опубликовал Осипов Сергей (fixin) в раздел Обмен - Загрузка и выгрузка в Excel

Получение в Excel бухгалтерских данных из 1С8 по формулам.

DDE-вычислитель для 1с8

В 1с6 была такая интересная вещь, как получение в Excel через формулы DDE значений из текущей открытой базы 1с6.

В 1с7 и 1с8 такие вещи отсутствуют. Но я как-то посмотрел, и мне понравилось.

Возможно, понравится и некоторым бухгалтерам. Предупреждаю сразу – вещь на любителя.

Она наверняка пригодится любителям счет и Excel, которые не любят тратиться на программиста.

Идея заключается в следующем:

·        Пользователь настраивает лист Excel, и прописывает в нем формулы для получения данных из базы.

·        Пользователь оставляет открытым лист Excel и запускает обработку в текущей базе.

·        Обработка подключается к текущему листу Excel, находит формулы для вычисления, вычисляет их, и подставляет в формулы значение результата.

Очень похоже на классическое DDE.

Я пока что реализовал только функцию СКД, СНД, СКК, СКД, ДО и КО. Если будет интерес, то реализую и другие функции.

Формулы

Формулы записываются через формулу Excel ВЫБОР.

Формула записывается, например, так:

=ВЫБОР(1;0;"СКД";"УС:Счет.Код = ""01.01""";СЦЕПИТЬ("У:Субконто1.Наименование=""";A3;""""))

Первый параметр – всегда единица, второй параметр содержит результат вычислений. Именно на это место 1с будет писать результат. Третий параметр – имя функции, которую нужно вычислить в 1С. Остальные параметры содержат дополнительные параметры, поддерживаемые функцией.

Параметры можно задавать без учета порядка, поэтому чтобы 1с их узнала, на первом месте идет префикс, в данном примере это «УС:» или «У:». После префикса идет текст параметра. Параметры – текстовые.

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

Список параметров можно сохранять – выгружать в текст или загружать из текста, а также пользоваться стандартными кнопками сохранения настройки.

Формулы

Описание параметров:

·        У – общее условие, может накладывать любое ограничение по аналитике, нельзя использовать счет

·        УС – условие счета – любое условие на счет

·        РГ – имя регистра, по умолчанию «Хозрасчетный» для 1С8:БП

·        Д1 – начальная дата в формате ГГГГДДММЧЧММ

·        Д2 – конечная дата в формате ГГГГДДММЧЧММ, округляется до конца дня

·        Д2Т – конечная дата в формате ГГГГДДММЧЧММ, не округляется, точная

В тексте условий можно использовать параметры.

Пример условия без параметров:

У:Субконто1.Наименование="Жилое здание"

Пример условия с параметрами:

У:Субконто1= &ЖилоеЗдание

Пример на демонстрационной базе БП

Пример приведен в файле пакета «Образец Excel.xls».

При вычислении за второй квартал 2006 года получаем:

ОС

Начальный

Конечный

Жилое здание

94400000

94400000

Котельная

0

1944000

Линия фигурного плетения

1812881,36

1812881,36

Станок шлифовальный

250000

250000

     

Сальдо по группе 01 по жилому зданию:

94400000

94400000

 

Вот что выдает оборотка за этот же период:

             

Субконто

Сальдо на начало периода

Оборот за период

Сальдо на конец периода

 

Дебет

Кредит

Дебет

Кредит

Дебет

Кредит

01.01

96 462 881,36

 

1 944 000,00

 

98 406 881,36

 

Жилое здание

94 400 000,00

 

 

 

94 400 000,00

 

Котельная

 

 

1 944 000,00

 

1 944 000,00

 

Линия фигурного плетения

1 812 881,36

 

 

 

1 812 881,36

 

Станок шлифовальный

250 000,00

 

 

 

250 000,00

 

Итого

96 462 881,36

 

1 944 000,00

 

98 406 881,36

 

 

Как видим, результаты идентичны.

Размышления

Методика получилась рабочей. Ее можно использовать для всяких вручную составленных в Excel балансов.

Правда, работает жутко медленно. Основные тормоза на стороне 1С, а не Excel. Принимаются идеи по ускорению.

Идея №1: Как в Excel быстро найти строки, содержащие нужные формулы, начинающиеся с заданной строки.

Идея №2: Как подсчитать число параметров функции выбор, как извлечь эти параметры, не меняя формулу.

Замечание: Крайне редко обработка может глючить, подставляя вместо «ВЫБОР(1» «ВЫБОР(N». Пока это нюансы движка, в будущем исправим.

Скачать файлы

Наименование Файл Версия Размер
down.zip 21
.zip 43,47Kb
18.12.11
21
.zip 43,47Kb Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Igоr Sаulеviсh (gutentag) 18.12.11 21:42
2. Павел (Pavel777777) 07.01.12 13:56
"В 1с7 и 1с8 такие вещи отсутствуют"

Из семёрки можно получать данные через формулы :
='1CV7'|DDE!'БухИтоги.ОБ("51","62.1")'
='1CV7'|DDE!'БухИтоги.СКД("51")'
... и т.д.
3. Михаил Ражиков (tango) 07.01.12 14:02
(2) да ладно, пусть копает. народ вон и плюсы уже ставит :)
4. Осипов Сергей (fixin) 08.01.12 16:50
(2) пардон, а если баз 10? или имеется ввиду только из текущей открытой базы? в 1с8 ДДЕ убрали, насколько я знаю.
5. Павел (Pavel777777) 08.01.12 23:35
(4) Ну да, в 8-ке нету ( ... поэтому ваша идея пригодится. В 7-ке не тестировал для случая нескольких баз (скорее всего из какой-то одной будет брать). С одной базой всё работает.
6. Виталий Гуляев (vital1c) 22.01.14 20:03
> Идея №1: Как в Excel быстро найти строки, содержащие нужные формулы, начинающиеся с заданной строки.
каким способом ищете в экселе данные?
Если все ячейки перечитать разом,
Данные = Лист.Range(Лист.UsedRange.Cells(1,1),Лист.UsedRange.Cells(КолвоСтрок,КолвоСтолбцов)).Value.Выгрузить();

и искать уже в массиве 1с, то наверняка будет гораздо быстрей
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа