Работа с файлове (снимки) в интерфейса на Такси

Нека разгледаме алгоритъма за работа с файлове и изображения в новия интерфейс 1C:Enterprise 8.3 "Taxi".

Първо, защо реших да напиша тази статия: Новата концепция на 1C е отхвърлянето на модални прозорци, следователно всички методи и обекти, които са генерирали отварянето на модални прозорци в новия интерфейс, няма да могат да работят, по-точно, те могат само ако модалните прозорци са активирани в свойствата на конфигурацията.

Нека разгледаме алгоритъма за работа с файлове и изображения в новия интерфейс 1C:Enterprise 8.3 "Taxi".

файлове

работа

файлове

файлове

снимки

работа

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

Нека опишем процедурата "ProcessFileSelection":

файлове

И така, сега, когато пишете елемент на директория, остава да запишете данни от временно хранилище в атрибута на елемента на директория. Опишете събитието BeforeWriteOnServer:

Остава да опишем отварянето на формата за показване на вече записаната картина в атрибута на елемента директория.

Специални оферти

снимки

снимки

работа

работа

работа

снимки

снимки

снимки

снимки

файлове

снимки

Като метод можете да направите полето FieldHTML(полето на HTML документа) и

(11) Мисля, че са го направили нарочно. Те не предоставиха API за работа с голямо количество данни, така че го направиха асинхронно, като зареждане на снимки на html страница. Това не е проблем, това е функция.

И има причина да се разбере, че 1C вече е различен вътре - Това е асинхронен код.

(21) sikuda, Там няма асинхронен код. Но не са го направили нарочно. Не казвам, че е бъг. Просто трябва да разбереш бившия. форма и познавайте такава функция със съхранениестойности.

А за асинхронно - Обработка на известия - това не е съвсем правилно. Не е асинхронен в истинския смисъл. Нищо не се прави паралелно. Обратното извикване на предупреждението се поставя в опашка и се извиква, когато е възможно, но синхронно с останалата част от кода. Вътре в 1C може да има нещо друго (не съм го виждал), но ние, смъртните, няма да видим асинхронно изпълнение за дълго време. IMHO.

(22) Съгласно текущото състояние, всичко е буферирано и се изпълнява последователно. Ние управляваме част, а част (съхранение на стойност) се извършва без нас.

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

Не бих казал, че няма паралелна работа в 1C:

знаеш ли какво става тук Стартира се отделна сесия с базата данни. Самостоятелен, управляван от фоновия планировчик на задачи. Да, във връзка с вашия код, той ще се изпълнява паралелно, но има много ограничения. Все още не разбирам какво общо има атрибутът на управляваната форма „ValueStorage“ с асинхронното изпълнение?

Докато транзакцията за запис на обект не завърши, вашият код не може да направи нищо, къде е асинхронният? асинхронен по отношение на какво?

(24) Да се ​​върнем към асинхронния код (11) Прочетете помощта много внимателно: "В тънките и дебелите клиенти, за разлика от уеб клиента, методът блокира изпълнението на езиковия код. Въпреки това, след завършване на поставянето на файла, посоченият манипулатор на известия също ще бъде извикан, но преди изпълнението на кода, поставен след извикването на метода."

И в кода след StartPlaceFile ще вмъкнем безкраен цикъл. В тънкия клиентПърво изберете файл. След това цикъл. А в уеб клиента, напротив, първо замръзваме (браузърът иска да спре цикъла), след което избираме файла. Така че в уеб клиента Notify работи като чисто обратно извикване на javascript. Това се опитвам да вложа във фразата „кодът по своята същност е асинхронен“. И точно това е поведението, което е стандартно за javascript на уеб страници.

Благодаря ти! Винаги съм използвал декорация (поне в 8.2)

Е, това е най-важното...

Правилно разбирам, че ако направя атрибут от типа не низ, а хранилище на стойност и посочих пътя до него за полето .. Ще трябва ли да страдам с такава функционалност като FormDataToValue и ValueToFormData?

Низът е атрибут на формуляр. Как се захванахте да направите подпорите на формуляра с типа ValueStorage?

Благодарим ви, че приехте файловете! Помогнете ми да разреша този проблем:

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

По време на присвояването LinkToPicture=GetPicture(Element.CurrentData.LineNumber); платформа пада.

LinkToPicture в този момент съдържа текста: "e1cib/data/BusinessProcess.Contract negotiation.Files.ImageData?ref=8711be1ed620b4fc11e38ca646b858c4&index=0"