|
Как они это сделали? сумма в документе ПеремещениеТоваров. УФ. БП3 | ☑ | ||
---|---|---|---|---|
0
Dmitrith
02.12.18
✎
16:29
|
Понадобилось одному из клиентов чтобы была сумма в документе ПеремещениеТоваров. УФ. БП3
Ну по старой памяти быстренько сварганил реквизит СуммаДокумента, и в обработку проведения засунул строчку: ЭтотОбъект.СуммаДокумента = ТаблицаСписанныеТовары.Итог("СуммаСписания"); Да, понимаю что некрасиво, но это самый простой и быстрый вариант. Проверяю - не работает. Гуглю, нахожу что в 8.3 и не должно работать, а работало только в 8.2. Думаю ладно, оставлю пока этот неработающий вариант, подумаю еще, если не получится отчет запилю. Т.к. в базе были другие доработки поставил как есть в рабочую. Реквизит не скрыл. Утром позвонить что не работает не успел - звонят сами: у нас, говорят, твоя сумма документа в каких-то документах считается, а в каких-то нет. Смотрю в базу - там такая картина: https://clip2net.com/s/3YlwRNb Спрашиваю как вы это сделали - молчат, говорят не знаем. Собственно вопрос сабжевый. Что они такого сделали такого, что реквизит пересчитался, хотя не должен? |
|||
1
Маленький Вопросик
02.12.18
✎
16:32
|
Может надо писать Объект.ТаблицаСписанные.....
|
|||
2
Dmitrith
02.12.18
✎
16:33
|
(1) Нет там "Объект"
|
|||
3
Dmitrith
02.12.18
✎
16:34
|
Посмотрел по версиям - документ просто перепровели:
https://clip2net.com/s/3YlxsKQ |
|||
4
Маленький Вопросик
02.12.18
✎
16:34
|
(2) тогда - ТаблицаСписания - это Таблица Значений
|
|||
5
Злопчинский
02.12.18
✎
16:34
|
Потому что есть перемещения, которые никак не затрагивают/изменяют суммы на объектах учета, а есть - которые изменяют..?
|
|||
6
MaxS
02.12.18
✎
16:35
|
Так проводить документ нужно после его записи и в процессе проведения не менять, т.е. сумму нужно раздобыть перед записью.
|
|||
7
mexanik_96
02.12.18
✎
16:35
|
обработку проведения засунул, не это ответ на вопрос?
|
|||
8
Dmitrith
02.12.18
✎
16:39
|
(6) (7) Вопрос не в этом. Вопрос почему на некоторых документах как раз таки сумма проставилась, хотя не должна т.к. код лежит в обработке проведения
|
|||
9
Ластик
02.12.18
✎
16:43
|
(8) Два раза тыкали в проведение в форме документа
|
|||
10
Dmitrith
02.12.18
✎
16:43
|
(5) Проверил. ТаблицаСписанныеТовары.Итог("СуммаСписания") <> 0 в обоих случаях - когда сумма просчиталась и когда нет
(6) Перед записью не вариант - проводок еще нет, таблицы списания тоже. Пересчитывать дважды один и тот же код нет смысла, проще реестр нарисовать |
|||
11
Dmitrith
02.12.18
✎
16:44
|
(9) обана... работает... как так то?????
|
|||
12
Dmitrith
02.12.18
✎
16:45
|
И чем двойной щелчок отличается от одинарного?
|
|||
13
Garykom
гуру
02.12.18
✎
16:45
|
"ТаблицаСписанныеТовары" уверен что была не пустая когда ты итог брал по ней?
|
|||
14
Dmitrith
02.12.18
✎
16:46
|
(13) уверен. Отгадка как сделали в (9) но почему так пока неясно
|
|||
15
Dmitrith
02.12.18
✎
16:47
|
При чем именно на "Провести". на "Провести и закрыть" не срабатывает
|
|||
16
Garykom
гуру
02.12.18
✎
16:47
|
(14) Хохо может оно там внутри проведения очищается и перезаполняется
|
|||
17
Garykom
гуру
02.12.18
✎
16:48
|
(16)+ В некоторых случаях
|
|||
18
Лефмихалыч
02.12.18
✎
16:49
|
(0) зачем тыкать в небо пальцем и гадать? Запусти отладчик и пройди по шагам, если нужен ответ. Если не нужен, то загадки эти тоже нахрен не надо загадывать.
|
|||
19
Dmitrith
02.12.18
✎
16:49
|
(17) Нет. Стоит последним в ОбработкаПроведения.
И кстати достаточно в форме документа просто два раза нажать "Провести" |
|||
20
Fragster
гуру
02.12.18
✎
16:50
|
короче, автор, все просто. сначала записываешь, потом меняешь объект. потом записываешь снова (второе нажатие на провести) тот же экземпляр. Если форму закрываешь, то экземпляр уже другой. Но чем надо упороться, чтобы делать это не перед записью - я не знаю.
|
|||
21
Dmitrith
02.12.18
✎
16:52
|
(20) Да. Теперь понял что второй раз данные берутся из формы. Перед записью почему не сделал уже писал - Таблица списания еще не сформирована, проводок, по которым собрать сумму можно тоже нет. Можно только еще раз рассчитать себестоимость, но это по-моему еще худшее решение
|
|||
22
Fragster
гуру
02.12.18
✎
16:52
|
еще непонятно, что автор делал 7 лет 4 месяца и 26 дней. Но на всякий случай дам ему ссылку на один из букварей. https://its.1c.ru/db/pubdevguide83#content:612:hdoc
|
|||
23
PR
02.12.18
✎
16:52
|
(0) >>и в обработку проведения засунул строчку: ЭтотОбъект.СуммаДокумента =
Дальше этого маразма не читал |
|||
24
Fragster
гуру
02.12.18
✎
16:54
|
(21) ну прилепи РС с регистратором твоим документом и в него пихай сумму в той же обработке проведения. потом выводи куда тебе надо. а вообще если в документе перед записью недостаточно данных для того, чтобы сформировать проводки - это прям воняет ошибкой в архитектуре. ну и интересные эффекты при правке задних чисел также могут наблюдаться.
|
|||
25
Dmitrith
02.12.18
✎
16:55
|
(22) уже в курсе. в 8.2 такой код работал, с 8.3 работаю гораздо реже, к тому же как правило стараюсь не использовать такой гонвнокод, но клиенту надо было вчера и прямщас
|
|||
26
Fragster
гуру
02.12.18
✎
16:56
|
в 8.2 такой код не работал. возможно (!) возводился флаг модифицированности у формы, но это не точно.
|
|||
27
Fragster
гуру
02.12.18
✎
16:56
|
задам такой вопрос на собеседовании.
|
|||
28
Dmitrith
02.12.18
✎
16:57
|
(24) себестоимость вообще-то в ОбработкеПроведения считается, а не в ПередЗаписью. И дважды считать одно и то же нет смысла
|
|||
29
Cyberhawk
02.12.18
✎
17:12
|
(23) А как бы ты заполнял итоговую сумму (по данным из проводок)?
|
|||
30
Полбатона
02.12.18
✎
17:32
|
(28) Реквизит объекта можно изменить только перед записью, в обработке проведения объект уже записан в базу. Стыдно такое не знать.
|
|||
31
Serg_1960
02.12.18
✎
20:24
|
Хех... если вы посидите и подумаете, то осознаете то, что автор нарывается на неприятности, сохраняя устаревшее значение предыдущего состояния документа. Расшифровать или сами уже всё поняли?
|
|||
32
Fragster
гуру
02.12.18
✎
21:53
|
(28) а что ты называешь себестоимостью?
|
|||
33
timurhv
02.12.18
✎
22:01
|
(26) Все верно, в 8.2 такое не работало.
(23) В типовой бухгалтерии это решается с помощью регистра сведений. |
|||
34
timurhv
02.12.18
✎
22:02
|
(33) к (29), а не 23 ответу.
|
|||
35
PR
02.12.18
✎
22:17
|
(29) Либо регистр сведений либо в случае употребления заказчиком тяжелых наркотиков и моей по какой-то причине невозможности отказаться от такого решения повторная программная запись в режиме ОбменДанными.Загрузка = Истина или с использованием дополнительного параметра объекта
Но вообще я не припомню у себя таких случаев |
|||
36
Ник080808
02.12.18
✎
22:22
|
(0) жесть. За такое надо расстреливать. Я понимаю в обычных формах такое городить, но в уф в динамическом списке
|
|||
37
Lazy Stranger
02.12.18
✎
22:29
|
Как же у вас в этих 8.х всё запутано по сравнению с 7.7. Вроде и проведение и запись происходят на стороне сервера. Почему повторная запись в конце проведения - это такой сложный квест?
|
|||
38
H A D G E H O G s
02.12.18
✎
22:32
|
(37) Просто вы немножко вымирающий мамонт.
|
|||
39
H A D G E H O G s
02.12.18
✎
22:32
|
(37) УФ и БСП наследуют этот мир.
|
|||
40
Lazy Stranger
02.12.18
✎
22:39
|
(38,39) оно конечно так, но понятнее не стало: я конечно нифига в обсуждаемой теме не понимаю, но всё же: реквизит "проведен" по идее должен автоматом записаться в таблице документов в конце проведения, почему для записи другого реквизита нужны танцы с бубном? я это не к тому что "8-ка сырая", а как раз сейчас всякие курсы смотрю и пытаюсь понять что там и как
|
|||
41
hhhh
02.12.18
✎
22:42
|
(40) "реквизит "проведен" по идее должен автоматом записаться в таблице документов в конце проведения" - не угадал
реквизит "проведен" записывается тоже в ПередЗаписью. |
|||
42
Lazy Stranger
02.12.18
✎
22:44
|
(41) а если в процессе проведения выяснилось что документ провестись не может - тогда что?
|
|||
43
H A D G E H O G s
02.12.18
✎
22:47
|
(42) Транзакция откатывается.
|
|||
44
Lazy Stranger
02.12.18
✎
22:54
|
(43) новый документ, нажали кнопку "записать и провести", документ не провелся, он при этом запишется?
|
|||
45
H A D G E H O G s
02.12.18
✎
22:55
|
(44) Нет.
|
|||
46
H A D G E H O G s
02.12.18
✎
22:56
|
(44) Транзакция одна, на запись и проведение.
|
|||
47
Lazy Stranger
02.12.18
✎
22:57
|
(45) спасибо, более или менее понятно, после 7.7, где в транзакции было только проведение уже после записи, выглядит довольно непривычно
|
|||
48
Garykom
гуру
02.12.18
✎
22:57
|
(44) Эта кнопка "записать и провести" может вызывать и два действия сначала РежимЗаписиДокумента.Запись и только затем РежимЗаписиДокумента.Проведение
|
|||
49
H A D G E H O G s
02.12.18
✎
22:59
|
(48) Нет.
|
|||
50
Garykom
гуру
02.12.18
✎
23:01
|
(49) Стандартная команда нет, но откуда мы знаем что накрутили разрабы на кнопку формы?
|
|||
51
H A D G E H O G s
02.12.18
✎
23:03
|
(50) Вы сталкивались с таким в типовых конфигурациях?
|
|||
52
Lazy Stranger
02.12.18
✎
23:04
|
(50) мой вопрос был всё же про стандартную команду, разработчик, подозреваю, по идее может и вообще вместо записи и проведения ссылку на порносайт прикрутить при большом желании
|
|||
53
breezee
03.12.18
✎
04:54
|
А как вы вообще в обработке проведения что-то можете изменять, когда ссылка в базе уже записана? Ваш ответ в том что при первом проведении вы заполняете реквизит, а при втором записываете в базу этот реквизит
|
|||
54
Sinoptic
03.12.18
✎
05:26
|
(0) А в обработчик "ПередЗаписью", вера не позволяет заполнение реквизита вставить?
При событии "Обработка проведения" документ уже записан и проведен, что бы ты сним не делал уже ничего не запишется. В этом обработчике ты должен формировать движения по регистрам или изменять все что угодно, на что фантазии хватит, кроме самого проводимого документа. Только обрати внимание на то что в обработчике ПередЗаписью есть поле "ТекущийОбъект". |
|||
55
APXi
03.12.18
✎
08:05
|
(8) При проведении рассчитывалась сумма и менялся реквизит, при этом модифицированность=Истина, далее, при закрытии формы выдается сообщение "Записать" если нажмут "Нет" суммы не будет, если нажмут "Да" тогда будет.
|
|||
56
Aleksey
03.12.18
✎
08:14
|
(36) Т.е. в УФ это кошернее делать через отдельный регистр сведения "Сумма документа"? куда писать ссылку на документ и сумму, и в журнале через левое соединение подтягивать сумму?
|
|||
57
Mankubus
03.12.18
✎
08:38
|
(56) здесь дело не в УФ, а в том что сумма рассчитывается только после проведения документа. В этом случае её нужно писать в регистр
|
|||
58
Serg_1960
03.12.18
✎
10:12
|
(56) Не важно 8.2 или 8.3, не важно обычные или управляемые формы - так, как сделал автор, - так делать нельзя. См.(31)
Объясняю на пальцах: а) юзверь открыл форму документа, изменил документ и нажал кнопку "Записать и провести" без закрытия формы - СуммаДокумента = 0, что не соответствует реальной сумме документа; б) автор рассчитал и сохранил в объекте значение СуммаДокумента (допустим оно равно "А"). в) Юзверь вновь изменил документ (допустим сумма документа изменилась и стала равна значению "Б") и опять нажал кнопку "Записать и провести" - в базу записан обновлённый документ, СуммаДокумента = А - это предыдущее, старое значение документа. Так, как новое значение (Б) автор рассчитает только после записи объекта в базу; г) Если юзверь закроет форму без сохранения документа, то в базе может быть документ, у которого СуммаДокумента не соответствует реальной сумме документа (0 или А<>Б). В процессе сеанса редактирования дважды возникает вероятность искажения данных - "Жесть. За такое надо расстреливать."(цы) |
|||
59
Cyberhawk
03.12.18
✎
10:23
|
(35) "повторная программная запись" // Ну вот видишь, не совсем значит маразм-то в (23) :)
|
|||
60
Cyberhawk
03.12.18
✎
10:25
|
(58) Так автор ни про какую форму вроде не говорит - все в обработке проведения в модуле объекта у него же делается
|
|||
61
Ник080808
03.12.18
✎
10:29
|
(56) Ни в 77 ни в 8ке в обычных формах,ни в уф никто не записывает реквизиты объекта во время его проведения. Правильно записывать значение реквизита во время записи до проведения. Но если не хочется переписывать типовые движения объекта, то левое соединение в ДС это лучше чем повторная запись в процессе проведения. И лучше чем При получении данных выводить в обычных формах в списке поле.
|
|||
62
Ник080808
03.12.18
✎
10:31
|
(60) так проведение в форме вызывает обработку проведения в модуле)
|
|||
63
Cyberhawk
03.12.18
✎
12:19
|
(62) И какая разница, что там в форме происходит?
|
|||
64
Serg_1960
03.12.18
✎
15:02
|
(63) Читай (9) и (11) влоть до просветления :)) - пока форма не закрыта - объект в памяти. Правильно сказано в (35) - если уж у автора всё так плохо, то программная запись после проведения.
|
|||
65
Cyberhawk
03.12.18
✎
17:00
|
(64) Что там с тыканьем в форме происходит у автора меня не особо интересует. Тема-то совсем не об этом.
|
|||
66
Serg_1960
03.12.18
✎
17:30
|
Я - про тему автора, а про что Ваша тема в чужой ветке - я не в курсе.
|
|||
67
Aleksey
03.12.18
✎
21:22
|
(61) Я в 7-ке это постоянно делаю и не испытываю проблем
В частности к примеру при проведении реализации я из того что пишется в анализ продаж пишут в реквизит "Прибыль" некоторые цифры и после проведения он заполняется актуальными данными и при этом никаких принудительных повторных движений я не делаю Или к примеру у меня есть документ заявка клиента и там в ТЧ части есть колонка "Резерв". при проведении документа то что есть на складе ставиться в резерв, и соответствующее значение заполняется в это колонки. В результате после проведения я имею в табличной части количество того что клиент хотел заказать и количество того что реально есть на складе и зарезервировано за клиентом. Очень и удобно и в визуальном плане и в плане печати всяких непокрывашек. А что так нельзя в 7-ке делать? |
|||
68
breezee
04.12.18
✎
06:26
|
(67) Нельзя. Курите книжку по 8-ке
|
|||
69
xXeNoNx
04.12.18
✎
07:21
|
(2) в обработке проведения тоже нет "ЭтотОбъект"!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |