Ссылка на документ в запросе

Версия для печатиPDF-версия

Добрый вечер.Программированием занимаюсь не давно,с помощью констрктора запросов создал запрос,который отбирает остатки товаров по партиям. Запрос вроде работает, подскажите как правильно описать ссылку на документ ОприходованиеДокументов из Регистра накопления,чтобы в дальнейшем можно было вставить этот документ в табличную часть документа?

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

Не совсем понятен вопрос. Что имеется в виду под "правильно описать ссылку"?

Вообще-то ссылка на документ оприходования выбирается в этой строке:

"| ПартииТоваровНаСкладахОстатки.ДокументОприходования.Ссылка КАК ДокументОприходования,".

Я понимаю,но когда я обрабатываю запрос, то ссылку на документ не получаю.Вот и подумал,что проблема в запросе.

  1. Как обрабатываете запрос?
  2. Какое значение получаете вместо ссылки? Неопределено?
  3. Проверяли регистр Партии товаров на складах на предмет заполненности поля Документ оприходования?

 

Состояние("Выполняется внешний запрос...");
ВнешДЗЗапрос = ВнешЗапрос.выполнить().Выгрузить(Подключение.ОбходРезультатаЗапроса.ПоГруппировкам);
 
ДЗОстатки = Новый ДеревоЗначений;
ДЗОстатки.Колонки.Добавить("Организация");
ДЗОстатки.Колонки.Добавить("Склад");
ДЗОстатки.Колонки.Добавить("ДокументОприходования");
ДЗОстатки.Колонки.Добавить("Номенклатура");
ДЗОстатки.Колонки.Добавить("Количество");
ДЗОстатки.Колонки.Добавить("Стоимость");
 
Состояние("Поиск соответствий...");
для каждого ВнешУзелОрганизация из ВнешДЗЗапрос.Строки цикл
УзелОрганизация = ДЗОстатки.Строки.Добавить();
УзелОрганизация.Организация = ПолучитьСоответствиеПоКлючу(УзелДляСоответствий,Подключение.ЗначениеВСТрокуВнутр(ВнешУзелОрганизация.Организация));
 
 
для Каждого ВнешУзелДокументОприходования из ВнешУзелОрганизация.строки цикл
УзелДокументОприходования = УзелОрганизация.Строки.Добавить();
УзелДокументОприходования.Организация = ПолучитьСоответствиеПоКлючу(УзелДляСоответствий,Подключение.ЗначениеВСТрокуВнутр(ВнешУзелДокументОприходования.Организация));
УзелДокументОприходования.Склад = ПолучитьСоответствиеПоКлючу(УзелДляСоответствий,Подключение.ЗначениеВСТрокуВнутр(ВнешУзелДокументОприходования.Склад));
УзелДокументОприходования.ДокументОприходования = ПолучитьСоответствиеПоКлючу(УзелДляСоответствий,Подключение.ЗначениеВСТрокуВнутр(ВнешУзелДокументОприходования.ДокументОприходования));
УзелДокументОприходования.Номенклатура = ПолучитьСоответствиеПоКлючу(УзелДляСоответствий,Подключение.ЗначениеВСТрокуВнутр(ВнешУзелДокументОприходования.Номенклатура));
УзелДокументОприходования.Количество = ВнешУзелДокументОприходования.Количество;
УзелДокументОприходования.Стоимость = ВнешУзелДокументОприходования.Стоимость;
КонецЦикла;
КонецЦикла;
 
Для Каждого УзелОрганизация из ДЗОстатки.Строки цикл
ДокументВводаОстатков = Документы.ВводНачальныхОстатков.СоздатьДокумент();
ДокументВводаОстатков.Дата = ДатаВводаОстатков;
ДокументВводаОстатков.Организация = УзелОрганизация.Организация;
ДокументВводаОстатков.РазделУчета = Перечисления.РазделыУчетаДляВводаОстатков.Товары;
 
сч = 0;
для Каждого УзелДокументОприходования из УзелОрганизация.Строки цикл
сч = сч + 1;
НоваяСтрокаТЧ = ДокументВводаОстатков.МПЗПриобретенные.Добавить();
НоваяСтрокаТЧ.НомерСтрокиТЧ = сч;
НоваяСтрокаТЧ.Номенклатура = УзелДокументОприходования.Номенклатура;
НоваяСтрокаТЧ.Партия = УзелДокументОприходования.ДокументОприходования;
НоваяСтрокаТЧ.РасчетныйДокумент = УзелДокументОприходования.ДокументОприходования;
НоваяСтрокаТЧ.СтатусыОплатыРасходовУСН = Перечисления.СтатусыРасходовУСН.НеСписано;
НоваяСтрокаТЧ.ОтражениеВУСН = Перечисления.ОтражениеВУСН.Принимаются;
НоваяСтрокаТЧ.Валюта = Константы.ВалютаРегламентированногоУчета.Получить();
НоваяСтрокаТЧ.Склад = УзелДокументОприходования.Склад;
 
НоваяСтрокаТЧ.Оплачен = истина;
НоваяСтрокаТЧ.Количество = УзелДокументОприходования.Количество;
НоваяСтрокаТЧ.Сумма = УзелДокументОприходования.Стоимость;
НоваяСтрокаТЧ.СуммаНУ = УзелДокументОприходования.Стоимость;
НоваяСтрокаТЧ.ВалютнаяСумма = УзелДокументОприходования.Стоимость;
КонецЦикла;
 
КонецЦикла;
ДокументВводаОстатков.ПолучитьФорму().Открыть();

НоваяСтрокаТЧ.Партия = УзелДокументОприходования.ДокументОприходования;

Значение=неопределенно

Документ оприходования в регистре накопления присутствует. 

Создается документ ввод остатков,все поля заполняются,кроме партия.

Как я понимаю, запрос отрабатывает в другой базе через внешнее соединение. А есть ли в базе-приёмнике соответствующие документы?

Можно посмотреть код функции ПолучитьСоответствиеПоКлючу?

В базе-приемнике есть, но не все документы.Необходимо Создать их ?или можно как то еще это осуществить?

Сами собой они точно не появятся. А вообще нужны ли они в базе-приемнике? Если нужны, то надо выгрузку-загрузку этих документов сделать.

По сути они не нужны, надо как то разделить товар по партиям,чтобы себестоимость  правильно списывалась.Возможно как то без них товар по партиям ввести?

В какую конфигурацию загружаются остатки? В Бухгалтерию предприятия?

Да,в бп 2.0

Информацию о партии нужно записывать в одноименную колонку "Партия", а не в "РасчетныйДокумент". Для каждого документа оприходования из УТ нужно создавать документ Партия в БП.

Я в цикле прописываю,что надо создать документ, но он не создается:

НоваяСтрокаТЧ.Партия= Документы.Партия.СоздатьДокумент() 

Документ Партия нужно сначала создать, заполнить и записать, а потом уже ссылку на него записывать в поле Партия.

Т.е. надо создать столько документов,сколько документов оприходования в базе источнике?А если один документ создать,то он для всех будет, и будет считаться как они с одной партии.Как правильно?

Правильнее, конечно, создавать новый документ Партия для каждого документа оприходования. Заполнять Дату, Организацию, Контрагента и Договор из документа оприходования.