Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Как они это сделали? сумма в документе ПеремещениеТоваров. УФ. БП3

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

реквизит "проведен" записывается тоже в ПередЗаписью.
   Lazy Stranger
 
42 - 02.12.18 - 22:44
(41) а если в процессе проведения выяснилось что документ провестись не может - тогда что?
   H A D G E H O G s
 
43 - 02.12.18 - 22:47
(42) Транзакция откатывается.
   Lazy Stranger
 
44 - 02.12.18 - 22:54
(43) новый документ, нажали кнопку "записать и провести", документ не провелся, он при этом запишется?
   H A D G E H O G s
 
45 - 02.12.18 - 22:55
(44) Нет.
   H A D G E H O G s
 
46 - 02.12.18 - 22:56
(44) Транзакция одна, на запись и проведение.
   Lazy Stranger
 
47 - 02.12.18 - 22:57
(45) спасибо, более или менее понятно, после 7.7, где в транзакции было только проведение уже после записи, выглядит довольно непривычно
   Garykom
 
48 - 02.12.18 - 22:57
(44) Эта кнопка "записать и провести" может вызывать и два действия сначала РежимЗаписиДокумента.Запись и только затем РежимЗаписиДокумента.Проведение
   H A D G E H O G s
 
49 - 02.12.18 - 22:59
(48) Нет.
 
 Рекламное место пустует
   Garykom
 
50 - 02.12.18 - 23:01
(49) Стандартная команда нет, но откуда мы знаем что накрутили разрабы на кнопку формы?
   H A D G E H O G s
 
51 - 02.12.18 - 23:03
(50) Вы сталкивались с таким в типовых конфигурациях?
   Lazy Stranger
 
52 - 02.12.18 - 23:04
(50) мой вопрос был всё же про стандартную команду, разработчик, подозреваю, по идее может и вообще вместо записи и проведения ссылку на порносайт прикрутить при большом желании
   breezee
 
53 - 03.12.18 - 04:54
А как вы вообще в обработке проведения что-то можете изменять, когда ссылка в базе уже записана? Ваш ответ в том что при первом проведении вы заполняете реквизит, а при втором записываете в базу этот реквизит
   Sinoptic
 
54 - 03.12.18 - 05:26
(0) А в обработчик "ПередЗаписью", вера не позволяет заполнение реквизита вставить?
При событии "Обработка проведения" документ уже записан и проведен, что бы ты сним не делал уже ничего не запишется. В этом обработчике ты должен формировать движения по регистрам или изменять все что угодно, на что фантазии хватит, кроме самого проводимого документа.
Только обрати внимание на то что в обработчике ПередЗаписью есть поле "ТекущийОбъект".
   APXi
 
55 - 03.12.18 - 08:05
(8) При проведении рассчитывалась сумма и менялся реквизит, при этом модифицированность=Истина, далее, при закрытии формы выдается сообщение "Записать" если нажмут "Нет" суммы не будет, если нажмут "Да" тогда будет.
   Aleksey
 
56 - 03.12.18 - 08:14
(36) Т.е. в УФ это кошернее делать через отдельный регистр сведения "Сумма документа"? куда писать ссылку на документ и сумму, и в журнале через левое соединение подтягивать сумму?
   Mankubus
 
57 - 03.12.18 - 08:38
(56) здесь дело не в УФ, а в том что сумма рассчитывается только после проведения документа. В этом случае её нужно писать в регистр
   Serg_1960
 
58 - 03.12.18 - 10:12
(56) Не важно 8.2 или 8.3, не важно обычные или управляемые формы - так, как сделал автор, - так делать нельзя. См.(31)

Объясняю на пальцах:

а) юзверь открыл форму документа, изменил документ и нажал кнопку "Записать и провести" без закрытия формы - СуммаДокумента = 0, что не соответствует реальной сумме документа;

б) автор рассчитал и сохранил в объекте значение СуммаДокумента (допустим оно равно "А").

в) Юзверь вновь изменил документ (допустим сумма документа изменилась и стала равна значению "Б") и опять нажал кнопку "Записать и провести" - в базу записан обновлённый документ, СуммаДокумента = А - это предыдущее, старое значение документа. Так, как новое значение (Б) автор рассчитает только после записи объекта в базу;

г) Если юзверь закроет форму без сохранения документа, то  в базе может быть документ, у которого СуммаДокумента не соответствует реальной сумме документа (0 или А<>Б).

В процессе сеанса редактирования дважды возникает вероятность искажения данных - "Жесть. За такое надо расстреливать."(цы)
   Cyberhawk
 
59 - 03.12.18 - 10:23
(35) "повторная программная запись" // Ну вот видишь, не совсем значит маразм-то в (23) :)
   Cyberhawk
 
60 - 03.12.18 - 10:25
(58) Так автор ни про какую форму вроде не говорит - все в обработке проведения в модуле объекта у него же делается
   Ник080808
 
61 - 03.12.18 - 10:29
(56) Ни в 77 ни в 8ке в обычных формах,ни в уф никто не записывает реквизиты объекта во время его проведения. Правильно записывать значение реквизита во время записи до проведения. Но если не хочется переписывать типовые движения объекта, то левое соединение в ДС это лучше чем повторная запись в процессе проведения. И лучше чем При получении данных выводить в обычных формах в списке поле.
   Ник080808
 
62 - 03.12.18 - 10:31
(60) так проведение в форме вызывает обработку проведения в модуле)
   Cyberhawk
 
63 - 03.12.18 - 12:19
(62) И какая разница, что там в форме происходит?
   Serg_1960
 
64 - 03.12.18 - 15:02
(63) Читай (9) и (11) влоть до просветления :)) - пока форма не закрыта - объект в памяти. Правильно сказано в (35) - если уж у автора всё так плохо, то программная запись после проведения.
   Cyberhawk
 
65 - 03.12.18 - 17:00
(64) Что там с тыканьем в форме происходит у автора меня не особо интересует. Тема-то совсем не об этом.
   Serg_1960
 
66 - 03.12.18 - 17:30
Я - про тему автора, а про что Ваша тема в чужой ветке - я не в курсе.
   Aleksey
 
67 - 03.12.18 - 21:22
(61) Я в 7-ке это постоянно делаю и не испытываю проблем
В частности к примеру при проведении реализации я из того что пишется в анализ продаж пишут в реквизит "Прибыль" некоторые цифры и после проведения он заполняется актуальными данными и при этом никаких принудительных повторных движений я не делаю

Или к примеру у меня есть документ заявка клиента и там в ТЧ части есть колонка "Резерв". при проведении документа то что есть на складе ставиться в резерв, и соответствующее значение заполняется в это колонки. В результате после проведения я имею в табличной части количество того что клиент хотел заказать и количество того что реально есть на складе и зарезервировано за клиентом. Очень и удобно и в визуальном плане и в плане печати всяких непокрывашек.

А что так нельзя в 7-ке делать?
   breezee
 
68 - 04.12.18 - 06:26
(67) Нельзя. Курите книжку по 8-ке
   xXeNoNx
 
69 - 04.12.18 - 07:21
(2) в обработке проведения тоже нет "ЭтотОбъект"!


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует