gifts2017

1С 7.7. Отчет для консолидированного анализа капитала + конфигурация

Опубликовал Дмитрий Литовченко (kompas-dm) в раздел Отчеты - Финансовые

Консолидированный (многофирменный) учет. Как я его делаю ...

Тема консолидированного (многофирменного) учета не новая. Реализовать его через разделитель учета мне ни разу не удавалась.
Некоторые базы предприятия  не для всеобщего обозрения. А получить "Итого" - надо.

Использовал стандартный механизм 1С и компоненты 1С++,  Formex http://www.dorex.ru , Yoksel:  http://yoksel.net.ru,  Обработка "Быстрое сохранение таблиц 1С (mxl) в формате Excel" -автор: uzhast1c@gmail.com

В составе конфигурации всего один внешний отчет - анализ величины собственного капитала предприятий компаниии. Навеяно новой инструкцией для торговцев Ценными Бумагами (Украина). Но в нем показан механизм работы с  ИБ. Программный код простой и доступный для понимания всем. Немного порезал - убрал специфику клиента, выгрузку в XML и прочие мелочи. Таких анализов, расчетов уже более 15. Фин руководители стали узнавать, приветствуют при встрече, приглашают на совещания(!)

Реально работает под 2003 + ТС. Обход более 50 предприятий 15-20 сек

Уважаеиые профессионалы, не оттягивайтесь на этой работе. Я выложил СВОЮ технологию

Буду рад, если кого-то эта тема зацепит или сдвинет с точки стояния.

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

Наименование Файл Версия Размер
Консолидация_Без_SpreadSheet 50
.1250167327 215,46Kb
25.09.09
50
.1250167327 215,46Kb Бесплатно
Консолидация_С_SpreadSheet 50
.1250167586 1,01Mb
25.09.09
50
.1250167586 1,01Mb Бесплатно

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Епрст (Ёпрст) 13.08.09 17:53
>>>Обход более 50 предприятий 15-20 сек
гон чистой воды..
Одна толька инициализация одной базы по ОЛЕ занимает больше времени, не говоря уже о выполнение отчета по Оле..


2. Александр Рытов (Арчибальд) 14.08.09 08:30
(1) Похоже, консолидируются некие готовые таблицы mxl... ?
3. Епрст (Ёпрст) 14.08.09 08:40
(2) Судя по коду - в цикле осуществляется соединение по оле с базой, в ней выполняется бух запрос и далее... лень глядеть даже...
Никакой консолидации я там не увидел.

4. Дмитрий Литовченко (kompas-dm) 14.08.09 09:59
(1) Базы стоят на серваке, доступ в терминале. Сервер, правда, неприлично крутой. А зачем мне "гон" ? Что вижу, то и выкладываю.
(3) Терминология. Я понимаю это как сбор и анализ отдельных показателей, полученных от разных предприятий. Это есть чисто функциональная часть. Не программная. Укладывать в эту схему аналитический учет - вот это уже "гон"
5. Дмитрий Литовченко (kompas-dm) 14.08.09 10:12
(2) Да что угодно. Хозяин - барин. Часто в Инете читал проблему доступа, обхода ИБ, Зависающие процессы и т.д.. Выложил для них. Отчет по капиталу - просто пример.
6. Епрст (Ёпрст) 14.08.09 10:34
(4) >>>Сервер, правда, неприлично крутой

Параметры неприлично крутого сервера в студию + замеры произодительности на Хотя бы ОДНО оле соединение с другой базой..

