Имя: Пароль:
1C
 
8.2 Правильная - ли логика в данной ситуации?
0 lanc2233
 
25.02.10
23:08
Абстрактный пример.

В шапке документа реквизит ВидНДС, тип Справочник.СтавкиНалогов, в справочнике есть реквизит ставка.

В документе, есть реквизиты сумма с ндс, сумма без ндс. Один пересчитывается при изменении другого. При пересчете нужно значение ставки элемента "ВидНДС".
Если каждый раз при пересчете обращаться к этому реквизиту, будет происходить вызов сервера, что нежелательно?

Если да, то как решение сделать реквизит формы, в котором при изменении вида ндс хранить его ставку?
1 IamAlexy
 
25.02.10
23:10
неосновной реквизит в который писать значение ставки при изменении реквизита ВидНДС ?

затем обращаться к нему ?
2 lanc2233
 
25.02.10
23:12
(1) Да.
3 IamAlexy
 
25.02.10
23:13
(2) ну так вперед!
4 lanc2233
 
25.02.10
23:15
Вопрос в том что нормальный ход или через одно место?
Может реквизит "ВидНДС" хранит весь объект, и обращаться к серверу не будет?
5 IamAlexy
 
25.02.10
23:17
ВидНДС это объект.видндс ?

а ты сделай свой реквизит.
новый
число
и туда пиши значение ставки

назови его чтонить типа мВидНДС
и пиши ставку в него при изменении объект.видндс
6 lanc2233
 
25.02.10
23:20
ВидНДС - тип СправочникСсылка.ИмяСправочника
7 lanc2233
 
25.02.10
23:22
Вопрос не придумал ли я сам себе проблему.
8 IamAlexy
 
25.02.10
23:24
справа у тебя есть жирниньким слово "Объект"
ты под ним правой клавишей мышки ткни и выбери "добавить"
назови этот новый реквизит  "мВидНДС" с типом "число"

затем слева ткни на ВидНДС и в событии "ПриИзменении" сделай что то типа

мВидНДС = ПолучитьСтавку(Объект.ВидНдс); ну или что там у тебя число ставки получает


и далее просто обращайся к реквизиту "мВидНДС"

кстати это присвоение лучше в отдельную процедурку.. и вызывать ее при создании на сервере и при изменении ВидНДС
9 lanc2233
 
25.02.10
23:24
или если совсем свести вопрос, то нормально ли при пересчете обычное обращение ВидНДС.Ставка ?
10 IamAlexy
 
25.02.10
23:25
(9) да всем пофиг.. особенно если у тебя пересчет строки это универсальная функция выполняемая на сервере.. а там уже насервере спокойно к данным можно обращаться..

а вот если ты "чисто цифры" на клиенте считаешь то да - можно сохранить на клиенте же значение ставки и затем его цинично использовать
11 kiruha
 
25.02.10
23:33
(1)
Это 8.2 !
Позволяет размещать реквизиты типа
ВидНДС.Значение
12 kiruha
 
25.02.10
23:34
Явно в головах еще 8.1
13 IamAlexy
 
25.02.10
23:36
(11) ну и твое решение ?
14 lanc2233
 
25.02.10
23:36
Решил смоделировать.

&НаКлиенте
Процедура Тест(Команда)
   ЗН = ВидНДС.Ставка;
   ПоказатьОповещениеПользователя(ЗН);
КонецПроцедуры

Переменная не определена (ВидНДС)
ЗН = <<?>>ВидНДС.Ставка; (Проверка: Тонкий клиент)
15 kiruha
 
25.02.10
23:44
(14)
Что это ?
В Форме перетаскиваешь из списка реквизитов в список элементов формы
Объект.ВидНДС.Ставка
16 kiruha
 
25.02.10
23:46
Тоже самое по другому
добавляешь поле
ПутьКДанным Объект.ВидНДС.Ставка
17 lanc2233
 
25.02.10
23:55
(15) ты не понял, пользователи должны выбирать Элемент с названием "Без НДС", а для пересчета нужно поле "ставка" этого элемента.
18 kiruha
 
25.02.10
23:57
(17)
Ну и поле элемента
19 IamAlexy
 
25.02.10
23:58
20 IamAlexy
 
26.02.10
00:01
(16) честно. не понял.
21 lanc2233
 
26.02.10
00:08
(19) ну ты и оперативно смоделировал )) спасибо.
22 IamAlexy
 
26.02.10
00:11
(21) тестовая база на которой всякое такое моделируется всегда включена :)
23 lanc2233
 
26.02.10
00:13
у меня все равно какая-то фигня

&НаКлиенте
Процедура ВидНДСПриИзменении(Элемент)
   мСтавка = Объект.ВидНДС.Ставка;
КонецПроцедуры

вылетает рантайм ошибка

Поле объекта не обнаружено (Ставка)
   мСтавка = Объект.ВидНДС.Ставка;
24 IamAlexy
 
26.02.10
00:14
у тебя реквизит "Ставка" есть то  у справочника ?
25 IamAlexy
 
26.02.10
00:15
у меня есть :)
а у тебя наверняка как в типовых вид ндс это перечисление.
и есть где то в общих модулях по учету НДС некая функция
которая возвращает числовое значение ставки по передаваемому в нее перечислению
26 IamAlexy
 
26.02.10
00:15
а внутри там тупые "если" :)
27 lanc2233
 
26.02.10
00:18
та я тоже на тестовой базе из одного документа делаю.

Ставка есть, на всякий случай даже копипастом со свойств реквизита скопировал...
28 IamAlexy
 
26.02.10
00:18
у тебя Объект.ВидНДС это что такое - справочник или перечисление ?
29 lanc2233
 
26.02.10
00:20
Справочник
30 lanc2233
 
26.02.10
00:21
СправочникСсылка.Налоги
31 lanc2233
 
26.02.10
00:24
А если поставить &НаСервере нормально проходит :-/
32 IamAlexy
 
26.02.10
00:24
(31) а зачем нам на сервере.
нам же надо все на клиенте реализовать :)
33 IamAlexy
 
26.02.10
00:25
на сервере любой дурак может.. задача то свести к нулю серверные вызовы :)
34 kiruha
 
26.02.10
00:25
2 поля на форме

Объект.ВидНДС     для выбора пользователя
Объект.ВидНДС.Ставка для хранения значения

точно также как в табличной части
Номенклатура
Номенклатура.Артикул
35 IamAlexy
 
26.02.10
00:27
(34) а я про что ?
36 IamAlexy
 
26.02.10
00:30
37 lanc2233
 
26.02.10
00:35
посмотрел, вроде все то-же сделал.
http://xmage.ru/?v=1267133474.jpg

может где-то галочка какая ...
а тебе можно конфу кинуть?
38 IamAlexy
 
26.02.10
00:38
(37) кидай.. она не тяжолая ?
39 lanc2233
 
26.02.10
00:39
нет, один документ )
дай адрес
40 IamAlexy
 
26.02.10
00:41
narod.yandex.ru
41 IamAlexy
 
26.02.10
00:41
:)
42 IamAlexy
 
26.02.10
00:41
через файлопомойку любую кинь :)
43 IamAlexy
 
26.02.10
00:41
ну или в личке есть аська вроде бы.. вроде там же и емыл был
44 lanc2233
 
26.02.10
00:44
webfile.ru/4322992
45 IamAlexy
 
26.02.10
00:49
аблин
46 IamAlexy
 
26.02.10
00:49
это у меня режимсовместимости был включен 6)
конечно там нужно на сервере воткнуть.. все же до реквизита то достучаться нужно же :)
47 lanc2233
 
26.02.10
00:50
Понятно. Спасибо )
48 IamAlexy
 
26.02.10
00:57
или это из за толстого клиента.. ща проверю
49 IamAlexy
 
26.02.10
00:59
гы
это из за того что я в толстом проверял все.
50 lanc2233
 
26.02.10
01:00
Понятно, а я даже не обращал внимания какой запускаю. Оказывается тонкий.
51 lanc2233
 
26.02.10
01:01
Честно говоря не понятно зачем 1с заварила всю эту кашу, когда есть сервер терминалов.
52 IamAlexy
 
26.02.10
01:03
(51) очень даже понятно.
максимальное облегчение клиента + унификация + web
53 lanc2233
 
26.02.10
01:04
Терминал это все решает.
Можно полноценно работать даже за самом убитым компом на 95-й винде.
54 IamAlexy
 
26.02.10
01:09
(53) нет.

все же web и терминал - разные вещи..

web будет и безопаснее, и "полегче" чем терминал.

опять же - на терминал лицензии нужны дополнительные, дополнительное железо, обслуживание.

терминал был актуален когда все клиенты были толстыми..

а сейчас смысла нет.. ну запусти в терминале тонкого клиента или веб клиента - разницы вообще никакой
55 IamAlexy
 
26.02.10
01:09
то есть на лицо экономия в железе и лицензиях терминальных
56 lanc2233
 
26.02.10
01:13
а чья лицензия дороже терминальная или 1с-ная ? я цен на терминал не знаю.

а поповоду железа и настроек - поднять и админить веб сервер тоже не самая тривиальная задача, настроить сервер терминалов куда попроще. И желелеза он тоже впоряде будет требовать.
57 lanc2233
 
26.02.10
01:22
по поводу Первого вопроса - теперь еще и при открытии документа эту мСтавка инициализировать надо.
58 IamAlexy
 
26.02.10
01:26
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
   мВидНДС = Объект.ВидНДС.ставка;
КонецПроцедуры
59 lanc2233
 
26.02.10
01:28
а когда это событие срабатывает?
60 lanc2233
 
26.02.10
01:29
и где оно описывается?
61 lanc2233
 
26.02.10
01:31
Нашел. Событие формы