Үй / Кеңсе / Динамикалық тізімдегі мән 1с болса 8.3

Динамикалық тізімдегі мән 1с болса 8.3

1С: Кәсіпорын 8.2 платформасы мәліметтер қоры кестесіндегі көптеген жазбалармен динамикалық түрде жұмыс істей алады, яғни мәліметтерді бөліктерде оқи алады. Бұрынғы мақалаларда біз динамикалық тізімдердің механизмін және олармен жұмысты оңтайландыру әдістерін қарастырдық.

Бүгін біз динамикалық тізімдер үшін стандартты емес мәселені шешеміз.Бізге «Сома» құжат атрибуты арқылы жиынтықты есептеу керек және оны тізімнің төменгі деректемесінде көрсету керек. Сол сияқты, «Рейтинг» өрісінің орташа мәнін есептеп, оны төменгі деректемеде де көрсетіңіз динамикалық тізім. Жалпы өрістерді есептеу құжат тізімінің параметрлерінде пайдаланушы орнатқан таңдауды ескеруі керек.

Бүкіл қиындық динамикалық тізім барлық жазбаларды бірден қабылдамайды, бірақ оларды бөліктерде қабылдайды. Тиісінше, ағымдағы таңдауға сәйкес барлық құжаттардың қысқаша мазмұнын бірден ала алмаймыз. Барлығын қалай есептеу керек?

Іске асыру

Сонымен, мәселені шешуге көшейік. Пішінді өзгертуден бастайық, содан кейін соңғы мәндерді алу алгоритмін сипаттаймыз.

Пішін және интерфейс

Алдымен алынған өрістерді көрсету үшін құжат формасын дайындаймыз. Ол үшін «Рейтинг» және «Сома» пішінінің екі жол мәліметтерін қосыңыз.

Құжаттардың жалпы мәндері осы мәліметтерде жазылады.

Динамикалық тізімнің төменгі деректемесінде мәліметтер мәндерін көрсету үшін тізім пішінінің байланысты элементі үшін сәйкес опцияны қосу керек (келесі скриншотты қараңыз).

Енді тізімнің төменгі деректемесіндегі нәтижелер қандай оқиға жаңартылатынын шешуіңіз керек. Әзірлеуге ыңғайлы болу үшін пәрмендер тақтасына «Жаңарту» командасын және сәйкес пішін элементін қосамыз. Бұл пәрмен орындалғанда, қорытындылар жаңартылады.

IN сынақ конфигурациясы, оны мақаланың соңындағы сілтемеден жүктеп алуға болады, мен құжатты жазу кезінде қорытындыларды жаңартуға арналған оқиға қостым. Бұл жағдайда пішінді хабарлау механизмі қолданылады. Біз бұл туралы толығырақ тоқталмаймыз.

Алгоритм

Ең проблемалық бөлігі қалады - жалпы мәндерді алу керек. Төмендегідей әрекет етеміз: динамикалық тізімдегі таңдау жиынтығына сәйкес соңғы өрістердің мәндерін алу үшін дерекқорға сұраныс қалыптастырамыз. Таңдаудың топтардан күрделі шарты болуы мүмкін екенін ескерген жөн.

Ескертпе: динамикалық тізімдердің параметрлері (жоғарыдағы скриншотты қараңыз) деректер құрамы жүйесінің (DCS) механизмдеріне негізделген. Тиісінше, олармен бірдей жұмыс істеуге болады (бағдарламалық қосу, өзгерту, оқу және т.б.).

Нәтижелерді алу үшін сұранысты қалыптастыру кезеңдері келесідей:

1. Біз динамикалық тізімге бастапқы сұранысты аламыз.

Көріп отырғанымыздай, сұрау барлық құжат мәліметтерін таңдайды. Кішкене күрделілікті қосу үшін мен «ТАҢДАУ» конструкциясы арқылы жасалған өзімнің «Рейтинг деңгейі» өрісін қостым.

2. Біз сұрау шарттарының мәтінін («ҚАЙДА» бөлімі) қалыптастырамыз және оны бастапқы сұрауға ауыстырамыз.

Біз конфигурацияланған динамикалық тізім таңдауына сәйкес қабылданған бастапқы сұрау мәтініне шарттарды қосуымыз керек.

Өткізілген таңдау элементінің (топ немесе таңдау элементі) түріне байланысты процедура сәйкес шарт мәтінін жасайды. Топтағы барлық шарттар жақшамен, ал топқа енгізілгендер де жақшамен қоршалған. Өрнектер арасындағы шарттар негізгі топқа байланысты («ЖӘНЕ» шарты иерархияның жоғарғы элементтері арасында орналастырылған).

Егер элементте пайдалану жалауы жинағы болса («Usage» сипаты), онда элемент өңделеді. Құрылатын мәтін де салыстыру шартына байланысты (Тең, тең емес, тізімде және т.б.). Құрылған шарт мәтінінің салыстыру түріне тәуелділігін келесі функциядан көруге болады.

Тағы бір қызықты функция, менің ойымша, «GetFieldTextByView». Бұл сұрау тілінің өрнектері арқылы құрылған өрістерді сұрау шарттарына ауыстыру үшін қажет.

Алгоритм туралы қосымша мәліметтер алу үшін мақалаға тіркелген сынақ конфигурациясын қараңыз. Төменде таңдау параметрлерінің және олар үшін жасалған сұрау шарттарының скриншоты берілген.

Жасалған шарт мәтіні бастапқы динамикалық тізім сұрауына қосылады. Сұрау нәтижесі уақытша кестеге орналастырылады.

3. Бірінші сұрауды уақытша кестеге орналастырамыз және қажетті жиынтық функциялары бар жиынтық өрістер бойынша топтастыруды орындаймыз.

Еске сала кетейін, бізге «Рейтинг» өрісі үшін орташа мәнді және «Сома» өрісі үшін жалпы соманы алу керек. Таңдауларды ескере отырып, біз қазірдің өзінде жалпы мәндерді есептеу ғана қалды; Бұл келесі сұрау арқылы жасалады:

Сұранысты орындағаннан кейін біз алынған нәтижені өңдеп, оны клиентке қайтарамыз және оны бұрын жасаған пішін мәліметтеріне жазамыз. Сайып келгенде, біз динамикалық тізімнің төменгі деректемесінде көрсетілген нәтижелерді алдық (мақаладағы бірінші скриншотты қараңыз).

Шешімнің оңтайлылығы

Жалпы алғанда, бұл тәсіл өнімділікке теріс әсер етуі мүмкін. Мысалы, егер бағдарлама динамикалық тізімде жиынтық таңдаусыз жиынтықты есептесе, онда таңдалған жазбалардың саны үлкен болуы мүмкін (мысалы, бірнеше жыл бойы). Нәтижесінде нәтижелердің әрбір жаңартылуы ондаған (!!!) секундқа созылуы мүмкін. Сондықтан таңдау белгіленген жағдайда ғана нәтижелерді есептеу мағынасы бар. Мен бұл шарттарды сынақ конфигурациясында орнаттым.

Сонымен қатар, біз тек сервер жағындағы қорытындылар мен сұрауларды есептей аламыз. Сондықтан серверге байыппен қарау керек, өйткені қорытындыларды жаңарту процедурасы өте жиі орындалуы мүмкін. Сауда ұйымындағы кассалық кіріс журналын елестетіп көріңізші, онда минутына 5 түбіртек, сағатына 300 түбіртек енгізуге болады. Құжат жазылған сайын қорытындылар жаңартылып отырады. Сондықтан контекстен тыс процедураларды қолдану арқылы жіберілетін трафикті азайту орынды болар еді.

Келесі скриншот қорытындыларды қайтаратын контекстен тыс сервер функциясын шақыруға арналған бағдарлама кодын көрсетеді.

Бірінші параметр – динамикалық тізімді таңдау, екіншісі – “SelectionFieldNameSelectionFieldValueType” түріндегі құрылым. Функциядағы бірінші параметр өз мәні ретінде алынғанын ескеріңіз. Неліктен екенін нақты айта алмаймын, бірақ таңдауды сілтеме ретінде өткізсеңіз, платформа таңдауды өзгерту мүмкін еместігі туралы қате береді. Қатені тек осылай айналып өтті.->

Ескерту: контекстен тыс процедураларды пайдалану жіберілетін трафиктің өлшемін бірнеше есе азайтуға мүмкіндік береді, өйткені контекстке сезімтал сервер процедураларынан айырмашылығы пішін деректері серверге берілмейді («&OnServer» директивасы).

Қорытынды

Қорытындылай келе, динамикалық тізімдегі қорытындыларды есептеудің бұл тәсілі даму әдістемесі тұрғысынан дұрыс емес екенін айтайын. Регистрлер бойынша жиынтықты алу дұрыс болар еді. Мысалы, чек журналында тағы да ағымдағы кассадағы ақша сомасын құжаттардан немесе тиісті жинақтау регистрінен ала аламыз.

Сонымен қатар, жинақтау регистрлерін пайдалану таңдауды есепке алмай-ақ қорытындыларды есептеуге мүмкіндік береді, өйткені жүйе өткен айлар үшін есептелген қорытындылармен оңтайлы жұмыс істейді.

Дегенмен, мақалада сипатталған әдіс мәселелерді шешу кезінде орын алады.

Жүктеп алуға арналған файлдар:

Басып шығару (Ctrl+P)

Динамикалық тізім

1. Жалпы ақпарат

Динамикалық тізім – пішіндегі мәліметтер қоры кестелерінен еркін ақпаратты көрсетуге мүмкіндік беретін арнайы деректер түрі. Ол үшін деректерді көрсеткіңіз келетін кестені көрсету керек немесе нәтиже таңдауды сұрау тілінде сипаттау керек.
Механизм деректер құрамы жүйесіне негізделген және алынған деректерді сұрыптау, таңдау, іздеу, топтау және шартты түрде пішімдеу мүмкіндіктерін қамтамасыз етеді. Бұл жағдайда деректер көзі жүйемен автоматты түрде жасалатын (көрсетілген деректер негізінде) немесе әзірлеуші ​​қолмен жазылатын сұрау болып табылады.

Күріш. 1. Динамикалық тізімді құру опциялары

Түрдің пішін атрибуттарын жасау кезінде Динамикалық тізімәзірлеуші ​​​​деректер сұрауын қалыптастырудың екі әдісін таңдай алады:
● Негізгі кестені көрсету арқылы - бұл жағдайда деректерді алғыңыз келетін кестені (Негізгі кесте сипаты) көрсету керек, ал жүйе деректерге сұранысты автоматты түрде жасайды (суреттің оң жақ бөлігін қараңыз). 1).
● Сұрауды қолмен жасау – ол үшін Custom сұрау сипатын орнату керек (1-суреттің сол жағын қараңыз). Осыдан кейін инфобазадан деректерді алуға сұранысты қолмен жасау қолжетімді болады.
Сұрау бірнеше кестелерден деректерді шығарып алады, осылайша сіз негізгі кестені көрсете аласыз. Бұл динамикалық тізім қай деректердің негізгі, қайсысы қосымша екенін анықтай алатындай және ақпаратты дұрыс таңдап, көрсете алады, сонымен қатар стандартты командаларды бере алады. Алайда, егер сұраныста негізгі кестені анықтау мүмкін болмаса, онда оны көрсету мүмкін емес, бірақ содан кейін
динамикалық тізім негізгі кестеге қатысты пәрмендерді қамтамасыз етпейді. Сонымен қатар, бұл жағдайда (негізгі кестені көрсетпей) динамикалық тізім бойынша деректерді алу тиімділігі айтарлықтай төмендейді.
Өнімділікті жақсарту үшін қосымша деректерді алу үшін ғана теңшелетін сұрауда пайдаланылатын кез келген біріктірулерді деректер құрамы жүйесінің сұрау тілі кеңейтімін пайдалану арқылы міндетті емес етіп жасау ұсынылады.
Негізгі пішін атрибуты болып табылатын динамикалық тізім үшін пішін параметрі арқылы таңдау мәндерін орнатуға болады. Таңдау. Ол үшін параметрде орналасқан құрылым қасиетінің атауы қажет Таңдау,
динамикалық тізімді таңдау өрісінің атымен сәйкес келді. Бұл жағдайда құрылым сипатының мәні таңдау элементінің дұрыс мәні ретінде орнатылады. Егер массив, тіркелген массив немесе мәндер тізімі динамикалық тізім пішінінің Таңдау параметрінің элементінің мәні ретінде берілсе, онда Тізімдегі опциясы бар шарт таңдауға дұрыс мәнде қосылады. оның ішінде мәндер тізімі орналастырылған (оған массив пен тіркелген массив түрленеді).
Динамикалық тізімдегі ерікті сұрау өріс мәнін жасау үшін параметр пайдаланылатын сұрау болуы мүмкін, мысалы:

ТАҢДАУ
ТАҢДАУ
ҚАШАН Жеткізу.Коэффиценті = 1 СОДАН &Тұсаукесер
Әйтпесе жеткізу. Коэффицент
END AS қатынасы
FROM

Сонымен қатар, егер параметр мәнінің түрі нысан төлсипатының түрінен өзгеше болса (мысалы, Құрал-жабдықтар1түрі бар Сан, ал параметр мәні түрі болып табылады Сызық), содан кейін өрісті дұрыс көрсету үшін параметр мәнін қалаған түрге нақты шығару керек:

ТАҢДАУ
ТАҢДАУ
ЖЕТКІЗУ.Коэффиценті = 1 БОЛҒАН КЕЗДЕ EXPRESS(&Өкілдігі AS String(100)) ALSE Жеткізу. Коэффицент
END AS қатынасы
FROM
Құжат.Өнімдерді жеткізу ҚАЛАЙ жеткізу керек

Таңдау орнатылатын өріс функционалдық опциялар арқылы өшірілсе, таңдау мәні пішін параметрлері немесе таңдау параметрінің сілтемелері ретінде берілсе де, мұндай өріс бойынша таңдау орнатылмайды.
Динамикалық деректерді оқу сипатын пайдаланып, динамикалық тізімге деректерді шағын бөліктерде оқу қажеттілігін көрсетесіз
(динамикалық тізім және деректерді кэштеу арқылы деректерді алу жолдары туралы қосымша мәліметтерді төменде қараңыз). Бұл атрибутқа қарамастан, келесі шарттар қолданылады:

● Көру режимі иерархиялық тізімге орнатылса, тек ағымдағы топтың деректері және барлық негізгі элементтердің деректері (балаларсыз) оқылады.
● Ағашты көру режимі орнатылған болса, тек ашық ағаш түйіндеріндегі деректер оқылады.
● Иерархиялық шолу орнатылса (Дисплей сипаты ағашқа орнатылған) және бастапқы тармақ дисплейі Барлық деңгейлерді кеңейту күйіне орнатылған болса, динамикалық тізім деректерін бір реттік жүктеуге қолдау көрсетілмейді. Деректерді алу үшін көрсетілетін тізімде қанша түйін болса, сонша серверге сұраулар жасалады.
Бір деректерді іздеу барысында динамикалық тізім келесі шарттар орындалса, бұрын жасалған уақытша кестелерді қайта пайдаланады:
● Тізім пакеттік сұрауында негізгі пакеттік сұраудан кейін сұраулар жоқ.
● Уақытша кестелердің құрамы және олардағы өрістер пакеттік сұраудың алдыңғы орындалуынан өзгермейді.

Өз жұмысында динамикалық тізім метадеректер нысанының мәліметтерінің келесі қасиеттерінің мәндерін пайдаланады:
● пішім,
● өңдеу пішімі,
● кеңес,
● теріс мәндерді бөлектеу белгісі,
● маска,
● көп жолды режим белгісі,
● кеңейтілген өңдеу белгісі,
● құпия сөз режимі.
Деректер құрамы жүйесінің таңдауы мен параметрлерін көрсету және өңдеу кезінде сәйкес өрістің өңдеу пішімі қолданылады.

2. Шектеулер мен мүмкіндіктер

Динамикалық тізімде таңдауды орнатқанда, динамикалық тізімнің көрсету режимі Иерархиялық тізім немесе Ағаш болса, таңдау топтарға әсер етпейтінін есте сақтаңыз. «Топтар» арқылы біз ThisGroup сипаты True мәніне орнатылған каталог элементін немесе сипаттамалық түрлер жоспарын түсінеміз.
Стандартты мәліметтерге динамикалық тізім арқылы автоматты түрде қолданылатын біліктіліктер Ие, Ата-ана, Күн, Мерзім және Осы Топқа қолданылады.
стандартты құралдардеректер құрастыру жүйелері. Негізгі өрістерге динамикалық тізім арқылы автоматты түрде қолданылатын таңдауды деректер құрамы жүйесінің стандартты құралдарымен де, сұрау мәтініне шарттарды тікелей қосу арқылы да қолдануға болады. INнегізгі кестенің өрістеріне. Орналасу құралдарын пайдаланып таңдауларды қолдану нәтижесінде оларды кірістірілген сұрауларда да, виртуалды кестелердің параметрлерінде де қолдануға болады.

Динамикалық тізімдерді әзірлеу кезінде барлық динамикалық тізімдерді реттелетін сұраулармен сынау ұсынылады. Тексеру процесі кезінде тізім сұрауында кірістірілген сұраулар немесе виртуалды кестелер және оларда стандартты мәліметтердің бүркеншік аттарымен сәйкес келетін өрістер Ие, Ата-ана, Күн, кезең, Бұл Топ немесе кілт өрістері бар екеніне көз жеткізу керек. таңдау болса, онда бұл өрістер лақап аты сәйкес келетін стандартты мәліметтерге сәйкес келеді. Егер бұлай болмаса, сұрауды олар сәйкес келетіндей етіп өзгерту керек немесе
лақап аты басқаша болды.
Сұрауды қолмен жасауды таңдасаңыз, сұрауға кейбір шектеулер қойылады:
● БІРІНШІ мәлімдемені динамикалық тізім сұрауында пайдалануға қолдау көрсетілмейді. Динамикалық тізімдегі жазбалар санымен шектелген таңдауды пайдалану қажет болса, сұраудың нақты мазмұны ішкі сұрауға орналастырылатындай және жазбалар санын шектейтіндей динамикалық тізімді жасау үшін сұрауды қайта өңдеу керек. осы ішкі сұрауда алынған. Ішкі сұраудың орнына уақытша кестені де пайдалануға болады.
● Таңдау, сұрыптау және топтастыруға қолдау көрсетілмейді:

  • Кестелік бөліктердің бөлшектері бойынша.
  • Өрістерді көру.
  • DataVersion өрісі.
  • PredefinedDataName өрісі.
  • Бухгалтерлік есеп кестесі кесте түрі өрісі.
  • Өріс Жинақтау тіркелімі кестесінің қозғалыс түрі.
  • Өріс типі Жоспар кестесінің сипаттамалық типінің мәндері.
  • Type өріс Type;
  • Жол типті өріс (шексіз ұзындық).
  • BinaryData түрінің өрісі.

● Subconto өрістері бойынша сұрыптауға және топтауға қолдау көрсетілмейді<НомерСубконто>және ViewSubconto<НомерСубконто>Кестелер Қозғалыстары Бухгалтерлік есеп регистрінің субконтосы.
● Жиынтық функциялары бар сұрау тілінің өрнектері болып табылатын өрістер бойынша топтастыруға қолдау көрсетілмейді.
● Негізгі кесте таңдалғанда, динамикалық тізім сұрауында келесі шектеулер болады:

  • Біріктіруге қолдау көрсетілмейді.
  • ORDER BY бөліміне қолдау көрсетілмейді. Негізгі кестесіз сұрауды пайдалану керек немесе динамикалық тізім параметрлері арқылы қажетті ретті орнату керек.

● Динамикалық тізім иерархиялық тізім немесе ағаш ретінде көрсетілсе, жазбаның кем дегенде бір ата-анасы көрсетілмейінше, жазба динамикалық тізім ретінде көрсетілмейді. Басқаша айтқанда, иерархиялық тізімнің элементін көрсету үшін динамикалық тізім сол элементтің барлық ата-аналарын тізімнің жоғарғы жағына дейін көрсетуі керек. Бұл жағдайда тізімнің жоғарғы жағында біз нені білдіреміз
динамикалық тізім арқылы көрсетілетін иерархиялық нысанның түбір элементі немесе динамикалық тізімге арналған пішін кестесі кеңейтімінің ParentTopLevel сипаты ретінде орнатылған элемент.

Келесі кестелерді динамикалық тізімнің негізгі кестесі ретінде пайдалануға қолдау көрсетілмейді:

● Әрбір кесте жазбасын бірегей түрде анықтайтын кілті жоқ кесте (нысандық кестелер үшін сілтеме және регистр кестелері үшін жазба кілті). Дегенмен, келесі кестелерді динамикалық тізімнің негізгі кестесі ретінде орнатуға болады (кілт жоқ болса да):

● Бухгалтерлік есеп регистрінің субконто кестесі;
● MovementsSubconto кестесінен басқа есеп регистрінің барлық виртуалды кестелері;
● тұрақты мәндер кестелері (тұрақтылар кестесін қоса);
● негізгі өрістері жоқ сыртқы деректер көздерінің кестелері;
● сыртқы деректер көздерінің текше кестелері;
● жинақтау регистрінің кестелері:

  • революциялық кесте;
  • баланстық кесте;
  • айналым және баланстар кестесі.

● есептеу регистрінің кестелері:

  • нақты жарамдылық мерзімінің кестесі;
  • кесте деректері;
  • негізгі деректер.

● объектілердің кестелік бөліктерінің кестелері;
● Тіркеу кестелерін өзгерту (деректер алмасу механизмдерінде қолданылады);
● реттілік кестелері;
● Конверсиялық кестелер (кезеңдік есеп айырысу механизмдерінде қолданылады).
● Сұрауда тек сыртқы біріктіруде қолданылатын кесте.

Басқаша айтқанда, негізгі кесте көрсетілген динамикалық тізім дұрыс жұмыс істейді, егер сұрауды орындау нәтижесінде:
деректер көзі ретінде көрсетілген, негізгі кестеден алынған жолдар саны өспейді (белгіленген таңдауды ескере отырып). Егер сұранысты орындау нәтижесінде негізгі кестеден сұрау арқылы алынған жолдар саны көбейсе, бұл тізіммен көрсетілетін кесте жазбаларының кілтінің бірегейлігінің бұзылуына әкеледі. Бұл жағдайда негізгі динамикалық тізім кестесін пайдалануды өшіру керек.
Динамикалық тізіммен жұмыс істеу кезінде тізімде көрсетілген мәліметтерге қол жеткізу құқықтарын ескеру қажет:
● Әрқашан пайдалану сипатымен белгіленген, бірақ ағымдағы пайдаланушыда Көру құқығы жоқ динамикалық тізім бағандарындағы деректер клиенттік тарапқа тасымалданбайды. Мұндай бағандардың деректеріне қол жеткізу (CurrentData сипатын және RowData() әдісін пайдалану)
клиент тарапынан мүмкін емес.
● Ағымдағы пайдаланушыда динамикалық тізімнің негізгі өрісінде Көрініс құқығы болмаса, сол динамикалық тізімнен деректерді алу рұқсатты бұзу қатесіне әкеледі.
Тізім тізімін көрсететін динамикалық тізім үшін тізімді интерактивті түрде теңшеу опциясы жоқ.
Динамикалық тізімнің бағандарының құрамы мен параметрлері таңдау өрістерінің бүркеншік аттары арқылы сұрау өрістерімен байланысты. Егер сұраудағы таңдау өрісі үшін бүркеншік ат анық көрсетілмесе және өріс жүйелік болса, онда кіріктірілген тілдің ағылшын тіліндегі нұсқасы үшін өріс атауы бүркеншік ат ретінде пайдаланылады.
Көрсетілген қатынас өзгерту кезінде (немесе автоматты бүркеншік ат пайдаланылған өріс үшін бүркеншік атын анық көрсету) білдіреді.
динамикалық тізім деректерін жасайтын сұрау өрісінің бүркеншік аты, динамикалық тізім атрибутының параметрлері жоғалады, пішін элементтері көрсетілген мәліметтерді «жоғалтады», динамикалық тізім параметрлері қате болады және т.б.
Егер динамикалық тізімнің деректер көзі кезең бойынша таңдауды орнатуға мүмкіндік беретін кесте (тұрақты немесе виртуалды) болса, онда пайдаланушы осындай динамикалық тізімде көрсету кезеңін орнатса (Күн аралығын орнату... пәрмені),
көрсетілген кезең шекаралары таңдау мәндері немесе виртуалды кесте параметрлері ретінде орнатылады. Егер тілді кеңейту арқылы
деректер құрамы жүйесіне арналған сұраулар, виртуалды кесте параметрлерінің атаулары нақты көрсетілген - көрсетілген параметрлері бар параметрлер
атаулар. Деректерді көрсету немесе өңдеу кезеңін бақылауға болатын кестелер:
● тізілім кестелері (негізгі немесе виртуалды), олар үшін кезең бойынша таңдауға болады (есептеу тізілімі үшін – тіркеу кезеңі бойынша);
● құжаттардың, бизнес-процестер мен тапсырмалардың негізгі кестелері;
● құжат журналдарының негізгі кестелері;
● негізгі реттілік кестелері, реттілік шекаралық кестелер.
Динамикалық тізім сұрау параметрі массив немесе мәндер тізімі болуы мүмкін. Дегенмен, параметр мәндер тізімі болса, таңдау мәні ретінде тізімдегі бірінші мән ғана пайдаланылады. Егер динамикалық тізімде параметрлері бар сұрау пайдаланылса, параметр мәндерінің бастапқы параметрі OnCreateOnServer өңдегішінде орындалуы керек.
Динамикалық тізім деректерін көрсету кезінде келесі тармақтарды есте сақтаңыз:
● Динамикалық тізімнің сипаттарын бағдарламалы түрде өзгерткенде, тізіммен байланысты пәрмен тақталары автоматты түрде қайта толтырылмайды.
осы динамикалық тізіммен.
● Ұяшықтағы топтау режимі бар топқа бірнеше өрістер топтастырылса және топтастырылған өрістерде құсбелгі ретінде көрсетілетін өріс болса, бұл құсбелгі әрқашан алынған ұяшықта бірінші (сол жақта) көрсетіледі. мәтін).
Динамикалық тізімде өрнектері параметрлерді, өрістерді немесе литералдарды қамтитын өрістер үшін деректер түрін анықтау кезінде нәтиже түрі өрістер мен литералдар түрлерімен анықталады. Егер параметр мәнінің түрі алынған деректер түріне қосылмаса, оның мәні қысқартылады.
Мысалы, келесі мысалда өріс Number түрінде болады.

ТАҢДАУ
ӨТІРІК БОЛҒАНДА
ОДАН 5
Әйтпесе
&Параметр
Соңы

Параметр параметрін басқа түрдегі мәнге орнатсаңыз, сол өріске арналған динамикалық тізім 0 мәнін алады (Сан түрі үшін әдепкі мән).
Егер мұндай жағдайда басқа түрдегі параметрді таңдау қажет болса, сұрау тілі құрылымын пайдалану ұсынылады. ЭКСПРЕСС. Мысалы,
егер жоғарыда келтірілген мысалда параметрге 100 таңбадан аспайтын жолды беру қажет болса, онда параметрдің қарапайым көрсеткішін анық түрдегі cast түрі бар өрнекпен ауыстыру керек:

ТАҢДАУ
ӨТІРІК БОЛҒАНДА
ОДАН 5
Әйтпесе
EXPRESS(&параметр AS жол(100))
Соңы

Егер динамикалық тізім сұрауының ерікті мәтіні таңдау өрістерінің өрнектерінде параметрлерді пайдаланса, құрылымды пайдаланып параметрлер түрін нақты көрсету керек. ЭКСПРЕСС. Мысалы, орнына &Номенклатура AS Номенклатурапайдалану
EXPRESS(&Nomenclature AS Directory.Nomenclature) AS Номенклатура. Әйтпесе, іздеу жолағы арқылы іздеу жұмыс істеуі мүмкін
дұрыс емес немесе қателер тудырады.

3. Динамикалық тізіммен деректерді алу және кэштеу әдістері

Көрсетілетін деректерді алу кезінде динамикалық тізім үш әдістің бірін пайдаланады:
1. Дерекқордан оқу тізімде бір уақытта көрсетілетін жолдар санынан сәл артық деректер элементтері бар бөліктерде орындалады (бірақ 20-дан кем емес). Деректер серверде кэштелмеген.
2. Дерекқордан оқу 1000 деректер элементінен тұратын беттерде орындалады. Деректер серверде кэштелуде. Иерархиялық деректер кэштеледі: әрбір ата-ана үшін элементтердің 2 бетінен көп емес кэштеледі. Бір динамикалық тізімде 20 беттен аспайтын элементтер кэштелмейді. Кэштеу келесі кестелер үшін динамикалық тізім арқылы қосылады:
● іріктеу критерийлері;
● Негізгі кестеден және MovementsSubconto кестесінен басқа есеп регистрінің барлық кестелері;
● негізгі кестеден басқа барлық жинақтау регистрлерінің кестелері;
● Негізгі кестеден басқа ақпараттық регистрдің барлық кестелері;
● Негізгі кестеден басқа есептеу регистрінің барлық кестелері;
● Орындаушы тапсырмаларының виртуалды кестесі;
● Кілттері жоқ сыртқы көздердің кестелері;
● Сыртқы көздерден алынған текшелер.

3. Дерекқордан оқу 1000 элементтен тұратын беттерде орындалады. Бірінші бөлік 1 бетке тең. Әрбір келесі бөлік 1 бетке артады (алдыңғы үлгінің соңына жеткенде). «Көру нүктесі» көрсетілген деректердің соңына жақындаған сайын, үлгі дерекқордан үлкенірек оқылады, сайып келгенде, барлық көрсетілген деректерге тең болады. Деректер серверде кэштелуде. Кэштегі және динамикалық тізімдегі жазбалардың ең көп саны - 1 000 000.
Динамикалық тізімнің негізгі кестесінде не таңдалғанына және Динамикалық оқу сипаты қандай мән алатынына байланысты деректерді оқудың сол немесе басқа әдісі қолданылады:

● Негізгі кесте қасиетінің мәні ретінде келесі кестелердің бірі көрсетілген: айырбастау жоспары, анықтамалық, құжаттар тізімі, құжат журналы, сипаттамалар түрлерінің жоспары, бухгалтерлік есеп жоспары, есептеу түрлерінің жоспары, бизнес-процесс, тапсырма, кесте бизнес-процесс нүктелері:



● Негізгі кесте қасиетінің мәні ретінде келесі кестелердің бірі көрсетілген: ақпараттық регистрдің негізгі кестесі, жинақтау регистрі, есеп регистрі, есептеу регистрі, MovementsSubconto есептік регистрінің виртуалды кестесі:

● Динамикалық оқу сипаты:
● Орнатылған: 1-әдіс пайдаланылады (әдістердің сипаттамасы жоғарыда берілген).
● Қалпына келтіру: 2-әдіс пайдаланылады (әдістердің сипаттамасы жоғарыда берілген).

● Негізгі кесте сипаты таңдау шарты кестесін немесе орындаушы бойынша тапсырмалар кестесін көрсетеді (Орындаушы бойынша тапсырмалар):
● Кесте жолын анықтайтын кілт: Сілтеме.

● Main table қасиеті SliceFirst немесе SliceLast ақпараттық регистрінің виртуалды кестесін көрсетеді:
● Кесте жолын анықтайтын кілт: RecordKey.
● Динамикалық оқу сипаты қолданылмайды.
● 2-әдіс қолданылады (әдістердің сипаттамасы жоғарыда берілген).

● Негізгі кесте сипаты мыналардың біріне орнатылған виртуалды кестелержоғарыда аталғандардан басқа регистрлер:

● Динамикалық оқу сипаты қолданылмайды.

● Негізгі кесте сипаты көрсетілмеген, ерікті сұрау пайдаланылады:
● Кесте жолын анықтайтын кілт: Сан.
● Динамикалық оқу сипаты қолданылмайды.
● 3-әдіс қолданылады (әдістердің сипаттамасы жоғарыда берілген).

Көрсету үшін деректер клиентке бөліктерде беріледі, олардың өлшемі деректерді оқудың 1-ші әдісіндегі бөлік өлшеміне ұқсас (осы бөлімнің басында сипатталған).
Динамикалық тізімді қамтитын пішінді жасаған кезде, әрбір көрінетін динамикалық тізім үшін 45 деректер элементі бастапқыда клиентке жіберіледі (егер тізімде 45-тен көп элементтер болса). Динамикалық тізім 45-тен астам жолды көрсетсе, жетіспейтін деректер элементтерін шығарып алу үшін пішін ашылған кезде қосымша сервер шақыруы жасалады.

4. Динамикалық тізім параметрлері

Сипат тізімінің параметрлері - «Ашу» гиперсілтемесін басу динамикалық тізімнің дисплейін орнатуға арналған пішінді ашады. Тізімді орнату деректер құрамы жүйесіндегі ұқсас операциялар сияқты орындалады.


Күріш. 2. Динамикалық тізімді шартты стильдеу

Конфигурацияда динамикалық тізімді орнату кезінде қолданба әзірлеушісінің келесі әрекеттерді орындау мүмкіндігі бар:
● сұрыпталатын өрістерді орнату;
● тізімдегі мәліметтерді таңдауды сипаттау;
● шартты көрініс параметрлерін көрсету;
● деректерді топтағыңыз келетін өрістерді орнатыңыз.
Жүйе орнатқан әдепкі сұрыптауға қанағаттанбасаңыз, сұрыптауды әзірлеушіге орнату мағынасы бар.

КЕҢЕС.Сұрыптау өрістерін нашар таңдау (сонымен қатар деректерді таңдау және топтау) динамикалық іріктеу тиімділігіне теріс әсер ететінін есте ұстаған жөн.
Қолданба әзірлеушісінің көзқарасы бойынша динамикалық тізім параметрлері өзара байланысты бірнеше бөліктерден тұрады. Динамикалық тізімнің параметрлерін басқаруға болатын негізгі сипат болып табылады LinkerSettings. Бұл нысанда жүйе іске қосылған кезде динамикалық тізімге қолданылатын соңғы параметрлерді анықтайтын параметрлердің үш жиынтығы бар:
● Параметрлер – конфигуратор режимінде жасалған параметрлер. Динамикалық тізімнің Тапсырыс сипаты динамикалық тізім параметрлерін құрастырушысының Settings.Order сипатына жылдам қол жеткізуді қамтамасыз етеді, сондықтан келесі конструкциялар баламалы болады:
List.Order және List.SettingsLinker.Settings.Order;
● UserSettings – бұл 1С:Кәсіпорын режимінде пайдаланушы өзгертетін параметрлер;
● Бекітілген параметрлер – бұл параметрлер кірістірілген тілден орнатылады. Бұл сипат сонымен қатар оның параметрлері арқылы пішінге тасымалданатын таңдау мәндерін қамтиды. Таңдау, Параметрлер, Шартты көрініс динамикалық тізім сипаттары динамикалық тізім параметрлерін құрастырушының бекітілген параметрлеріне жылдам қол жеткізуді қамтамасыз етеді. Басқаша айтқанда, бұл қоңыраулар баламалы:
List.Settings Composer.FixedSettings.Selection және List.Selection.
Динамикалық тізім үшін соңғы параметрлерді жасау кезінде әртүрлі параметрлер опциялары төмендегідей біріктіріледі:
● Параметрлердің кез келген түрі толығымен реттелетін ретінде белгіленсе, нәтиже параметрлері реттелетін параметрлерді қамтиды
(List.ComposerSettings.UserSettings). Сонымен қатар, кез келген баптау элементтері қолжетімсіз деп белгіленсе, бұл параметрлер List.Settings Composer сипатынан алынған параметрлерге орналастырылады. Параметрлер.
● Параметрлердің кез келген түрі толығымен емес, элемент бойынша реттелетін ретінде белгіленсе, онда:
● Пайдаланушы ретінде белгіленген элементтер List.SettingsComposer.CustomSettings сипатынан алынған параметрлерге қосылады.
● Қолжетімсіз деп белгіленген элементтер List.SettingsComposer.Settings сипатынан алынған параметрлерге қосылады.
● Бекітілген параметрлер (List.SettingsComposer.FixedSettings) алынған параметрлерге "сол күйінде" қосылады. Сонымен қатар, тіркелген және пайдаланушы параметрлері бірдей атаудағы параметрлерді қамтуы мүмкін емес, мысалы, шартта сол сол мәні бар таңдау.

Динамикалық тізім параметрлері функционалдық опцияларды пайдалану арқылы өшірілген параметрлерді қамтыса, динамикалық тізім деректері алынған кезде бұл параметрлер қолжетімді параметрлер тізімінен жойылады.
Пайдаланушыға қандай параметрлер қолжетімді, қайсысы қол жетімді болмайтынын бақылау динамикалық тізім параметрлері терезесінде орындалады.


Күріш. 3. Пайдаланушы параметрлеріне қосуды бақылау

Терезенің төменгі жағындағы құсбелгі (3-суретті қараңыз) параметрлердің барлық түрін параметрлерге (қалыпты немесе жылдам) орналастыруға жауапты. Бұл мүмкіндік таңдау, ретке келтіру, топтау және шарттау үшін қол жетімді. Параметрлер жылдам таңдау өңдеу режимімен көрсетілсе, динамикалық тізімді көрсететін пішін кестесінің Пайдаланушы параметрлер тобы сипатында пайдаланушының жылдам параметрлерімен байланысты элементтері болатын пішіннің бос тобын көрсету керек. динамикалық тізім орналасады. Топ көрсетілмесе, пайдаланушының жылдам параметрлері пішінде көрсетілмейді. Сондай-ақ, динамикалық тізім кеңейтімінің CreateCustomSettingsFormItems() әдісін пайдаланып, кірістірілген тілді пайдаланып реттелетін параметрлерді жасауды анық шақыруға болады.
Сондай-ақ, пайдаланушы параметрлерінде арнайы параметрлер элементтерін орналастыру мүмкіндігін таңдауға болады. Бұл мүмкіндік таңдау және шартты дизайн элементтері үшін қол жетімді (3-суретті қараңыз).

Динамикалық тізімді ашу кезінде жүктелетін қандай да бір арнайы параметрлер қажет болса, мұны екі жолмен жасауға болады:
● UserSettings динамикалық тізім пішін параметрін пайдалану. Бұл параметрдегі деректер пайдаланушының динамикалық тізім параметрлеріне орналастырылады.
● Динамикалық тізім пішін параметріUserSettingsKey пайдалану. Пішінді ашу кезінде осы параметрді көрсетсеңіз, онда көрсетілген кілтпен параметрлер қоймасында орналасқан пайдаланушы параметрлері пішіннің негізгі атрибуты болып табылатын динамикалық тізімге жүктеледі.

5. Динамикалық тізімде іздеу

Пішінде орналасқан динамикалық тізім көрсетілген деректерді интерактивті іздеу мүмкіндігін береді. Іздеуді келесі құралдар арқылы жүзеге асыруға болады: іздеу жолағы, іздеу диалогы, ағымдағы мәнді іздеу, іздеу журналын пайдалану және кезеңді орнату (құжаттарды көрсететін динамикалық тізімдер үшін). Іздеу нәтижесі шектеулі жазбалар жинағы болып табылады
іздеу критерийлеріне сәйкес келетін динамикалық тізім (берілген пайдаланушы үшін қолжетімді).
Динамикалық тізімде іздеу мүмкіндіктерін басқару үшін үш кесте сипаты бар: бақыланатын пішін, динамикалық тізімді көрсету:
● Іздеу жолының орны – іздеу жолының орнын анықтайды. Келесі мәндерді қабылдай алады: Авто, Пәрмен жолағы, Ешбірі, Жоғарғы, Төменгі.


Күріш. 4. Динамикалық тізімдегі іздеу жолын

Бұл сипаттың мәні Пәрмендер тақтасына орнатылса, іздеу жолы пішін пәрмендер тақтасында (егер динамикалық тізім негізгі пішін төлсипаты болса) немесе динамикалық тізіммен байланысты пәрмендер тақтасында көрсетіледі. Пәрмен жолағында орналасқан іздеу жолағы әрқашан пәрмен жолының оң жақ жиегіне басылады (іздеу жолының оң жағында орналасқан түймелермен бірге).
Егер сипат Жоқ мәніне орнатылса, онда іздеу жолы пішінде болмайды және іздеу жолын теруді бастағанда диалогтық терезе ашылады.
Сипат Жоғарыға орнатылса, іздеу жолағы тізім пәрмен жолы мен динамикалық тізімді көрсететін кесте арасында орналасады. Сипат Төменге орнатылса, іздеу жолы динамикалық тізімді көрсететін кестеден кейін бірден орналастырылады.


● Үйлесімділік режимі сипаты Қолданбау күйіне орнатылса немесе 8.3.4 нұсқасынан ескірек болса – мән Пәрмендер тақтасы болады.
Іздеу жолына келесідей өтіңіз:
● Ctrl+F пернелер тіркесімін басу арқылы;
● Тінтуір;
● Динамикалық тізімде теруді бастағанда (динамикалық тізімнің SearchOnTyping сипатының мәнін ескере отырып).
● View State Position – көрініс күйінің қай жерде көрсетілетінін сипаттайды: қандай өрістер ізделді және қандай мәндер
әр салада ізденді. Келесі мәндерді қабылдай алады: Auto, None, Top, Bottom


Күріш. 5. Динамикалық тізімдегі іздеу күйі

Сипат Жоқ мәніне орнатылса, көрініс күйі пішінде болмайды. Нәтижесінде іздеудің аяқталғанын немесе аяқталмағанын «Іздеуден бас тарту» батырмасының қолжетімділігі арқылы анықтауға болады.
Сипат Жоғарыға орнатылса, көрініс күйі тізім пәрмен жолағы мен динамикалық тізімді көрсететін кесте арасында орналасады. Сипат Төменге орнатылса, көрініс күйі динамикалық тізімді көрсететін кестеден кейін бірден орналастырылады.
Пішін 1C: Enterprise 8.3.4 және одан бұрынғы нұсқасында жасалған болса, сипат No мәніне орнатылады. Пішін 1C: Enterprise 8.3.5 және одан жоғары нұсқасында жасалған болса, сипат Авто күйіне орнатылады. Бұл жағдайда мүліктің нақты құны келесідей анықталады:
● Үйлесімділік режимі сипаты 8.3.4 нұсқасына (және одан төмен) орнатылған болса – мән Жоқ;
● Үйлесімділік режимі сипаты Қолданбау күйіне орнатылса немесе 8.3.4 нұсқасынан ескірек болса – Жоғары мәні;
● Search Control Position – іздеуді басқару түймесі қай жерде пайда болатынын анықтайды. Түйме келесі ақпаратты қамтитын мәзірді ашады: пәрмендер Ағымдағы мән бойынша табу, Кеңейтілген іздеу, Іздеуді тоқтату, Мерзімді орнату (құжаттар мен журнал тізімдері үшін) және іздеу сұрауларының журналы (соңғы 5 сұрау). Сипат келесі мәндерді қабылдай алады: Auto, None, Пәрмендер тақтасы.


Күріш. 6. Динамикалық тізімде іздеуді басқару

Егер сипат Жоқ мәніне орнатылса, онда іздеуді басқару түймесі пішінде болмайды (бірақ пәрмендер Қосымша мәзір арқылы қолжетімді болады). Пәрмендер тақтасы сипатының мәні динамикалық тізімді көрсететін кестемен байланыстырылған пәрмен жолағына түймені орналастырады.
Пішін 1C: Enterprise 8.3.4 және одан бұрынғы нұсқасында жасалған болса, сипат No мәніне орнатылады. Пішін 1C: Enterprise 8.3.5 және одан жоғары нұсқасында жасалған болса, сипат Авто күйіне орнатылады. Бұл жағдайда мүліктің нақты құны келесідей анықталады:
● Үйлесімділік режимі сипаты 8.3.4 нұсқасына (және одан төмен) орнатылған болса – мән Жоқ;
● Үйлесімділік режимі сипаты Қолданбау күйіне орнатылса немесе 8.3.4 нұсқасынан ескірек болса – мән Пәрмендер тақтасы болады;
Пішінде пәрмендер көзі басқарылатын пішіннің бір кестесі (динамикалық тізім деректерін көрсету) болып табылатын бірнеше пәрмен тақталары болса, іздеу жолы мен іздеуді басқару түймесі тек бір пәрмен тақтасында орналасады:
● Немесе динамикалық тізімнің пәрмен жолағында (ол үшін автоматты аяқтау қосылған болса)
● Немесе қалған пәрмен тақталарының кез келгенінде.

Динамикалық тізімде іздеуді пайдалану мүмкіндіктерін қарастырайық:
● Іздеуді пайдалануға ыңғайлы ету үшін (оның ішінде өнімділік тұрғысынан) динамикалық тізімнің негізгі кестесі ретінде пайдалануға болатын барлық конфигурация нысандары үшін толық мәтінді іздеуді қосу керек. Сондай-ақ, толық мәтінді іздеу динамикалық тізімде көрсетілуі мүмкін және іздеу қажет болуы мүмкін конфигурация нысандарының барлық мәліметтерін қамтуы керек.
Егер нысан толық мәтінді іздеуден шығарылса, онда қарастырылып отырған іздеу механизмі жұмыс істейді, бірақ мұндай іздеудің өнімділігі өте төмен болады. Толық мәтінді іздеу арқылы индекстелмеген нысандарда іздеуді пайдалану ұсынылмайды.
● Қолданба шешімі болуы керек күнделікті тапсырма, ол толық мәтінді іздеу индексін үнемі жаңартады.

● Іздеу динамикалық тізімнің (және конфигурация нысанының) барлық бағандарында орындалмайды, тек кестеде көрсетілген бағандарда ғана орындалады.
● Динамикалық тізімде еркін көрсетілімі бар сілтеме түрлерінің өрістері бойынша іздеу үшін пайдаланылатын өрістер орындалады.
өкілдік қалыптастыру (мына жерден қараңыз). Көрініске енгізілген өрістер сәйкес нысанның ViewFieldGettingProcessing() өңдеушісін ескере отырып алынады.
● Негізгі кесте көрсетілген динамикалық тізімдер үшін негізгі кестеде толық мәтінді іздеу қолданылады. Негізгі кестедегі барлық индекстелмеген сілтемелер толық мәтінді іздеу нәтижелеріне қосылады. Негізгі кестені толық мәтінді іздеу нәтижесі негізгі өрістерге негізделген таңдау ретінде пайдаланылады. Толық мәтінді іздеу басқа кестелерден тізімде көрсетілген өрістерде де орындалады (егер өріс пен конфигурация нысаны үшін толық мәтінді іздеу пайдаланылса). Толық мәтінді іздеу қосылмаса, деректер болуы мүмкін
табылды, бірақ іздеудің өзі өте баяу болады.
Толық мәтінді іздеуді орындау әрекеті кезінде қате орын алса, іздеу толық мәтінді іздеуді қолданбай орындалады.
Мысалы, бұл бір әріпті және көп жолдарды іздеу кезінде орын алуы мүмкін ақпараттық база, осы әріптен басталады.
● Егер динамикалық тізімнің негізгі кестесіндегі өріс үшін Equals салыстыру түрі бар таңдау пайдаланылса, онда толық мәтінді іздеуді орындау кезінде осы кестенің іздеу сұрауына таңдау мәні қосылады.
● Іздеу жолы сөздерге бөлінген. Бұл бөлім келесі ережелерге сәйкес орындалады:
● Бөлгіштер ретінде бос орын мен қойынды таңбалары арқылы жол үзіледі.
● Содан кейін әрбір алынған фрагмент өңделеді:
● Егер фрагмент ағымдағы сеанс тіліне негізделген күн көрінісі (уақыты бар немесе жоқ) болса, онда сөз фрагмент болып табылады.
● Әйтпесе, фрагмент бөлгіштер ретінде “,.-/\” таңбалары арқылы одан әрі бөлінеді. Бұл жағдайда жолдың әрбір нәтижелі фрагменті сөз ретінде қабылданады.

● Әрбір сөз үшін «НЕМЕСЕ» арқылы біріктірілген өзіндік шарттар жинағы қалыптасады. Шарттардың бұл жиыны осы өріс алынған кестедегі берілген сөзді толық мәтінді іздеу кем дегенде бір нысанды қайтарса немесе осы өріс үшін толық мәтінді іздеу пайдаланылмаған болса жасалады. Шарттар келесідей қалыптасады:
● String түріндегі өріс үшін шарт: %Word% LIKE FieldName.
● Сан түріндегі өріс үшін шарттың FieldName=Мән пішімі болады, мұндағы Мән — Сан түріне түрлендірілетін сөз. Егер трансляцияны орындау мүмкін болмаса, өрісті іздеу орындалмайды.
● Сөз ағымдағы сеанс үшін анықталған әдепкі логикалық көріністе ішкі жол ретінде ізделеді. Егер іздеу сөзі көріністе табылса, ол сөз табылған көрініске сәйкес мәнді іздейді. Бұл жағдайда іздеу Пішім пішін элементінің сипаты арқылы көрсетілген көріністерді пайдаланбайды.
● Күн түріндегі өріс үшін шарт FieldName>=StartofDay(Word) ANDFieldName сияқты көрінеді.<=КонецДня(Слово). Если Слово подобно дате, в которой год
бір немесе екі цифрмен көрсетілген болса, жыл ағымдағы ғасырға қысқарады және бұл мән іздеу шартына қосылады.
● Анықтамалық өрістер үшін іздеу анықтамалық көріністі қалыптастыру үшін пайдаланылатын өрістерде орындалады. Осы өрістердің әрқайсысында іздеңіз
жоғарыда сипатталған ережелерге сәйкес орындалады. Іздеу реттелетін деректер көрінісін қалыптастыру үшін пайдаланылатын өрістерді пайдаланбайды.
Әрбір сөзге арналған шарттар жиынтығы «ЖӘНЕ» біріктірілген.
● Бастапқы нөлдері бар мәндер үшін алдыңғы нөлдері бар жолды немесе нөлдерсіз көрсетілген жолды іздеуге болады.
● Егер динамикалық тізім құжаттар тізімін немесе құжат журналын көрсетсе, сіз көрсеткен тізімді көру аралығы қажетті динамикалық тізім үшін көрініс күйін көрсету үшін сақталған пішін аймағында да көрсетіледі.
● Динамикалық тізімнің негізгі кестесі таңдау шарты болса, ағымдағы мән бойынша іздеу пәрмені қолжетімді емес.
● Табылған жол фрагменттері кестеде көрсетілгенде бөлектеледі.
● Бір баған үшін тек бір іздеу жолына қолдау көрсетіледі. Ізделіп жатқан бағанға жаңа іздеу сұрауын қосқанда, бірге қосылатын екі іздеу сұрауының орнына іздеу өрнегі ауыстырылады.
● Егер пішінде динамикалық тізімді көрсететін кестемен байланысты Іздеу жолының дисплейі (пішін элементін қосу көзі сипаты) пішін элементінің қосымшасы болмаса, Ctrl+F пернелер тіркесімін басу іздеу диалогтық терезесін ашады.


Күріш. 7. Іздеу диалогтық терезесі

Егер пішінде динамикалық тізімді көрсететін кестемен (пішін элементін қосу Source сипаты) байланыстырылған Іздеу жолының дисплейі пішін элементінің қосымшасы болса, іздеу тілқатысу терезесін ашу үшін Кеңейтілген іздеу пәрменін пайдалану керек.
● Іздеу тілқатысу терезесін пайдаланған кезде келесі жайттарды есте сақтаңыз:
● Пернелер тіркесімін пайдаланып іздеу тілқатысу терезесін ашу ағымдағы ұяшықтың мәнін іздеу жолында пайда болады және Қалай іздеу керек қосқышының мәні дәл сәйкестік бойынша орнатылады.

● Динамикалық тізімде іздеу жолын тікелей теруді бастау арқылы іздеу тілқатысу терезесін ашу «Іздеу әдісі» қосқышының мәні жолдың бөлігі бойынша мәніне орнатылады, ал терілген мәтін «Не» терезесінде аяқталады. іздеу өрісіне.

6. Динамикалық тізіммен көрсетілетін деректерді алу

Динамикалық тізімдерді пайдаланған кезде қолданылатын таңдаулар мен іздеулерді ескере отырып, қазіргі уақытта динамикалық тізімде көрсетілетін деректерде әртүрлі әрекеттерді орындау қажет болуы мүмкін. Мұндай әрекеттерге мыналар жатады: көрсетілген ақпаратты өңдеу, мысалы, таңдалған құжаттарды қайта жіберу немесе таңдалған объектілер үшін кейбір мәліметтерді орнату, қол жетімді объектілердің тізімін жасау (дизайнмен және т.б.), мысалы, басып шығару немесе электрондық кесте құжатына сақтау.
Динамикалық тізім арқылы көрсетілетін деректерді алу үшін GetExecutableDataCompositionSchema() және
GetExecutableDataCompositionSettings().
Деректерді қабылдау мысалы:

Схема = Elements.List.GetExecutableDataCompositionSchema();
Параметрлер = Items.List.GetExecutableDataCompositionSettings();
LayoutLinker = newDataCompositionLayoutLinker();
LayoutLayout = LayoutComposer.Execute(Схема, Параметрлер);
CompositionProcessor = newDataCompositionProcessor;
LayoutProcessor.Initialize(LayoutLayout);
OutputProcessor = Жаңа OutputProcessorDataCompositionResultInTabularDocument;
ReturnOutputProcessor.Output(CompositionProcessor);

Мәндер жиынына деректерді алу (кесте немесе мәндер тізімі) дәл осылай орындалады.
Динамикалық тізім деректерін осы жолмен алу қолданбалы шешімдерді әзірлеу кезінде ескерілуі тиіс бірқатар мүмкіндіктерге ие:
● Келесі кесте дизайнына қолдау көрсетілмейді:
● ауыспалы сызық түстері;
● тақырып суреті;
● жертөленің суреті;
● Колонтитул фонының түсі;
● Колонтитул мәтінінің түсі;
● Колонтитул шрифті;
● жертөледегі көлденең орналасу;
● Құпия сөз режимі.
● Басқарылатын пішін үшін көрсетілген шартты көрініске қолдау көрсетілмейді;
● Сілтеме түріндегі өріс бойынша иерархиялық кестеге өсу ретімен тапсырыс бергенде, бос сілтемесі бар жазбалар әрқашан бірінші орналасады.

Кез келген бағдарламалау тілінде кездесетін қарапайым деректер типтерінен басқа, 1С-те бірегей типтер бар. Олардың әрқайсысының өзіндік қасиеттері, әдістері, функциялары, жүйеде қолдану мақсаты мен нюанстары бар. Осы түрлердің бірі - көптеген қолданбалы тапсырмаларды айтарлықтай жеңілдететін динамикалық тізім. Сондықтан әзірлеушілер бұл әмбебап құралды білуі және өңдеуі керек.

1С жүйесіндегі динамикалық тізімдердің ерекшеліктері

Бұл түрдің мақсаты - түріне қарамастан кез келген деректер қоры кестелерінен ақпаратты көрсету. Механизм SKD негізінде жасалған және ұқсас мүмкіндіктерге ие. Бірақ бұл сізге міндетті түрде 1С тілінде сұрау жазу керек дегенді білдірмейді, дегенмен бұл мүмкіндік бар және оны пайдалану керек. Сіз жай ғана ақпаратты қызықтыратын кестені көрсете аласыз және 1С өз бетінше қарапайым сұранысты жасайды.

Динамикалық тізімнің қалай құрылғанын және ол қандай деректерді көрсететінін көру үшін конфигураторда ол орналасқан басқарылатын пішіндерді ашу керек: мәліметтер тізімінде оның қасиеттерін ашу үшін контекстік мәзірді пайдаланыңыз және «Таңдамалы тізімге» назар аударыңыз. Сұраныс» тармағы. Егер құсбелгі жоқ болса, онда «Негізгі кесте» параметрі деректер алынатын дерекқор кестесін көрсетеді. Әйтпесе, динамикалық тізім реттелетін сұрау деректерін көрсетеді, оны тізім параметрлерін ашу арқылы көруге болады.

Теңшелетін сұрау схемасы әлдеқайда жиі пайдаланылады, себебі бұл әртүрлі деректерді біріктіруге және көрсетуге тамаша мүмкіндік береді. Көбінесе бұл механизм қойма қалдықтарын, тауарлар бағасын, түсімдерді, шығындарды немесе сатып алуларды көрсету үшін қолданылады. Сіз оны мұқият пайдалануыңыз керек, себебі күрделі сұраулар үшін өнімділік төмендеуі мүмкін.

Динамикалық тізімнің тағы бір пайдалы қасиеті «Тізім параметрлері» жазуын басқан кезде ашылады. Бұл мәзір стандартты өрістер жинағын пайдаланған кезде де ақпаратты соңғы пайдаланушылар үшін қол жетімді және түсінікті етуге мүмкіндік береді. Сұрау ерікті ма, жоқ па, қарамастан, сіз «Параметрлер» қойындысын көресіз, онда мыналарды көрсетуге болады:

  • Динамикалық тізімді таңдау;
  • Топтар;
  • Сұрыптау;
  • Декорация.

Параметрлерді пайдалану динамикалық тізімдерді әмбебап және жеткілікті икемді етеді. Сондай-ақ, оларды басқарылатын пішіндегі мәліметтермен байланыстыруға болады және деректер пайдаланушы таңдаған параметрлерге байланысты өзгереді. Бұл механизмдердің қолданылуын нақты өмірлік мәселелердің мысалдарын қарастыру арқылы түсінуге және бағалауға болады.

Мысал ретінде номенклатураның қалдықтарын бақыланатын бланкіде көрсету тапсырмасын қарастырайық. Нақты тәжірибеде мұндай тапсырыстар әртүрлі конфигурацияларда жиі кездеседі және динамикалық тізім құрал ретінде өте қолайлы. Бұл тапсырма үшін біз реттелетін сұрауды, динамикалық тізім параметрлерін және оның параметрлерін пайдалануымыз керек.

Түсінікті болу үшін бөлек сыртқы өңдеуді жасап, оған динамикалық тізімді орналастырайық. Жоспарларымызды жүзеге асыру үшін номенклатурасы бар кесте жеткіліксіз болады, сондықтан біз ерікті сұрауға рұқсат беруіміз керек. Онда біз каталогтың элементтер тізімімен және баланстар реестрімен сол жақ байланысын сипаттаймыз және каталогты негізгі кесте ретінде орнатамыз. Бұл схема динамикалық тізіммен жұмыс істейтін пайдаланушыларға элементтерді қосуға немесе өзгертуге мүмкіндік береді.



ТАҢДАУ Номенклатура Тізім. Аты АС Аты, Қоймадағы Тауарлар Қалғандар. Қойма ретінде Қойма, Қоймалардағы Тауарлар. Қалған Саны Каталогтан Қалған Саны. Номенклатура КІМНІ СОЛ ҚОСЫЛУ ТІЗІМІ On WarehousesRemaining software NomenclatureList.Link = ProductsInWarehousesRemainings.Номенклатура ҚАЙДА

Біздің сұрауымыз «CurrentDate» параметрін пайдаланғандықтан, өңдеуді пайдаланбас бұрын оның мәнін орнатуымыз керек. Ол үшін «When CreatedOnServer» процедурасындағы пішін модулінде стандартты пәрменді пайдаланып, оған «CurrentSessionDate» функциясын тағайындаңыз. Сондай-ақ, бақылау пішінінде динамикалық тізімді көрсету және анық болу үшін өрістердің ретін өзгерту керек. «Номенклатураның қалғаны» төлсипатын пішін элементтеріне (жоғарғы сол жақ бөлік) сүйреп апарыңыз және пішіндегі кестедегі өрістердің ретін өзгерту үшін көк көрсеткілерді пайдаланыңыз.

Серверде жасалған кезде &Сервер процедурасында (Қателік, стандартты өңдеу) Қалған номенклатура.Parameters.SetParameterValue("CurrentDate",CurrentSessionDate()) EndProcedure


Қазірдің өзінде біз 1C-де сыртқы өңдеуді ашып, динамикалық тізімнің жұмыс істеп тұрғанын көре аламыз. Біз теңгерімдерді қарай аламыз, элементтер мен топтар жасай аламыз және іздей аламыз. Көбінесе тұтынушылар балансты көретін күнді таңдау мүмкіндігін қосуды сұрайды. Динамикалық тізімі бар пішін жағдайында бұл қосымша өріс және оның көмегімен параметрлерді орнату арқылы қол жеткізіледі.

«Күн» түрінің «Қалған күні» төлсипатын қосыңыз және оны пішін элементтеріне тасымалдаңыз. Өріс оқиғаларында біз «OnChange» оқиғасын жасаймыз және динамикалық сұрауда қолданылатын «CurrentDate» параметрін орнату кодын жазамыз. Пішінді ашқан кезде пайдаланушы балансты қай күні көретінін бірден түсінуі үшін біз «When CreatedOnServer» процедурасына шағын өзгерістер енгіземіз.



&OnServerProcedureWhenCreatingOnServer(Сәтсіздік, StandardProcessing)RemainingDate = CurrentSessionDate();

Элемент Remains.Parameters.SetParameterValue("CurrentDate", RemainingDate); Процедураның соңы &Клиент процедурасы туралы Қалған күніӨзгерген(элемент)номенклатурасы қалған.Parameters.SetParameterValue("CurrentDate",RemainingDate); Процедураның соңы

Нәтижесінде біздің Динамикалық тізім пішіні кез келген күндегі теңгерімді көрсете алады.

  1. Біз осы құралдар жинағының мүмкіндіктерінің аз ғана бөлігін қарастырдық, бірақ бұл динамикалық тізімнің осы түрінің ыңғайлылығын түсіну үшін жеткілікті. Ұқсас механизм көптеген тапсырмалар үшін пайдаланылады, бірақ ол көбінесе басқарылатын пішіндердегі типтік конфигурацияларда кездеседі:
  2. Таңдау;

Тізімдер.

Стандартты басқарылатын пішіндерде динамикалық тізімді және оның сұрауын алу үшін әзірлеуші ​​конфигураторда қажетті пішінді ашуы керек. Мәліметтер бөлімінде мәліметтерді «Динамикалық тізім» деректер түрімен табыңыз (көбінесе ол қалың қаріппен бөлектелген). Оның қасиеттері сұрау мәтінін, таңдауларды және басқа параметрлерді қамтиды.

Көзілдірік арқылы үй жазбалары

21.04.2014 Динамикалық тізім деректерін алу

8.3.6.1977 нұсқасында жүзеге асырылды.

Біз динамикалық тізім арқылы көрсетілетін деректерді оңай және ыңғайлы алу мүмкіндігін енгіздік.

Стандартты емес, «арнайы» пішінде басып шығару үшін сізге динамикалық тізім деректері қажет болуы мүмкін. Немесе олармен белгілі бір әрекеттерді орындау үшін. Мысалы, белгілі бір критерийлер негізінде тізімде таңдаған барлық мердігерлерге хат жіберіңіз.

Динамикалық тізім өздігінен сізге бұл ақпаратты бере алмайды. Динамикалық тізімнің мақсаты - деректердің үлкен көлемін жылдам қарауды қамтамасыз ету. Сондықтан ол деректерді бір немесе екі экранда көрсету үшін қажетті бөліктерде оқиды. Және «ештеңе білмейді», мысалы, ол санауға тиіс деректердің жалпы көлемі туралы.

Тұтастай алғанда, пайдаланушы қажет ететін қосымша ақпаратты алу үшін дерекқор сұрауын орындау керек. Динамикалық тізімде пайдаланылғанмен бірдей.

Бұрын сіз мұны істей алатынсыз. Бірақ бұл әрқашан оңай болған жоқ. Өйткені, динамикалық тізім жұмыс істейтін бастапқы сұраныстың мәтініне қосымша, деректерді көрсететін кестеде пайдаланушы интерактивті түрде орнатқан барлық таңдауларды, сұрыптауларды және басқа параметрлерді білу қажет.

Енді бұл мәселені оңай шешуге болады. Динамикалық тізім кестесінде енді екі жаңа әдіс бар:

  • GetExecutableDataCompositionSchema();
  • GetExecutableDataCompositionSettings().

Осылайша, сіз деректер орналасу схемасының өзін және, ең бастысы, оның барлық параметрлерін аласыз, соның арқасында пайдаланушы тізімді дәл осылай көреді. Сізге тек макетті бағдарламалық түрде құрастыру және оны мәндер жинағында (бағдарламаны өңдеу үшін) немесе электрондық кесте құжатында (көрсету үшін) көрсету жеткілікті:

Нәтижесінде сіз динамикалық тізім кестесінде көрсетілген бағандар мен жолдарды қамтитын құрылымды (немесе есепті) аласыз.

Маңызды мәселе, динамикалық тізім кестесінен алынған орналасу мен параметрлер басқа нәрселермен қатар бағандардың көрінуін және қолданылған іздеуді ескереді. Параметрлер бөлек алынғандықтан, өрістердің құрамын өз мақсаттарыңыз үшін өзгертіп, мысалы, пайдаланушыға көрінетіндерді ғана емес, тізімнің барлық бағандарын алуға болады.

Электрондық кестелік құжатқа шығару кезінде тағы бір жағымды сәт бар. Жалпы есептің көрінісі схема мен параметрлерді алған кездегі динамикалық тізім кестесінің көрінісіне сәйкес болады. Соның ішінде кестенің шартты дизайны. Пішіннің шартты дизайнын есепке көшіргіңіз келсе ғана сізге кейбір қосымша әрекеттер қажет болады.

Конфигурацияларды аяқтау процесінде әрбір 1С бағдарламашысы динамикалық тізімдерге тап болады.
Динамикалық тізім – бұл мәліметтер базасы объектілерінің немесе объект емес деректердің әртүрлі тізімдерін – регистр жазбаларын көрсету үшін қолданылатын интерфейстік объект.
Мысалы, элементтер тізімін көрсету үшін динамикалық тізім пайдаланылады:

Динамикалық тізімнің мүмкіндіктерін көрсету үшін сыртқы өңдеуді жасап, негізгі пішінді қосамыз. «Динамикалық тізім» түрі бар пішінге жаңа атрибут қосамыз. Оның қасиеттеріне кіріп, онда не бар екенін көрейік.
Бізді «Таңдамалы сұрау» сипаты қызықтырады. Оны қосу бізге динамикалық тізімнің барлық мүмкіндіктерін көрсетеді. Біз 1С: Кәсіпорын жүйесінің сұрау тілінің барлық дерлік мүмкіндіктерін пайдалана отырып, сұраныс жаза аламыз. Құсбелгіні қойып, «Ашу» сілтемесін басыңыз:

Әдепкі бойынша, біздің тізімде барлық қоймалар үшін жалпы балансы бар элементтер тізімі көрсетіледі. Мұндай тізімді енгізу үшін келесі сұрауды қосыңыз:


Негізгі кесте ретінде біз «Каталог.Номенклатураны» таңдаймыз, бұл номенклатура тізімі сияқты динамикалық тізіммен жұмыс істеуге мүмкіндік береді - каталог элементтерін қосу, өзгерту, жою үшін белгілеу. Сондай-ақ, негізгі кестені орнату деректерді динамикалық оқуға мүмкіндік береді - бұл таңдау қажет болған жағдайда бөліктерде жасалатынын білдіреді.
Содан кейін біз тізіміміз үшін пішін элементтерін жасауымыз керек:

Егер біз өңдеуді осы пішінде іске қосуға тырыссақ, біз қатені аламыз:


Оны жою үшін «Кезең» параметрінің мәнін орнату керек. Ол үшін динамикалық тізімнің «Параметрлер» жиынының «SetParameterValue» әдісін қолдануға болады. Әдіс екі параметрді қабылдайды:
. «Параметр» - Түрі: Жол; DataCompositionParameter. Мәнін орнатқыңыз келетін параметр атауы немесе деректер құрамы параметрі;
. «Мән» - Түрі: ерікті. Орнатылатын мән.
Пішіннің «OnCreateOnServer» өңдеушісінде шақыруға болады:

Сізде сұрақ бар ма немесе кеңесшінің көмегі қажет пе?


Біз пайдаланушыға балансты алу мерзімін өзгерту мүмкіндігін береміз. Ол үшін төлсипатты және онымен байланысты «Күн» пішін элементін қосыңыз:


«Күн» пішін элементінің «OnChange» өңдегішінде біз байланысты атрибуттың мәнін мән ретінде бере отырып, «SetParameterValue» әдісін шақырамыз. Осыған ұқсас пішіннің «Серверде жасау кезінде» процедурасын өзгертейік. Әдіс клиентте қол жетімді болғандықтан, серверді шақырудың қажеті жоқ:


Енді күн өзгерген кезде баланстар автоматты түрде жаңартылады:




Пайдаланушылар ағымдағы баланстарды немесе жоспарланған түбіртектерді көргісі келеді деп есептейік. Іске асыру нұсқаларының бірін қарастырайық. Логикалық типті пішін төлсипатын және байланысты ауыстырғышты қосамыз:


Коммутатордың мәнін өзгерту кезінде біз сұраныс мәтінін өзгертеміз. Бұл әрекетті орындау үшін біз «Түбіртектегі санды көрсету» пішін элементі үшін «Өзгертуде» оқиға өңдеушісін қолданамыз. Біз атрибуттың мәніне байланысты динамикалық тізімнің «QueryText» қасиетін өзгертуіміз керек. Бұл сипат клиентте қол жетімді болмағандықтан, сервер процедурасын шақыру керек:


Енгізілген өзгерістердің нәтижесі: