Конвертация данных: перенос остатков

1. James125 28.04.17 08:36 Сейчас в теме
Не выгружаются данные из источника: выгружено: 0
При переносе остатков в ПКО источник не указывал, приемник ДокументСсылка.КВП_ВводНачалоногоСальдо
В ПКС в приемнике: группа КВП_ВзаиморасчетыПоЛицевымСчетам в котором реквизиты: услуга, СуммаНачисления, ЛицевойСчет

В ПВД прописал:


ВыборкаДанных = Новый ТаблицаЗначений;
ВыборкаДанных.Колонки.Добавить("Плательщик");
ВыборкаДанных.Колонки.Добавить("Тариф");
ВыборкаДанных.Колонки.Добавить("ВидДолга");
ВыборкаДанных.Колонки.Добавить("СуммаОстаток");

Запрос = Новый Запрос;
Запрос.Текст = 
"ВЫБРАТЬ
|	ДолгиПлательщиковОстатки.Плательщик,
|	ДолгиПлательщиковОстатки.Тариф,
|	ДолгиПлательщиковОстатки.ВидДолга,
|	ДолгиПлательщиковОстатки.СуммаОстаток
|ИЗ
|	РегистрНакопления.ДолгиПлательщиков.Остатки(&ДатаОстатков, ) КАК ДолгиПлательщиковОстатки";

Запрос.УстановитьПараметр("ДатаОстатков", Дата(2016,12,31,23,59,59));
	
//РезультатЗапроса = Запрос.Выполнить();
	
КВП_ВводНачальногоСальдо = Запрос.Выполнить().Выгрузить(); // ВыборкаДанных
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. James125 28.04.17 08:38 Сейчас в теме
когда в ПВД меняю:
КВП_ВводНачальногоСальдо = Запрос.Выполнить().Выгрузить(); // ВыборкаДанных
на: ВыборкаДанных = Запрос.Выполнить().Выгрузить();

пишет: Ошибка при выгрузке данных: {ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(7999)}: Поле объекта не обнаружено (КВП_ВзаиморасчетыПоЛицевымСчетам)
3. m-serg74 46 28.04.17 08:42 Сейчас в теме
ну правильно ПКО ждет таб. часть, а запрос ее не дает ему
4. m-serg74 46 28.04.17 08:44 Сейчас в теме
лучше это сделать в обработчике ПКГС, а выгрузку из результата поместить в КоллекцияОбъектов
9. tamepjlah 3 01.11.17 09:27 Сейчас в теме
(4) Такая же проблема. С КД только стал разбираться, еще очень много каши в голове. Можно поподробнее что делать?
10. m-serg74 46 01.11.17 12:54 Сейчас в теме
(9)
Такая же проблема


такая же какая именно?
11. tamepjlah 3 01.11.17 13:27 Сейчас в теме
(10) как у ТС: Выгружено объектов: 0
Переношу остатки товаров, в ПКО источник не указывал, приемник ДокументСсылка.ПоступлениеТоваров
В ПКС в приемнике: группа Товары в которой реквизиты: Номенклатура, Количество, Цена.

Как переносить Справочники и другие объекты вроде бы разобрался (во всяком случае справочник Номенклатура и Контрагенты переносятся), а как из Источника получить остатки товаров на дату, а в приемнике создать документ ПоступлениеТоваров в этими данными не могу понять.
12. m-serg74 46 01.11.17 18:03 Сейчас в теме
(11) запросом в ПКГС (например Товары)
КоллекцияОбъектов = Запрос.Выполнить().Выгрузить();
а в запросе получение остатков каким там нужно способом, с полями которые будут называться также как поля входящие в группу
tamepjlah; +1 Ответить
13. tamepjlah 3 02.11.17 04:43 Сейчас в теме
(12) не помогает, напишу подробнее что делаю, вдруг проблема где-то в другом месте:
ПКО ПоступлениеТоваров: Источник - пусто, Приемник - ДокументСсылка.ПоступлениеТоваров
ПКС у данного ПКО: Контрагент, Организация, Склад, Магазин
ПКГС: Товары, реквизиты: Номенклатура, Количество, Цена
Правила конвертации у ссылочных типов проставлены
В ПКГС в обработчике "Перед обработкой" прописываю:
Запрос = Новый Запрос();
Запрос.УстановитьПараметр("КонДата",Дата('20171031235959'));

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

КоллекцияОбъектов = Запрос.Выполнить().Выгрузить();
Показать

Ранее этот код был в ПВД Остатки в обработчике "Перед обработкой", у которого Способ выборки - Произвольный алгоритм, Правило конвертации - ПоступлениеТоваров. Сейчас там все закомментировал
14. m-serg74 46 02.11.17 09:50 Сейчас в теме
(13) судя по описанному именно так и должно быть
15. m-serg74 46 02.11.17 09:52 Сейчас в теме
(13) но ПВД все равно должно быть какое то иначе с чего конвертация будет что то выгружать если ей этого не сказали
16. tamepjlah 3 02.11.17 10:04 Сейчас в теме
(12) Переделал по книжке В.Э. Бояркина "Конвертация данных" (стр. 78). В ПВД вставил код
Запрос = Новый Запрос();
Запрос.УстановитьПараметр("ВидЦены",Справочники.ВидыЦен.НайтиПоНаименованию("Розничные"));
Запрос.УстановитьПараметр("КонДата",КонецДня(Дата('20171031')));

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

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

Если ТабТовары.Количество() > 0 Тогда
		ВходящиеДанные = Новый СписокЗначений;
		ВходящиеДанные.Добавить("Товары", ТабТовары);
		
		ВыгрузитьПоПравилу(,, ВходящиеДанные,, "ПоступлениеТоваров");
КонецЕсли;
Показать

В ПКО установил галочку "Получить из входящих данных" у ТЧ (в реквизитах ТЧ не устанавливал). Галочку у ПКО "Не запоминать выгруженные объекты" установил. Теперь при попытке выгрузить данные выдает ошибку (скрин). Мне кажется проблема в том, что не определяется Объект, но почему он не определен и как это исправить я не пойму
Прикрепленные файлы:
17. m-serg74 46 02.11.17 14:46 Сейчас в теме
(16)
В ПКО установил галочку "Получить из входящих данных" у ТЧ


наоборот убери ее
18. tamepjlah 3 03.11.17 05:52 Сейчас в теме
(17) Не совсем понимаю почему ее убрать надо и откуда тогда будут браться данные для ТЧ, но попробовал убрать - ошибка изменилась
Прикрепленные файлы:
21. m-serg74 46 03.11.17 09:23 Сейчас в теме
(18) нужно либо исправлять то что советую, и если есть ошибка то не исправлять ничего в конвертации, а подождать что сделать дальше (затрахаешься все тонкости описывать что надо сделать заранее)... надо чтоб одновременно все было правильно, а для этого надо понять КАК сейчас
22. tamepjlah 3 03.11.17 09:35 Сейчас в теме
(21) я сохранил файл ПравилаОбменаДанными с этой ошибкой и пытался решить ее, чтобы не сидеть без дела. На данный момент ПВД как в (16), в ПКО галочку "Получить из входящих данных" у ТЧ убрал
23. m-serg74 46 03.11.17 13:24 Сейчас в теме
(22) а вот теперь в ПВД
вместо
        ВходящиеДанные = Новый СписокЗначений;
        ВходящиеДанные.Добавить("Товары", ТабТовары);
        
        ВыгрузитьПоПравилу(,, ВходящиеДанные,, "ПоступлениеТоваров");

напишите
        ВходящиеДанные = Новый Структура;
// реквизиты шапки документа
        ВходящиеДанные.Вставить("Дата", ТекущаяДата());
        ВходящиеДанные.Вставить("Комментарий", "ОстаткиТоваров");
// и так далее реквизиты шапки документа

// потом таб. часть полученную запросом
        ВходящиеДанные.Вставить("Товары", ТабТовары);
        
        ВыгрузитьПоПравилу(ВходящиеДанные,,,, "ПоступлениеТоваров");
Показать


и все это в ПВД событие перед обработкой, а способ выборки - "Произвольный алгоритм"
24. tamepjlah 3 07.11.17 07:14 Сейчас в теме
(23) на выходных некогда было разбираться с этим, сегодня исправил как ты написал, вот и подошел я опять к этой ошибке с безопасным режимом
Прикрепленные файлы:
25. m-serg74 46 07.11.17 11:06 Сейчас в теме
(24) ну это уже к конвертации никакого отношения не имеет... гугл и яндекс в помощь
19. tamepjlah 3 03.11.17 07:30 Сейчас в теме
(17) Боже, храни 1С (нет)
В попытках исправить ошибку получения элемента по индексу, внес следующие изменения:
ВыборкаДанных = Запрос.Выполнить().Выбрать();

Пока ВыборкаДанных.Следующий() Цикл
	ВходящиеДанные = Новый Структура();
	ВходящиеДанные.Вставить("Товары", ВыборкаДанных);
	ВыгрузитьПоПравилу(,, ВходящиеДанные,, "ПоступлениеТоваров");
КонецЦикла;

Что за безопасный режим и как его выключить? В интернете нашел 2 варианта:
1) убрать галочку "Защита от опасных действий" у пользователя - не помогает
2) в обработке Универсальный обмен у реквизита Безопасный режим изменить значение с "Истина" на "Ложь" - конфигурация типовая, не снятая с поддержки, поэтому сделать это не возможно
Справочник Номенклатура (в ПКО в Обработчике "Перед выгрузкой" имеется запрос, убирающий алкогольную продукцию) выгружается нормально и временный файл создается
Прикрепленные файлы:
20. m-serg74 46 03.11.17 09:15 Сейчас в теме
(19) это тут причем вообще к озвученной выше проблеме
5. PhoenixAOD 62 28.04.17 09:13 Сейчас в теме
попробуйте
ВыборкаДанных.Заугрзуить(КВП_ВводНачальногоСальдо);
6. m-serg74 46 28.04.17 09:32 Сейчас в теме
7. PhoenixAOD 62 28.04.17 09:49 Сейчас в теме
(6)у тебя ВыборкаДанных это ТЗ, у ТЗ есть метод Загрузить.
8. m-serg74 46 28.04.17 09:50 Сейчас в теме
(7) во-первых, обрати внимание - я не ТС.
во-вторых, посмотри на ошибку и прочитай (3) и (4), потом продолжим обсуждение
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот