Создаю программно Раходный ордер на основании Перемещения товаров.
Документ создается, но табличная часть не заполняется, т.к. данный запрос не работает:
Процедура ЗаполнитьТовары(ПодтверждатьОчисткуСтрок) Экспорт
Если Не ПроверитьИПодготовитьТабЧастьКЗаполнению("Товары", ПодтверждатьОчисткуСтрок) Тогда
Возврат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Склад", Склад);
Запрос.УстановитьПараметр("СтатусПартии", Перечисления.СтатусыПартийТоваров.Купленный);
Запрос.УстановитьПараметр("ДокументОснование", ДокументПередачи);
Запрос.УстановитьПараметр("ДатаОстатков", ОбщегоНазначения.ПолучитьДатуОстатков(ЭтотОбъект));
ТекстЗапросаПоПриходномуОрдеру =
"ВЫБРАТЬ
| Остатки.Номенклатура КАК Номенклатура,
| Остатки.Номенклатура.ЕдиницаИзмеренияМест КАК ЕдиницаИзмеренияМест,
| Остатки.СерияНоменклатуры КАК СерияНоменклатуры,
| Остатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| Остатки.Качество КАК Качество,
| Неопределено КАК ДокументРезерва,
| Остатки.Номенклатура.ЕдиницаХраненияОстатков КАК ЕдиницаХраненияОстатков,
| Остатки.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК Коэффициент,
| Остатки.КоличествоОстаток КАК КоличествоОстаток
|ИЗ
| РегистрНакопления.ТоварыКПолучениюНаСклады.Остатки(&ДатаОстатков, ДокументПолучения = &ДокументОснование
| И Склад = &Склад
| И СтатусПартии = &СтатусПартии) КАК Остатки
|";
ТекстЗапросаПоНакладной =
"ВЫБРАТЬ
| Остатки.Номенклатура КАК Номенклатура,
| Остатки.Номенклатура.ЕдиницаИзмеренияМест КАК ЕдиницаИзмеренияМест,
| Остатки.СерияНоменклатуры КАК СерияНоменклатуры,
| Остатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| Остатки.Качество КАК Качество,
| Остатки.ДокументРезерва КАК ДокументРезерва,
| Остатки.Номенклатура.ЕдиницаХраненияОстатков КАК ЕдиницаХраненияОстатков,
| Остатки.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК Коэффициент,
| Остатки.КоличествоОстаток КАК КоличествоОстаток
|ИЗ
| РегистрНакопления.ТоварыКПередачеСоСкладов.Остатки(&ДатаОстатков, ДокументПередачи = &ДокументОснование И Склад = &Склад И СтатусПартии = &СтатусПартии) КАК Остатки
|";
ВидыОперацийРасходныйОрдер = Перечисления.ВидыОперацийРасходныйОрдер;
ЗначениеДокументРезерва = Неопределено;
Если ВидОперации = ВидыОперацийРасходныйОрдер.ВозвратПоПриходномуОрдеру Тогда
Запрос.Текст = ТекстЗапросаПоПриходномуОрдеру;
Иначе
Запрос.Текст = ТекстЗапросаПоНакладной;
КонецЕсли;
РезультатЗапроса = Запрос.Выполнить();
Показать
При вводе на основании обычным способом здесь есть данные, а программным способом нет.
Почему? Помогите, пожалуйста
(7)В документе Перемещение товаров в модуле объекта в процедуре Обработка проведения добавляю
Если Не Отказ Тогда
Если ВидОперации = Перечисления.ВидыОперацийПеремещениеТоваров.ТоварыПродукцияПоОрдерам Тогда
Если СоздатьРасходныйОрдер = Истина Тогда
НовДок = Документы.РасходныйОрдерНаТовары.СоздатьДокумент();
//Заполнить - вызывает ОбработкаЗаполнения(Основание) в документе
Основание = Ссылка;
НовДок.Дата = ТекущаяДата();
НовДок.Заполнить(Основание);
НовДок.Комментарий = "Создан автоматически при проведении документа "+СтруктураШапкиДокумента.ПредставлениеДокумента;
НовДок.Записать(РежимЗаписиДокумента.Проведение);
НовДок.ПолучитьФорму().Открыть();
КонецЕсли;
КонецЕсли;
КонецЕсли;
Показать
Документ создается, шапка заполняется, а табличная часть пустая, т.к. результат вышеуказанного запроса пустой.
Дата остатков в отладчике видна, она такая же как и при обычном вводе на основании, остальные параметры тоже.
Запрос то не я писала, он из конфигурации.
При обычном вводе на основании я вижу результат, а при программном вводе на основании там пустой результат запроса.
Вот и не пойму что делать...
(9) Xershi, в консоли запросов видно если поставить ДатуОстатков раньше, чем перемещение, то результат пустой, а если значение параметра оставить пустым то нормально срабатывает.
Видимо при программном вводе на основании происходит что-то подобное.
Проблема в этой чертовой дате, которую я никак не могу решить ((((
Запрос.УстановитьПараметр("Склад", Склад);
Запрос.УстановитьПараметр("СтатусПартии", Перечисления.СтатусыПартийТоваров.Купленный);
Запрос.УстановитьПараметр("ДокументОснование", ДокументПередачи);
Запрос.УстановитьПараметр("ДатаОстатков", ОбщегоНазначения.ПолучитьДатуОстатков(ЭтотОбъект));
ТекстЗапросаПоНакладной =
"ВЫБРАТЬ
| Остатки.Номенклатура КАК Номенклатура,
| Остатки.Номенклатура.ЕдиницаИзмеренияМест КАК ЕдиницаИзмеренияМест,
| Остатки.СерияНоменклатуры КАК СерияНоменклатуры,
| Остатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| Остатки.Качество КАК Качество,
| Остатки.ДокументРезерва КАК ДокументРезерва,
| Остатки.Номенклатура.ЕдиницаХраненияОстатков КАК ЕдиницаХраненияОстатков,
| Остатки.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК Коэффициент,
| Остатки.КоличествоОстаток КАК КоличествоОстаток
|ИЗ
| РегистрНакопления.ТоварыКПередачеСоСкладов.Остатки(&ДатаОстатков, ДокументПередачи = &ДокументОснование И Склад = &Склад И СтатусПартии = &СтатусПартии) КАК Остатки
|";
Показать
Запрос то простой. И параметры одни и те же в обоих случаях передаются, в отладчике видно. Только во втором случае результат запроса пустой (((