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

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

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

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

Пока  Результат.Следующий() Цикл;
Строка=ТЗ.Добавить();
Строка.СпидометрВыезда=Результат.СпидометрВыезда;
Строка.СпидометрВозвращения=Результат.СпидометрВозвращения;
Строка.Водитель1=Результат.Водитель1.Description;
КонецЦикла;
3 ColonelAp4u
 
28.05.19
17:24
(1) скорее всего у него в скд 1 набор выбирается из базы запросом а второй объект, и заполняется из подключения к другой базе.
4 ColonelAp4u
 
28.05.19
17:25
(2) а эту табличку ты загружаешь в свой скд?
5 User009
 
28.05.19
17:25
да
6 User009
 
28.05.19
17:27
через наборы данных- объединение объединяет
7 ColonelAp4u
 
28.05.19
17:27
(5) код то покажи.
8 hhhh
 
28.05.19
17:27
(5) убери латинские слова во-первых, они нахрен не нужны, только пугают.
9 ColonelAp4u
 
28.05.19
17:29
ВнешниеНаборыДанных=Новый Структура;
    ВнешниеНаборыДанных.Вставить("ТвойНабо",ТЗ);
    Возврат ТиповыеОтчеты.СформироватьТиповойОтчет(ЭтотОбъект, Результат, ДанныеРасшифровки, ВыводВФормуОтчета,ВнешниеНаборыДанных);
10 ColonelAp4u
 
28.05.19
17:29
после того как сформировал ТЗ ты эту ТЗ передаешь в набор? как в (9)
11 User009
 
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;
КонецЦикла;

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

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

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

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