Не говоря уже об выполнение Оле-запроса...
Врут, даже не краснея.. что за люди..
7. Дмитрий Литовченко (kompas-dm) 14.08.09 11:46
(4) Время поставил, работают все юзеры, названия фирм немного порезал
Параметры сервака СисАдмин не дал, хватит и этого
Начало 10:41:17
И_БИТ ЗАО 10:41:18
И_Лигал 10:41:19
И_Резерв Ф 10:41:20
И_Совреме 10:41:21
И_Фид 10:41:22
И_Хи 10:41:23
К_Акаде 10:41:24
К_Би 10:41:25
К_БИ 10:41:26
К_Д 10:41:27
К_ДС 10:41:28
К_Ин 10:41:29
К_Ли10:41:30
К_р" 10:41:30
К_ 10:41:31
К_Рад10:41:32
К_Реб 10:41:33
К_Риалментс 10:41:34
К_Та 10:41:35
К_Те 10:41:36
К_Тра 10:41:37
О_Дом 10:41:38
О_Р10:41:39
О_С 10:41:40
О_СП 10:41:40
О_Те 10:41:41
О_Те 10:41:42
О_Э 10:41:43
И_М10:41:44
К_Це 10:41:45
Я_Бр 10:41:46
Я_Д 10:41:47
Ошибка открытия базы Я_ТИО
Ошибка открытия базы Я_Юритиз
Конец 10:41:48
8. Епрст (Ёпрст) 14.08.09 11:54
И как вы это замерили ?
1 секунда на инициализацию базы и выполнение Оле запроса ?
Ну-ну..
Теперь делаем так и сообщаем о результатах:

Процедура расчет(фирмаН,фирмаК)
Начало = _GetPerformanceCounter();
.....

Сообщить(""+фирмаН+" : "+(_GetPerformanceCounter()-Начало));
КонецПроцедуры

Результаты в студию.

9. Дмитрий Литовченко (kompas-dm) 14.08.09 12:00
(8) Извините, я на удаленке в боевом режиме.
Сначала попробую на копиях, а потом там , на сервере. Вышлю...
10. Дмитрий Литовченко (kompas-dm) 14.08.09 12:11
(8) Теперь делаем так и сообщаем о результатах:
Результаты в студию.
Начало 11:13:00
И_Б : 842
И_Л : 672
И_Р : 675
И_С : 878
И_Ф : 837
И_Х : 664
К_А : 828
К_Б : 686
К_Б : 659
К_Д : 694
К_Д : 685
К_И : 662
К_Л : 656
К_О : 682
К_П : 664
К_Р : 664
К_Р : 662
К_Р : 669
К_Т : 657
К_Т : 666
К_Т : 688
О_Д : 686
О_Р : 687
О_С : 678
О_С : 664
О_Т : 665
О_Т : 695
О_Э : 659
Конец 11:13:26
11. Епрст (Ёпрст) 14.08.09 12:18
Не верю... Либо базы - пустышки, либо запрос в них не делается вообще.
12. Епрст (Ёпрст) 14.08.09 12:21
Вот это:
.Процедура расчет(фирмаН,фирмаК)
// МД , ИТ_ - локальная переменная, иначе процессы не закрываются.
//Кто-то спрашивал, что делать с процессами ...


мд="";
мд=CreateObject("v77.application");
if мд.initialize(МД.rmtrade,"/d"+фирмаК+" /N"+Логин+" /P"+Пароль,"NO_Splash_Show")=0 then
сообщить("Ошибка открытия базы "+фирмаН);
мд="ЗакрытМД";
возврат;
endif;
Если ДатаПпо > мд.КонецРассчитанногоПериодаБИ() Тогда
сообщить("Работа с "+фирмаН+" Бух итоги на "+ДатаПпо+" не рассчитаны !");
мд.ExecuteBatch("ЗавершитьРаботуСистемы(0)");
мд="ЗакрытМД";
Возврат ; //не будем ничего заполнять, если итоги не рассчитаны
КонецЕсли;

Период="";
Если фШаг=1 тогда // месяц
Период="Месяц";
ИначеЕсли фШаг=2 тогда // неделя
Период="Неделя";
ИначеЕсли фШаг=3 тогда // день
Период="День";
КонецЕсли;

Фи=сокрлп(мд.константа.базфирма.наименование);
Сч_="40,45,46,421,422,43,38,12,133,154,442,423,424,425,441,141,79";

//-------------------------------------------
Если фПер=1 Тогда
ит_=мд.CreateObject("БухгалтерскиеИтоги");
Ит_.ВыполнитьЗапрос(ДатаПс, ДатаПпо, Сч_, , , 1, Период);
ит_.выбратьсчета();
Пока ит_.получитьсчет()=1 Цикл
счет__=строка(ит_.счет.код);
сумСч=ит_.скд()-ит_.скк();
Если сумСч=0 Тогда
продолжить;
КонецЕсли;
Ит_.выбратьпериоды(1,,2);
Пока ит_.получитьпериод(2)=1 Цикл
Период__=Ит_.кондата;
сум=ит_.скд()-ит_.скк();
Если счет__="79" Тогда
Если Период__<>конмесяца(Период__) Тогда
продолжить;
КонецЕсли;
КонецЕсли;
т.новаястрока();
т.фирмаИмя=Фи;
т.окпо=сокрлп(мд.константа.БазФирма.ЕДРПОУ);
т.ДатаТек=Период__;
Если счет__="79" Тогда // их прикол
Если сум<0 Тогда
т.Счет="441";
иначе
т.Счет="442";
КонецЕсли;
иначе
т.Счет=счет__;
КонецЕсли;
т.сумма =мод_(сум);
КонецЦикла;
КонецЦикла;
КонецЕсли;

ит__=мд.CreateObject("БухгалтерскиеИтоги");
Ит__.ВыполнитьЗапрос(ДатаПс, ДатаПпо, Сч_, , , 1,);
ит__.выбратьсчета();
Пока ит__.получитьсчет()=1 Цикл
сум=ит__.скд()-ит__.скк();
Если сум=0 Тогда
продолжить;
КонецЕсли;
счет__=строка(ит__.счет.код);
тфирма.новаястрока();
тфирма.фирмаИмя=Фи;
тфирма.кат_=фирмаК;
Если счет__="79" Тогда // их прикол
Если сум<0 Тогда
тфирма.Счет="441";
иначе
тфирма.Счет="442";
КонецЕсли;
иначе
тфирма.Счет=счет__;
КонецЕсли;
тфирма.сумма =мод_(сум);
КонецЦикла;
сообщить(фирмаН+"");
мд.ExecuteBatch("ЗавершитьРаботуСистемы(0)");
мд="ЗакрытМД";
КонецПроцедуры //--------------------------------------------

По определению не может выполнятся меньше секунды...
Даже на "неприлично крутом" сервере...
Одна только инициализация Бухии больше времени занимает..

13. Дмитрий Литовченко (kompas-dm) 14.08.09 12:26
(11) Да не пустышки. И запрос выполняется. И работаю на удаленке. И инициализация идет ( толька инициализация одной базы по ОЛЕ занимает больше времени, не говоря уже о выполнение отчета по Оле..). Удивляйтесь дальше...
14. Епрст (Ёпрст) 14.08.09 12:31
(13)Удачи вам в скоростной инициализации и работе на супер быстром оле-сервере..

15. Дмитрий Литовченко (kompas-dm) 14.08.09 12:37
16. Ярослав Радкевич (WKBAPKA) 19.08.09 22:18
я так понимаю, что задача с консолидацией данных нескольких предприятий. ну это не сложно, сложнее другое, когда у этих нескольких предприятий разные бухгалтерские программы, даже не одна-Эс. вот тут по идее протухт 1С Консолидация должен помочь.
А что это за анаЛиз такой, собственного капитала? не пойму.
17. Дмитрий Литовченко (kompas-dm) 20.08.09 14:33
(16) Да это новая инструкция для торговцев ценными бумагами. Ввели с 15.05.2009. Величина собственного капитала предприятия на день торгов на бирже должна быть не менее 600 000 грн
Формула счетов в отчете есть. Отчет - только пример ОЛЕ обхода предприятий.
Вставить в систему работу с другими базами DBF, EXcEL,TXT несложно.
Поставить в справочнике предприятий "тип данных", а в обходе по этому условию отработать: кому МД, кому EXcEL, DBF и т.д.
В консолидированном учете участвуют только реальные данные, ссылок нет
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа