Имя: Пароль:
1C
1С v8
УРБД в 8-ке. Несколько вопросов
,
0 Джордж1
 
01.04.13
15:00
Базы не одинаковые
1. Можно ли сделать что бы элемент справочника включался в обмен в зависимости от определенного реквизита
2. Можно ли сделать что бы в подчиненный узел передавать только остатки по определенным складам, без документов движений?
1 Анатолий Никитин
 
01.04.13
15:01
можно
2 Джордж1
 
01.04.13
15:22
А во втором случае что в подчиненную базу будет передаваться?
3 drcrasher
 
01.04.13
15:23
(2) только остатки по определенным складам
4 Джордж1
 
01.04.13
15:26
(3)остатки регистров???
5 Serg_1960
 
01.04.13
15:29
1) Да. В типовых есть "анналогичное" для документов - обмен "по организациям"- документ идет в обмен по значению реквизита.
2) Это ни есть хорошо, но... в принципе можно. Погугли на Мисте "регистр без регистраторов".

PS: "Базы не одинаковые" - это ни о чём информация. Конфигурации различны или состав/данные различны? Если конфигурации "идентичные" - то используется термин "РИБ" - это не совсем "УРБД" :)
6 Джордж1
 
01.04.13
15:41
(5)конфигурации различны. центральная база + магазины
7 ale-sarin
 
01.04.13
15:43
(6) Это уже и не УРБД тогда, так-то.
8 Джордж1
 
01.04.13
15:45
(7)ну как тогда механизм обмена в 8-ке называют?
9 revision
 
01.04.13
15:46
(6) это не УРБД.
Тебе нужен обмен по правилам
10 ale-sarin
 
01.04.13
15:47
(8) И не РИБ.
А просто обмен между базами с разными конфами. Тогда что угодно можно сделать. Например, правила написать свои...
11 revision
 
01.04.13
15:48
(8) это обмен по правилам обмена. если используешь типовой обмен - типа Бух--УТ - то надо править правила.
Если не типовой, но кем то написанный - то все равно править.
Иначе - писать свои.
Указываешь в правилах в каком случае передавать объект.
если опыта нет - лучше попросить кого то. но там не особо сложно - руку надо набить
12 Джордж1
 
01.04.13
15:48
(9)На сколько эти правила гибки и. И как можно перенести остатки регистров без движений.
(10)Ну я так уже и написал, правда в 7-ке, может в 8-ке это можно сделать более штатными средствами
13 revision
 
01.04.13
15:49
(12) я не знаю что у тебя за обмен - по каким он правилам - ОЧЕНЬ гибки - можешь просто перенести остатки - не сложно - запрос и формируешь выгрузку в таблицу исходящую
14 revision
 
01.04.13
15:51
перенос остатков - по бстрому:
1. создаешь в конвертации объект источник - тот документ куда переносить.
Объект источник - не указываешь.
2. в правилах выгрузки - формируешь запрос и виртуальную таблицу
15 Джордж1
 
01.04.13
15:51
(13)а дальше чего с этими остатками делать в магазине?
16 revision
 
01.04.13
15:52
пример моего быдлокода - быстро сказали выгрузить 97 счет

//ТекстЗапроса = Запросы.Запрос_Остатки97Счета.Текст;

//Запрос = Новый Запрос(ТекстЗапроса);
//Запрос.УстановитьПараметр("ДатаОстатков", '20130228235959');

//РезультатЗапроса = Запрос.Выполнить();
//Если РезультатЗапроса.Пустой() Тогда
//    Отказ = Истина
//КонецЕсли;

// Структура документа
ТабДок = Новый ТаблицаЗначений;
ТабДок.Колонки.Добавить("ДатаДок");
ТабДок.Колонки.Добавить("Комментарий");
ТабДок.Колонки.Добавить("ПометкаУдаления");
ТабДок.Колонки.Добавить("Хозрасчетный");

НоваяСтрока = ТабДок.Добавить();
НоваяСтрока.ДатаДок        = '20130228235959';
НоваяСтрока.ПометкаУдаления    = Ложь;
НоваяСтрока.Хозрасчетный    = Новый ТаблицаЗначений;
Хозрасчетный = НоваяСтрока.Хозрасчетный;

Хозрасчетный.Колонки.Добавить("Активность");
Хозрасчетный.Колонки.Добавить("Организация");
Хозрасчетный.Колонки.Добавить("Период");
//Хозрасчетный.Колонки.Добавить("Регистратор");
Хозрасчетный.Колонки.Добавить("СчетДт");
Хозрасчетный.Колонки.Добавить("СчетКт");
//Хозрасчетный.Колонки.Добавить("ВалютаДт");
//Хозрасчетный.Колонки.Добавить("ВалютаКт");
//Хозрасчетный.Колонки.Добавить("ВалютнаяСуммаДт");
//Хозрасчетный.Колонки.Добавить("ВалютнаяСуммаКт");
//Хозрасчетный.Колонки.Добавить("КоличествоДт");
//Хозрасчетный.Колонки.Добавить("КоличествоКт");
Хозрасчетный.Колонки.Добавить("Сумма");
Хозрасчетный.Колонки.Добавить("Содержание");
Хозрасчетный.Колонки.Добавить("СубконтоДт");
Хозрасчетный.Колонки.Добавить("СубконтоКт");

//Хозрасчетный.Колонки.Добавить("ВидРегламентнойОперации");
//Хозрасчетный.Колонки.Добавить("СписаниеПартий");
//Хозрасчетный.Колонки.Добавить("ДатаЗаписи");
//Хозрасчетный.Колонки.Добавить("НДСПродукции");
//Хозрасчетный.Колонки.Добавить("НомерЖурнала");

Хозрасчетный.Колонки.Добавить("ИмяПКО");
Хозрасчетный.Колонки.Добавить("ИмяПКОСубконтоДт");
Хозрасчетный.Колонки.Добавить("ИмяПКОСубконтоКт");


Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ДатаОстатков", '20130228235959');
Запрос.УстановитьПараметр("Счет", ПланыСчетов.Хозрасчетный.РасходыБудущихПериодов);

Запрос.Текст = "
|ВЫБРАТЬ
|    ИСТИНА КАК Активность,
|    &ДатаОстатков КАК Период,
|    ХозрасчетныйОстатки.Счет КАК СчетДт,
|    ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.Вспомогательный) КАК СчетКт,
|    ХозрасчетныйОстатки.Субконто1 КАК СубконтоДт1,
|    ХозрасчетныйОстатки.Субконто2 КАК СубконтоДт2,
|    ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.РасходыБудущихПериодов)КАК ВидСубконтоДт1,
|    ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.РаботникиОрганизаций)КАК ВидСубконтоДт2,
|    ХозрасчетныйОстатки.Организация,
//|    ХозрасчетныйОстатки.СуммаОстатокДт,
|    ХозрасчетныйОстатки.СуммаОстаток КАК Сумма
|ИЗ
|    РегистрБухгалтерии.Хозрасчетный.Остатки(&ДатаОстатков) КАК ХозрасчетныйОстатки
|ГДЕ
|    ХозрасчетныйОстатки.Счет В ИЕРАРХИИ(&Счет)
|";

Результат = Запрос.Выполнить().Выгрузить();
Результат.Колонки.Добавить("СубконтоДт", Новый ОписаниеТипов("РегистрБухгалтерииСубконто.Хозрасчетный"));
Результат.Колонки.Добавить("СубконтоКт", Новый ОписаниеТипов("РегистрБухгалтерииСубконто.Хозрасчетный"));

Результат.Колонки.Добавить("ИмяПКОСубконтоДт");
Результат.Колонки.Добавить("ИмяПКОСубконтоКт");

Для Каждого СтрокаТаблицы Из Результат Цикл
   
   ИмяПКОСубконтоДт = "ВидыСубконтоХозрасчетные";
   ИмяПКОСубконтоКт = "ВидыСубконтоХозрасчетные";

//    Для к = 1 по 3 Цикл
   Для к = 1 по 2 Цикл
       Если ЗначениеЗаполнено(СтрокаТаблицы["ВидСубконтоДт" + к]) Тогда
//            СтрокаТаблицы.СубконтоДт.Вставить(СтрокаТаблицы["ВидСубконтоДт" + к], СтрокаТаблицы["СубконтоДт" + к]);
           СтрокаТаблицы.СубконтоДт.Вставить(СтрокаТаблицы["ВидСубконтоДт" + к], СтрокаТаблицы["СубконтоДт" + к]);
       КонецЕсли;
       
