Имя: Пароль:
1C
1С v8
Конвертация данных, выгрузка остатков из 77 в 8
0 xenos
 
12.07.12
10:43
Создал правило выгрузки данных.

Перед обработкой
   Запрос = СоздатьОбъект("Запрос");
   ТекстЗапроса =
   "//{{ЗАПРОС(Сформировать)
   |Период с ДатаОкончания по ДатаОкончания;
   |Товар = Регистр.Товары.Товар;
   |Количество = Регистр.Товары.Количество;
   |Стоимость = Регистр.Товары.Стоимость;
   |Функция КоличествоКонОст = КонОст(Количество);
   |Функция СтоимостьКонОст = КонОст(Стоимость);
   |Группировка Товар без групп;
   |"//}}ЗАПРОС
   ;
   // Если ошибка в запросе, то выход из процедуры
   Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
       Отказ=1;
   КонецЕсли;
   
   ТЗ=СоздатьОбъект("ТаблицаЗначений");
   Запрос.Выгрузить(ТЗ,0,0);
   
   ТЗДанные=СоздатьОбъект("ТаблицаЗначений");
   ТЗДанные.НоваяКолонка("СчетУчета");    
   ТЗДанные.НоваяКолонка("Номенклатура");    
   ТЗДанные.НоваяКолонка("Количество");    
   ТЗДанные.НоваяКолонка("Сумма");    
   ТЗДанные.НоваяКолонка("СуммаНУ");  
   
   
   ТЗ.ВыбратьСтроки();
   Пока ТЗ.ПолучитьСтроку()=1 Цикл
       ТЗДанные.НоваяСтрока();
       ТЗДанные.СчетУчета="ТоварыНаСкладах";
       ТЗДанные.Номенклатура=ТЗ.Товар.ТекущийЭлемент();  
       ТЗДанные.Количество=ТЗ.КоличествоКонОст;
       ТЗДанные.Сумма=ТЗ.СтоимостьКонОст;
       ТЗДанные.СуммаНУ=ТЗ.СтоимостьКонОст;
   КонецЦикла;  
   
   
ИсходящиеДанные =СоздатьОбъект("СписокЗначений");
ИсходящиеДанные.Установить("РазделУчета", "Товары");
ИсходящиеДанные.Установить("Дата", ДатаОкончания);
ИсходящиеДанные.Установить("Номер", "00001");

ИсходящиеДанные.Установить("МПЗПриобретенные", ТЗДанные);
ВыгрузитьПоПравилу(, , ИсходящиеДанные, , "ОстаткиПоТоварам");

Описан объект:
http://s1.ipicture.ru/uploads/20120712/ReRgmVHS.jpg
http://s1.ipicture.ru/uploads/20120712/D6OUTc3J.jpg


При выгрузке выдает: Ошибка выбора объектов коллекции
1 andrewks
 
12.07.12
10:46
в ПередОбработкой ты должен определить коллекцию объектов для обхода
2 andrewks
 
12.07.12
10:47
либо, если уж всё делаешь тут, тогда не забывай Отказ=1;
3 xenos
 
12.07.12
10:49
(1) > ПередОбработкой это где в субъекте или правило выгрузки данных
4 andrewks
 
12.07.12
10:50
в ПВД
5 xenos
 
12.07.12
10:54
(4)
Я вроде правило конвертации указал или это не то?
http://s1.ipicture.ru/uploads/20120712/YJqGhVPz.jpg
6 xenos
 
12.07.12
10:56
В (5) Картинка не та

http://s1.ipicture.ru/uploads/20120712/Tj7pJZ2n.jpg
7 andrewks
 
12.07.12
11:03
если указал правило конвертации - будь добр создай и коллекцию для стандартного обхода
8 xenos
 
12.07.12
11:05
(7) Извинясь за тупость, что такое: "коллекцию для стандартного обхода"?
9 xenos
 
12.07.12
11:14
апап
10 xenos
 
12.07.12
11:18
апапап
11 andrewks
 
12.07.12
11:50
(8) открой для себя кнопку "Информация по обработчикам"
12 elisabet
 
12.07.12
12:10
ВыгрузитьПоПравилу(, , ИсходящиеДанные, , "ОстаткиПоТоварам");

Код правил по остаткам можно увидеть?
13 xenos
 
12.07.12
12:21
(12) Там его нет
14 xenos
 
12.07.12
12:22
Переделал все по другому:

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

//////////////////////////////////////////////////////////////

ВыборкаДанных.НоваяСтрока();
ВыборкаДанных.Дата = ДатаОкончания;
ВыборкаДанных.Номер = "00001";
ВыборкаДанных.РазделУчета = "Товары";
ВыборкаДанных.ОтражатьВБухгалтерскомУчете=1;
ВыборкаДанных.ОтражатьВНалоговомУчете=1;
ВыборкаДанных.ОтражатьПоСпециальнымРегистрам=1;
ВыборкаДанных.МПЗПриобретенные = СоздатьОбъект("ТаблицаЗначений");
ТЗДанные = ВыборкаДанных.МПЗПриобретенные;

   Запрос = СоздатьОбъект("Запрос");
   ТекстЗапроса =
   "//{{ЗАПРОС(Сформировать)
   |Период с ДатаОкончания по ДатаОкончания;
   |Товар = Регистр.Товары.Товар;
   |Количество = Регистр.Товары.Количество;
   |Стоимость = Регистр.Товары.Стоимость;
   |Функция КоличествоКонОст = КонОст(Количество);
   |Функция СтоимостьКонОст = КонОст(Стоимость);
   |Группировка Товар без групп;
   |Условие ((Количество>0) и (Стоимость>0));
   |"//}}ЗАПРОС
   ;
   // Если ошибка в запросе, то выход из процедуры
   Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
       Отказ=1;
   КонецЕсли;
   
   ТЗ=СоздатьОбъект("ТаблицаЗначений");
   Запрос.Выгрузить(ТЗ,0,0);
   
   //МПЗПриобретенные=СоздатьОбъект("ТаблицаЗначений");
   ТЗДанные.НоваяКолонка("НомерСтрокиТЧ");    
   ТЗДанные.НоваяКолонка("СчетУчета");    
   ТЗДанные.НоваяКолонка("Номенклатура");    
   ТЗДанные.НоваяКолонка("Количество");    
   ТЗДанные.НоваяКолонка("Сумма");    
   ТЗДанные.НоваяКолонка("СуммаНУ");  
   
   

   
   НомерСтрокиТЧ=0;
   ТЗ.ВыбратьСтроки();
   Пока ТЗ.ПолучитьСтроку()=1 Цикл
       НомерСтрокиТЧ=НомерСтрокиТЧ+1;
       ТЗДанные.НоваяСтрока();
       ТЗДанные.НомерСтрокиТЧ=НомерСтрокиТЧ;
       ТЗДанные.СчетУчета="ТоварыНаСкладах";
       ТЗДанные.Номенклатура=ТЗ.Товар.ТекущийЭлемент();  
       ТЗДанные.Количество=ТЗ.КоличествоКонОст;
       ТЗДанные.Сумма=ТЗ.СтоимостьКонОст;
       ТЗДанные.СуммаНУ=ТЗ.СтоимостьКонОст;
   КонецЦикла;