Тук са показани разликите между избраната и текущата версия на страницата.
Следваща версия | Предходна версия | ||
kak_da:proizvodstvo:proizvodstvo_skript [2017/08/18 13:57] – създадена t.lalova | kak_da:proizvodstvo:proizvodstvo_skript [2018/07/18 07:16] (текуща) – k.kyurkchieva | ||
---|---|---|---|
Ред 2: | Ред 2: | ||
- | Описание на скрипта: | + | **Скриптът за Производство** се стартира от документ, в който |
+ | Той | ||
+ | |||
+ | ===== Параметри ===== | ||
- | | + | 1. **ID** - Номер на документа, |
- | които имат избрана рецепта и са с чек автоматично производство | + | |
- | 2. Скрипта позовлява разнообразни настройки - виж секция параметри | + | |
- | 3. Скрипта извършва различни проверки - виж секция проверки | + | |
- | 4. Извличане на константи - | + | |
- | - извличат се дефолтните контрагент, | + | |
- | Ако са подадени празни контрагент и обект се вземат тези от дефолта. | + | |
- | - извлича се дефолтната валута от конфигурацията - *DEFAULT_CURRENCY_REF* | + | |
- | - извличат се настройките на обекта | + | |
- | | + | |
- | * изисква ли въвеждане на местоположение | + | |
- | * брой местоположения в обекта | + | |
- | * първото местоположение - ако имаме само 1 местоположение ще го използваме! | + | |
- | 5. Определяне на параметъра *LOCATION_POSITION_TYPE* | + | |
- | Ако е 0 трябва да сравним обекта с тези от документа за да знаем кое поле после ще използваме | + | |
- | Ако обекта съвпадне с някой от обектите в документа (Започваме сравнението с Източник/ | + | |
- | ние променяме стойността на параметъра съответно на 1/2/3. | + | |
- | Ако е останало с 0 и имаме повече от 1 местоположения, | + | |
- | 6. Анулираме всички " | + | |
- | Това зависи от настройката *INVALIDATE_ALL_LINKED_DOCS*. | + | |
- | Кои документи: | + | |
- | - които са с референция *REF_DOC_NUMBER* към текущия | + | |
- | - които са с тип = на типа на създаваните документи *PROD_DOC_TYPE_REF* | + | |
- | - които не са анулирани DOC_STATUS <> - 1 | + | |
- | 7. Извличаме информацията за редовете които ще произвеждаме в *DS* | + | |
- | Това са всички редове в документа, които: | + | |
- | - които са с позиции по които се води наличност (изключваме услуги - защита за производство на безналични услуги!) | + | |
- | - за които е казано че се произвеждат автоматично или параметъра *ASSEMBLY_ONLY_WITH_CHECK_AUTOASSEMBLY* е 0 | + | |
- | - които имат номер на рецепта | + | |
- | 8. Ако правим проверки за наличност (в зависимост от параметъра *CHECK_AVAILABILITY_NEW_DOC*) или ще произвеждаме | + | |
- | само липсващото количество (параметъра *PRODUCE_MISSING_ITEMS*), | + | |
- | Идеята е да вземем редовете с отрицателно количество (те са разпад) и да проверим дали има достатъчна наличност | + | |
- | А тези които са с положителни количества да намалим количествата в зависимост от наличността | + | |
- | Получаваме резултат в *DS_AVAIL* | + | |
- | 9. Правим проверка за позиции, | + | |
- | Към тази проверка прибавяме позициите, | + | |
- | Добавяме и проверка за Местоположение, | + | |
- | Всички тези позиции които не отговарят на горните | + | 2. **NEED_STATUS** |
- | Ако съществуват такива, ние няма да можем да определим наличност, | + | |
- | + | ||
- | 10. Ако | + | |
- | "разпаднем" (са с отрицателен знак на количеството). Идеята е да коригираме наличното количество! | + | |
- | 11. Следва алгоритъма за приспадане на наличното количество. Този алгоритъм се запуска само с параметъра *PRODUCE_MISSING_ITEMS* | + | |
- | 12. Почистваме | + | |
- | 13. Следва процедурата по създаване | + | |
- | Процедурата включва обхождане на временната таблица *DS* и последващото създаване на хедъри и редове | + | |
- | 14. Създават се хедърите на документите (ако е необходимо да са повече от един). | + | |
- | 15. След | + | |
- | ===== Проверки | + | 3. **__DATASOURCE_ID** |
- | 0. Първоначалната проверка се прави само ако е изключена проверката | + | 4. **DEBUG_FLAG** - Системен параметър за дебъг (показва различни съобщения по време на изпълнението). |
- | | + | |
- | | + | |
- | | + | |
- | 1. Проверява дали документа от който се стартира съществува | + | |
- | 2. Ако | + | |
- | | + | |
- | | + | |
- | 3. Проверка дали всички позиции имат въведена | + | |
- | 4. Проверяваме | + | |
- | 5. Ако сме избрали да извършваме проверка на типа на документа за производство - *CHECK_DOC_TYPE_ASSEMBLY* (параметър) е 1 | + | |
- | - Ако не влияе на наличността на Източника (*SOURCE_COEF* трябва да е <> 0) - грешка | + | |
- | - Ако влияе на наличността на Посредника и Получателя (*VIA_COEF* и *TARGET_COEF* трябва да са = 0) - грешка | + | |
- | - Ако документа не е от тип Производство (*IS_ASSEMBLY* не трябва да е 0) - грешка | + | |
- | 6. Проверява се дали имаме Контрагент и Обект. Ако няма някое от двете - грешка | + | |
- | 7. По време на " | + | |
- | | + | |
- | Това съобщение е само за защита и не бива да се появява никога! | + | |
- | | + | |
- | | + | |
- | + | ||
- | ===== Параметри ===== | + | |
- | 1. ID | + | 5. **CHECK_ITEMS_WO_RECIPE** |
- | 2. NEED_STATUS | + | |
- | 3. __DATASOURCE_ID | + | |
- | 4. DEBUG_FLAG | + | |
- | 5. CHECK_ITEMS_WO_RECIPE | + | |
- | то не искаме да имаме позиции, | + | |
- | 6. PROD_DOC_TYPE_REF | + | |
- | 7. CHECK_DOC_TYPE_ASSEMBLY | + | |
- | 8. ASSEMBLY_ONLY_WITH_CHECK_AUTOASSEMBLY - Извършва производство само на позициите, които са с отметка | + | |
- | " | + | |
- | 9. INVALIDATE_ALL_LINKED_DOCS | + | |
- | Връзката се осъществава през REF_ | + | |
- | 10. CREATE_DOCUMENT_COUNT | + | |
- | 0 - всеки ред се създава в нов документ | + | |
- | 1 - всички рецепти се вмъкват в един | + | |
- | 11. ENTITY_REF | + | |
- | 12. LOCATION_REF | + | |
- | 13. EMPL_REL_REF | + | |
- | 14. LOCATION_POSITION_TYPE | + | 6. **PROD_DOC_TYPE_REF** |
- | | + | 7. **CHECK_DOC_TYPE_ASSEMBLY** |
- | | + | Проверката изисква: \\ |
- | | + | 1. Документът да влияе на наличността само на Източника \\ |
- | с източник, | + | 2. Документът да е тип "Производство" |
- | (Ако е 0 ние или ще го направим null или 1, 2, 3) | + | |
- | 1 - Гледаме полето SOURCE_LOCATION_POSITION_REF | + | |
- | | + | |
- | 3 - Гледаме полето TARGET_LOCATION_POSITION_REF | + | |
- | 15. DOC_DATE DATE | + | 8. **ASSEMBLY_ONLY_WITH_CHECK_AUTOASSEMBLY** |
- | 16. DOC_COMMENT | + | В документи за нареждане на производство или разпад е необходимо в този параметър да се постави стойност НЕ. |
- | + | ||
- | 17. IS_DISSASSEMBLY | + | 9. **INVALIDATE_ALL_LINKED_DOCS** |
- | 0 - скрипта | + | |
- | | + | 10. **CREATE_DOCUMENT_COUNT** |
+ | Стойности: | ||
+ | * 0 - прави отделен документ | ||
+ | * 1 - прави общ документ за всички рецепти (групирано по рецепта). \\ | ||
+ | * 2 - прави общ документ, без да групира по рецепта, | ||
+ | |||
+ | 11. **ENTITY_REF** | ||
+ | |||
+ | 12. **LOCATION_REF** | ||
+ | |||
+ | 13. **EMPL_REL_REF** | ||
+ | |||
+ | 14. **LOCATION_POSITION_TYPE** - Тип на позицията | ||
+ | |||
+ | - null - не се гледа никое поле от документа източник \\ | ||
+ | - 0 - Взема се предвид настройката дали обектът използва местоположения | ||
+ | Ако използва, | ||
+ | (Ако е 0 приема стойности null или 1, 2, 3) | ||
+ | 1 - Гледа се полето SOURCE_LOCATION_POSITION_REF | ||
+ | 2 - Гледа се полето VIA_LOCATION_POSITION_REF | ||
+ | 3 - Гледа се полето TARGET_LOCATION_POSITION_REF | ||
+ | |||
+ | 15. **DOC_DATE** | ||
+ | |||
+ | 16. **DOC_TIME_TYPE** | ||
+ | Стойности: \\ | ||
+ | null - null \\ | ||
+ | -1 - взима се часът на документа, от който се стартира и се маха 1 секунда (ако е поне 00:00:01) \\ | ||
+ | 0 - взима се часът на документа, | ||
+ | 1 - взима | ||
+ | |||
+ | 17. **DOC_COMMENT** | ||
+ | |||
+ | 18. **IS_DISSASSEMBLY** | ||
+ | ДА - скриптът | ||
+ | НЕ - скриптът | ||
| | ||
- | 18. PRODUCE_MISSING_ITEMS | + | 19. **PRODUCE_MISSING_ITEMS** - Произвежда само недостатъчната наличност |
- | Ще провери наличността по рецептите за производство | + | |
- | Ще намали позициите за производство с наличните (има алгоритъм за изчистване) | + | 20. **CHECK_AVAILABILITY_NEW_DOC** - Прави проверка за наличност в новия документ - Проверява всички позиции, |
- | 19. CHECK_AVAILABILITY_NEW_DOC - Прави проверка за наличност в новия док. | + | |
| | ||
- | 20. PRICE_LIST_REF | + | 21. **PRICE_LIST_REF** - Ценова листа |
- | 21. SET_ZERO_PRICE_WHEN_NULL_PRICE | + | При непопълнен параметър документът за вписване/ |
- | 22. WORK_WITH_SN | + | Ако се въведе число, отговарящо на номер ценова листа, то единичните |
+ | |||
+ | 22. **COPY_SN** | ||
+ | При производство, | ||
+ | Параметър, | ||
+ | |||
+ | 23. **AUTOFILL_SN_LOT_NUM_BY_EXPIRY** | ||
| | ||
- | 23. DO_FINALIZE_DOCUMENTS | + | 24. **DO_FINALIZE_DOCUMENTS** - Приключи генерирания/ |
- | 24. DO_OPEN_DOCUMENTS | + | |
+ | 25. **DO_OPEN_DOCUMENTS** | ||
+ | |||
+ | 26. **VIEW_REF** | ||
+ | |||
+ | 27. **AUTO_EXECUTE_VIEW** | ||
+ | |||
+ | 28. **S_TO_MASTER** | ||
+ | 1 - Новият | ||
+ | 2 - Новият документ се записва само в първата папка на стария.\\ | ||
+ | 3 - Новият документ НЕ се записва в никакви папки от стария | ||
+ | |||
+ | 29. **ADD_MLS_TO_TIME** | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | [[kak_da: |