|
Конструктор Запросов или Язык Запросов Печатная ф документа списание с выводом цены из РС | ☑ | ||
---|---|---|---|---|
0
Дина88
24.09.19
✎
07:41
|
Печатная форма документа списание с выводом таблицы с колонками номенклатура, количество, вид цены из самого списания и колонкой цены из Регистра Сведений(как вытащить Цену из Регистра Сведений Цены Номенклатуры на дату документа Списание недостач)?
Вот так было: &НаСервере Функция СформироватьТекущиеЦеныСервер(СсылкаНаДокумент) //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! ТекОбработка = РеквизитФормыВЗначение("Объект"); Макет = ТекОбработка.ПолучитьМакет("МакетЦен"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЦеныНоменклатуры.Номенклатура КАК Номенклатура, | ЦеныНоменклатуры.Характеристика КАК Характеристика, | ЦеныНоменклатуры.ВидЦены КАК ВидЦены, | ЦеныНоменклатуры.Цена КАК Цена |ИЗ | РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры |ГДЕ | ЦеныНоменклатуры.ВидЦены = &ВидЦены | И ЦеныНоменклатуры.Период = &Период | |СГРУППИРОВАТЬ ПО | ЦеныНоменклатуры.Номенклатура, | ЦеныНоменклатуры.Характеристика, | ЦеныНоменклатуры.ВидЦены, | ЦеныНоменклатуры.Цена | |УПОРЯДОЧИТЬ ПО | Номенклатура, | Характеристика"; Запрос.УстановитьПараметр("ВидЦены", Объект.ВидЦены); РезультатЗапроса = Запрос.Выполнить(); ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок"); ОбластьПодвал = Макет.ПолучитьОбласть("Подвал"); ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы"); ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы"); ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали"); ТабДок = Новый ТабличныйДокумент; ТабДок.Очистить(); ТабДок.Вывести(ОбластьЗаголовок); ТабДок.Вывести(ОбластьШапкаТаблицы); ТабДок.НачатьАвтогруппировкуСтрок(); Для Каждого ТекущаяСтрока Из СсылкаНаДокумент.Товары Цикл ЗаполнитьЗначенияСвойств(ОбластьДетальныхЗаписей.Параметры, ТекущаяСтрока); ТабДок.Вывести(ОбластьДетальныхЗаписей); КонецЦикла; ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи); ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень()); КонецЦикла; ТабДок.ЗакончитьАвтогруппировкуСтрок(); ТабДок.Вывести(ОбластьПодвалТаблицы); ТабДок.Вывести(ОбластьПодвал); Возврат ТабДок; КонецФункции &НаСервере Функция СформироватьНаСервере(СсылкаНаДокумент) &НаКлиенте Процедура Сформировать(Команда) СформироватьНаСервере(Объект.ПоДокументу).Показать(); КонецПроцедуры &НаКлиенте Процедура СформироватьТекущиеЦены(Команда) СформироватьТекущиеЦеныСервер(Объект.ПоДокументу).Показать(); КонецПроцедуры |
|||
1
Дина88
24.09.19
✎
07:42
|
Добрый день. Помогите, пожалуйста!
|
|||
2
vicof
24.09.19
✎
07:45
|
почитай про СрезПоследних
|
|||
3
shuhard
24.09.19
✎
08:04
|
(2) +1 [на дату документа] = любимая всеми статья срез на произвольную дату
|
|||
4
ДенисЧ
24.09.19
✎
09:01
|
(3) Зачем? У него одна дата - дата собственно печатаемого документа...
|
|||
5
Дина88
24.09.19
✎
09:25
|
|ВЫБРАТЬ Номенклатура, Цена
|ИЗ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ВыбДата, ВидЦены=&ВыбВидЦены); |
|||
6
Дина88
24.09.19
✎
09:26
|
"ВЫБРАТЬ
//| ДокументЦеныНоменклатурыПериод.Документ, //| ДокументЦеныНоменклатурыПериод.Документ.Дата КАК Дата, //| ДокументЦеныНоменклатурыПериод.Документ.ВидЦены КАК ВидЦены, //| ДокументЦеныНоменклатурыПериод.Номенклатура, //| ЦеныНоменклатуры.Цена //|ИЗ //| (ВЫБРАТЬ //| СписаниеНедостачТоваровТовары.Ссылка КАК Документ, //| СписаниеНедостачТоваровТовары.Номенклатура КАК Номенклатура, //| МАКСИМУМ(ЦеныНоменклатуры.Период) КАК Период //| ИЗ //| Документ.СписаниеНедостачТоваров.Товары КАК СписаниеНедостачТоваровТовары //| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры //| ПО СписаниеНедостачТоваровТовары.Номенклатура = ЦеныНоменклатуры.Номенклатура //| И СписаниеНедостачТоваровТовары.Ссылка.Дата >= ЦеныНоменклатуры.Период //| И СписаниеНедостачТоваровТовары.Ссылка.ВидЦены = ЦеныНоменклатуры.ВидЦены //| //| СГРУППИРОВАТЬ ПО //| СписаниеНедостачТоваровТовары.Ссылка, //| СписаниеНедостачТоваровТовары.Номенклатура) КАК ДокументНоменклатураПериод //| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры //| ПО ДокументНоменклатураПериод.Номенклатура = ЦеныНоменклатуры.Номенклатура //| И ДокументНоменклатураПериод.Документ.ВидЦены = ЦеныНоменклатуры.ВидЦены //| И ДокументНоменклатураПериод.Период = ЦеныНоменклатуры.Период"; |
|||
7
Дина88
24.09.19
✎
09:27
|
Что не так?
|
|||
8
vicof
24.09.19
✎
10:22
|
Все не так. Для начала четко сформулируй задачу.
|
|||
9
Дина88
25.09.19
✎
06:14
|
&НаСервере
Функция СформироватьТекущиеЦеныСервер(СсылкаНаДокумент) //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА // Данный фрагмент построен конструктором. ТекОбработка = РеквизитФормыВЗначение("Объект"); Макет = ТекОбработка.ПолучитьМакет("МакетЦен"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЦеныНоменклатуры.Номенклатура КАК Номенклатура, | ЦеныНоменклатуры.Характеристика КАК Характеристика, | ЦеныНоменклатуры.ВидЦены КАК ВидЦены, | ЦеныНоменклатуры.Цена КАК Цена |ИЗ | РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры |ГДЕ | ЦеныНоменклатуры.ВидЦены = &ВидЦены | И ЦеныНоменклатуры.Период = &Период | И ЦеныНоменклатуры.Номенклатура = &Номенклатура |СГРУППИРОВАТЬ ПО | ЦеныНоменклатуры.Номенклатура, | ЦеныНоменклатуры.Характеристика, | ЦеныНоменклатуры.ВидЦены, | ЦеныНоменклатуры.Цена | |УПОРЯДОЧИТЬ ПО | Номенклатура, | Характеристика"; Запрос.УстановитьПараметр("ВидЦены", Объект.ВидЦены); Запрос.УстановитьПараметр("Период", СсылкаНаДокумент.Дата); Запрос.УстановитьПараметр("Номенклатура", СсылкаНаДокумент.Номенклатура); РезультатЗапроса = Запрос.Выполнить(); ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок"); ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы"); ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы"); ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали"); ТабДок = Новый ТабличныйДокумент; ТабДок.Очистить(); ТабДок.Вывести(ОбластьЗаголовок); ТабДок.Вывести(ОбластьШапкаТаблицы); ТабДок.НачатьАвтогруппировкуСтрок(); Для Каждого ТекущаяСтрока Из СсылкаНаДокумент.Товары Цикл ЗаполнитьЗначенияСвойств(ОбластьДетальныхЗаписей.Параметры, ТекущаяСтрока); ТабДок.Вывести(ОбластьДетальныхЗаписей); КонецЦикла; ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи); ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень()); КонецЦикла; ТабДок.ЗакончитьАвтогруппировкуСтрок(); ТабДок.Вывести(ОбластьПодвалТаблицы); //ТабДок.Вывести(ОбластьПодвал); Возврат ТабДок; КонецФункции &НаСервере Функция ЦенаТовара(СсылкаНаДокумент, ВыбНом, ВыбХар) ТекОбработка = РеквизитФормыВЗначение("Объект"); Макет = ТекОбработка.ПолучитьМакет("МакетЦен"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЦеныНоменклатуры.Номенклатура КАК Номенклатура, | ЦеныНоменклатуры.Характеристика КАК Характеристика, | ЦеныНоменклатуры.ВидЦены КАК ВидЦены, | ЦеныНоменклатуры.Цена КАК Цена |ИЗ | РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры |ГДЕ | ЦеныНоменклатуры.ВидЦены = &ВидЦены //| И ЦеныНоменклатуры.Период = &Период | И ЦеныНоменклатуры.Номенклатура = &Номенклатура | И ЦеныНоменклатуры.Характеристика = &Характеристика |СГРУППИРОВАТЬ ПО | ЦеныНоменклатуры.Номенклатура, | ЦеныНоменклатуры.Характеристика, | ЦеныНоменклатуры.ВидЦены, | ЦеныНоменклатуры.Цена | |УПОРЯДОЧИТЬ ПО | Номенклатура, | Характеристика"; Запрос.УстановитьПараметр("ВидЦены", Объект.ВидЦены); //Запрос.УстановитьПараметр("Период", Объект.ПоДокументу.Дата); Запрос.УстановитьПараметр("Номенклатура", ВыбНом); Запрос.УстановитьПараметр("Характеристика", ВыбХар); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл НужнаяЦена = ВыборкаДетальныеЗаписи.Цена; // ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи); // ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень()); КонецЦикла; /// ТабДок.ЗакончитьАвтогруппировкуСтрок(); // ТабДок.Вывести(ОбластьПодвалТаблицы); // ТабДок.Вывести(ОбластьПодвал); // Возврат ТабДок; Возврат НужнаяЦена; КонецФункции &НаСервере Функция СформироватьНаСервере(СсылкаНаДокумент) ТабличныйДокумент = Новый ТабличныйДокумент; ТекОбработка = РеквизитФормыВЗначение("Объект"); //// ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СписаниеНедостачТоваров"; МакетОбработки = ТекОбработка.ПолучитьМакет("Макет"); //заполняем шапку ОбластьШапка = МакетОбработки.ПолучитьОбласть("Шапка"); ТабличныйДокумент.Вывести(ОбластьШапка); //заполняем строки ТЧ ОбластьСтрокаТЧ = МакетОбработки.ПолучитьОбласть("СтрокаТЧ"); ТабличныйДокумент.Вывести(ОбластьСтрокаТЧ); Для Каждого ТекущаяСтрока Из СсылкаНаДокумент.Товары Цикл ЗаполнитьЗначенияСвойств(ОбластьСтрокаТЧ.Параметры, ТекущаяСтрока); ОбластьСтрокаТЧ.Параметры.Цена = ЦенаТовара(СсылкаНаДокумент, ТекущаяСтрока.Номенклатура, ТекущаяСтрока.Характеристика); ТабличныйДокумент.Вывести(ОбластьСтрокаТЧ); КонецЦикла; ТабличныйДокумент.АвтоМасштаб = Истина; Возврат ТабличныйДокумент; ТабличныйДокумент.Вывести(Макет); ТабличныйДокумент.Показать(Макет ПФ); КонецФункции &НаКлиенте Процедура Сформировать() СформироватьНаСервере(Объект.ПоДокументу).Показать(); КонецПроцедуры &НаКлиенте Процедура СформироватьТекущиеЦены(Команда) СформироватьТекущиеЦеныСервер(Объект.ПоДокументу).Показать(); КонецПроцедуры |
|||
10
Дина88
25.09.19
✎
06:19
|
Здравствуйте. Пока закомментировала период в двух местах, так как без нее выходят все колонки, но цена произвольная :
//| И ЦеныНоменклатуры.Период = &Период //Запрос.УстановитьПараметр("Период", Объект.ПоДокументу.Дата); Нужно найти ошибку, связанную с периодом. Период идет как одна из колонок в регистре сведений Цены Номенклатуры. Ее нужно соотнести с датой документа Списание недостач товаров. И тогда получится цена на опр период. |
|||
11
Мимохожий Однако
25.09.19
✎
06:41
|
Замени таблицу РегистрСведений.ЦеныНоменклатуры на РегистрСведенийСрезПоследних.ЦеныНоменклатуры
Об этом уже дважды до меня подсказывали. .. Есть такая обработка как консоль запросов с ней потренируйся. ... Сформулируй заново, что ты хочешь. |
|||
12
catena
25.09.19
✎
07:20
|
(10)Гугли "Срез последних на каждую дату"
|
|||
13
Консультант Баранов
25.09.19
✎
07:28
|
(10) > Ее нужно соотнести с датой документа Списание недостач товаров.
Сколько дат? Одна дата документа или есть некий список дат? |
|||
14
Дина88
25.09.19
✎
09:55
|
Мне нужно сделать внешнюю печатную форму документа Списание недостач товаров посредством внешней обработки. Дата документа Списание недостач товаров соответственно будет сравниваться с регистром сведений Цены номенклатуры.
|
|||
15
Дина88
25.09.19
✎
09:57
|
Срез последних на каждую дату смотрела, а подставить не могу
|
|||
16
Ёпрст
25.09.19
✎
10:06
|
(12) ей это не надо
|
|||
17
Ёпрст
25.09.19
✎
10:06
|
(15) он не нужен вам.
ваш ответ в (5) не понятно, на чем у вас затык с этим. |
|||
18
Дина88
25.09.19
✎
11:25
|
ИЗ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, ) КАК ЦеныНоменклатуры
// | И ЦеныНоменклатуры.Период = &Период |
|||
19
Дина88
25.09.19
✎
11:30
|
Вот в таком виде сработало, а теперь как это распечатать? В Печатной форме документа Списание Недостач Товаров №8 в поле выбора документа Списание Недостач Товаров автоматически должен сидеть текущий документ №8, мне приходиться выбирать из списка всех списаний. В подобном документе есть похожий код, но он в моем документе не срабатывает, а в своем срабатывает:
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Перем ОбъектыНазначения; Если Параметры.Свойство("ОбъектыНазначения", ОбъектыНазначения) Тогда Если ТипЗнч(ОбъектыНазначения) = Тип("Массив") Тогда Объект.СсылкаНаОбъект = ОбъектыНазначения[0].Ссылка; КонецЕсли; КонецЕсли; КонецПроцедуры |
|||
20
Дина88
26.09.19
✎
03:19
|
И как вообще забивать название этой процедуры в поисковике, чтобы найти код?
|
|||
21
Дина88
26.09.19
✎
03:52
|
Пришлось поменять на предопределенный код и она сработала. Не надо
|
|||
22
Chameleon1980
26.09.19
✎
04:03
|
Тс вы зачем в код полезли?от безысходности, для себя?
|
|||
23
Chameleon1980
26.09.19
✎
04:04
|
Чтобы понять Дину88 думай, как Дина88
|
|||
24
Дина88
26.09.19
✎
06:20
|
Сменить сферу деятельности, я самостоятельно учусь по видео и книгам. 3 недели только. Каждый человек имеет право учиться)
|
|||
25
ДенисЧ
26.09.19
✎
07:21
|
Интересно, а как девочка 8 дней от роду могла 3 недели уже учиться? В пренатальном периоде мать читала вслух книжки?
|
|||
26
Simod
26.09.19
✎
07:36
|
(24) Дело не в том, что ты учишься, а в том, что абсолютно не умеешь выражать свои мысли. Тебя никто не понимает.
|
|||
27
Дина88
26.09.19
✎
09:51
|
Поле дня рождения автоматически заполнилось на момент регистрации, видимо. Буду стараться яснее изъясняться)
|
|||
28
Fish
26.09.19
✎
09:55
|
(27) Многие на этом форуме обладают телепатическим даром. Но для его активации требуется заполнить третье поле в личной карточке :)
|
|||
29
Дина88
26.09.19
✎
09:57
|
Не успела. Загружу обязательно.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |