Это же не критика



Posted by Васеленко Сергей, Фирма КАРДИНАЛ on July 27, 2000 at 11:33:07:

In Reply to: Критика принимается? posted by Александр, Киев on July 26, 2000 at 07:20:55:

Данный пример дает реально работающую форму для регистрации операций "от документа".

Это как бы первый факт. Его значение не зависит от используемой структуры справочника товаров.
Т.к. опирается только на код товара и хранит выписанные количество и сумму.
Т.е. то, что нужно для формирования документа.

Второй момент, что в форму может быть добавлено по желанию все, что угодно - резервирование, предупреждения, расчет массы заказа и т.д.
И все это до реальной регистрации операций в журнале операций.

Сложность программирования этой формы - желание самого разработчика.
Ведь все равно придется что-то писать, если требуется заказчику.
А здесь главное, можно использовать весь инструмент ФБП.

Третий момент.

Данное предложение предполагает обходится без нее ссылаясь на операции приходования конкретных партий товара.
В чем я вижу пробойные места подобной методологии:
Из каких соображений предполагается заполнять масив операций приходования (в примере g-масив заполнен вручную)?
Строить предварительный реестр всех приходов от начала деятельности предприятия и выбирать нужный?
Как гарантировать что по какой-либо партии уже не сделан расход или частичный расход?

Это все порешать конечно можно, строя остатки на смеси фактов и аналитики из extrd.dat., но во что это выльется. И опять же придем к потребности многоуровневой схемы отражения произвольного количества номенклатуры ТМЦ.

С точки зрения примера - ему все равно как там организована структура справочника.
И массив g был введен для простоты и демонстрации того, что не обязательно опираться на существующий в плане счетов справочник.

Фрагмент


[g 1,'AAA-0001','AAA-0002','AAA-0003','AAA-0004','AAA-0005']
for I1=1 to [g 0]
N =[g I1]
...
endfor

можно же заменить на:

#_41
N =[n1 #]
...
#

И теперь по самой идее кодов операций.
Существуют системы учета, при которых важен и вид товара и его партия - например, торговля медикаментами.
И можно строить систему, используя код товара из справочника и номер партии оприходования.
Но партии оприходования, если их не задавать вручную могут меняться динамически при добавлении или удалении приходов в прошлом. А это плохо.

Использование кодов операций оприходования позволяет однозначно идентифицировать все что угодно, т.к. в одной операции все же два товара мы не принимаем.

А как построить отображение кода прихода в код товара, партию, номер ГТД, сертификата (или бухту для вопроса Марианны) это уже дело техники и вкуса.
Главное, что именно код является уникальным идентификатором всего этого набора.

Для практического решения вопроса я бы использовал следующее:
При приходе:


* Входные данные:
* N1 Код товара
* Q Количество
*****
G1=[stamp 3] Код операции
*
I1=[get Code,'MAX']+1 Новый номер записи в списке кодов операций
[set Code,'MAX',I1] Запись нового количества записей
[set Code, I1, G1] Запись кода операции для номера записи
*
[set Code,'N'+G1,N1] Код товара для кода операции
[set Code,'Q'+G1, Q] Количество для кода операции
*
[plus *N1,'Q' ,Q] Общее количество товара

При расходе:


* Входные данные:
* G1 Код операции
* Q Количество
*****
N1=[get Code,'N'+G1] Код товара для кода операции
*
[plus Code,'Q'+G1,-Q] Количество для кода операции
[plus *N1 ,'Q' ,-Q] Общее количество товара

Для обращения ко всему списку с сортировкой по товарам:


array a
I0=[get Code,'MAX'] Количество кодов операций в списке
for I1=1 to I0
G1=[get Code, I1] Код операции по номеру записи
N1=[get Code,'N'+G1] Код товара для кода операции
[a I1,N1+'|'+[intsn I1]] Значение для сортировки: код товара и номер прихода
[c I1,G1] Код операции для номера
endfor
sort a,b
for I2=1 to I0
I1=[b I2] Номер записи
G1=[c I1] Код операции
N1=[get Code,'N'+G1] Код товара для кода операции
Q =[get Code,'Q'+G1] Количество для кода операции
Q0=[get *N1 ,'Q'] Общее количество товара
...
endfor




Пpишедшие ответы: