Имя: Пароль:
1C
1С v8
СКД - работа с 2мя базами универсально
,
0 kittystark
 
21.12.15
18:49
жили были с одной базой 1С, в которой велось несколько организаций и сводная аналитическая отчетность замечательно формировалась отчетами на СКД из единой базы

прилетела задача от руководства: базы разъединить - для каждой организации отдельная база, и все - вопрос дальше однозначно не обсуждается, но нужна сводная отчетность

---------------------------- ОТСТУПЛЕНИЕ BEG
метода доработки РУКАМИ одного конкретного существующего отчета СКД для получения той же сводной аналитики опробована:
- добавляем в наборы данных "набор данных - объект" и указываем его поля
- руками же добавляем табличную часть "отчета-объекта" (в том самом окне где кнопка "Открыть схему компоновки данных" ), в нее сопоставляем соответствующее количество реквизитов
- на вкладке связей досвязываем эти внешние данные
- в ПриКомпоновкеДанных через СОМ-объект V8x.Application коннектимся к базе, выполняем запрос на "удаленной" базе, прогружаем результат в табличную часть
- процессор инициализируем с "внешними данными" компонуем и вуаля - отчет готов, работает!!!
----------------------------- ОТСТУПЛЕНИЕ END

не хочется почти сотню отчетов руками переводить на эти рельсы, а написать что-то более-менее универсальное для работы с 2-мя базами

у меня на самом деле возникают сомнения только по поводу программного добавления табличных частей "отчета-объекта", но все же спрошу

ВОПРОС 1: с технической точки зрения есть ли возможность ПРОГРАММНО добавить в схему компоновки необходимое количество "копий" оригинальных наборов (работающих с одной базой), так чтобы эти копии были полноценными "наборами-объектами" с теми же полями и им ПРОГРАММНО подобавлять табличные части "отчета-объекта" с необходимыми реквизитами ?

ВОПРОС 2: есть ли возможность ПРОГРАММНО добавить новую связь на вкладку "связи наборов данных" ?
1 Fragster
 
гуру
21.12.15
18:52
консолидация засасывает в себя данные из кучи источнико, а потом по готовым данным в пределах одной базы делается отчет. также программно можно прокинуть схему и выполнить отчет в удаленной базе, получить обратно табличный документ, если настройки схемы подходят для удаленной базы.
2 kittystark
 
21.12.15
18:56
(1) и сколько денег и времени на внедрение надо будет вбухать на эту консолидацию ?
3 Fragster
 
гуру
21.12.15
19:01
(2) много. но точечно скомуниздить подход ничего не мешает.
4 kittystark
 
21.12.15
19:13
(1) если предположить, что конфы 2 баз абсолютно одинаковые, плюс через план обмена добиваемся "синхронизации" основных справочников (типа Номенклатура и все с ней связанные, Контрагенты и т.д.) только в одну сторону - из основной базы во 2-ю, во 2-ой запрет на заведение/редактирование

возможен ли вариант проброса схемы на 2-ю базу и ее исполнения там, но возврата не табдока, а чего-то-там-пока-не-понятного, что на лету можно подхватить и подсунуть к "основным" данным первой базы при компоновке ?

т.к. табдок вчистую не "просуммируешь" функциями СКД, прописанными в выражениях ресурсов

может что-то типа со 2-ой базы возвращать ЗначениеВСтрокуВнутр от РезультатаСкомпонованногоВ_ТЗ, а на стороне первой базы ЗначениеИзСтрокиВнутр ?
5 kittystark
 
22.12.15
15:30
UP
6 Лефмихалыч
 
22.12.15
15:34
(0) программно можно и то, и это, но это порожняк. Нужна консолидированная отчетность - консолидируйте данные в отдельном месте, из которого получайте сводные отчеты.
7 Necessitudo
 
22.12.15
15:35
(6) Внешние источники данных.
8 Лефмихалыч
 
22.12.15
15:36
+(6) самый простой способ - это сделать РИБ из трех узлов: Центр, ФирмаА, ФирмаБ с обменом только между ПБ и ЦБ.

(7) это точно такое же кривое решение, как суета с отчетами из(0)
9 MUXACb
 
22.12.15
16:17
(0) А потом вспомнят что лет 5 назад была еще база(с другой конфигурацией) и потребуют что бы отчет и ее данные обрабатывал. Тогда и (8) не поможет
10 Лефмихалыч
 
22.12.15
16:20
(9) пустой разговор.

На самом деле решение через отчеты не  взлетит хотя бы потому, что, если базы будут изолированы и не объеденены ни каким центром, то уже через пару месяцев сводный отчет будет не возможен по причине рассинхронизации нормативно-справочной информации. НСИ обязаны быть общей, ибо она и будет разрезами этого сводного учета. А, если базы тотально изолированы, то ни какие внешние источники и программные СКД не помогут получить общий отчет
11 kittystark
 
22.12.15
16:41
(6),(8) в (4) о синхронизации слегка прошелся, вариант с РИБ итак лежит на поверхности и с самого начала я только этот вариант и предлагал, но шефы выпускать ЦБ в облака категорически не хотят, а на случай изъятия оборудования спрятанного сервера нет - поэтому и приходится пока отказаться от РИБ, и разносить базы на 2 территориально разнесенных сервера - каждый только под свою контору
12 Лефмихалыч
 
22.12.15
16:43
(11) а зачем выпускать ЦБ из облака? Не выпускайте. Какая религия мешает и ЦБ, и ПБ в облаке хранить?
13 Лефмихалыч
 
22.12.15
16:44
что так же мешает ПБ разнести на эти ваши сервера, а ЦБ продолжать хранить в облаке?
14 Лефмихалыч
 
22.12.15
16:44
какя-то у вас там секта деструктивная...
15 vhl
 
22.12.15
16:46
(0) нафиг тебе табличная часть?
16 vhl
 
22.12.15
16:48
По поводу программного добавления - не проблема:
        ИсточникДанных = СхемаКомпоновкиДанных.ИсточникиДанных.Добавить();
    ИсточникДанных.Имя = "ИсточникДанных1";
    ИсточникДанных.ТипИсточникаДанных = "Local";

    НаборДанных = СхемаКомпоновкиДанных.НаборыДанных.Добавить(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных"));
    НаборДанных.Имя = "НаборДанных1";
    НаборДанных.ИсточникДанных = ИсточникДанных.Имя;
    НаборДанных.ИмяОбъекта = "Таб";
17 vhl
 
22.12.15
16:50
(8) Вот еще геморой с обменами поиметь
18 vhl
 
22.12.15
16:51
Если ТС устраивает срез отчетности получаемый таким образом, то в чем проблема? Нафиг строить консолидацию, обмены и прочий геморой если надо получить тупо один-два отчета?
19 Новиков
 
22.12.15
17:01
(18)>> если надо получить тупо один-два отчета?
(0) >> не хочется почти сотню отчетов руками переводить на эти рельсы,

один-два - это сотня?
20 kittystark
 
22.12.15
17:03
(15) судя по вопросу правильно ли делаю вывод что в коде

ВнешниеНаборыДанных = новый Структура;
ВнешниеНаборыДанных.Вставить("ВнешнийНабор", ТабличнаяЧасть);
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки, Истина);

в качестве ТабличнаяЧасть может выступать не то что "натыкано" в конфигураторе мышой на форме с указанием типа конкретного реквизита, а вообще любая ТЗшка ?
21 Новиков
 
22.12.15
17:05
Простой вопрос к ТС:
в вашей общей базе есть контрагент А. Базы разъехались, стало 2 контрагента А. В первой базе, зачем-то контрагента А изменили (поменялась ссылка, инн или любое другое поле синхронизации). Есть какие-то отчеты, которые как-то анализируют контрагентов. Соответственно, в результате отчет покажет видимо не то, что ожидалось. Аналогично с номенклатурой. Даже если везде установлена синхронизация по ссылке, ничто не мешает, кому-то взять и контрагента А перебить в ниндендо Б.

Такой подход ничего не даст в долгосрочной перспективе, если у этих баз есть некое множество НСИ, которое пересекается между собой. В этом случае, правильным решением будет либо вывод всей НСИ в отдельную базу с миграцией по пб, либо тупой запрет на редактирование нси в одной из баз.
22 aleks_default
 
22.12.15
17:05
Все правильно сказано в (10). Добавить нечего.
23 vhl
 
22.12.15
17:07
(20) ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,Новый Структура("Таб", Таб), ДанныеРасшифровки);
Таб - таблица значений
24 kittystark
 
22.12.15
17:08
(21) читай внимательно (4) про запреты во второй базе
25 Новиков
 
22.12.15
17:10
(24) я это читал :)
26 vhl
 
22.12.15
17:11
(4) А что делать если филиалу надо завести нового контрагента или номенклатуру? Звонить в центр и ждать обмена?
27 Новиков
 
22.12.15
17:11
А что кстати в отчетах? Откуда там данные с запросов? С регистров каких-то?
28 kittystark
 
22.12.15
17:18
(26) за (23) сэнкс, попробую
ассортимент всегда сначала появляется в первой конторе, если товар ходовой тогда спустя время закупается и на вторую, разлет по времени - недели и больше
с контрагентами все еще проще, пересечений нет - разные сегменты рынка
29 rsv
 
22.12.15
17:19
(0)  1. Внешние источники данных.
     2. Если скуль - линкованый сервер рулит. (строка,число,дата)
30 kittystark
 
22.12.15
17:20
(27) со справочников и с регистров, в основном классика жанра - взаиморасчеты, продажи, партии, остатки
31 kittystark
 
22.12.15
17:25
(29) >>1. Внешние источники данных.
Что подразумеваешь ? Это ODBC или СКД-шный механизм ?

>> 2. Если скуль - линкованый сервер рулит. (строка,число,дата)
MS SQL 2008, но вот про линкованность сервера малограмотен (пока :), можешь чуть шире пояснить?
32 vhl
 
22.12.15
17:33
(29) с внешними источниками ты себе больше проблем огребешь с этими сопоставлениями названий реквизитов
33 johnbay
 
22.12.15
20:01
(0) еще в 2009г выбрал метод описанный в отступлении. Работает до сих пор. Все что хочет автор добиться тогда не удалось, а переделывать потом уже не сложилось) базы абсолютно разные. пользователи разные.
Например прототип отчета создается в конфигураторе и там же прописываются поля. любые его варианты добивают пользователи.
из неприятных моментов, который преследует этот метод в работе это первичное ожидание коннекта по сом. последующие вызовы быстрее.
В моем случае было проще. Не было необходимости в переводе тысяч отчетов на новые рельсы. Все отчеты писались с нуля.
Программист всегда исправляет последнюю ошибку.