Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Связи наборов данных

Связи наборов данных
Я
   User009
 
28.05.19 - 17:10
ТЗ=Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("СпидометрВыезда");
ТЗ.Колонки.Добавить("СпидометрВозвращения");
ТЗ.Колонки.Добавить("Водитель1");

Пока Результат.Следующий() Цикл;
Строка=ТЗ.Добавить();
Строка.СпидометрВыезда=Результат.СпидометрВыезда;
Строка.СпидометрВозвращения=Результат.СпидометрВозвращения;
Строка.Водитель1=Результат.Водитель1.Description;
КонецЦикла;
Связываю наборы данных, но отчет пуст. В обеих таблицах есть водители с одинаковым наименованием.Мне нужно соединить эти наборы данных.Что не так делаю? У реквизитов тип-строка
 
 
   edem911
 
1 - 28.05.19 - 17:20
(0) как указанный код связан с наборами данных. Где связываете наборы? по описанию обычный запрос.
   User009
 
2 - 28.05.19 - 17:24
Запрос = Соединение;
Запрос = Соединение.NewObject("Запрос"); 
    Запрос.Текст ="ВЫБРАТЬ
              |СУММА(уатПутевойЛист.СпидометрВыезда) КАК СпидометрВыезда,
              |    СУММА(уатПутевойЛист.СпидометрВозвращения) КАК СпидометрВозвращения    ,
              | уатПутевойЛист.Водитель1
              | ИЗ
              |    Документ.уатПутевойЛист КАК уатПутевойЛист
              |    СГРУППИРОВАТЬ ПО
              | уатПутевойЛист.Водитель1";
    

//ПРЕДСТАВЛЕНИЕ(ПРЕДСТАВЛЕНИЕССЫЛКИ(уатПутевойЛист.СпидометрВыезда)) КАК СпидометрВыезда,

    
Результат =Запрос.Выполнить().Выбрать();

    
    
     
СтрокаРезультат = Соединение.ValueToStringInternal(Результат); 
ТабВнешняя = ЗначениеИзСтрокиВнутр(СтрокаРезультат);
    
    
ТЗ=Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("СпидометрВыезда");
ТЗ.Колонки.Добавить("СпидометрВозвращения");
ТЗ.Колонки.Добавить("Водитель1");

Пока  Результат.Следующий() Цикл;
Строка=ТЗ.Добавить();
Строка.СпидометрВыезда=Результат.СпидометрВыезда;
Строка.СпидометрВозвращения=Результат.СпидометрВозвращения;
Строка.Водитель1=Результат.Водитель1.Description;
КонецЦикла;
   ColonelAp4u
 
3 - 28.05.19 - 17:24
(1) скорее всего у него в скд 1 набор выбирается из базы запросом а второй объект, и заполняется из подключения к другой базе.
   ColonelAp4u
 
4 - 28.05.19 - 17:25
(2) а эту табличку ты загружаешь в свой скд?
   User009
 
5 - 28.05.19 - 17:25
да
   User009
 
6 - 28.05.19 - 17:27
через наборы данных- объединение объединяет
   ColonelAp4u
 
7 - 28.05.19 - 17:27
(5) код то покажи.
   hhhh
 
8 - 28.05.19 - 17:27
(5) убери латинские слова во-первых, они нахрен не нужны, только пугают.
   ColonelAp4u
 
9 - 28.05.19 - 17:29
ВнешниеНаборыДанных=Новый Структура;
    ВнешниеНаборыДанных.Вставить("ТвойНабо",ТЗ);
    Возврат ТиповыеОтчеты.СформироватьТиповойОтчет(ЭтотОбъект, Результат, ДанныеРасшифровки, ВыводВФормуОтчета,ВнешниеНаборыДанных);
   ColonelAp4u
 
10 - 28.05.19 - 17:29
после того как сформировал ТЗ ты эту ТЗ передаешь в набор? как в (9)
   User009
 
11 - 28.05.19 - 17:32
вот мой код полностью:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    Соединение= Новый COMОбъект("v82.Application");
    Параметры = "Srvr=""192.168.32.59:4556"";Ref=""uat"";Usr=""User"";Pwd=""12345"";";                     
    
    Попытка
        Подключение = Соединение.Connect(Параметры);
    Исключение
        
        Сообщение = Новый СообщениеПользователю;
        Сообщение.Текст = "Не удалось подключиться к базе" + ОписаниеОшибки();
        Сообщение.Сообщить();
        
    КонецПопытки;
Запрос = Соединение;
Запрос = Соединение.NewObject("Запрос"); 
    Запрос.Текст ="ВЫБРАТЬ
              |СУММА(уатПутевойЛист.СпидометрВыезда) КАК СпидометрВыезда,
              |    СУММА(уатПутевойЛист.СпидометрВозвращения) КАК СпидометрВозвращения    ,
              | уатПутевойЛист.Водитель1
              | ИЗ
              |    Документ.уатПутевойЛист КАК уатПутевойЛист
              |    СГРУППИРОВАТЬ ПО
              | уатПутевойЛист.Водитель1";
    

//ПРЕДСТАВЛЕНИЕ(ПРЕДСТАВЛЕНИЕССЫЛКИ(уатПутевойЛист.СпидометрВыезда)) КАК СпидометрВыезда,

    
Результат =Запрос.Выполнить().Выбрать();

    
    
     
СтрокаРезультат = Соединение.ValueToStringInternal(Результат); 
ТабВнешняя = ЗначениеИзСтрокиВнутр(СтрокаРезультат);
    
    
ТЗ=Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("СпидометрВыезда");
ТЗ.Колонки.Добавить("СпидометрВозвращения");
ТЗ.Колонки.Добавить("Водитель1");

Пока  Результат.Следующий() Цикл;
Строка=ТЗ.Добавить();
Строка.СпидометрВыезда=Результат.СпидометрВыезда;
Строка.СпидометрВозвращения=Результат.СпидометрВозвращения;
Строка.Водитель1=Результат.Водитель1.Description;
КонецЦикла;

    СтандартнаяОбработка    = Ложь;
     
    НаборыДанных    = Новый Структура("ВходящиеДанные", ТЗ);
     
    Схема   = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
     
    КМ      = Новый КомпоновщикМакетаКомпоновкиДанных;
     
    Макет   = КМ.Выполнить(Схема, КомпоновщикНастроек.Настройки);
     
    ПК  = Новый ПроцессорКомпоновкиДанных;
    ПК.Инициализировать(Макет, НаборыДанных);
     
    ПВ  = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПВ.УстановитьДокумент(ДокументРезультат);
    ПВ.Вывести(ПК, Истина);
КонецПроцедуры
   User009
 
12 - 28.05.19 - 17:34
ТЗ передаю в наборы данных объект и пытаюсь связать с набором данных, который я сформировал в базе приемнике.Объединить получается, но мне нужно соединить
   User009
 
13 - 28.05.19 - 17:36
(8) оттуда я беру то, что мне нужно. Если вы про Description
   edem911
 
14 - 28.05.19 - 17:42
(13) по каким полям вяжешь наборы?
   User009
 
15 - 28.05.19 - 17:48
(14) Выражение источник:ДокументыРеализации.ЗаявкаМаршрутноеЗаданиеВодительНаименование
Выражение приемник:Водитель1
У обеих реквизит тип=строка
   edem911
 
16 - 28.05.19 - 17:57
(15) попробуй убрать  получать текущие настройки СКД


Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    Соединение= Новый COMОбъект("v82.Application");
    Параметры = "Srvr=""192.168.32.59:4556"";Ref=""uat"";Usr=""User"";Pwd=""12345"";";                     
    
    Попытка
        Подключение = Соединение.Connect(Параметры);
    Исключение
        
        Сообщение = Новый СообщениеПользователю;
        Сообщение.Текст = "Не удалось подключиться к базе" + ОписаниеОшибки();
        Сообщение.Сообщить();
        
    КонецПопытки;
    Запрос = Соединение;
    Запрос = Соединение.NewObject("Запрос"); 
    Запрос.Текст ="ВЫБРАТЬ
    |СУММА(уатПутевойЛист.СпидометрВыезда) КАК СпидометрВыезда,
    |    СУММА(уатПутевойЛист.СпидометрВозвращения) КАК СпидометрВозвращения    ,
    | уатПутевойЛист.Водитель1
    | ИЗ
    |    Документ.уатПутевойЛист КАК уатПутевойЛист
    |    СГРУППИРОВАТЬ ПО
    | уатПутевойЛист.Водитель1";
    
    
    //ПРЕДСТАВЛЕНИЕ(ПРЕДСТАВЛЕНИЕССЫЛКИ(уатПутевойЛист.СпидометрВыезда)) КАК СпидометрВыезда,

    
    
    Результат =Запрос.Выполнить().Выбрать();
    
    
    
    
    СтрокаРезультат = Соединение.ValueToStringInternal(Результат); 
    ТабВнешняя = ЗначениеИзСтрокиВнутр(СтрокаРезультат);
    
    
    ТЗ=Новый ТаблицаЗначений;
    ТЗ.Колонки.Добавить("СпидометрВыезда");
    ТЗ.Колонки.Добавить("СпидометрВозвращения");
    ТЗ.Колонки.Добавить("Водитель1");
    
    Пока  Результат.Следующий() Цикл;
        Строка=ТЗ.Добавить();
        Строка.СпидометрВыезда=Результат.СпидометрВыезда;
        Строка.СпидометрВозвращения=Результат.СпидометрВозвращения;
        Строка.Водитель1=Результат.Водитель1.Description;
    КонецЦикла;
    
    
     ДокументРезультат.Очистить(); 
    

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

КонецПроцедуры


   User009
 
17 - 28.05.19 - 18:04
(16) ошибки выдает:
{ВнешнийОтчет.ВодителиСуммарныйОтчет.МодульОбъекта(125,24)}: Переменная не определена (КомпоновщикМакета)
     МакетКомпоновки = <<?>>КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,КомпоновщикНастроек.ПолучитьНастройки(),ДанныеРасшифровки); (Проверка: Толстый клиент (обычное приложение))
{ВнешнийОтчет.ВодителиСуммарныйОтчет.МодульОбъекта(128,6)}: Переменная не определена (ПроцессорКомпановкиДанных)
     <<?>>ПроцессорКомпановкиДанных.Инициализировать(МакетКомпановки, ВнешниеНаборыДанных, ДанныеРасшифровки, Истина);  (Проверка: Толстый клиент (обычное приложение))
{ВнешнийОтчет.ВодителиСуммарныйОтчет.МодульОбъекта(128,49)}: Переменная не определена (МакетКомпановки)
     ПроцессорКомпановкиДанных.Инициализировать(<<?>>МакетКомпановки, ВнешниеНаборыДанных, ДанныеРасшифровки, Истина);  (Проверка: Толстый клиент (обычное приложение))

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.