Имя: Пароль:
1C
1С v8
КД 2.1 проводки в бухгалтерскую справку
0 Grigory123456789
 
25.03.15
16:53
добрый день, стоит задача из бух базы перетягивать проводки в базу приемник в док бух.справка
за основу пользовался v8: v8: Перенос бух операций через КД
но споткнулся на следующем :
в ПВД источник стоит пусто, приемник стоит "Бух.справка", способ выборки стоит "Произвольный алгоритм"
текст :
           ВыборкаДанных = новый ТаблицаЗначений;
ВыборкаДанных.Колонки.Добавить("Дата");
ВыборкаДанных.Колонки.Добавить("Комментарий");
ВыборкаДанных.Колонки.Добавить("Организация");
ВыборкаДанных.Колонки.Добавить("Номер");
ВыборкаДанных.Колонки.Добавить("Типовой");

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

Результат = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);
Результат.колонки.Добавить("СубконтоДт");
Результат.колонки.Добавить("СубконтоКт");

Для Каждого Организация ИЗ Результат.Строки Цикл
НоваяСтрока = ВыборкаДанных.Добавить();
    НоваяСтрока.Организация    = Организация.Организация;
    НоваяСтрока.Дата = началодня(ДатаОкончания);

    Для Каждого СтрокаТЧ ИЗ Организация.Строки Цикл
        СубконтоДт = Новый Соответствие;
        Если  НЕ СтрокаТЧ.ВидСубконтоДт1=null И ЗначениеЗаполнено(СтрокаТЧ.СубконтоДт1) Тогда
            СубконтоДт.Вставить(СтрокаТЧ.ВидСубконтоДт1,СтрокаТЧ.СубконтоДт1);
        КонецЕсли;
        Если  НЕ СтрокаТЧ.ВидСубконтоДт2=null И ЗначениеЗаполнено(СтрокаТЧ.СубконтоДт2) Тогда
            СубконтоДт.Вставить(СтрокаТЧ.ВидСубконтоДт2,СтрокаТЧ.СубконтоДт2);
        КонецЕсли;
        Если  НЕ СтрокаТЧ.ВидСубконтоДт3=null И ЗначениеЗаполнено(СтрокаТЧ.СубконтоДт3) Тогда
            СубконтоДт.Вставить(СтрокаТЧ.ВидСубконтоДт3,СтрокаТЧ.СубконтоДт3);
        КонецЕсли;
        
        СтрокаТЧ.СубконтоДт = СубконтоДт;
        
        СубконтоКт = Новый Соответствие;
        Если  НЕ СтрокаТЧ.ВидСубконтоКт1=null И ЗначениеЗаполнено(СтрокаТЧ.СубконтоКт1) Тогда
            СубконтоКт.Вставить(СтрокаТЧ.ВидСубконтоКт1,СтрокаТЧ.СубконтоКт1);
        КонецЕсли;
        Если  НЕ СтрокаТЧ.ВидСубконтоКт2=null И ЗначениеЗаполнено(СтрокаТЧ.СубконтоКт2) Тогда
            СубконтоКт.Вставить(СтрокаТЧ.ВидСубконтоКт2,СтрокаТЧ.СубконтоКт2);
        КонецЕсли;
        Если  НЕ СтрокаТЧ.ВидСубконтоКт3=null И ЗначениеЗаполнено(СтрокаТЧ.СубконтоКт3) Тогда
               СубконтоКт.Вставить(СтрокаТЧ.ВидСубконтоКт3,СтрокаТЧ.СубконтоКт3);
        КонецЕсли;
        СтрокаТЧ.СубконтоКт = СубконтоКт;
    КонецЦикла;
    
    ВТабл = Новый ТаблицаЗначений;
    Для Каждого Колонка Из Результат.Колонки Цикл
        ВТабл.Колонки.Добавить(Колонка.Имя, Колонка.ТипЗначения);
    КонецЦикла;
    Для Каждого СтрокаДерева Из Организация.Строки Цикл
        ЗаполнитьЗначенияСвойств(ВТабл.Добавить(), СтрокаДерева);
    КонецЦикла;
    НоваяСтрока.типовой = ВТабл.Скопировать();
    Сообщить(""+НоваяСтрока.типовой.Количество());
КонецЦикла;

при выгрузке данных из базы источника получаю след ошибку
Ошибка при выгрузке данных: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(7932)}: Поле объекта не обнаружено (ТабличнаяЧасть1).
В документе бух.справка табличная часть называется ТабличнаяЧасть1, подскажите куда купать.
1 vicof
 
25.03.15
16:55
Отладчик в руки, остановка по ошибке и в путь...объект анализировать
2 Otkr
 
25.03.15
16:56
ТЧ1 это точно ТЧ или все таки ТЗ?
3 Grigory123456789
 
25.03.15
16:58
в доке это данные->табличные части->ТабличнаяЧасть1
подскажите как отладивать, с кд второй раз сталкиваюсь
4 vicof
 
25.03.15
17:05
Почитать справку по КД. Если вкратце, то в обработке универсального обмена есть несколько пунктов, которые нужно выполнить: сформировать модули выгрузки, сделать обработку, всатвить туда модули, запустить, отлаживать.
5 Grigory123456789
 
25.03.15
17:05
ок,спс уже читаю
6 Grigory123456789
 
27.03.15
07:40
День добрый, изучил отладку и снова наткнулся на грабли.
Сейчас произвольный алгоритм в ПВД выглядит след образом.

ВыборкаДанных = новый ТаблицаЗначений;
ВыборкаДанных.Колонки.Добавить("Дата");
ВыборкаДанных.Колонки.Добавить("Комментарий");
ВыборкаДанных.Колонки.Добавить("Организация");
ВыборкаДанных.Колонки.Добавить("Номер");

ВыборкаДанных.Колонки.Добавить("Типовой");
НоваяСтрока = ВыборкаДанных.Добавить();
НоваяСтрока.Организация = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глТекущийПользователь, "ОсновнаяОрганизация");
НоваяСтрока.Комментарий = Строка(НоваяСтрока.Организация) + " :"+Формат(ДатаНачала,"ДФ=dd.MM.yyyy") + " - " + Формат(ДатаОкончания,"ДФ=dd.MM.yyyy");
НоваяСтрока.Дата = ДатаОкончания;
Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ТиповойДвиженияССубконто.Период,
        |    ТиповойДвиженияССубконто.Регистратор,
        |    ТиповойДвиженияССубконто.НомерСтроки,
        |    ТиповойДвиженияССубконто.Активность,
        |    ТиповойДвиженияССубконто.СчетДт,
        |    ТиповойДвиженияССубконто.СубконтоДт1,
        |    ТиповойДвиженияССубконто.ВидСубконтоДт1,
        |    ТиповойДвиженияССубконто.СубконтоДт2,
        |    ТиповойДвиженияССубконто.ВидСубконтоДт2,
        |    ТиповойДвиженияССубконто.СубконтоДт3,
        |    ТиповойДвиженияССубконто.ВидСубконтоДт3,
        |    ТиповойДвиженияССубконто.СчетКт,
        |    ТиповойДвиженияССубконто.СубконтоКт1,
        |    ТиповойДвиженияССубконто.ВидСубконтоКт1,
        |    ТиповойДвиженияССубконто.СубконтоКт2,
        |    ТиповойДвиженияССубконто.ВидСубконтоКт2,
        |    ТиповойДвиженияССубконто.СубконтоКт3,
        |    ТиповойДвиженияССубконто.ВидСубконтоКт3,
        |    ТиповойДвиженияССубконто.Организация,
        |    ТиповойДвиженияССубконто.ВалютаДт,
        |    ТиповойДвиженияССубконто.ВалютаКт,
        |    ТиповойДвиженияССубконто.СтруктурноеПодразделениеДт,
        |    ТиповойДвиженияССубконто.СтруктурноеПодразделениеКт,
        |    ТиповойДвиженияССубконто.Сумма,
        |    ТиповойДвиженияССубконто.ВалютнаяСуммаДт,
        |    ТиповойДвиженияССубконто.ВалютнаяСуммаКт,
        |    ТиповойДвиженияССубконто.КоличествоДт,
        |    ТиповойДвиженияССубконто.КоличествоКт,
        |    ТиповойДвиженияССубконто.Содержание,
        |    ТиповойДвиженияССубконто.НомерЖурнала,
        |    ТиповойДвиженияССубконто.ВидРегламентнойОперации,
        |    ТиповойДвиженияССубконто.МоментВремени
        |ИЗ
        |    РегистрБухгалтерии.Типовой.ДвиженияССубконто(&ДатаНач, &ДатаКон, Организация = &Организация) КАК ТиповойДвиженияССубконто";

Запрос.УстановитьПараметр("ДатаНач",началодня(ДатаНачала));
Запрос.УстановитьПараметр("ДатаКон",КонецДня(ДатаОкончания));
Запрос.УстановитьПараметр("Организация",НоваяСтрока.Организация);
Результат = Запрос.Выполнить().Выгрузить();

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

Для Каждого СтрокаТЧ ИЗ Результат Цикл
    СубконтоДт = Новый Соответствие;
    Если  НЕ СтрокаТЧ.ВидСубконтоДт1=null И  ЗначениеЗаполнено(СтрокаТЧ.СубконтоДт1) Тогда
        СубконтоДт.Вставить(СтрокаТЧ.ВидСубконтоДт1,СтрокаТЧ.СубконтоДт1);
    КонецЕсли;
    Если  НЕ СтрокаТЧ.ВидСубконтоДт2=null И  ЗначениеЗаполнено(СтрокаТЧ.СубконтоДт2) Тогда
        СубконтоДт.Вставить(СтрокаТЧ.ВидСубконтоДт2,СтрокаТЧ.СубконтоДт2);
    КонецЕсли;
    Если  НЕ СтрокаТЧ.ВидСубконтоДт3=null И  ЗначениеЗаполнено(СтрокаТЧ.СубконтоДт3) Тогда
        СубконтоДт.Вставить(СтрокаТЧ.ВидСубконтоДт3,СтрокаТЧ.СубконтоДт3);
    КонецЕсли;
    
    СтрокаТЧ.СубконтоДт = СубконтоДт;
    
    СубконтоКт = Новый Соответствие;
    Если  НЕ СтрокаТЧ.ВидСубконтоКт1=null И  ЗначениеЗаполнено(СтрокаТЧ.СубконтоКт1) Тогда
        СубконтоКт.Вставить(СтрокаТЧ.ВидСубконтоКт1,СтрокаТЧ.СубконтоКт1);
    КонецЕсли;
    Если  НЕ СтрокаТЧ.ВидСубконтоКт2=null И  ЗначениеЗаполнено(СтрокаТЧ.СубконтоКт2) Тогда
        СубконтоКт.Вставить(СтрокаТЧ.ВидСубконтоКт2,СтрокаТЧ.СубконтоКт2);
    КонецЕсли;
    Если  НЕ СтрокаТЧ.ВидСубконтоКт3=null И  ЗначениеЗаполнено(СтрокаТЧ.СубконтоКт3) Тогда
           СубконтоКт.Вставить(СтрокаТЧ.ВидСубконтоКт3,СтрокаТЧ.СубконтоКт3);
    КонецЕсли;
    СтрокаТЧ.СубконтоКт = СубконтоКт;
КонецЦикла;
//ЭлементыФормы.ВыборкаДанных.СоздатьКолонки();
    
НоваяСтрока.типовой = Результат;

но при выгрузке получаю -
Ошибка при выгрузке данных: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(7936)}: Метод объекта не обнаружен (Количество)

Смотрю по отладчику и понимаю что в НоваяСтрока.типовой = Результат нет ТЗ, хотя в ПВД алгоритм стоит "Перед обработкой"
7 Grigory123456789
 
27.03.15
09:26
&
8 Grigory123456789
 
27.03.15
10:11
есть идеи
9 Grigory123456789
 
27.03.15
12:37
?
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.