//        Если ЗначениеЗаполнено(СтрокаТаблицы["ВидСубконтоКт" + к]) Тогда
//            СтрокаТаблицы.СубконтоКт.Вставить(СтрокаТаблицы["ВидСубконтоКт" + к], СтрокаТаблицы["СубконтоКт" + к]);
//        КонецЕсли;
   КонецЦикла;
   
   СтрокаТаблицы.ИмяПКОСубконтоДт = ИмяПКОСубконтоДт;
   СтрокаТаблицы.ИмяПКОСубконтоКт = ИмяПКОСубконтоКт;
КонецЦикла;

//Для к = 1 по 3 Цикл
Для к = 1 по 2 Цикл
   Результат.Колонки.Удалить("ВидСубконтоДт" + к);
   Результат.Колонки.Удалить("СубконтоДт" + к);
//    Результат.Колонки.Удалить("ВидСубконтоКт" + к);
//    Результат.Колонки.Удалить("СубконтоКт" + к);
КонецЦикла;

Для Каждого СтрокаТаблицы Из Результат Цикл
   НоваяСтрока = Хозрасчетный.Добавить();
   ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТаблицы);
КонецЦикла;


ВыборкаДанных = ТабДок;
17 revision
 
01.04.13
15:52
обрати внимание - на последнюю строку:

ВыборкаДанных = ТабДок;

Это я передаю виртуальный входящий источник данных
18 revision
 
01.04.13
15:53
(15)выгружаешь и загружаешь через универсальный обмен.
Если напрячся - можно засунуть в План обмена свой и подключить расписание. и забыть о заботах
19 Джордж1
 
01.04.13
15:55
(18)универсальные обмены не рассматриваю - проще свое написать.
Все равно не понимаю - в базе приемнике эти данные как будут учитываться? Как движения, или прямо остатки загрузит
20 revision
 
01.04.13
15:57
(19)а вот ЗРЯ универсальный обмен не расматриваешь!
Можно в план обмена подпихнуть вызов универсального обмена - а тому правила! во как!
быстро и проверено!
21 revision
 
01.04.13
15:58
(19)в приемнике -  как хочешь - так и будут -я наприер в УПП в корректировку записей регистров передаю. в Бух 30-в Операцию бух.

а как ты еще хочешь остатки перенести?
22 Джордж1
 
01.04.13
15:58
(0)конфигурация все равно самописные. Сейчас на 7-ке. Весь обмен ручками (т.е. без использования механизмов торговли).
//
При этом в магазинной базе есть только актуальные остатки
23 Джордж1
 
01.04.13
15:59
(21)у меня остатки передаются из центральной базы
24 revision
 
01.04.13
15:59
(20)по сути план нужен для управления обменом - регистрации изменений и планировщика, монитора обмена. не более.
Весь обмен через правила идет
25 Джордж1
 
01.04.13
15:59
(+23)Не движения, а именно остатки. И хранятся они в справочнике
26 revision
 
01.04.13
16:01
(23),(25) хранить остатки в справочнике....
хм... оригинально! очень!
Да пох! храни в справочник - объект приемник - справочник
27 Джордж1
 
01.04.13
16:02
(26)ну а почему бы и нет. остатки нужны только актуальные.
28 revision
 
01.04.13
16:02
у тебя есть источник - твоя таблица виртуальная из запроса. а приемник - что хочешь.
Условие одно - имена полей источника и приемника должны совпадать
29 Джордж1
 
01.04.13
16:03
Для моей задачи проще вручную все написать
30 revision
 
01.04.13
16:04
короче писать долго.
1. берешь КД.
2. объект приемник - твой справочник остатков.
3. обект источник - нету
4. привила выгрузки указываешь - получение данных запросом и формируешь виртуальную таблицу выгрузки, где имена этой таблицы источника совпадают с приемником
31 revision
 
01.04.13
16:04
(29)вы еще скажите через ДБФ - надо вам отходить от 1с77. ))))
32 revision
 
01.04.13
16:05
+(30)а программа сама разберется куда и что писать
33 Джордж1
 
01.04.13
16:08
Да чего там программа разберется. дело не в дбф.
34 hhhh
 
01.04.13
16:43
(33) похоже вам надо не париться, а сделать одинаковую конфу в центре и в магазинах. И сделать обычную РИБ. Зачем вам разные конфы?
35 Джордж1
 
01.04.13
17:11
(34)Ну ты скажешь. В магазинах должно быть информации по минимуму. + Остатки там нужны в списке в реальном времени.
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс