Имя: Пароль:
1C
1С v8
КД2 перенести данные из док-ов в регистр накопления
0 Альбатрос
 
26.12.12
06:10
Всем привет! Нужно перенести из 7.7 в 8.2. реквизиты и тч документов, записать их в регистр накопления. Тыкните, пожалуйста, примером, где посмотреть можно. Заранее спасибо.
1 strange2007
 
26.12.12
06:19
В ПВД в "ПередОбработкой" описываешь таблицу "ВыборкаДанных". Где указываешь каждую запись. Способ выгрузки - произвольный алгоритм
В ПКО указываешь только приемник. В ПКС-х тоже только приемник.
Главное перед этим настрой все ПКО, по которым будут конвертиться объекты реквизитов
2 Гефест
 
26.12.12
06:20
(1) А что, нынче уже можно в регистр накопления без регистратора писать?
3 strange2007
 
26.12.12
06:24
(2) Я без тонкостей про регистратор. Там ооочень много тонкостей. Без примера не поймешь вообще
4 Альбатрос
 
26.12.12
06:27
(3) Вот вот =) я так понимаю, надо в "корректировку записей регистра" переносить. Забыл указать: из комплексной в ут.
5 Альбатрос
 
26.12.12
06:31
Может, на 7.7 сделать отчет по документам печатный, сохранить его, и попробовать корректировку через загрузку из таб. документа... Такая схема проканает?
6 strange2007
 
26.12.12
06:39
(5) Ты эту загрузку будешь целый день писать и в случае чего будешь менять со слезами на глазах. В КД все гораздо проще и ровнее
7 strange2007
 
26.12.12
06:41
(4) могу выслать готовый блок для ПВД, где описан алгоритм выгрузки в УППшную корректировку. Тебе для рег накоплений пойдет вариант?
8 Альбатрос
 
26.12.12
06:45
(7) Конечно! Мне для рег накопления и надо. [email protected]. Спасибо!
9 echo77
 
26.12.12
06:48
(5) Можно. Соответствующая обработка на инфостарте есть.
Если не знаешь КД2 и перенос разовый - через обработку проще
10 strange2007
 
26.12.12
06:50
(8) Ушло. Там для регистра "ДенежныеСредства"
11 Альбатрос
 
26.12.12
07:08
(10) Ага, еще раз спасибо, вникаю =)
12 dk
 
26.12.12
07:25
дык вроде стандартная ситуация - в самой КД есть пример такого переноса
13 strange2007
 
26.12.12
07:28
(12) Там путаница со вложенностями. Оно не сложно, просто запутанно. А с субконтами вообще болото
14 Альбатрос
 
27.12.12
07:40
(12) Не подскажете, где этот пример? =)
15 dk
 
27.12.12
08:25
(14) http://s59.radikal.ru/i165/1212/38/be3d03d5dc93.png
вроде вместе с демкой КД идут
16 Капюшон
 
27.12.12
08:26
как вы так ра зобрались с этим.
17 Альбатрос
 
27.12.12
09:29
(15) у меня КД 2.1.6.2. Там подобного, к сожалению, не нашел...
18 GenV
 
27.12.12
09:42
(17) Это в демо базе - 1Cv8.dt в шалоне. В 2.1.6.2 тоже есть.
19 Альбатрос
 
27.12.12
09:53
(18) Отлично!
Спасибо
20 Альбатрос
 
27.12.12
12:07
Мужики, что то не так... Вот ПВД:

Запрос = СоздатьОбъект("Запрос");
   НачДата = '01.01.06';
   КонДата = '01.01.07';
   ТекстЗапроса =
   "
   |Период с НачДата по КонДата;
   |Обрабатывать НеПомеченныеНаУдаление;
   |Номенклатура = Документ.ЗаменаМасла.Номенклатура;
   |Количество = Документ.ЗаменаМасла.Количество;
   |Сумма = Документ.ЗаменаМасла.Сумма;
   |Клиент = Документ.ЗаменаМасла.Клиент;
   |ПродавецИмя = Документ.ЗаменаМасла.Продавец.ФизЛицо.Наименование;
   |Продавец = Документ.ЗаменаМасла.Продавец.ФизЛицо;
   |ПродавецКод = Документ.ЗаменаМасла.Продавец.ФизЛицо.Код;
   |Автомобиль = Документ.ЗаменаМасла.Автомобиль;
   |Склад = Документ.ЗаменаМасла.Склад;
   |Код = Документ.ЗаменаМасла.Клиент.Код;
   |Пробег = Документ.ЗаменаМасла.Пробег;
   |ДатаДок = Документ.ЗаменаМасла.ДатаДок;
   |ТекущийДокумент = Документ.ЗаменаМасла.ТекущийДокумент;
   |Номенклатура1 = Документ.ЗаменаМасла.Номенклатура1;
   |Группировка Документ;
   |Группировка Номенклатура;
   |Группировка Номенклатура1;
   |Условие(ПустоеЗначение(Клиент)=0);
   |";//}}ЗАПРОС
   
   ИсходящиеДанные = СоздатьОбъект("СписокЗначений");
   ИсходящиеДанные.Установить("Номер","00002");
   ИсходящиеДанные.Установить("Дата", текущаяДата());
   
   
   ЗаменаМасла = СоздатьОбъект("ТаблицаЗначений");
   ЗаменаМасла.НоваяКолонка("Авто");
   ЗаменаМасла.НоваяКолонка("Период");
   ЗаменаМасла.НоваяКолонка("ДокРег");
   ЗаменаМасла.НоваяКолонка("Количество");
   ЗаменаМасла.НоваяКолонка("Комментарий");
   ЗаменаМасла.НоваяКолонка("Номенклатура");
   ЗаменаМасла.НоваяКолонка("ДатаОперации");
   ЗаменаМасла.НоваяКолонка("Пробег");
   ЗаменаМасла.НоваяКолонка("Продавец");
   ЗаменаМасла.НоваяКолонка("СуммаОперации");
   ЗаменаМасла.НоваяКолонка("Хозяин");
   
   ТабИмениРегистра = СоздатьОбъект("ТаблицаЗначений");
   ТабИмениРегистра.НоваяКолонка("Имя");
   ТабИмениРегистра.НоваяКолонка("Представление");
   
   ТабИмениРегистра.НоваяСтрока();
   ТабИмениРегистра.Имя = "ЗаменаМасла";
   ТабИмениРегистра.Представление = "Замена масла";
   Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
       Сообщить("Ну пиз**ц");
   КонецЕсли;
   
   
   
   ДатаВыгрузки = ТекущаяДата();
   
   Пока Запрос.Группировка(1) = 1 Цикл
       Пока Запрос.Группировка(2) = 1 Цикл
               Пока Запрос.Группировка(3) = 1 Цикл
               ЗаменаМасла.НоваяСтрока();
               ЗаменаМасла.Авто = Запрос.Автомобиль;
               ЗаменаМасла.Период = ДатаВыгрузки;
               ЗаменаМасла.ДокРег = "";
               ЗаменаМасла.Количество = Запрос.Количество;
               ЗаменаМасла.Комментарий = "";
               ЗаменаМасла.Номенклатура = Запрос.Номенклатура;
               ЗаменаМасла.ДатаОперации = Запрос.ДатаДок;
               ЗаменаМасла.Пробег = Запрос.Пробег;
               ЗаменаМасла.Продавец = Запрос.Продавец;
               ЗаменаМасла.Хозяин = Запрос.Клиент;
               ЗаменаМасла.СуммаОперации = Запрос.Сумма;
               КонецЦикла;
       КонецЦикла;
   КонецЦикла;
   
   ИсходящиеДанные.Установить("ТаблицаРегистровНакопления", ТабИмениРегистра);
   ИсходящиеДанные.Установить("ЗаменаМасла", ЗаменаМасла);
   
   ВыгрузитьПоПравилу(,, ИсходящиеДанные,, "КорректировкаЗаписейРегистров");


Ошибка при записи док-та: "Период не может быть пустым".
Но я ведь явно указываю период = ТекущаяДата(); (!)
Почему же он пустой?
21 Альбатрос
 
27.12.12
12:09
Ошибка записи объекта
   ТипОбъекта             =  Корректировка записей регистров
   Объект                 =  Корректировка записей регистров 00002 от 27.12.2012 0:00:00
   ОписаниеОшибки         =  Ошибка при вызове метода контекста (Записать): Запись не верна! Период не может быть пустым! (Регистр накопления: Замена масла; Номер строки: 1)
   ПозицияМодуля          =  Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(4835)
   КодСообщения           =  26
22 Альбатрос
 
27.12.12
12:25
Это может быть из-за того, что период.тип = дата и время, а я выгружаю только дату?
23 Абыр
 
27.12.12
12:35
Дату самого документа корректировки задал?
24 Альбатрос
 
27.12.12
12:36
(23) да
25 Альбатрос
 
27.12.12
12:36
ИсходящиеДанные.Установить("Номер","00002");
   ИсходящиеДанные.Установить("Дата", текущаяДата());
26 GenV
 
27.12.12
20:17
(25) Все свойства для движения документа добавил? Не пропустил свойство "Период"?
27 Альбатрос
 
28.12.12
04:08
(26) Да вроде все:
ЗаменаМасла = СоздатьОбъект("ТаблицаЗначений");
   ЗаменаМасла.НоваяКолонка("Авто");
   ЗаменаМасла.НоваяКолонка("Период");
   ЗаменаМасла.НоваяКолонка("ДокРег");
   ЗаменаМасла.НоваяКолонка("Количество");
   ЗаменаМасла.НоваяКолонка("Комментарий");
   ЗаменаМасла.НоваяКолонка("Номенклатура");
   ЗаменаМасла.НоваяКолонка("ДатаОперации");
   ЗаменаМасла.НоваяКолонка("Пробег");
   ЗаменаМасла.НоваяКолонка("Продавец");
   ЗаменаМасла.НоваяКолонка("СуммаОперации");
   ЗаменаМасла.НоваяКолонка("Хозяин");


 ДатаВыгрузки = ТекущаяДата();
   
   Пока Запрос.Группировка(1) = 1 Цикл
       Пока Запрос.Группировка(2) = 1 Цикл
               Пока Запрос.Группировка(3) = 1 Цикл
               ЗаменаМасла.НоваяСтрока();
               ЗаменаМасла.Авто = Запрос.Автомобиль;
               ЗаменаМасла.Период = ДатаВыгрузки;
               ЗаменаМасла.ДокРег = "";
               ЗаменаМасла.Количество = Запрос.Количество;
               ЗаменаМасла.Комментарий = "";
               ЗаменаМасла.Номенклатура = Запрос.Номенклатура;
               ЗаменаМасла.ДатаОперации = Запрос.ДатаДок;
               ЗаменаМасла.Пробег = Запрос.Пробег;
               ЗаменаМасла.Продавец = Запрос.Продавец;
               ЗаменаМасла.Хозяин = Запрос.Клиент;
               ЗаменаМасла.СуммаОперации = Запрос.Сумма;
               КонецЦикла;
       КонецЦикла;
   КонецЦикла;

ИсходящиеДанные.Установить("ЗаменаМасла", ЗаменаМасла);
28 Альбатрос
 
28.12.12
04:52
Блин, открыл хмл, а там все значения таблицы регистра накопления "ЗаменаМасла" пустые... Что не так то?
29 Альбатрос
 
28.12.12
05:11
Разобрался. Оказывается, галочку "получить из входящих данных" надо было указать только для набора движений в целом, а не для каждого реквизита из этого набора =)
Всем еще раз огромное спасибо, перенос работает на ура!
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан