Просьба сообщить время и стоимость
Исходники
s-it.ru/Vvoz2.rar Требуется доработать отчет, использующий справочник продукции и динамику за несколько лет:
7. вывоз продукции за несколько лет
В связи с изменением справочника продукции в 2010 году их теперь в программе 2 старый и новый, при выводе отчета данные
формируются отдельно по старому справочнику до 2010 года и по новому после 2009.
В файле xls мы объединили два справочника требуется сделать преемственность по следующему алгоритму.
дополнить таблицу goods сделать поле:
- old (признак старого справочника, если не равен 0, то запись
принадлежит старому справочнику) уже есть
- link_id (идешник связанной записи из другого справочника)
при формировании отчета используем условие:
- если до 2010, то данные формируются как обычно (по старому
справочнику)
- если после 2010, то данные формируются как обычно (по новому
справочнику)
- если пересекающиеся года (если диапазон годов захватывает и до 2010 и
после), тогда выводим только совпадающие данные:
1) формируем список продукции в массив
а) выбираем записи, у которых old=0 и link_id<>0, запоминаем current_id = id, current_link_id=link_id
б) проверяем нет ли разъединения связанной старой записи:
ищем записи у которых old=0 и link_id=current_link_id,
если есть такие записи, то выводим в списке продукции старую запись, у которой id=current_link_id
если нет таких записей, то выводим в списке продукции текущую новую запись, у которой id = current_id
2) в цикле перебираем года из выбранного диапазона лет
вложенный цикл по элементам массива продукции сформированный выше
а) если год до 2010 и элемент массива имеет признак old=0:
тогда мы ищем связанную старую запись продукции, у которой
old=1 и link_id=current_id, если таких записей несколько, то имеет место
объединение старых записей и в качестве значения по текущему
году мы формируем сумму значений KOL и SUMM из таблицы vyvoz у которых
goods=id1 и goods=id2 и т.д. где у записей с id1, id2, id3
(link_id=current_id)
если же запись будет только одна, то просто выводим KOL и SUMM
для записей с goods=id у которой link_id=current_id и old=1
б) если год до 2010 и элемент массива имеет признак old=1:
тогда выводим записи из таблицы vyvoz с goods=current_id
в) год с 2010 и old=0:
тогда выводим записи из таблицы vyvoz с goods=current_id
г) год с 2010 и old=1:
имеет место разъединение старой записи продукции, находим все
записи с old=0 и link_id=current_id
формируем сумму значений KOL и SUMM из таблицы vyvoz у которых
goods=id1 и goods=id2 и т.д. где у записей с id1, id2, id3
(link_id=current_id)