|
Как запонить табличную часть сведениями из подчиненного регистра сведений | ☑ | ||
---|---|---|---|---|
0
lero4ka23
25.04.14
✎
12:59
|
Как запонить табличную часть документа сведениями из подчиненного регистра сведений? Вот код, но он не работает при подчиненном регистре, что нужно изменить?
// Процедура заполняет табличную часть по спецификации. Процедура ЗагрузитьНоменклатуруПоСпецификации(Спецификация) Запрос = Новый Запрос( "ВЫБРАТЬ | МАКСИМУМ(СпецификацииСостав.НомерСтроки) КАК СпецификацииСоставНомерСтроки, | СпецификацииСостав.Номенклатура КАК Номенклатура, | СпецификацииСостав.ТипСтрокиСостава КАК ТипСтрокиСостава, | СпецификацииСостав.ЕдиницаИзмерения КАК ЕдиницаИзмерения, | СпецификацииСостав.Спецификация КАК Спецификация, | СУММА(ВЫБОР | КОГДА ТИПЗНАЧЕНИЯ(&ЕдиницаИзмерения) = ТИП(Справочник.КлассификаторЕдиницИзмерения) | ТОГДА СпецификацииСостав.Количество / СпецификацииСостав.КоличествоПродукции * &Количество | ИНАЧЕ СпецификацииСостав.Количество / СпецификацииСостав.КоличествоПродукции * &Коэффициент * &Количество | КОНЕЦ) КАК Количество |ИЗ | Справочник.Спецификации.Состав КАК СпецификацииСостав |ГДЕ | СпецификацииСостав.Ссылка = &Спецификация | И СпецификацииСостав.Номенклатура.ТипНоменклатуры = &ТипНоменклатуры | |СГРУППИРОВАТЬ ПО | СпецификацииСостав.Номенклатура, | СпецификацииСостав.ЕдиницаИзмерения, | СпецификацииСостав.Спецификация, | СпецификацииСостав.ТипСтрокиСостава | |УПОРЯДОЧИТЬ ПО | СпецификацииСоставНомерСтроки"); Запрос.УстановитьПараметр("Спецификация", Спецификация); Запрос.УстановитьПараметр("Количество", 1); Запрос.УстановитьПараметр("ЕдиницаИзмерения", Объект.Номенклатура.ЕдиницаИзмерения); Если НЕ ТипЗнч(Объект.Номенклатура.ЕдиницаИзмерения) = Тип("СправочникСсылка.КлассификаторЕдиницИзмерения") И Объект.Номенклатура.ЕдиницаИзмерения <> Неопределено Тогда Запрос.УстановитьПараметр("Коэффициент", Объект.Номенклатура.ЕдиницаИзмерения.Коэффициент); Иначе Запрос.УстановитьПараметр("Коэффициент", 1); КонецЕсли; Запрос.УстановитьПараметр("ТипНоменклатуры", Перечисления.ТипыНоменклатуры.Запас); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл Если Выборка.ТипСтрокиСостава = Перечисления.ТипыСтрокСоставаСпецификации.Узел Тогда ЗагрузитьНоменклатуруПоСпецификации(Выборка.Спецификация); Иначе НоваяСтрока = Объект.СписокНоменклатуры.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка); Запрос1 = Новый Запрос; Запрос1.Текст = "ВЫБРАТЬ | НовыеЦеныСрезПоследних.Номенлатура, | НовыеЦеныСрезПоследних.Цена, | НовыеЦеныСрезПоследних.Период КАК ДатаНакладной, | НовыеЦеныСрезПоследних.ЕдиницаИзмерения, | ЕСТЬNULL(НовыеЦеныСрезПоследних.ПроцентСкидки, 0) КАК ПроцентСкидки |ИЗ | РегистрСведений.НовыеЦены.СрезПоследних(&ДатаОбработки, ) КАК НовыеЦеныСрезПоследних |ГДЕ | НовыеЦеныСрезПоследних.Номенлатура = &Номенклатура | И НовыеЦеныСрезПоследних.Актуальность"; Запрос1.УстановитьПараметр("ДатаОбработки", Объект.Дата); Запрос1.УстановитьПараметр("Номенклатура", Выборка.Номенклатура); Запрос1.УстановитьПараметр("Коэффициент", 1); Выборка1 = Запрос1.Выполнить().Выбрать(); ПроцентСкидки = 0; Цена = 0; Пока Выборка1.Следующий() Цикл //НоваяСтрока.ДатаНакладной = Выборка1.ДатаНакладной; ПроцентСкидки = Выборка1.ПроцентСкидки; Цена = Выборка1.Цена; КонецЦикла; НоваяСтрока.Цена = Цена; НоваяСтрока.ПроцентСкидки = ПроцентСкидки; НоваяСтрока.Сумма = НоваяСтрока.Количество * НоваяСтрока.Цена; //Если ПроцентСкидки >0 Тогда НоваяСтрока.СуммаСкидки =НоваяСтрока.Цена *НоваяСтрока.ПроцентСкидки/100; НоваяСтрока.ВсегоСоСкидкой = НоваяСтрока.Количество *(НоваяСтрока.Цена - НоваяСтрока.СуммаСкидки); КонецЕсли; КонецЦикла; Элементы.Декорация1.Видимость = Истина; Объект.ТребуетсяПерерасчет = Истина; КонецПроцедуры &НаСервереБезКонтекста Процедура ЗагрузитьЦенаИзПриходнойНакладной(Номенклатура, Дата,Валюта, Цена, Скидка, ДатаНакладной, ЕдИзм) Запрос1 = Новый Запрос(); Запрос1.Текст = "ВЫБРАТЬ | НовыеЦеныСрезПоследних.Период КАК ДатаНакладной, | НовыеЦеныСрезПоследних.Номенлатура, | НовыеЦеныСрезПоследних.ЕдиницаИзмерения, | НовыеЦеныСрезПоследних.Цена, | ЕСТЬNULL(НовыеЦеныСрезПоследних.ПроцентСкидки, 0) КАК ПроцентСкидки |ИЗ | РегистрСведений.НовыеЦены.СрезПоследних(&ДатаОбработки, ) КАК НовыеЦеныСрезПоследних |ГДЕ | НовыеЦеныСрезПоследних.Номенлатура = &Номенклатура | И НовыеЦеныСрезПоследних.Актуальность"; Запрос1.УстановитьПараметр("ДатаОбработки", Дата); Запрос1.УстановитьПараметр("Номенклатура", Номенклатура); Запрос1.УстановитьПараметр("Коэффициент", 1); //Запрос1.УстановитьПараметр("ВалютаДокумента", Валюта); Выборка1 = Запрос1.Выполнить().Выбрать(); ПроцентСкидки = 0; Цена = 0; Пока Выборка1.Следующий() Цикл ДатаНакладной = Выборка1.ДатаНакладной; Скидка = Выборка1.ПроцентСкидки; Цена = Выборка1.Цена; ЕдИзм = Номенклатура.ЕдиницаИзмерения; КонецЦикла; КонецПроцедуры |
|||
1
Ёпрст
25.04.14
✎
13:07
|
Шо за бред ?
>>.СпецификацииСостав.КоличествоПродукции * &Количество Запрос.УстановитьПараметр("Количество", 1); Наркоман шоле ? |
|||
2
Ёпрст
25.04.14
✎
13:10
|
запрос в цикле, тоже не комильфо..
Да и, всё в топку. |
|||
3
lero4ka23
25.04.14
✎
13:11
|
это всё работает только если регистр сведений неподчинённый
|
|||
4
MKZM
25.04.14
✎
13:12
|
(3) А что не правильно? Иначе хозяин нужен.
|
|||
5
lero4ka23
25.04.14
✎
13:16
|
(4) Кто б знал, мне просто нужно из некого регистра сведения загрузить в табличную часть документа ту номенклатуру которая входит в состав определённой спецификации.
|
|||
6
ДенисЧ
25.04.14
✎
13:27
|
||||
7
Ёпрст
25.04.14
✎
13:29
|
(6) всё хуже, это девчонка..
:) |
|||
8
ДенисЧ
25.04.14
✎
13:31
|
(7) Male shovinist dirty pig!
|
|||
9
anton_mgn
25.04.14
✎
13:33
|
(0) А что конкретно не работает?
|
|||
10
Ёпрст
25.04.14
✎
13:35
|
(8) Успокойся,поросёночек!
:) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |