|
Задача 1.8 | ☑ | ||
---|---|---|---|---|
0
andr_hav
20.10.11
✎
14:10
|
http:/Задача 1.8.
Компания занимается оптовой торговлей. Поступление товаров отражается документом «Приходная накладная», продажа - «Расходная накладная». Закупка товара происходит только в отдел закупок, а непосредственно продажа происходит в торговых точках. Перемещение товара происходит по трансфертной цене и также отражается документом «Расходная накладная», при этом цена продажи не указывается. Товар может перемещаться только из отдела закупок в торговую точку: Трансфертная цена определяется как себестоимость перемещаемого товара, увеличенная на процент наценки, задаваемый для каждой торговой точки. При продаже товара необходимо в первую очередь контролировать хватает ли товара в данной торговой точке. Если нет - необходимо программно создать документ по перемещению недостающего товара из отдела закупок. В том случае, когда и в отделе закупок товара не хватает, документ для перемещения не создается, а продажа не производится (документ не проводится). Кто нибуть подскажите алгоритм правильного решения. Я делаю так: проверяю остаток в документе если не хватает создаю программно документ перемещения, провожу, и возвращаюсь в обработку проведения первого документа, но так как созданный документ создан в транзакции первого , то он не внесет движения в базу, а следовательно первый докумен не проведется за недостаточностью товара, замкнутый круг. Эта задача имеет ли логическое решение или нет. |
|||
1
Ненавижу 1С
гуру
20.10.11
✎
14:15
|
(0) с чего ты взял, что внутри одной транзакции не видны изменения?
|
|||
2
andr_hav
20.10.11
✎
14:18
|
Обработка проведения выполняется в транзакция, значит все измненения и записи будут добавлены в базу только после успешного выполнения процедуры и транзакция закрывается и все изменения записывабтся в базу или не если произошла ошибка в транзакции.
с чего ты взял, что внутри одной транзакции не видны изменения? я повторно запускаю запрос о наличии остатков и результат выдается без движения созданного документа |
|||
3
Волесвет
20.10.11
✎
14:20
|
можно такой финт ушами замутить - смотреть остатки и на точке и отделе закупок вместе, хватает проводим документ, а отриц остаток на точке гасим перемещением с отдела закупок....
|
|||
4
Irbis
20.10.11
✎
14:20
|
А сразу останки в двух точках почему нельзя проверить?
|
|||
5
Ненавижу 1С
гуру
20.10.11
✎
14:21
|
(2) наверное не на тот момент смотрите остатки
все там видно |
|||
6
дущ
20.10.11
✎
14:26
|
Мне всё-таки кажется, что т.к. задача каноническая, то проводить один документ внутри другого нельзя. Нельзя по стандартам разработки. Т.е. всю эту лабуду с проверкой и формированием нужно вешать на отдельную кнопку. Нажал кнопку "Проверить" - сформировалось - проводи.
|
|||
7
andr_hav
20.10.11
✎
14:26
|
можно такой финт ушами замутить - смотреть остатки и на точке и отделе закупок вместе, хватает проводим документ, а отриц остаток на точке гасим перемещением с отдела закупок....
Ответ: Хороший вариан буду его пробывать реализовывать, хотя нет, проблема в расчете себестоимости, нужно расчитывать себестоимость по складу продажи, а на нем пока товары в недостаче (2) наверное не на тот момент смотрите остатки все там видно Ответ: Документ перемещения создаю на 1 секунда позже, а остатки проверяю на дату первого документа, хотя нужно мне проверить еще раз новым запросос, просто я использовал первый(проверка на наличие остатков на нужном складе) и запускал его еще раз |
|||
8
дущ
20.10.11
✎
14:28
|
+(6)(7)Естественно, что запрос не видит движения из незаписанной транзакции. Поэтому что бы весь этот огород не городить имеет смысл прямо из формы перехватывать кнопку "Проверсти" и формировать документы последовательно, но вне транзакции.
|
|||
9
andr_hav
20.10.11
✎
14:32
|
Мне всё-таки кажется, что т.к. задача каноническая, то проводить один документ внутри другого нельзя. Нельзя по стандартам разработки. Т.е. всю эту лабуду с проверкой и формированием нужно вешать на отдельную кнопку. Нажал кнопку "Проверить" - сформировалось - проводи.
В принципе Вы правы, но как тогда поступить с условием задачи, возможно уйти немного всторону от условия, или эта ситуаци подлежит обсуждению с преподователем |
|||
10
Ненавижу 1С
гуру
20.10.11
✎
14:33
|
"Документ перемещения создаю на 1 секунда позже, а остатки проверяю на дату первого документа"
ну и? |
|||
11
andr_hav
20.10.11
✎
14:35
|
проверка и Формирования документа перемещения осуществляется в ручную по кнопке и после проводится документ?
"Документ перемещения создаю на 1 секунда позже, а остатки проверяю на дату первого документа" ну и? Ответ: остатков не хватает! |
|||
12
Asirius
20.10.11
✎
14:36
|
(0)
>>но так как созданный документ создан в транзакции первого , то он не внесет движения в базу, Бред. В типовых 8.2 снначала делаются движения, потом проверяются остатки. И если минус - то откат транзакции. |
|||
13
FIXXXL
20.10.11
✎
14:37
|
(11) проверяй на КонецДня(ДатаДока)
|
|||
14
ale-sarin
20.10.11
✎
14:39
|
А почему бы "Перемещение" не делать из "ПередЗаписью()" (с проверкой на "режим записи") первого документа?
|
|||
15
дущ
20.10.11
✎
14:40
|
(9) из моего опыта сдачи этих экзаменов - скорее всего на этот вопрос преподаватель не ответит. Вопросы можно задавать по толкованию постановки задачи, а не по технической реализации. Нам, например, экзаменатор говорил - "Представьте, что я заказчик и разбираюсь в компьютерах исключительно на уровне пользователя" отсюда и вопросы мне задавайте.
А решение просто: перехватываешь ПередЗаписью В ФОРМЕ документа, проводишь это своё перемещение, а потом уже и сам документ естественным способом проводится. |
|||
16
ale-sarin
20.10.11
✎
14:43
|
(15) Я бы не из формы, а из модуля перехватывал.
|
|||
17
andr_hav
20.10.11
✎
14:43
|
(9) из моего опыта сдачи этих экзаменов - скорее всего на этот вопрос преподаватель не ответит. Вопросы можно задавать по толкованию постановки задачи, а не по технической реализации. Нам, например, экзаменатор говорил - "Представьте, что я заказчик и разбираюсь в компьютерах исключительно на уровне пользователя" отсюда и вопросы мне задавайте.
А решение просто: перехватываешь ПередЗаписью В ФОРМЕ документа, проводишь это своё перемещение, а потом уже и сам документ естественным способом проводится. Спасибо, решение вродебы логичное, буду пробывать. |
|||
18
дущ
20.10.11
✎
14:52
|
(16) хмм... помню плохо, но, помойму в модуле обработчика "ПередЗаписью" нет. Там же вроде только ПриЗаписи, а при попадании в него уже начинается системная транзакция по записи самого документа в базу
|
|||
19
hhhh
20.10.11
✎
15:10
|
(18) есть он там
|
|||
20
andr_hav
21.10.11
✎
09:34
|
Задача решена!
В модуле документа есть процедура ПередЗаписью с параметром "режимЗаписи", в процедуре выполняю все проверки и формировавние перемещения, если все проходит хорошо перехожу в "ОбработкаПроведения", если нет в процедуре "передЗаписью" меняю значение параметра РежимЗаписи с "проведение" на "Запись" |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |