Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
24.07.2013, 23:49
|
|||
---|---|---|---|
|
|||
Регистры накопления. |
|||
#18+
Добрый день! Существует регистр накопления (Платформа 8.2) БронированиеТоваров . Был создан другой регистр накопления СвободныеОстатки . Соответственно, требуется при увеличении забронированного товара в регистре БронированиеТоваров уменьшить на такую же величину позиций в свободном остатке в регистре СвободныеОстатки , и наоборот. Добавил в модуль объекта документа ПродажаТоваров инверсную копию движения по брони. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35.
В итоге при отладке создаю новый документ реализации, бронирую товар. По регистру БронированиеТоваров движение есть, а по регистру СвободныеОстатки движений нет. Не подскажете, что не доделал? Конфигурация разрабатывается на учебном курсе. Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
|
25.07.2013, 00:29
|
|||
---|---|---|---|
|
|||
Регистры накопления. |
|||
#18+
alexander4321, вы записываете только движения по бронированию. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
25.07.2013, 02:22
|
|||
---|---|---|---|
Регистры накопления. |
|||
#18+
А вы записывайте движения Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
25.07.2013, 07:13
|
|||
---|---|---|---|
|
|||
Регистры накопления. |
|||
#18+
SashaM // А вот здесь запишем движения. Движения.СвободныеОстатки.Записать(); Спасибо! Заработало. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
25.07.2013, 22:42
|
|||
---|---|---|---|
|
|||
Регистры накопления. |
|||
#18+
Выше была создана запись движения в регистре СвободныеОстатки при бронировании из самого документа продажи (в модуле документа ПродажаТоваров). Но в созданной конфигурации предусмотрена еще возможность бронирования товара по документу снаружи (не из самого документа). Данная процедура описана в модуле менеджера, вот ее код: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
Не совсем хорошо представляю, где находится этот модуль менеджера. Как видно из приведенного кода, то запись в регистр БронированиеТоваров здесь происходит без строки кода Код: sql 1.
, как было в модуле документа ПродажаТоваров . Более того, из модуля менеджера не могу обратиться к свойству Движения. . Попробовал собрать код наподобие того, что получилось в модуле документа ПродажаТоваров . Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Вставил этот код в конец процедуры в модуле менеджера. При выполнении бронирования снаружи этот код не производит записи в регистр СвободныеОстатки . Как можно исправить это? Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
|
26.07.2013, 01:17
|
|||
---|---|---|---|
|
|||
Регистры накопления. |
|||
#18+
alexander4321, Не совсем хорошо представляю, где находится этот модуль менеджера Если проводить аналогию с ООП, то модуль менеджера - это модуль класса документа, а модуль объекта - это модуль конкретного экземпляра документа. Таким образом, в модуле менеджера не доступен контекст объекта. Там размещаются статические методы, общие для всех экземпляров документов. Поэтому свойство "Движения" там недоступно, как и все остальное, связанное с конкретным документом. Как видно из приведенного кода, то запись в регистр БронированиеТоваров здесь происходит без строки кода покажите где происходит запись, если вам видно ... |
|||
:
Нравится:
Не нравится:
|
|||
|
26.07.2013, 15:48
|
|||
---|---|---|---|
|
|||
Регистры накопления. |
|||
#18+
javapeckerпокажите где происходит запись, если вам видно Вот код, который преподаватель добавлял в модуль менеджера Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
В коде действительно нет строки с командой Записать . Вспомнил, что он создавал отдельную команду и назвал ее ЗабронироватьСнаружи . Предполагаю, что эта команда и запускала на исполнение приведенный код. Если так, то, по всей видимости, мне нужно, чтобы эта же команда запускала исполнение дописанного мной кода? Вечером дома покопаюсь. Иной раз доходит как до утки - на третьи сутки. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
26.07.2013, 16:07
|
|||
---|---|---|---|
|
|||
Регистры накопления. |
|||
#18+
alexander4321, область видимости никто не отменял, после выхода из процедуры "ВыполнитьБронировать(ТекДок)" набор записей будет уничтожен. И ничего записано не будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
26.07.2013, 17:13
|
|||
---|---|---|---|
|
|||
Регистры накопления. |
|||
#18+
javapecker, поковыряюсь еще вечером, может что-нибудь увижу. Код преподавателя из модуля менеджера же исполнялся каким-то образом. Если ничего не получится, то буду в понедельник на консультации узнавать, как нужно было делать. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
26.07.2013, 18:02
|
|||
---|---|---|---|
|
|||
Регистры накопления. |
|||
#18+
alexander4321, Код преподавателя из модуля менеджера же исполнялся каким-то образом вы на 100% в этом уверены? У вас есть конфигурация, в которой этот код выполняется? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
26.07.2013, 21:11
|
|||
---|---|---|---|
|
|||
Регистры накопления. |
|||
#18+
javapecker, могу отправить выгрузку. Работает, только что проверял. Напишите, если нужна выгрузка. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
26.07.2013, 22:00
|
|||
---|---|---|---|
|
|||
Регистры накопления. |
|||
#18+
В документе ПродажаТоваров была создана команда ЗабронироватьСнаружи . В модуле этой команде ЗабронироватьСнаружи присутствуют следующие процедуры: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Получается, что при нажатии кнопки ЗабронироватьСнаружи исполняется процедура на клиенте, которая вызывает процедуру на сервере модуля команды, а та в свою очередь вызывает процедуру ВыполнитьБронирование модуля документа ПродажаТоваров . Еще раз привожу процедуру модуля документа: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36.
Насколько я понял, движения по регистрам БронированиеТоваров и СвободныеОстатки как раз и записывает процедура модуля объекта ПродажаТоваров ВыполнитьБронирование , только при бронировании из документа продажи эта процедура вызывается непосредственно, а при бронировании снаружи процедура вызывается из модуля команды ЗабронироватьСнаружи . Но у меня при запуске конфигурации получается, что, если забронировать товар изнутри документа, то процедура нормально отрабатывает, и движения правильно записываются в оба регистра СвободныеОстатки и БронированиеТоваров . Но, когда эту же процедуру вызываю из модуля команды ЗабронироватьСнаружи , то ничего не пишется в регистры. Не понимаю, как так может быть. Могу отправить выгрузку базы. Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
|
26.07.2013, 23:11
|
|||
---|---|---|---|
|
|||
Регистры накопления. |
|||
#18+
alexander4321, а при бронировании снаружи процедура вызывается из модуля команды ЗабронироватьСнаружи. Но, когда эту же процедуру вызываю из модуля командыснаружи вызывается другая процедура, а не та же самая. У них имена разные, и находятся они в разных местах. Процедура, которая работает, находится в модуле объекта, и называется ВыполнитьБронирование(). Процедура, которая не работает, находится в модуле менеджера, и называется ВыполнитьБронировать(ТекДок). Вот в ней наборы записей нужно записывать, а они у вас не записываются. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
26.07.2013, 23:40
|
|||
---|---|---|---|
|
|||
Регистры накопления. |
|||
#18+
javapeckerВыполнитьБронировать(ТекДок) Точно, невнимательно смотрел. Получается, записал неправильно код в процедуре ВыполнитьБронировать . Вот оригинальный код (то, что преподаватель написал): Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28.
А вот код, который я дописывал в процедуре: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40.
Получается, что преподаватель сделал запись в регистр БронированиеТоваров в одном цикле, а я попытался добавить еще один цикл для записи в регистр СвободныеОстатки . Не подскажете, что не так в коде? Можно ли сделать записи сразу в оба регистра за один цикл? Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.07.2013, 01:20
|
|||
---|---|---|---|
|
|||
Регистры накопления. |
|||
#18+
alexander4321, вы выкинули самое главное из процедуры преподавателя: //запись набора записей в регистр НаборЗаписей.Записать(); Можно ли сделать записи сразу в оба регистра за один цикл?Можно, создайте два набора записей перед циклом, в цикле запишите туда движения, в один регистр приход, в другой расход, после цикла запишите оба набора записей, и желательно это сделать в транзакции ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.07.2013, 02:02
|
|||
---|---|---|---|
|
|||
Регистры накопления. |
|||
#18+
javapecker, Все работает. Спасибо! Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43.
Единственное, что лень уже все в один цикл переписывать. Завтра на свежую голову перепишу. Еще раз спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.07.2013, 10:19
|
|||
---|---|---|---|
|
|||
Регистры накопления. |
|||
#18+
Добрый день! При бронировании товара требуется также проверять количество товаров в свободном остатке по регистру СвободныеОстатки . Составил запрос с помощью конструктора запросов в процедуре ВыполнитьБронирование (делал по аналогии с тем, как преподаватель делал в процедуре ОбработкаПроведения ). Вот сама процедура: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88.
Все прекрасно работает, только не происходит отказ бронирования. В процедуру ОбработкаПроведения передаются два параметра: Отказ, Режим Код: sql 1.
А в процедуру ВыполнитьБронирование никакие параметры не передаются Код: sql 1.
Попробовал, конечно, вставить туда эти параметры, но это не сработало. Не подскажете, как можно сделать так, чтобы бронирование все таки не выполнялось при отрицательном количестве свободных остатков? Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.07.2013, 14:24
|
|||
---|---|---|---|
|
|||
Регистры накопления. |
|||
#18+
alexander4321, Если процедура ВыполнитьБронирование() выполняется из обработки проведения, добавьте в ее определение параметр "Отказ" и передайте в нее параметр "Отказ" обработки проведения. Если внутри процедуры вы установите его в истину, транзакция обработки проведения откатится, и в регистры ничего не запишется. И посмотрите где-нибудь как проверять остатки, ваш запрос вернет только строки, у которых остаток меньше нуля, а таких, по вашим условиям, вообще не должно быть. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
30.07.2013, 07:23
|
|||
---|---|---|---|
|
|||
Регистры накопления. |
|||
#18+
javapecker, не успел я до консультации доделать. Вчера на консультации преподаватель показывал, что действительно нужно было использовать транзакцию. Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
|
30.07.2013, 11:08
|
|||
---|---|---|---|
Регистры накопления. |
|||
#18+
alexander4321, Вложенную транзакцию? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
30.07.2013, 11:18
|
|||
---|---|---|---|
|
|||
Регистры накопления. |
|||
#18+
AHDP, не вложенную, у него там в модуле менеджера есть процедура, о ней речь, вызывается мимо обработки проведения. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=28&tablet=1&tid=1519739]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
29ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 313ms |
total: | 432ms |
0 / 0 |