необходимо почистить базу на определенное количество товаров по кодам и датам например:
50001 удалить 100 шт за 8.08.2010
64020 удалить 250 шт за 8.08.2010
и тд.
Товара очень много. Подскажите как можно автоматизировать процесс
необходимо почистить базу на определенное количество товаров по кодам и датам например:
50001 удалить 100 шт за 8.08.2010
64020 удалить 250 шт за 8.08.2010
и тд.
Товара очень много. Подскажите как можно автоматизировать процесс
Написать программу, которая будет это делать. Что, сколько и за когда удалять, можно оформить текстовым файлом.
спасибо за развернутый ответ ))
наверное и так понятно, что нужно писать программу под акцент для автоматической чистки нужных позиций в накладных. Привели бы пример, или натолкнули на мысль.
Я вообще думал написать цикл, который бы по очереди открывал каждую накладную выбитую в определенную дату и удалял по одной позиции товара до тех пор пока не было бы удалено необходимое количество. Но я с акцентом пару дней и для меня это пока не есть просто (во первых даже потому, что я не знаю структуры sql базы, да и хелп для разработчика не слишком просветил). Но это я, человек, пока в этом ничего не смыслящий. Так, что Ув. olimp не отмахивались бы от ответа, а действительно бы подсказали решение.
Добавлено: Ср Авг 11, 2010 10:51 am Заголовок сообщения:
А вы хотите вот так прямо чтобы вам ответили? Панацеи, увы, не существует. причина проста как 5 коп: я, например, не знаю какое у вас решение, какие именно накладные, по какому критерию вы хотите удалять строки и т.д.
Так что любой знающий человек на этом форуме может дать вам только очень общие советы:
1. Не зная броду не лезь в воду (не трогайте вы базу пока не разобрались с Акцентом)
2. Лучше поставьте задачу профессионалу. Лично я очень сомневаюсь что можно из реально работающей базы "удалить строчки из накладных" так, чтобы бухгалтер потом не оторвал голову.
Вы ведь боитесь огласить истинные цели данной задачи. Если цель - то, что я подозреваю, то Вы выбрали неправильный метод.
Так что для пущей эффективности лучше огласить, ради чего весь сыр-бор. Тогда Вам и помогут.
Почему же тут никакого секрета нет. Причин аж несколько: первая состоит в том, что акцент не обращая внимания на остатки на складе разрешает бить товар в минус, после чего в конце рабочего дня приходится удалять позиции, которые ушли в минус, вручную. Вторая же причина - это ошибки при доставке товаров. Например накладные на доставку уже выбиты, а товар приходит не в том количестве и рабочим приходится опять чистить данные накладные.
Вы ведь боитесь огласить истинные цели данной задачи. Если цель - то, что я подозреваю, то Вы выбрали неправильный метод.
Так что для пущей эффективности лучше огласить, ради чего весь сыр-бор. Тогда Вам и помогут.
Почему же тут никакого секрета нет. Причин аж несколько: первая состоит в том, что акцент не обращая внимания на остатки на складе разрешает бить товар в минус, после чего в конце рабочего дня приходится удалять позиции, которые ушли в минус, вручную. Вторая же причина - это ошибки при доставке товаров. Например накладные на доставку уже выбиты, а товар приходит не в том количестве и рабочим приходится опять чистить данные накладные.
Акценту все равно. За учетную политику должно отвечать конкретное приложение. Все стандартные прикладные решение поддерживают списание и контроль количества. Начиная с версии Акцента 4.2
Я вот тут подумал, может стоит попробовать сторнировать количество и не нужно писать никакие программы ?
Хм--м-м-м... А все-таки, "кто-то" напишет ТЗ? Опишет систему? настройку? Опишет причины, по которым образовались отрицательные остатки? опишет метод списания?
Имхо, Вы не представляете себе последствия спонтанной помощи чьей-нибудь доброй души....
несколько топиков вверх описывал причины данной затеи
Цитата:
Причин аж несколько: первая состоит в том, что акцент не обращая внимания на остатки на складе разрешает бить товар в минус, после чего в конце рабочего дня приходится удалять позиции, которые ушли в минус, вручную. Вторая же причина - это ошибки при доставке товаров. Например накладные на доставку уже выбиты, а товар приходит не в том количестве и рабочим приходится опять чистить данные накладные.
метод списания: никакого метода,никакого списания, просто открываются накладные и вручную удаляются позиции.
метод списания: никакого метода,никакого списания, просто открываются накладные и вручную удаляются позиции.
Пожалуйста, прочтите Методы учета запасов перед тем, как просто говорить "никакого метода,никакого списания, просто открываются накладные и вручную удаляются позиции."(с)
Вы четко отдаете себе отчет о последствия таких действий для бухгалтерских данных?
AllexL, так как программа позволяет бить в накладных товар, при этом угоняя склад в минус, вот от минусов и приходится избавлятся. Скажите мне, пожалуйста, причем тут бухгалтерские данные? ведь по бухгалтерии проходит только реальный товар, а товар которого фактически на утро нет и должен быть удален с заказов на отгрузку.
Хорошо, можно пойти другой дорогой: сделать проверку наличия товара на складе по остаткам, если его нет в остатках то запрещать его бить. В таком случае и чистить накладные на утро не прийдется.
Хорошо, можно пойти другой дорогой: сделать проверку наличия товара на складе по остаткам, если его нет в остатках то запрещать его бить. В таком случае и чистить накладные на утро не прийдется.
Вернемся к началу.
1.Какая версия Акцента, редакция (DAO, SQL)? Какая настройка? (Стандарт7, Стандарт 6? 7.4? Сторонняя настройка?)
Какой метод учета выбран (FIFO, индентифицированный)?
Если Вы затрудняетесь ответить на вопрос, пришлите хотя бы скриншот "Расходной накладной", а еще желательно выложить текст кода для формы (но только если Вы не знаете, какая именно настройка у Вас)
2. Постройте остатки в разрезе партий по счету, на котором учитываются ТМЦ. Посмотрите, есть ли остатки как таковые....
3. Что происходит в момент, когда сохраняется документ "Расходная накладная", в котором задано количество , заведомо превышающее имеющееся на складе по какой-то конкретной номенклатуре?
4. "чистить накладные на утро не прийдется"(с), если разобраться с функционированием системы при условии, что в системе не покопался "чрезвычайно талантливый специалист"....
1.Какая версия Акцента, редакция (DAO, SQL)? Какая настройка? (Стандарт7, Стандарт 6? 7.4? Сторонняя настройка?)
Какой метод учета выбран (FIFO, индентифицированный)?
2. Постройте остатки в разрезе партий по счету, на котором учитываются ТМЦ. Посмотрите, есть ли остатки как таковые....
есть
Цитата:
3. Что происходит в момент, когда сохраняется документ "Расходная накладная", в котором задано количество , заведомо превышающее имеющееся на складе по какой-то конкретной номенклатуре?
ничего не происходит, накладная сохраняется, а товар уходит в минус только после перемещения. Этот минус потом и приходится возвращать к нулю вручную удаляя позиции
Цитата:
4. "чистить накладные на утро не прийдется"(с), если разобраться с функционированием системы при условии, что в системе не покопался "чрезвычайно талантливый специалист"....
Признаться, не представляю себе, чтобы человек, который еще недостаточно знаком с программированием под Акцент,
самостоятельно написал достаточно аккуратную программку, которая выполнит поставленную задачу.
Но раз человек решил за это взяться и просит совета, почему бы не дать ему то, что он просит.
1. Лучше не беритесь, а пригласите специалиста.
2. Обязательно сделайте резервную копию базы, перед тем как что-то запускать.
3. Желательно сделайто копию базы и потренируйтесь на ней сначала.
4. Лучше не делайте это напрямую через SQL-запросы.
В Вашем случае все можно сделать через объектную модель. Будет дольше, но надежнее.
5. Для начала сделайте для 1 товара за 1 день.
Если сделаете это -- сможете и расширить до перечня товаров за период.
Программка будет содержать следующие моменты:
1. Перечень документов за период (за день).
Отчет RepDocList:
Код:
Dim rep
Dim i, op
Set rep = Workarea.CreateReport("RepDocList");
rep.Kind = acFolder
rep.KindID = (id папки)
rep.Build
rep.MakeSheet True
For i = 1 To rep.Count
Set Op = Workarea.Operation(rep.Item(i).ID)
.........
Next
2. Далее придется сообразить, каким образом аккуратно распределить
удаление 500 штук в, например, 10 документах.
Как вариант -- пройтись по документам, посчитать общее кол-во
этого товара, получится, например 5000 штук.
Тогда в каждой накладной вам необходимо будет
уменьшить кол-во на 10%
3. Для каждого документа проходите по первой проводке
Код:
For i = 1 to Op.TransList(1).Rows
With Op.Trans(1,i)
if .EntID = (id удаляемого) then
.Qty = Round2(.Qty/10,0)
.Sum = Round2(.Price * .Qty,2)
end if
end with
Next
Op.Save
5.После этого у вас наверняка появится небольшое расхождение,
в связи с округлением, но с этим вы, я думаю, разберетесь.
В последнем документе его можно будет устранить.
4. Запустить перепроведение исправленых документов за период (за день).
Удачи! Хотя и не советую.
Последний раз редактировалось: nikman (Ср Сен 01, 2010 3:16 am), всего редактировалось 1 раз
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах