|
Из модуля объекта к виртуальной таблице оборотов нельзя обратиться? | ☑ | ||
---|---|---|---|---|
0
стажер
25.10.19
✎
17:27
|
Всем привет. Подскажите: Из модуля объекта к виртуальной таблице оборотов нельзя обратиться?
Просто из модуля формы нормально отрабатывает, показывает остаток, а из модуля объекта только оборот. Один и тот же запрос. |
|||
1
palsergeich
25.10.19
✎
17:28
|
(0) можно, скорее всего ты что то делаешь не так
|
|||
2
fisher
25.10.19
✎
17:30
|
Раз один и тот же запрос, значит либо разные параметры, либо разное состояние базы.
|
|||
3
Жан Пердежон
25.10.19
✎
17:36
|
что за вирт.таблица оборотов и почему ты там ищешь остаток?
|
|||
4
стажер
25.10.19
✎
17:51
|
(1) спасибо, значит буду дальше искать где накосячил
(2) состояние одно, запрос один, параметр один отличается (буду в эту сторону копать) (3) РегистрНакопления.Остатки смотрю чисто остаток уже |
|||
5
asady
25.10.19
✎
17:53
|
(4) и видишь "из модуля объекта только оборот" так?
|
|||
6
стажер
25.10.19
✎
17:53
|
(4), к (2) а нет, убрал параметр, все равно результат другой(
|
|||
7
asady
25.10.19
✎
17:56
|
(0) может быть пора уже запрос выкладывать?
|
|||
8
стажер
25.10.19
✎
17:57
|
(5) Вижу не только оборот, вижу все.
я запрос просто копирую и получаю другой результат, поэтому и подумал что раз разница только в месте откуда я его вызываю, возможно из этого места нельзя обращаться к виртуальной таблице остатки. Но в то же время программа не ругается.... |
|||
9
Ахмадинежад
25.10.19
✎
18:01
|
(7)пятница же, надо угадывать
|
|||
10
стажер
25.10.19
✎
18:02
|
(7)
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЛимитныеКартыОстатки.Номенклатура КАК Номенклатура, | ЛимитныеКартыОстатки.КоличествоПервоначальноеОстаток КАК КоличествоПервоначальноеОстаток |ИЗ | РегистрНакопления.ЛимитныеКарты.Остатки(, ) КАК ЛимитныеКартыОстатки"; РезультатЗапроса = Запрос.Выполнить(); Таблица = РезультатЗапроса.Выгрузить(); |
|||
11
asady
25.10.19
✎
18:02
|
(8) код модуля объекта исполняется на сервере - если что.
виртуальная таблица остатков это view таблицы - грубо результат запроса к реальной таблице с некими параметрами (ПВТ) к этой таблице можно обращаться как к обычной таблице sql так что твои сомнения по поводу неуместности обращения к виртуальной таблице остатков из модуля объекта необоснованы |
|||
12
Жан Пердежон
25.10.19
✎
18:02
|
(10) вагную, что сам документ делает движения, которые влияют на искомый оборот/остаток
|
|||
13
стажер
25.10.19
✎
18:04
|
(12) тогда при повторном обращении сумма будет меняться, а она не меняется
|
|||
14
стажер
25.10.19
✎
18:05
|
но вариант хороший, я проверю
|
|||
15
Chameleon1980
26.10.19
✎
07:24
|
(13) а что меняется?
Где сумма у тебя? Или ты про количество в сумме? |
|||
16
Фрэнки
26.10.19
✎
08:16
|
Скорей всего, при попытке считывания данных из регистра запросом изнутри открытой транзакции для создания новых движений просто запрос не видит обновленных данных, т.к. эти данные созданы "внутри" транзакции, а чтение выполняется "снаружи".
Очень часто, для избегания подобных неоднозначностей, через параметры и условия запроса умышлено ставят ограничение, чтобы данные текущего документа запрос не мог прочитать, вне зависимости от способа установленного в СУБД "грязного" чтения. Затем к результатам запроса добавляют ожидаемые результаты движений... Могу ошибаться, но при разработке в актуальных типовых механизма контроля остатков отказались от установки ТА на момент времени документа для получения данных накопительных регистров. з.ы. Если у сообщества настроение совпадет, то сам топик весьма годный наброс для холивара выходного дня :-) |
|||
17
стажер
27.10.19
✎
19:30
|
(16) Скорее всего вы правы.
Тут схема такая: Первый документ делает движение (по регистру остатков) со знаком плюс, второй документ делает движение со знаком минус. Задача: после проведения второго документа обновить первый документ, чтобы он в списке документов стал серым (признак того что по нему все отгружено). Я пытаюсь это решить так: Во втором документе в Процедуре ОбработкаПроведения после движений по регистру перепровожу первый документ. Но этот способ не дает нужных результатов. Данные текущего (второго) документа в регистре как будто отсутствуют. |
|||
18
palsergeich
27.10.19
✎
19:33
|
(17) Очень странный вариант реализации
|
|||
19
стажер
27.10.19
✎
19:37
|
(18) а как правильно?
|
|||
20
palsergeich
27.10.19
✎
19:41
|
Самый простой вариант решения - делаешь РС.
В нем 1 измерение - документ заказа (1 документ) Когда проводится 2ой документ - делаешь запись в этот регистр. Все. И соответственно в списке соединяешься с этим регистром. Если запись есть - то цвет 1 если нет - то не красишь |
|||
21
palsergeich
27.10.19
✎
19:43
|
Или второй вариант.
Оборотный РН. 2 ресурса: Заказано отгружено 1 документ делает запись в ресурс Заказано 2ой в отгружено Когда Заказано = отгружено - красишь, иначе ничего не делаешь |
|||
22
palsergeich
27.10.19
✎
19:45
|
(17) Просто по основамархитектуры 1с. Изменение состояния одного объекта не должно неявно менять состояние другого объекта.
При проведении одного документа перепроводить второй - это очень неправильно в общем случае. Есть ситуации когда это можно, но это серьезное и осмысленное решение |
|||
23
стажер
27.10.19
✎
20:05
|
(20) (21) (22) Спасибо большое за подробный ответ и за совет!
|
|||
24
palsergeich
27.10.19
✎
20:08
|
(23) я думаю что измерения (21) ты сможешь самостоятельно добавить.
Так де дополю почему при проведенииодного документа не стоит проводить другой. Заказ у тебя сделан в январе, а огррузка в феврале. Январь закрыт. Или контроль даты запрета изменений из БСП тебе не даст этого сделать Или бухгалтера тебя на рее вздернут за проведение документа в закрытом периоде. |
|||
25
стажер
27.10.19
✎
20:18
|
(24) да, согласен, погорячился)
Сейчас пытаюсь красить из списка. Ставлю в нем точку останова, но на ней не останавливается. Создал новый список - тоже самое.... Не пойму что не так.. |
|||
26
стажер
27.10.19
✎
20:20
|
в других документах работает а тут нет
|
|||
27
palsergeich
27.10.19
✎
20:22
|
(25) Где ставишь останову?
|
|||
28
стажер
27.10.19
✎
20:25
|
в списке документа первого в процедуре ПриОткрытии
|
|||
29
palsergeich
27.10.19
✎
20:27
|
(28) УФ/ОФ?
|
|||
30
стажер
27.10.19
✎
20:31
|
(29) уф
|
|||
31
palsergeich
27.10.19
✎
20:36
|
Ты код копировал из другого места?
Там просто если тупо скопировать при открытии оно не будет срабатывать. Удали код. Потом добавь обработчик при открытии а потом только копируй код. И да изменение параметров ДС лучшеделать ПриСозданииНаСервере |
|||
32
стажер
27.10.19
✎
20:52
|
(31) Да, копировал. Спасибо огромное еще раз. Я б в жизни сам не догадался, что такое может быть: что скопированный обработчик - не считается за обработчик.
|
|||
33
Курцвейл
28.10.19
✎
05:38
|
(16) Это не так. Более того для системы расчета ЗП нужно чтобы модуль провидения видел итоги записей этим же документом.
Для исключений видений используют систему управляемых блокировок и ВидГраницы для ограничения чтений данных регистров. |
|||
34
DrWatson
28.10.19
✎
09:00
|
(17) Скажу про "Данные второго документа в регистре как будто отсутствуют.".
Когда ты смотришь остаток, то ты видишь что отсутствует именно остаток, а не данные второго документа. Т.е. ситуация такая - сработал второй документ, списал остаток. А ноль в остатках не показывается, поэтому ты ничего и не видишь. Другое дело, что тебе это никак не поможет, т.к. что до проведения первого документа, что после полного списания - всё равно будет ноль. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |