|
Выбор последней записи по ценам из табличной части | ☑ | ||
---|---|---|---|---|
0
Валидатор
21.06.13
✎
14:29
|
Задание такое: Есть документ с ТЧ и с прочими реквизитами. Есть реквизит вид цен- из этого реквизита берутся цены на номенклатуру. Нужно, чтобы при открытии документа ставились автоматически последняя цена из документа, в котором вносятся ценники, самописная конфа на управляемом приложении, как получить последнюю запись в ТЧ, и потом использовать ее для подставновки в реквизит?
|
|||
1
Валидатор
21.06.13
✎
14:30
|
точнее как ее потом подставить в принципе ясно, а вот как получить последнюю запись не совсем(
|
|||
2
pessok
21.06.13
✎
14:31
|
ТЧ.Выгрузить(ТЧ.Количество()-1).ВидЦен
|
|||
3
salvator
21.06.13
✎
14:31
|
Что значит "последняя"? По номеру строки в ТЧ?
|
|||
4
Валидатор
21.06.13
✎
14:31
|
(3) по дате последней
|
|||
5
Allexe
21.06.13
✎
14:31
|
ВЫБРАТЬ ПЕРВЫЕ 1
Плюс сортировка в обратном порядке по номеру строки |
|||
6
pessok
21.06.13
✎
14:31
|
вай.
ТЧ.Выгрузить()[ТЧ.Количество()-1].ВидЦен |
|||
7
Валидатор
21.06.13
✎
14:31
|
и в управляемом приложении нельзя получать объект что ли? оО
|
|||
8
salvator
21.06.13
✎
14:32
|
(4) см (5) только сортировка по дате убыв
|
|||
9
pessok
21.06.13
✎
14:32
|
(4) аа, тогда (5)
|
|||
10
Валидатор
21.06.13
✎
14:33
|
эм, а в конструкторе запросов где задается сортировка по дате убыв? не могу найти(
|
|||
11
pessok
21.06.13
✎
14:34
|
(10) сортировка там идет по ПОЛЮ. Поле с датой сортируешь по убыванию
|
|||
12
Валидатор
21.06.13
✎
14:36
|
так, получил список с датами по убыванию, и как мне потом использовать первый документ из списка для того, чтобы он в реквизит встал? обходя запрос циклом?
|
|||
13
pessok
21.06.13
✎
14:36
|
(12) внимательно прочти (4)
|
|||
14
pessok
21.06.13
✎
14:37
|
т.е. (5)
|
|||
15
salvator
21.06.13
✎
14:37
|
ВЫБРАТЬ ПЕРВЫЕ 1
|
|||
16
Валидатор
21.06.13
✎
14:38
|
(15) то же ведь в запросе мы делаем эти выбрать первые 1?
|
|||
17
pessok
21.06.13
✎
14:38
|
(16) в запросе, вместо ВЫБРАТЬ пиши ВЫБРАТЬ ПЕРВЫЕ 1. Это даст только одну строку. Потом уже к ней обращаешься через выборку
|
|||
18
Валидатор
21.06.13
✎
14:42
|
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 | УстановкаЦенНоменклатурыТовары.Ссылка КАК Ценник, | УстановкаЦенНоменклатурыТовары.НомерСтроки, | УстановкаЦенНоменклатурыТовары.Номенклатура, | УстановкаЦенНоменклатурыТовары.Цена, | УстановкаЦенНоменклатурыТовары.Ссылка.ВидЦены |ИЗ | Документ.УстановкаЦенНоменклатуры.Товары КАК УстановкаЦенНоменклатурыТовары | |УПОРЯДОЧИТЬ ПО | УстановкаЦенНоменклатурыТовары.Ссылка.Дата УБЫВ"; Результат = Запрос.Выполнить(); РезультатПоЦенам = Результат.Выбрать(); Пока РезультатПоЦенам.Следующий() Цикл Объект.ВидЦен = РезультатПоЦенам.Ценник; КонецЦикла я так понял примерно такое, только еще вопрос: пишет {Документ.СчетНаОплатуКлиенту.Форма.ФормаДокумента.Форма(600,17)}: Тип не определен (Запрос) Запрос = Новый <<?>>Запрос; (Проверка: Тонкий клиент) в обычном приложении не надо было для запроса нчиего дописывать, а в управляемом видимо да? |
|||
19
salvator
21.06.13
✎
14:43
|
(18) На сервере делай
|
|||
20
Валидатор
21.06.13
✎
14:43
|
ай там на клиенте на сервере долбанные, как мне тогда в функции при открытии прописать запрос? сделать ее на клиенте?
|
|||
21
Валидатор
21.06.13
✎
14:43
|
(20) на сервере*
|
|||
22
Валидатор
21.06.13
✎
14:45
|
или можно сделать 2 процедуры ПриОткрытии? одна на серваке, другая на клиенте?
|
|||
23
MSII
21.06.13
✎
14:45
|
(21) ПриСозданииНаСервере сделай, что тебе нужно.
|
|||
24
salvator
21.06.13
✎
14:46
|
На клиенте вызывай функцию с твоим запросом, которая будет выполняться на сервере и возвращать к примеру выборку.
|
|||
25
Валидатор
21.06.13
✎
14:47
|
&НаСервере
Функция ПриСоздании () Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 | УстановкаЦенНоменклатурыТовары.Ссылка КАК Ценник, | УстановкаЦенНоменклатурыТовары.НомерСтроки, | УстановкаЦенНоменклатурыТовары.Номенклатура, | УстановкаЦенНоменклатурыТовары.Цена, | УстановкаЦенНоменклатурыТовары.Ссылка.ВидЦены |ИЗ | Документ.УстановкаЦенНоменклатуры.Товары КАК УстановкаЦенНоменклатурыТовары | |УПОРЯДОЧИТЬ ПО | УстановкаЦенНоменклатурыТовары.Ссылка.Дата УБЫВ"; Результат = Запрос.Выполнить(); РезультатПоЦенам = Результат.Выбрать(); Пока РезультатПоЦенам.Следующий() Цикл Объект.ВидЦен = РезультатПоЦенам.Ценник; КонецЦикла; КонецФункции и потом передавать в процедуру при открытии на клиенте: ПриСоздании(); так? |
|||
26
salvator
21.06.13
✎
14:48
|
Функция на то и функция, что бы что-то возвращать
|
|||
27
Валидатор
21.06.13
✎
14:49
|
(26) это то понятно, сделал я функцию, только
Функция ПриСоздании (ВидЦен) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 | УстановкаЦенНоменклатурыТовары.Ссылка КАК Ценник, | УстановкаЦенНоменклатурыТовары.НомерСтроки, | УстановкаЦенНоменклатурыТовары.Номенклатура, | УстановкаЦенНоменклатурыТовары.Цена, | УстановкаЦенНоменклатурыТовары.Ссылка.ВидЦены |ИЗ | Документ.УстановкаЦенНоменклатуры.Товары КАК УстановкаЦенНоменклатурыТовары | |УПОРЯДОЧИТЬ ПО | УстановкаЦенНоменклатурыТовары.Ссылка.Дата УБЫВ"; Результат = Запрос.Выполнить(); РезультатПоЦенам = Результат.Выбрать(); Пока РезультатПоЦенам.Следующий() Цикл ВидЦен = РезультатПоЦенам.Ценник; КонецЦикла; КонецФункции то есть мы получаем как раз нашу последнюю запись тут, так? |
|||
28
Валидатор
21.06.13
✎
14:50
|
и потом в процедуру ПриОткрытии на клиенте в конце процедуры пишу
ПриСоздании( только какой мы передаем суда параметр?) оО |
|||
29
salvator
21.06.13
✎
14:53
|
(27)
Это не функция |
|||
30
Валидатор
21.06.13
✎
14:54
|
возврат Вид цен перед концом функции забыл дописать?
|
|||
31
MSII
21.06.13
✎
14:57
|
(28) Зачем тебе дергать сервер лишний раз? В обработчике события управляемой формы ПриСозданииНаСервере сделай то, что тебе нужно.
|
|||
32
Валидатор
21.06.13
✎
15:00
|
(31) блин, отладчик не останавливается ни на открытии, ни на чем, тупое упр приложение, и соответственно не подставляются мои ценники в нужный мне реквизит(
|
|||
33
Валидатор
21.06.13
✎
15:05
|
было сложно, но вроде получилось, спасибо!
|
|||
34
Валидатор
21.06.13
✎
15:10
|
хотя появился еще мини вопрос, я хочу чтобы только при создании новых документов ценник вставал, раньше можно было методом типа ЭтоНовый, а в упр приложении в обработке присозданиинасервере какой метод использовать?
|
|||
35
Allexe
21.06.13
✎
15:19
|
ЭтоНовый()
|
|||
36
Allexe
21.06.13
✎
15:20
|
:)
|
|||
37
Валидатор
21.06.13
✎
15:23
|
{Документ.СчетНаОплатуКлиенту.Форма.ФормаДокумента.Форма(621)}: Метод объекта не обнаружен (ЭтоНовый)
Если Объект.ЭтоНовый() Тогда |
|||
38
Валидатор
21.06.13
✎
15:23
|
а если просто писать ЭтоНовый, то он тоже не понимает что это
|
|||
39
salvator
21.06.13
✎
15:25
|
(37) Что у тебя хранится в переменной Объект?
|
|||
40
MSII
21.06.13
✎
15:28
|
(37) Про доступность метода ЭтоНовый() посмотри.
|
|||
41
Валидатор
21.06.13
✎
15:31
|
(39) данныеформа структура пишет отладчик
|
|||
42
Валидатор
21.06.13
✎
15:33
|
ДокументОбъект.<Имя документа> (DocumentObject.<Имя документа>)
ЭтоНовый (IsNew) Синтаксис: ЭтоНовый() Возвращаемое значение: Тип: Булево. Истина - изменяется еще ни разу не записанный документ; Ложь - документ уже записан. Описание: Определяет, записан ли документ в базу данных. Доступность: Сервер, толстый клиент, внешнее соединение. Пример: Если РасходнаяНакладная.ЭтоНовый() Тогда РасходнаяНакладная.Записать(); КонецЕсли; То есть в обработке: &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Если ЭтоНовый()Тогда ... Иначе КонецЕсли Конецпроцедуры должно ведь срабатывать на это новый? |
|||
43
salvator
21.06.13
✎
15:34
|
(41) И что непонятного?
|
|||
44
Валидатор
21.06.13
✎
15:35
|
(43) как получить тогда данный документ?
|
|||
45
Валидатор
21.06.13
✎
15:42
|
и получитьобъект() метода нет
|
|||
46
salvator
21.06.13
✎
15:50
|
Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
|
|||
47
Валидатор
21.06.13
✎
16:09
|
(46) спс, получилось, а все таки с ЭтоНовый интересна ситуация, не работает он у упр приложении что ли?
|
|||
48
Deon
21.06.13
✎
16:17
|
(47) ибо это метод объекта, а не ДанныеФормыСтруктура
|
|||
49
Валидатор
21.06.13
✎
16:20
|
(48) а как получить объект в упр приложении? в обычном было обращение к документу и потом.ПолучитьОбъект() тут я такого не нашел
|
|||
50
salvator
21.06.13
✎
16:27
|
(49) Через ДанныеФормыВЗначение(Объект,Тип("ДокументОбъект.ИмяТвоегоДокумента"));
|
|||
51
Валидатор
21.06.13
✎
16:30
|
(50) понятно, жестко конечно, но спс)))
|
|||
52
Deon
21.06.13
✎
16:37
|
(50) РеквизитФормыВЗначение("Объект") попроще буит
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |