Внедряване на селекция в управлявани формуляри

Внедряване на формата за избор в 1C 8.2

Тази статия разглежда технологията за внедряване на селекция на платформата 1C 8.2. Статията не претендира за истината от последна инстанция, просто изправен пред редица проблеми и не намерих „правилната“ методология за решение (може би гледах зле), реших да тръгна по този път сам, естествено използвайки различни източници. По принцип разчитам на материалите на майсторските групи от основния курс „Професионално програмиране в 1C“ от Евгений Гилев и Фарит Насипов, в които съм член, както и на съответната литература (M.G. Radchenko, E.Yu. Khrustaleva Practical Developer's Guide).

Внедряване. Създаваме формуляр от произволен тип за документа Продажба на стоки. Разбира се, можете да създадете обща форма, но в тази ситуация ние избираме това, което е по-близо. Във формата създаваме детайлите:

Склад - тип DirectoriesLink.Warehouses

Стоки - Динамичен списък, в свойствата сложете отметка за произволна заявка.

Избрани стоки - таблица със стойности (колони Стоки, Серия - тип препратка към съответните директории, срок на годност, количество - дата, номер).

Настройте заявка за атрибута Стоки. Тук на теория всичко е просто с помощта на конструктора, вземаме две директории и виртуална таблица на остатъците от регистъра на остатъците от стоки. Ако трябва да видите целия продукт, тогава използваме лявата връзка на Продуктите с други източници, ако само с останалите, тогава пълната връзка с регистъра:

За виртуалната маса в параметрите посочете избор по склад. След това 3 часа тъпчех на едно място. Когато стартирах този формуляр в процеса на отстраняване на грешки, видях само един ред с продукт, въпреки че трябваше да има повече. Честно казано, бях объркан, защото на теория всичко трябва да е просто, но. И около 3 ч. азОпитах се да разбера защо не се показват всички записи. Разбира се, това може да не е сериозен проблем и повечето практикуващи 1C знаят за това, но само след дълго сърфиране в Интернет открих, че трябва да изчистя свойството на основната таблица в прозореца за настройки на заявката за динамичен списък и след това се появиха всички записи. В този случай свойството за динамично четене на данни става неактивно.

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

И така, връщаме се към нормалния ход на решаване на проблема.

В разработената форма добавих параметъра Склад с цел избор на остатъци.

За да отворим създадения формуляр за избор, в управляваната форма на документите за продажба на стоки създаваме командата за избор, поставяме го върху формуляра и генерираме манипулатор, в който трябва да отворим формуляра. Тъй като формулярът трябва да осигурява многократен избор и избор по склад, ние създаваме структура на параметрите на формуляра. И отворете формуляра със съответната команда.

Съответно във формуляра за избор, когато създаваме, попълваме параметъра на заявката за склад от параметрите на формуляра:

Сега трябва да внедрите функционалността на формата за избор. Когато изберете подходящия ред, той трябва да бъде прехвърлен в таблицата със стойности, механизмът за плъзгане и пускане също трябва да работи. За да решим първата задача, трябва да създадем манипулатор на събитие за събитието Select our dynamic list.

Той има параметъра SelectedLine, който е масив, чиито елементи са номерата на редовете от списъка с продукти. В цикъла проверяваме дали избраните редове се дублират и номерът е поискан.

За да приложите плъзгане и пускане, трябвапроверете настройките на следните параметри: За таблица Продукти - AllowDragStart, за Избрани продукти - AllowDrag and Drop.

Също така е необходимо да се създаде манипулатор на събитие за събитието Плъзгане и пускане за елемента на формуляра SelectedProducts.

Тъй като кодът на манипулатора е подобен на предишния, за оптимизация можете да създадете процедура и да я извикате от двата манипулатора.

Фигурата показва външния вид на формата за избор:

FormPodbora.png ( 23,35 килобайта ) Изтегляния: 255

За да завършите избора, беше създадена команда за формуляр с манипулатор, който извършва известие за избор:

Съответно манипулаторът на събитието за събитието SelectProcessing е внедрен във формуляра на документа:

Като цяло бих искал още веднъж да подчертая, че целта на тази статия не е да проповядва истината, а просто да сподели получената информация и опит. Ще бъда благодарен за конструктивни съвети и препоръки, тъй като темата за управляваните форми е доста нова, но изглежда дълго време и редица проблеми (характеристики на работа с произволни заявки) изискват допълнителна информация.