gifts2017

ОСВ по нескольким базам

Опубликовал Dmitry Afanasyev (afanasko) в раздел Отчеты - Бухгалтерские

Оборотно-сальдовая ведомость по нескольким базам данных. Работает через OLE-соединение. Возможность разворачивать данные по собственным юридическим лицам.

Не знаю, может кому-нибудь пригодится. Делал для наших бухгалтеров. Очень удобно, когда в компании неколько юридических лиц или развитая филиальная сеть.

Отчет по OLE собирает данные с нескольких баз и выводит данные в виде сводной ОСВ.

Буду благодарен за любые отзывы, плюсы, а так же за найденные глюки и баги.

Для работы отчета необходимо наличие в каталоге программы внешней компоненты 1СPP.dll. 

UPD:

версия 2 от 15.12.2009:

1. Не требует компоненты 1СPP.dll

2. Добавлен разворот по валютам

3. Автоматическое сохранение и восстановление списка баз.

4. Исправлены баги, выявленные в комментариях. 

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

Наименование Файл Версия Размер
Сводная оборотка 252
.ert 28,00Kb
03.05.12
252
.ert 28,00Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Саша (Хряк) 17.07.09 15:16
Инициализацию вставил бы в попытку
ОЛЕ = СоздатьОбъект("V77S.Application");
Не все пользуют v77s, у многих просто v77

2. Dmitry Afanasyev (afanasko) 17.07.09 15:17
(1) Черт ). И точно. Ща подправлю.
3. Александр Шишкин (Шёпот теней) 17.07.09 16:31
...консилидированная отчЁтность... хм... крУто...!!!

... вОтвЕдЬоднАко ...
4. Дониэла Иванова (Доня) 17.07.09 19:14
Чуйствую, что хорошо!
но требуем компоненту 1С++
где взять?
5. Dmitry Afanasyev (afanasko) 17.07.09 21:30
(4) 1С++ можно взять на официальном сайте проекта http://www.1cpp.ru/images/3/32/Icpp-latest.rar
6. Николай Шилкин (RayCon) 19.07.09 00:18
Видимо, четвёртым пунктом в том, "что не реализовано", будет элиминирование расчетов intercompany.

>Буду благодарен за любые отзывы, плюсы, а так же за найденные глюки и баги.

Основной глюк при формировании ОСВ - это сломанная валюта баланса, и как следствие, невозможность построения по ОСВ форм №1 и №2 при более-менее сложном учете. Я так понимаю, что исправлением ошибок стандартной поставки ты не занимался. И все они перекочевали в "консолидированную" ОСВ. Не так ли?

P.S. А цифры почему одинаковые? Две одинаковые базы с разными названиями?
7. Dmitry Afanasyev (afanasko) 19.07.09 15:16
(6)
>Видимо, четвёртым пунктом в том, "что не реализовано", будет >элиминирование расчетов intercompany.

исключение расчетов, происходящих внутри компании -- нетривиальная задача. Для этого нужно очень хорошо знать процессы компании. Если для своих бухов, я еще могу такое сделать, то на универсальный механизм я пока еще не готов :-)

Не совсем понял про "сломанную валюту" учета. Но, да, я не занимался исправлением ошибок стандартной поставки.

Цифры одинаковые потому, что это две демонстрационные конфигурации стандартной бухгалтерии. Неужели вы думаете, что я буду показывать примеры на реальных цифрах? :-)
8. Николай Шилкин (RayCon) 19.07.09 15:41
>Не совсем понял про "сломанную валюту" учета

Я не говорил о "валюте учета" - я говорил о "валюте баланса". Валютой баланса называется корректно полученный ажур. К сожалению, план счетов стандартной поставки 1С таков, что оба ажура - и в ОСВ, и в форме №1 - можно получить некорректно, причём оба варианта могут не иметь экономического смысла. Но не думаю, что это имеет смысл обсуждать здесь. Если интересно, в личке могу пояснить или дать ссылки на посты в конференции 1С по теме, как нужно формировать план счетов и корректно собирать по нему финотчетность.

>Неужели вы думаете, что я буду показывать примеры на реальных цифрах? :-)

Обычно в таких случаях для репрезентативности берутся базы с разными данными безотносительно их реальности или модельности.
9. Андрей (Свой) 19.07.09 21:01
10. Dmitry Afanasyev (afanasko) 20.07.09 09:31
(9) Ну на самом деле пока там используется только класс "Индексированная таблица". Можно было бы и без 1С++ сделать, но в ряде случаев удобнее работать с индексированной таблицей, чем с обычной таблицей значений.
В дальнейшем с помощью 1С++ планируется реализовать не OLE-соединения, а работу через интерфейсы OLEDB и ODBC
11. andreykaq andreykaq (andreykaq) 05.08.09 12:13
нехватало regsvr32 C:\WINDOWS\system32\msscript.ocx
а так вроде работает, спасибо.
12. v_id (v_id) 27.10.09 10:23
Очень пригодилось. Спасибо!

2. Расшифровка в виде "Карточки счета". Опять же все зависит от количества желающих.
3. Работа с базами не через OLE, а через прямые запросы с помощью 1C++. Возможно будет реализовано.


Есть желающие
13. Александр Шишкин (Шёпот теней) 27.10.09 14:57
.. КРУТО ...

... и ЭТО всЁ БЕСплатно ...

... ЭТО ФАНТАСТИКА ...

... вотТАКбывает ...
14. Dmitry Afanasyev (afanasko) 27.10.09 16:51
(13) Я извиняюсь, но это шутка такая? :)
Вроде ничего сложного...
15. Александр Шишкин (Шёпот теней) 27.10.09 17:02
(14) ... нууууНЕзнаююю...

... ещЁ чуть-чуть + ещЁ немного и будет консилидированный отчёт, баланс ...

... какТОтакНАВЕРНОЕ ...
16. Dmitry Afanasyev (afanasko) 27.10.09 17:38
(15) Понятно, спасибо ).
Консолидированный скорее всего не получится. Как упоминал тов. RayCon, есть некоторые проблемы при сведении данных. Проблемы могут возникнуть если подразделения продают что-то друг-другу, например.
Это что касается торговых компаний. Допустим в какой-нибудь страховой компании такая проблема маловероятна ))).
17. Александр Шишкин (Шёпот теней) 27.10.09 18:20
... ага...ага...встречные движения...но это уже дело техники...

можно подсчитать ВСЕ объёмы затем по отдельности исключив "свои" организация и где -то уже засветит консолидация ... ну или морочиться внутри общейОСВ ... думаю небольшой ошибкой можно и принебречь ...

... не так стрАшно нАказание как его ожидАние ...

... вот ...
18. Dmitry Afanasyev (afanasko) 29.10.09 10:38
(12) Ок. Я поработаю над этим :)
19. Alex Mal (alexmal) 02.11.09 13:42
Ставлю + потому как работает!
Подправил для украинских конфигураций.
См. http://infostart.ru/public/59979/
20. Евгений Мартыненков (JohnyDeath) 02.11.09 14:28
Через прямые запросы трудновато будет, ибо подсистема бухучета в 7.7 - замудреная. Но есть классы от тов. berezdetsky ( http://www.1cpp.ru/forum/YaBB.pl ) .
С нуля писать такое не советую.
21. Dmitry Afanasyev (afanasko) 02.11.09 16:19
(20) Я уже понял в какую ж... забрел )))).
Не хотел использовать классы, т.к. обработка рассчитана на обычных пользователей и не хотелось трудностей с добавлением новых классов к тем, которые возможно уже используются.
Во-вторых класс berezdetsky заточен под СКУЛЬ. Необходима поддержка DBF-ных баз. Тут мне кажется, предпочтительнее использовать класс "ПрямойЗапрос" от vandalsvq.
Но у меня возникла совсем другая проблема с DBF-ными базами. Таблицы итогов содержат неверные данные, хотя стандартные средства 1С отрабатывают правильно. К примеру, приведу остатки по 41 счету:

на 1.06.2009 в остатках есть товар на сумму 10 000 р.
14.06.2009 весь товар списался (по табл. оборотов).
на 1.07.2009 в остатках лежит сумма в 10 000 р. -- тут должно быть 0.

Когда формирую запрос с помощью "БухгалтерскиеИтоги", допустим на 2.07.2009, остаток получается верным: 0.
Ну а по прямому запросу остаток выдается неверным, т.к. берутся данные из остатков + обороты.
С чем это связано, я так и не понял. В СКУЛЬной версии таких проблем нет.
22. Евгений Мартыненков (JohnyDeath) 02.11.09 17:30
(21) Класс vandalsvq использует компоненту 1sqlite, поэтому выдрать данные из внешней дбф-базы этим классом не получится. У berezdetsky - да, только под скуль. Вот такая вот загагулина...
Или ты решился переписать всё под ОЛЕ ДБ? ))
А конкретные вопросы по поводу данных, хранящихся в этих табличках, думаю, стоит задать тем, кто конкретно с этим сталкивался. Я знаю только двух людей - berezdetsky и vandalsvq ;)
23. Dmitry Afanasyev (afanasko) 02.11.09 18:18
(22)
Или ты решился переписать всё под ОЛЕ ДБ? ))

Ну сначала так и хотел :D
Делал класс "БыстрыеБухИтоги". Хотел подменять стандартные вызовы (ВыполнитьЗапрос, ПолучитьСубконто и т.д.) собственной реализацией. Было задумано так, что если запрос к SQL базе, то через ODBCRecordset, если к ДБФ то в зависимости от монопольности либо стандартные методы, либо через OLE DB.
24. Евгений Мартыненков (JohnyDeath) 02.11.09 21:33
(23) ну тогда удачи! С великим удовольствием посмотрел бы. (я так и не осилил :oops: )
25. v_id (v_id) 03.11.09 09:01
Добавлю свои 5 копеек. У меня список баз фиксирован, да и если использовать ИТЗ, то наверное проще так:
//******************************************************************************
// Предопределенная процедура
//
Процедура ПриОткрытии(ФлагВостановленияНастройки)
	
	Если ЗагрузитьВнешнююКомпоненту("1CPP.DLL") = 0 Тогда
		Предупреждение("Для работы обработки необходима компонента 1С++!");
		Возврат;
	КонецЕсли;
	
	Если ФлагВостановленияНастройки = 0 Тогда
		НачДата = НачКвартала(ТекущаяДата());
		КонДата = КонКвартала(ТекущаяДата());
	КонецЕсли;

	ТаблицаБаз.НоваяКолонка("ИмяБазы", "Строка",,, "Название БД", 20);
	ТаблицаБаз.НоваяКолонка("Путь"   , "Строка",,, "Путь", "20");
	ТаблицаБаз.НоваяКолонка("Пользователь", "Строка",,,, 10);
	ТаблицаБаз.НоваяКолонка("Пароль", "Строка",,,, 10);
	ТаблицаБаз.НоваяКолонка("ТипБазы", "Строка",,, "Тип базы", 5);

	ЗаполнитьСписокБаз();

	ВидимостьРеквизитов();
	
	ИмяФайла = КаталогИБ() + "SpisokBazOSV";
	Если ФС.СуществуетФайл(ИмяФайла) = 1 Тогда
		ИТЗ = СоздатьОбъект("ИндексированнаяТаблица");
		ИТЗ.ИзФайла(ИмяФайла);
		ИТЗ.Выгрузить(ТаблицаБаз);
	КонецЕсли;
	
КонецПроцедуры

//******************************************************************************
// Предопределенная процедура
//
Процедура ПриЗакрытии()

	ИмяФайла = КаталогИБ() + "SpisokBazOSV";
	ИТЗ = СоздатьОбъект("ИндексированнаяТаблица");
	ИТЗ.Загрузить(ТаблицаБаз);
	ИТЗ.ВФайл(ИмяФайла);

КонецПроцедуры // ПриЗакрытии()
...Показать Скрыть

26. Dmitry Afanasyev (afanasko) 03.11.09 10:01
(25). Я уже это сделал :) Только немного по другому. Как доделаю валюты, выложу обновленную версию.
27. v_id (v_id) 03.11.09 10:03
28. Максим Я (maxchaos) 05.11.09 19:03
Однозначно "плюс"!
Не помешает перед обращением к константам использовать проверку на их периодичность, иначе отчет вылетает с ошибкой "Типы не совпадают".
29. Dmitry Afanasyev (afanasko) 09.11.09 10:04
(28). Название организации?
ОК.
30. Максим Я (maxchaos) 09.11.09 10:31
(29) Да, там пока другой константы нет :)
Хотя их количество в данном случае не важно: любая из них может оказаться периодической.
31. v_id (v_id) 17.02.10 17:19
Ради любопытства спрошу. Чем вызван отказ от 1с++? Идея из (23) свое отжила?
32. Dmitry Afanasyev (afanasko) 01.03.10 11:54
(31).
Решил отказаться от 1С++ ради максимальной простоты использования. Чтобы человек скачал и запустил без дополнительных усилий.
С прямыми запросами к DBF-ным базам возникли проблемы, описанные в (21). Подумал, что не стоит рисковать правильностью данных ради быстродействия.
33. Wumka (wumka) 01.05.10 16:30
"Не знаю, может кому-нибудь пригодится. Делал для наших бухгалтеров. Очень удобно, когда в компании неколько юридических лиц или развитая филиальная сеть."

использовала данную разработку для сравнения нескольких баз одного и того же юр.лица, удобно: выдаётся одна ОСВ и видно по каким счетам разница. Удобно при восстановлении учёта.

Спасибо.

34. Dmitry Afanasyev (afanasko) 05.05.10 11:24
wumka, Спасибо за оригинальную идею использования!
35. Ирина Нечаева (Arin) 26.10.11 03:12
У меня почему-то не работает. Выходит ошибка "Подключение = ОЛЕ.Initialize(ОЛЕ.RMTrade,"/d"""+ТаблицаБаз.Путь+""" /N"+ПользовательБазы+" /P"+ПарольБазы,"NO_SPLASH_SHOW");
{C:\DOCUMENTS AND SETTINGS\USER\РАБОЧИЙ СТОЛ\SVODNAJAOBOROTKA.ERT(130)}: Неизвестная ошибка"
36. Константин (kostya23) 04.12.11 23:29
Интересная обработка, попробовали с ней поработать - понравилось. Спасибо автору.
39. Erik Nas (987ww765) 15.05.12 12:57
А для 8.2 такой ни у кого нет???? очень нужно
40. v_id (v_id) 28.11.12 15:31
(32) afanasko, спасибо вам за этот отчет.
Сейчас дорабатываю его под себя, добавляю разворот по первому субконто у счета с возможностью выбора реквизита для группировки. Появилась желание попробовать реализовать это через прямыезапросы, в связи с этим очень бы хотелось посмотреть на вашу "кухню" в первых попытках реализовать текущий отчет, ну чтобы испугаться и больше не думать об этом :)