helpf.pro
Регистрация

v8: Запрос вввод на основании

Bell
19.10.2012 12:04Прочитано: 1265
Здравствуйте
Есть документ ТМЦ_отгрузка в нем ТЧ Товары в ее помещаются ТОВАРЫ,ТОВАРЫ НА КОМИСИИ,ТАРА.
Документ ТМЦ_отгрузка является основанием для документа ТМЦ возврта от покупателя.
В документе ТМЦ возврат от покупателя ТРИ табличных части Товары,Товары на комиссии и Тара. Прои вводе документа НА ОСНОВАНИИ данные из документа ТМЦ_отгрузка переносятся в документ ТМЦ_возврат от покупателя.Эти данные естественно разъединяются по ТЧ в документе ТМЦ_Возврат. Сделел это запросом (Все работает), но меня смущает как то сам запрос (его отимальность и правильность)

Код 1C v 8.х
 Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Док.НомерСтроки,
| Док.ТМЦ,
| Док.Партия,
| Док.Характеристика,
| Док.Количество,
| Док.Цена1го,
| Док.Цена,
| Док.Сумма,
| Док.СтавкаНДС,
| Док.НДС,
| Док.СтавкаНП,
| Док.НП,
| Док.Всего,
| Док.СуммаР,
| Док.Надбавка,
| Док.СуммаНадбавка,
| Док.СтавкаНДСр,
| Док.НДСр,
| Док.СтавкаНПр,
| Док.НПр,
| Док.ЦенаР,
| Док.ВсегоР
|ПОМЕСТИТЬ ДокТЧ
|ИЗ
| Документ.ТМЦ_Отгрузка.Товары КАК Док
|ГДЕ
| Док.Ссылка = &Ссылка
// НУЖНО ЛИ ГРУППИРОВАТЬ (КАЖЕТСЯ НЕТ)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ДокТЧ.НомерСтроки,
| ДокТЧ.ТМЦ,
| ДокТЧ.Партия,
| ДокТЧ.Характеристика,
| ДокТЧ.Количество,
| ДокТЧ.Цена1го,
| ДокТЧ.Цена,
| ДокТЧ.Сумма,
| ДокТЧ.СтавкаНДС,
| ДокТЧ.НДС,
| ДокТЧ.СтавкаНП,
| ДокТЧ.НП,
| ДокТЧ.Всего,
| ДокТЧ.СуммаР,
| ДокТЧ.Надбавка,
| ДокТЧ.СуммаНадбавка,
| ДокТЧ.СтавкаНДСр,
| ДокТЧ.НДСр,
| ДокТЧ.СтавкаНПр,
| ДокТЧ.НПр,
| ДокТЧ.ЦенаР,
| ДокТЧ.ВсегоР,
| РС_ЗакупочныеДанные.СтатусТМЦ
|ИЗ
| ДокТЧ КАК ДокТЧ
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РС_ЗакупочныеДанные.СрезПоследних(&МоментВремени, ) КАК РС_ЗакупочныеДанные
| ПО ДокТЧ.ТМЦ = РС_ЗакупочныеДанные.ТМЦ
| И ДокТЧ.Партия = РС_ЗакупочныеДанные.Партия
| И ДокТЧ.Характеристика = РС_ЗакупочныеДанные.Характеристика";

Запрос.УстановитьПараметр("МоментВремени", МоментВремени());
Запрос.УстановитьПараметр("Ссылка", ДанныеЗаполнения);

Выборка = Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл

Если Выборка.СтатусТМЦ = Перечисления.ТМЦ_Статус.Товар Тогда
НВС = Товары.Добавить();
ЗаполнитьЗначенияСвойств(НВС,Выборка);
ИначеЕсли Выборка.СтатусТМЦ = Перечисления.ТМЦ_Статус.Тара Тогда
НВС = Тара.Добавить();
ЗаполнитьЗначенияСвойств(НВС,Выборка);
ИначеЕсли Выборка.СтатусТМЦ = Перечисления.ТМЦ_Статус.НаКомиссии Тогда
НВС = Комиссия.Добавить();
ЗаполнитьЗначенияСвойств(НВС,Выборка);
КонецЕсли;

КонецЦикла;
Yandex
Возможно, вас также заинтересует
Реклама на портале
Подсказка: Щелкнув по значку (справа от названия вопроса), вы получите список ответов на похожие вопросы!
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.