Update close - выполнить операцию

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4560
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Update close - выполнить операцию

Сообщение finsoftrz »

finsoftrz писал(а): 07 Август 2018, 15:14
kreator писал(а): 07 Август 2018, 14:54
finsoftrz писал(а): 07 Август 2018, 13:29 Возврат распределяется по отгрузкам автоматически, в зависимости от того, что возвращают (товар+цена). То есть мука к муке, минеральная вода к минеральной воде...
Т.е. сначала разбрасываются возвраты, потом платежи? Жесть!!! Oracle в режиме In-Menory задымится :) !
Ну не дымится же, если голову включить. :-)
А как у Вас будет в приведенном мной примере?
C6/C11, ШВС, tps/btrieve.
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

Update close - выполнить операцию

Сообщение gopstop2007 »

finsoftrz писал(а): 07 Август 2018, 15:12 Отгрузка - это отгрузка покупателям, возвраты - возвраты от покупателей.
Все равно не понятно, видать сильно тупой, возвраты по отгрузкам - это недостача при получении товара покупателем или возврат - это копия измененной накладной отгрузки для возврата?
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

Update close - выполнить операцию

Сообщение gopstop2007 »

kreator писал(а): 07 Август 2018, 14:54 Т.е. сначала разбрасываются возвраты, потом платежи? Жесть!!! Oracle в режиме In-Menory задымится :) !
а какая разница в расчете, итог все равно один :)
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4560
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Update close - выполнить операцию

Сообщение finsoftrz »

gopstop2007 писал(а): 07 Август 2018, 15:29
finsoftrz писал(а): 07 Август 2018, 15:12 Отгрузка - это отгрузка покупателям, возвраты - возвраты от покупателей.
Все равно не понятно, видать сильно тупой, возвраты по отгрузкам - это недостача при получении товара покупателем или возврат - это копия измененной накладной отгрузки для возврата?
Это когда покупатель возвращает товары поставщику по любому допустимому поводу, не противоречащему заключенному договору. В одном возврате могу быть товары с разных отгрузок. А могут и чужой сунуть, мы это тоже должны отслеживать...
C6/C11, ШВС, tps/btrieve.
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

Update close - выполнить операцию

Сообщение gopstop2007 »

finsoftrz писал(а): 07 Август 2018, 15:35Это когда покупатель возвращает товары поставщику по любому допустимому поводу, не противоречащему заключенному договору. В одном возврате могу быть товары с разных отгрузок. А могут и чужой сунуть, мы это тоже должны отслеживать...
Теперь более - менее понятно.
Когда 2-5 отгрузки понятно, но если пару сотен, это все накладные отгрузки сводить в одну для сверки возврата, не знаю как это назвать :)
Вообще то это решается на стороне клиента, проще, например: для клиента свести по накладной отгрузки,что такой возврат, а другой накладной такой возврат... и все проблемы упрощаются. :)
насчет возврата чужого товара, если аналогичные отгруженному тут надо быть Шерлоком, если товар вообще чужой - по наименованию, как его можно принять?
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Update close - выполнить операцию

Сообщение kreator »

kreator писал(а): 07 Август 2018, 14:54 Не поверил. Хотел уж посоветовать поискать вставку перед закрытием окна, например, на событие EVENT:CloseWindow. Но, действительно, работает. На досуге посмотрю в классах SV, какой там порядок.
Правильно, что не поверил. В методе Kill нет закрытия окна. Оно было до того. Команда post на закрытие окна прописана в методе SetResponse:
WindowManager.SetResponse PROCEDURE(BYTE Response)
CODE
SELF.Response = Response
POST(EVENT:CloseWindow)
IF Response = RequestCancelled AND ~SELF.Toolbar &= NULL
SELF.VCRRequest = VCR:None
END
То, что окно не закрылось в методе Kill, это, надо понимать, случайность :D . По правильному, ваш текст нужно написать в методе SetResponse, до Parent Call.
finsoftrz писал(а): 07 Август 2018, 15:16 А как у Вас будет в приведенном мной примере?
У меня просто. Если это реализация, то накладная должна быть закрыта либо платежом, либо возвратом товара из этой накладной. Если накладная уже оплачена и есть возврат (например, брак), то просто возвращаются деньги, сам возврат закрывается РКО (ну или банковским расходом). По договорённости с покупателем (речь, естественно, об оптовике), можно закрыть другую накладную. Но с этим сложно, потому что нужно попасть в деньги. По этому только договорённость. У нас ещё есть операция "Обмен". Бывает упрощает проблему возврата. Опять же при наличии товара, подходящего по деньгам.
finsoftrz писал(а): 07 Август 2018, 15:14 Ну не дымится же, если голову включить. :-)
А где там голова? Базу режете каждые три месяца? В принципе, правильно. Даже "большие" спецы по SQL советуют агрегаты держать для аналитики.
We are hard at work… for you. :)
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4560
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Update close - выполнить операцию

Сообщение finsoftrz »

Александр, судя по написанному, снова не поняли. Это как раз покупатель возвращает товары одним документом, а не по каждой отгрузке отдельным. Мы ему не можем диктовать, чтобы указывал для каждого товара, по какой отгрузке он его получил. Розница обычно гораздо менее автоматизирована, чем опт, у них такого учета просто нет. К слову, в 1С именно так и предлагают делать, и это большая проблема при работе, регулярно их пользователи жалуются, но в рекламе про это не пишут (и еще много про чего не пишут). :-)
А товар как принимают при возврате? Заполняют документ на возврат, как ее прислал покупатель. Потом жмут кнопку "Акт на возврат", и программа автоматически определяет, по каким отгрузкам сделан возврат. То есть пишет, отгрузка такая-то от такого-то числа и список товаров с ценой и количеством. Потом по следующей отгрузке. Если отгрузка для товара не найдена (или, скажем, его пытаются вернуть повторно, такое тоже бывает), то список таких товаров выводится в начале акта с пометкой, что не брали товарищи у нас этого... Что делать в случае возврата чужого товара? Решается по ситуации. Если пытаются впендюрить чужой брак (есть умники, которые брак от одного поставщика, который не принимает возвраты, пытаются сбыть другому поставщику), то отказывают в приеме. Если, к примеру, магазин закрывается и отдает товары, чтобы погасить долг, то просто выделяют эти товары отдельной приходной накладной, как закупку.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4560
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Update close - выполнить операцию

Сообщение finsoftrz »

kreator писал(а): 07 Август 2018, 15:57
finsoftrz писал(а): 07 Август 2018, 15:14 Ну не дымится же, если голову включить. :-)
А где там голова? Базу режете каждые три месяца? В принципе, правильно. Даже "большие" спецы по SQL советуют агрегаты держать для аналитики.
Ну, не надо фантазировать за меня. Никто базу каждые три месяца не режет. Режут обычно по инициативе клиента, а не из-за технических потребностей. А технически нашу стандартную оптовку с ~25 конкурентными пользователями можно примерно лет 15-20 держать без среза. Дальше или резать, или на битрив. Это же не 1С...
План платежей считает не от царя гороха, а вообще с конца, от текущей задолженности. Все очень быстро. А если специализированный отчет по распределению понадобился, то от ближайшей границы закрытого периода. Тоже не напрягает.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4560
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Update close - выполнить операцию

Сообщение finsoftrz »

kreator писал(а): 07 Август 2018, 15:57 У меня просто. Если это реализация, то накладная должна быть закрыта либо платежом, либо возвратом товара из этой накладной. Если накладная уже оплачена и есть возврат (например, брак), то просто возвращаются деньги, сам возврат закрывается РКО (ну или банковским расходом). По договорённости с покупателем (речь, естественно, об оптовике), можно закрыть другую накладную. Но с этим сложно, потому что нужно попасть в деньги. По этому только договорённость. У нас ещё есть операция "Обмен". Бывает упрощает проблему возврата. Опять же при наличии товара, подходящего по деньгам.
У Вас либо возвратов мало, либо Вы живете в идеальном мире. Даже не знаю, как будут реагировать клиенты, если предложу им отслеживать, оплачен ли возвращаемый товар, а если да, то перечислять куда-то за это деньги... :-)
C6/C11, ШВС, tps/btrieve.
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

Update close - выполнить операцию

Сообщение gopstop2007 »

finsoftrz писал(а): 07 Август 2018, 16:11 Александр, судя по написанному, снова не поняли...
Спасибо за подробное разъяснение, теперь понял. :)
У меня не зависимо опт или розница, это смотрится сразу в процессе набора накладной по возвращаемому товару (по кол-ву и наименованию), показывает суммарное количество отгруженого товара (минус предыдущие возвраты) по покупателю.
kreator писал(а): 07 Август 2018, 15:57 Правильно, что не поверил. В методе Kill нет закрытия окна. Оно было до того. Команда post на закрытие окна прописана в методе SetResponse:....
Спасибо, проверю.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Update close - выполнить операцию

Сообщение kreator »

Под "режете" я и имел в виду "закрытие периода". Помню, обсуждали же. Как часто закрытие периода? Сколько нужно держать позиций накладных без закрытия периода, чтобы расчёт остатков по складу/складам не напрягал манагеров?
We are hard at work… for you. :)
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4560
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Update close - выполнить операцию

Сообщение finsoftrz »

kreator писал(а): 07 Август 2018, 17:21Под "режете" я и имел в виду "закрытие периода". Помню, обсуждали же. Как часто закрытие периода? Сколько нужно держать позиций накладных без закрытия периода, чтобы расчёт остатков по складу/складам не напрягал манагеров?
Закрытие периода - это совсем другое. Физически это создание специального документа, не больше и не меньше. Если он есть и утвержден, то изменения более ранней датой запрещаются. Но этот документ всегда можно выключить и включить, работу пользователей прерывать не надо. Соответсвенно, информация никуда из базы данных не девается.
Если оптовка от 10 и более пользователей, то обычно создают раз в месяц. Но последние несколько месяцев, как правило, держат открытыми. Сколько, кто как, сложно сказать однозначно. Чаще месяца 3 держат, а некоторые любят каждый месяц закрывать. Но ничто не мешает открыть целый год.
Остатки товаров считаются быстро. Больше ресурсов потребляется при расчете движения товаров в разрезе партий закупок. Там тоже все оптимизировано, я тут когда-то ссылку на статью по этому поводу выкладывал. На втором месте по затрату ресурсов - это распределение оплат по отгрузкам и учет возвратов. Там, в основном, с конца расчет. В общем, из жалоб на производительность в последнее время была одна от продуктовой сети. У них большой пересорт, что заметно замедляет расчет партий, и довольно большое количество информации в базе. Отчет по расчету наценки с продаж в разрезе магазинов, ну, минут, 7 делается, с учетом открытого периода 3-4 месяца. Им бы хотелось 5-7 секунд... :-)
C6/C11, ШВС, tps/btrieve.
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Update close - выполнить операцию

Сообщение kreator »

finsoftrz писал(а): 07 Август 2018, 16:11 Потом жмут кнопку "Акт на возврат", и программа автоматически определяет, по каким отгрузкам сделан возврат. То есть пишет, отгрузка такая-то от такого-то числа и список товаров с ценой и количеством. Потом по следующей отгрузке. Если отгрузка для товара не найдена (или, скажем, его пытаются вернуть повторно, такое тоже бывает), то список таких товаров выводится в начале акта с пометкой, что не брали товарищи у нас этого...
Т.е. Вы возвраты привязываете к отгрузке? Или всё равно расчётом? И неужели возвращают товар без накладных на отгрузку? Нигде не видел. Попробуйте в магазин что-нибудь сдать без чека. Конечно на трикотажной фабрике с этим полегче. Товар свой, известный и с маркировкой. Но всё равно, а вдруг один оптовик у другого перекупил. Доверяй, но проверяй.
finsoftrz писал(а): 07 Август 2018, 18:16 Закрытие периода - это совсем другое. Физически это создание специального документа, не больше и не меньше. Если он есть и утвержден, то изменения более ранней датой запрещаются. Но этот документ всегда можно выключить и включить, работу пользователей прерывать не надо. Соответсвенно, информация никуда из базы данных не девается.
Любите Вы туману навести. Как будто потенциальным заказчикам рассказываете. Для чего закрытие периода делаете? Чтобы итоги по периоду скинуть в другую таблицу. Правильно? И не лопатить всю текущую таблицу от царя гороха. А просчитать последние три месяца и прибавить остаток на начало данного периода. Вот я и спрашиваю - чтобы клиенту комфортно было по времени, как сделано - по количеству записей или, допустим, жёстко три месяца.
We are hard at work… for you. :)
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4560
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Update close - выполнить операцию

Сообщение finsoftrz »

kreator писал(а): 07 Август 2018, 22:22
finsoftrz писал(а): 07 Август 2018, 16:11 Потом жмут кнопку "Акт на возврат", и программа автоматически определяет, по каким отгрузкам сделан возврат. То есть пишет, отгрузка такая-то от такого-то числа и список товаров с ценой и количеством. Потом по следующей отгрузке. Если отгрузка для товара не найдена (или, скажем, его пытаются вернуть повторно, такое тоже бывает), то список таких товаров выводится в начале акта с пометкой, что не брали товарищи у нас этого...
Т.е. Вы возвраты привязываете к отгрузке? Или всё равно расчётом? И неужели возвращают товар без накладных на отгрузку? Нигде не видел. Попробуйте в магазин что-нибудь сдать без чека. Конечно на трикотажной фабрике с этим полегче. Товар свой, известный и с маркировкой. Но всё равно, а вдруг один оптовик у другого перекупил. Доверяй, но проверяй.
Как Вы себе представляете возврат с накладной на отгрузку, если мелкий товар и в одной накладной может быть за сотню строк. И номенклатура десятки тысяч наименований. И магазин затаривается такими товарами раз в неделю. И у нескольких поставщиков с пересекающимися товарами. А при невысокой маржиональности бизнеса магазины не имеют ресурсов для точного парционного учета. Остается либо контролировать возвраты на стороне оптовика, что мы и делаем. Либо отказываться от приема возвратов, если брак не обнаружили сразу при приемке товаров. Как делают некоторые другие поставщики. Это дает нашим клиентам конкурентное преимущество.
kreator писал(а): 07 Август 2018, 22:22
finsoftrz писал(а): 07 Август 2018, 18:16 Закрытие периода - это совсем другое. Физически это создание специального документа, не больше и не меньше. Если он есть и утвержден, то изменения более ранней датой запрещаются. Но этот документ всегда можно выключить и включить, работу пользователей прерывать не надо. Соответсвенно, информация никуда из базы данных не девается.
Любите Вы туману навести. Как будто потенциальным заказчикам рассказываете. Для чего закрытие периода делаете? Чтобы итоги по периоду скинуть в другую таблицу. Правильно? И не лопатить всю текущую таблицу от царя гороха. А просчитать последние три месяца и прибавить остаток на начало данного периода. Вот я и спрашиваю - чтобы клиенту комфортно было по времени, как сделано - по количеству записей или, допустим, жёстко три месяца.
Нет, не правильно. Никаких скидываний в другую таблицу при закрытии периода не происходит. Я вроде ясно написал, что закрытие периода - это просто добавление одного документа. С другими документами ничего не происходит, как они были, так и остаются. Открытие периода - это просто изменить байтик в заголовке документа. Повторное закрытие более сложный процесс. Вначале устанавливается флажок блокировки изменений, потом выполняется расчет итогов за период, если были отклонения от предыдущего расчета, то они сохраняются в базе данных, потом устанавливается флажок актуальности итогов за период.
Нет никаких привязок ко времени или количеству записей в периоде. Теоретически, можете хоть каждый день закрывать, а можете совсем не закрывать периоды. Программа использует итоги периодов по мере их обнаружения. Пользователь решил, что надо убыстрить построение отчетов, закрывает период. И закрытие одного месяца не так критично убыстряет формирование отчетов, ну, скажем, секунд 30 экономим в типовой оптовке на ~25 пользователей и очень бюджетном сервере.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4560
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Update close - выполнить операцию

Сообщение finsoftrz »

kreator писал(а): 07 Август 2018, 22:22
finsoftrz писал(а): 07 Август 2018, 16:11 Потом жмут кнопку "Акт на возврат", и программа автоматически определяет, по каким отгрузкам сделан возврат. То есть пишет, отгрузка такая-то от такого-то числа и список товаров с ценой и количеством. Потом по следующей отгрузке. Если отгрузка для товара не найдена (или, скажем, его пытаются вернуть повторно, такое тоже бывает), то список таких товаров выводится в начале акта с пометкой, что не брали товарищи у нас этого...
Т.е. Вы возвраты привязываете к отгрузке? Или всё равно расчётом?
Расчетом.
C6/C11, ШВС, tps/btrieve.
Ответить