0 / 0 / 0
Регистрация: 25.07.2015
Сообщений: 9

Как воспроизвести .mp3 файл на Visual Basic 6.0?

25.07.2015, 19:16. Показов 8008. Ответов 39
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
При запуске формы мне нужно воспроизвести .mp3 файл.
С форматом .wav я разобрался, вот код:
Visual Basic
1
2
3
4
5
6
Private Sub Form_Load()
Плеер. DeviceType = "WaveAudio"
Плеер. FileName = "D:\Music\nice.wav"
Плеер. Command = "Open"
Плеер. Command = "Play"
End Sub
Что нужно в коде изменить чтобы проигрывался .mp3 файл?
например мне нужно проиграть файл beautiful.mp3, который находится в D:\Music\
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.07.2015, 19:16
Ответы с готовыми решениями:

Как воспроизвести mp3 файл
Как воспроизвести mp3 или другой звуковой файл?

Как воспроизвести mp3 файл?
Всем привет! Как воспроизвести mp3 файл?

Как воспроизвести mp3 файл из ресурсов?
У меня в ресурсах проекта есть mp3 и я его хочу воспроизвести. Как же мне это сделать? И чтобы можно было переносить exe-шник из места в...

39
Вернулся
 Аватар для HackerVlad
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
09.04.2023, 12:04
Студворк — интернет-сервис помощи студентам
А ещё вопрос в твоём примере DirectSoundVB6 есть функция DSCreateSoundBufferFromMemory но она не принимает байтовый массив. Короче вопрос как байтовый массив передавать, ну из ресурсов я же файл выдираю, короче как из буфера (байтового массива именно) там запустить воспроизведение MP3. Как из файла там понятно, а вот как из байтового массива - нет.
0
Модератор
10060 / 3905 / 885
Регистрация: 22.02.2013
Сообщений: 5,854
Записей в блоге: 79
09.04.2023, 12:09
HackerVlad, давай пример прикладывай.
0
Вернулся
 Аватар для HackerVlad
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
09.04.2023, 12:22
Цитата Сообщение от The trick Посмотреть сообщение
давай пример прикладывай
Там наверное всё-таки можно просто разбираться нужно с тем, что такое As IDirectSoundBuffer8. Там ведь с TLB идёт. Ладно sndPlaySound и правда проще всего и с буфером, как байтовый массив, очень просто работает. Я думал даже просто упаковывать буфер WAV и распаковывать, потоку как я не знал, что можно каким-то чудом MP3 играть этой функцией.

Добавлено через 2 минуты
И DirectX тоже не у всех стоит наверное... DirectSound пока не буду использовать, лучше по проще вариант...
0
 Аватар для Mikle Quits
781 / 298 / 17
Регистрация: 21.01.2023
Сообщений: 514
09.04.2023, 12:56
Цитата Сообщение от HackerVlad Посмотреть сообщение
DirectX тоже не у всех стоит наверное... DirectSound пока не буду использовать, лучше по проще вариант...
DirectSound8 (а это именно он) есть везде, если не считать Win98 (или Win2k, не уверен) и старее.
1
Модератор
10060 / 3905 / 885
Регистрация: 22.02.2013
Сообщений: 5,854
Записей в блоге: 79
09.04.2023, 12:58
HackerVlad, directsound работает на всех системах. directsound сам смешивает звуки и позволяет независимо проигрывать несколько каналов+эффекты и т.п.

Добавлено через 1 минуту
Прикладывай проект, я вечером гляну. Кстати в винде и запись/конвертирование в mp3 можно без всяких доп зависимостей производить.
0
Вернулся
 Аватар для HackerVlad
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
09.04.2023, 13:37
Цитата Сообщение от The trick Посмотреть сообщение
Прикладывай проект
Пожалуйста, но в моём проекте я использую твой класс, потому как я не знаю, как иначе воспроизвести из буфера.
Мне нужно только добиться того чтобы звук не останавливался во время цикла Do Loop и всё.
Вложения
Тип файла: zip clsTrickMP3Player.zip (217.8 Кб, 8 просмотров)
0
Вернулся
 Аватар для HackerVlad
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
09.04.2023, 14:15
Безумно понравился твой пример с танцующей девочкой))))) Прям порадовал)))))))
Очень удивило, что там используется функция PlaySound а не sndPlaySound. Я не знал вообще что есть функция PlaySound просто. Без префикса snd.
0
Вернулся
 Аватар для HackerVlad
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
09.04.2023, 14:34
Цитата Сообщение от The trick Посмотреть сообщение
Прикладывай проект
Вот приложил! Посмотри обязательно функция PlaySound не работает с MP3. Только через твой класс и открывает...
Вложения
Тип файла: zip clsTrickMP3Player.zip (218.5 Кб, 16 просмотров)
0
Модератор
10060 / 3905 / 885
Регистрация: 22.02.2013
Сообщений: 5,854
Записей в блоге: 79
09.04.2023, 22:25
Как обещал, класс CMP3Player.cls:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
Option Explicit
Option Base 0
 
Public Enum PTR
    [_]
End Enum
 
Private Const MPEGLAYER3_FLAG_PADDING_OFF   As Long = 2
Private Const MPEGLAYER3_FLAG_PADDING_ON    As Long = 1
Private Const WAVE_FORMAT_MPEGLAYER3        As Long = &H55
Private Const MPEGLAYER3_WFX_EXTRA_BYTES    As Long = 12
Private Const MPEGLAYER3_ID_MPEG            As Long = 1
Private Const SND_ASYNC                     As Long = &H1
Private Const SND_MEMORY                    As Long = &H4
 
Private Type MPEGLAYER3WAVEFORMAT
    wFormatTag          As Integer
    nChannels           As Integer
    nSamplesPerSec      As Long
    nAvgBytesPerSec     As Long
    nBlockAlign         As Integer
    wBitsPerSample      As Integer
    cbSize              As Integer
    wID                 As Integer
    fdwFlags            As Long
    nBlockSize          As Integer
    nFramesPerBlock     As Integer
    nCodecDelay         As Integer
End Type
 
Private Type SAFEARRAYBOUND
    cElements           As Long
    lLBound             As Long
End Type
 
Private Type SAFEARRAY1D
    cDims               As Integer
    fFeatures           As Integer
    cbElements          As Long
    cLocks              As Long
    pvData              As Long
    tBounds             As SAFEARRAYBOUND
End Type
 
Private Type TCurrencyBuffer
    c(15)               As Currency
End Type
 
Private Type TMP3Constants
    iBitrate(1, 15)     As Integer
    lSampleRate(2, 3)   As Long
End Type
 
Private Declare Function ArrPtr Lib "msvbvm60" _
                         Alias "VarPtr" ( _
                         ByRef pArr() As Any) As Long
Private Declare Function PutMemPtr Lib "msvbvm60" _
                         Alias "PutMem4" ( _
                         ByRef pDst As Any, _
                         ByRef pValue As Any) As Long
Private Declare Function PutMem4 Lib "msvbvm60" ( _
                         ByRef pDst As Any, _
                         ByVal lValue As Long) As Long
Private Declare Function memcpy Lib "kernel32" _
                         Alias "RtlMoveMemory" ( _
                         ByRef pDestination As Any, _
                         ByRef pSource As Any, _
                         ByVal lLength As Long) As Long
Private Declare Function PlaySound Lib "winmm.dll" _
                         Alias "PlaySoundW" ( _
                         ByRef pszSound As Any, _
                         ByVal hModule As Long, _
                         ByVal dwFlags As Long) As Long
                         
Private m_tMP3Constants As TMP3Constants
Private m_bFile()       As Byte
 
Public Sub Play( _
           ByVal pData As PTR, _
           ByVal lSize As Long)
    Dim tFmt        As MPEGLAYER3WAVEFORMAT
    Dim tBuf        As TCurrencyBuffer
    Dim lFullSize   As Long
    
    If Not GetFormat(pData, lSize, tFmt) Then
        Err.Raise 5, , "Unable to get MP3 format"
    End If
    
    StopPlaying
    
    lFullSize = lSize + 58
    
    ReDim m_bFile(lFullSize - 1)
    
    tBuf.c(0) = 117901.141@
    tBuf.c(1) = 233861439252950.2551@
    tBuf.c(2) = 0.003@
    tBuf.c(6) = 10715247804.416@
    
    memcpy m_bFile(0), tBuf, 58
    memcpy m_bFile(20), tFmt, &H1E
    PutMem4 m_bFile(54), lSize
    PutMem4 m_bFile(4), lFullSize - 8
    memcpy m_bFile(58), ByVal pData, lSize
    
    If PlaySound(m_bFile(0), 0, SND_ASYNC Or SND_MEMORY) = 0 Then
        Err.Raise 7, , "PlaySound failed"
    End If
    
End Sub
 
Public Sub StopPlaying()
    PlaySound ByVal 0&, 0, 0
End Sub
 
Private Function GetFormat( _
                 ByVal pData As PTR, _
                 ByVal lSize As PTR, _
                 ByRef tOut As MPEGLAYER3WAVEFORMAT) As Boolean
    Dim bData()     As Byte
    Dim tSADesc     As SAFEARRAY1D
    Dim lIndex      As Long
    Dim lTagSize    As Long
    Dim lLayer      As Long
    Dim lVersion    As Long
    Dim lBitRate    As Long
    Dim lSampleRate As Long
    Dim lPadding    As Long
    Dim lChannels   As Long
    Dim lFrameSize  As Long
    
    If pData = 0 Then
        Exit Function
    End If
    
    With tSADesc
        .cbElements = 1
        .cDims = 1
        .fFeatures = 1
        .pvData = pData
        .tBounds.cElements = lSize
        PutMemPtr ByVal ArrPtr(bData), ByVal VarPtr(tSADesc)
    End With
                     
    If lSize >= 128 Then
    
        ' // Skip ID3V1 tag
        lIndex = lSize - 128
        
        If bData(lIndex) = &H54 And bData(lIndex + 1) = &H41 And bData(lIndex + 2) = &H47 Then
            lSize = lSize - 128
        End If
        
    End If
    
    
    If lSize >= 10 Then
    
        ' // Skip ID3V2 tags from beginning
        
        If bData(0) = &H49 And bData(1) = &H44 And bData(2) = &H33 Then
            
            ' // Footer present
            If bData(5) And &H10 Then
                lSize = lSize - 10
            End If
        
            lTagSize = bData(6) * &H200000
            lTagSize = lTagSize Or (bData(7) * &H4000&)
            lTagSize = lTagSize Or (bData(8) * &H80&)
            lTagSize = lTagSize Or bData(9)
            lTagSize = lTagSize + 10
            
            lIndex = lTagSize
            lSize = lSize - lTagSize
                
        Else
        
            ' // Skip ID3V2 tags from end
            lIndex = lSize - 10
 
            If bData(lIndex + 2) = &H49 And bData(lIndex + 1) = &H44 And bData(lIndex) = &H33 Then
                
                lSize = lSize - 10
                
                lTagSize = bData(lIndex + 6) * &H200000
                lTagSize = lTagSize Or (bData(lIndex + 7) * &H4000&)
                lTagSize = lTagSize Or (bData(lIndex + 8) * &H80&)
                lTagSize = lTagSize Or bData(lIndex + 9)
                lTagSize = lTagSize + 10
            
                lSize = lSize - lTagSize
                
            End If
            
            lIndex = 0
            
        End If
    
    Else
        lIndex = 0
    End If
    
    If lSize < 4 Then
        Exit Function
    End If
    
    ' // Find a frame sync
    Do
 
        If bData(lIndex) = &HFF And (bData(lIndex + 1) And &HE0) = &HE0 Then
 
            lVersion = (bData(lIndex + 1) And &H18) \ 8
            
            If lVersion = 1 Then
                Exit Function
            End If
            
            lLayer = (bData(lIndex + 1) And &H6) \ 2
            
            If lLayer <> 1 Then
                Exit Function
            End If
            
            If lVersion = 3 Then
                lBitRate = m_tMP3Constants.iBitrate(0, (bData(lIndex + 2) And &HF0) \ &H10)
            Else
                lBitRate = m_tMP3Constants.iBitrate(1, (bData(lIndex + 2) And &HF0) \ &H10)
            End If
 
            If lVersion = 3 Then
                lSampleRate = m_tMP3Constants.lSampleRate(0, (bData(lIndex + 2) And &HC) \ &H4)
            ElseIf lVersion = 2 Then
                lSampleRate = m_tMP3Constants.lSampleRate(1, (bData(lIndex + 2) And &HC) \ &H4)
            Else
                lSampleRate = m_tMP3Constants.lSampleRate(2, (bData(lIndex + 2) And &HC) \ &H4)
            End If
            
            lPadding = (bData(lIndex + 2) And &H2) \ 2
            lChannels = -(((bData(lIndex + 3) And &HC0) \ 64) <> 3) + 1
            
            If lVersion = 3 Then
                lFrameSize = Int(144000 * lBitRate / lSampleRate) + lPadding
            Else
                lFrameSize = Int(72000 * lBitRate / lSampleRate) + lPadding
            End If
 
            With tOut
            
                .wFormatTag = WAVE_FORMAT_MPEGLAYER3
                .cbSize = MPEGLAYER3_WFX_EXTRA_BYTES
                .nChannels = lChannels
                .nAvgBytesPerSec = lBitRate * 125   ' // * 1000 / 8
                .wBitsPerSample = 0
                .nBlockAlign = 1
                .nSamplesPerSec = lSampleRate
                .nFramesPerBlock = 1
                .nCodecDelay = 0
    
                If lPadding Then
                    .fdwFlags = MPEGLAYER3_FLAG_PADDING_ON
                Else
                    .fdwFlags = MPEGLAYER3_FLAG_PADDING_OFF
                End If
 
                .wID = MPEGLAYER3_ID_MPEG
                .nBlockSize = lFrameSize
                
            End With
            
            GetFormat = True
            
            Exit Function
            
        End If
        
        lIndex = lIndex + 1
        lSize = lSize - 1
        
    Loop While lSize >= 4
 
End Function
 
Private Sub Class_Initialize()
    Dim tBuf    As TCurrencyBuffer
    
    tBuf.c(0) = 450377142658.6656@:    tBuf.c(1) = 900743977448.248@:     tBuf.c(2) = 1351114248211.6672@
    tBuf.c(3) = 1801487954948.9248@:   tBuf.c(4) = 2702228496423.3344@:   tBuf.c(5) = 3602975909897.8496@
    tBuf.c(6) = 4503737067267.712@:    tBuf.c(7) = 18941235272.0895@:     tBuf.c(8) = 4735201446.045@
    tBuf.c(9) = 10307921515.2@:        tBuf.c(10) = 13743895348.4@:       tBuf.c(11) = 3435973838.4@
        
    memcpy m_tMP3Constants.iBitrate(0, 1), tBuf.c(0), 96
    
End Sub
 
Private Sub Class_Terminate()
    StopPlaying
End Sub
Вложения
Тип файла: zip mp3frommem.zip (463.0 Кб, 19 просмотров)
2
Вернулся
 Аватар для HackerVlad
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
10.04.2023, 00:16
Я смогу своё MP3 воспроизвести????

Добавлено через 2 минуты
Если это возможно зачем тогда был создан класс clsTrickMP3Player
0
Модератор
10060 / 3905 / 885
Регистрация: 22.02.2013
Сообщений: 5,854
Записей в блоге: 79
10.04.2023, 00:21
Цитата Сообщение от HackerVlad Посмотреть сообщение
Если это возможно зачем тогда был создан класс clsTrickMP3Player
В классе есть другие методы типа перемотки, паузы и т.д. у PlaySound нет такого.
0
Вернулся
 Аватар для HackerVlad
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
10.04.2023, 00:27
Цитата Сообщение от The trick Посмотреть сообщение
В классе есть другие методы типа перемотки, паузы и т.д
Но он же зависает при цикле Do Loop у меня программа выполняет действия свзяанные с серьбёзной нагрузкой на процессор и всё сразу звук виснет....

Добавлено через 2 минуты
Но мне всё равно нужен пример для воспргоизведения моего MP3
0
Модератор
10060 / 3905 / 885
Регистрация: 22.02.2013
Сообщений: 5,854
Записей в блоге: 79
10.04.2023, 01:14
Цитата Сообщение от HackerVlad Посмотреть сообщение
Но мне всё равно нужен пример для воспргоизведения моего MP3
Я же дал уже пример для воспроизведения любого MP3.
1
 Аватар для Mikle Quits
781 / 298 / 17
Регистрация: 21.01.2023
Сообщений: 514
10.04.2023, 08:16
Цитата Сообщение от HackerVlad Посмотреть сообщение
зависает при цикле Do Loop у меня программа выполняет действия свзяанные с серьбёзной нагрузкой на процессор
Подозреваю, что правильная расстановка DoEvents решит эту проблему.
0
Вернулся
 Аватар для HackerVlad
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
10.04.2023, 10:31
Но мне всё равно нужен пример для воспргоизведения
Цитата Сообщение от Mikle Quits Посмотреть сообщение
правильная расстановка DoEvents решит эту проблему
Это не всегда работает. Если сильно много всовывать DoEvents то будет значительное падение скорости. У меня DoEvents стоит только один раз в тысячу файлов. Чтобы сильно не замедлялся по скорости процесс поиска.
Короче, даже при таком темпе то всё равно музыка MP3 начинает коверкать звуки, заикатьс,я подвисать...
0
Модератор
10060 / 3905 / 885
Регистрация: 22.02.2013
Сообщений: 5,854
Записей в блоге: 79
10.04.2023, 10:33
HackerVlad, в том примере что я дал последний CMP3Player там не зависает т.к. воспроизведение работает в другом потоке.
1
Вернулся
 Аватар для HackerVlad
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
10.04.2023, 12:21
Цитата Сообщение от The trick Посмотреть сообщение
не зависает
Спасибо большое, хотел отзыв нажать и баллы поставить, но мне больше уже не дают эту возможность)

Добавлено через 1 час 46 минут
Цитата Сообщение от The trick Посмотреть сообщение
PlaySoundW
Я вот всё время думаю, если воспроизведение из буфера, то зачем использовать PlaySoundW, имя файла мы же не задаём... Может PlaySoundA тут вполне хватит? И ещё вопрос чем отличается sndPlaySound от PlaySound?
0
Модератор
10060 / 3905 / 885
Регистрация: 22.02.2013
Сообщений: 5,854
Записей в блоге: 79
10.04.2023, 12:48
A функции вызывают W функции отчего они медленнее. sndPlaySound устаревшая, она реализует подмножетво возможностей PlaySound. Так что PlaySoundW самая подходящая.
1
Вернулся
 Аватар для HackerVlad
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
10.04.2023, 13:16
Цитата Сообщение от The trick Посмотреть сообщение
A функции вызывают W функции отчего они медленнее
Я не знал честно, а ещё вопрос. Как мне узнать идёт ли в данный момент воспроизведение. В твоём классе было IsPlaying там хоть и баг был всем известный но легкоисправимый. Не показывало реально идёт ли в настоящее время воспроизведение. Я его сам этот баг фиксил к тебе не обращаясь даже. А вот тут я не знаю с этим PlaySound как проверить идёт ли воспроизведение.

А тут сейчас на ум приходит только, самому вручную измерять время по таймеру что ли)))
0
Модератор
10060 / 3905 / 885
Регистрация: 22.02.2013
Сообщений: 5,854
Записей в блоге: 79
10.04.2023, 20:01
Цитата Сообщение от HackerVlad Посмотреть сообщение
Как мне узнать идёт ли в данный момент воспроизведение. В твоём классе было IsPlaying там хоть и баг был всем известный но легкоисправимый. Не показывало реально идёт ли в настоящее время воспроизведение. Я его сам этот баг фиксил к тебе не обращаясь даже. А вот тут я не знаю с этим PlaySound как проверить идёт ли воспроизведение.
А тут сейчас на ум приходит только, самому вручную измерять время по таймеру что ли)))
У PlaySound ограниченный функционал. Это только в отдельном потоке синхронно запускать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.04.2023, 20:01
Помогаю со студенческими работами здесь

Как воспроизвести MP3 файл по ссылке?
Здравствуйте! Имеется ссылка на mp3 файл &quot;http://sait.ru/file.mp3&quot;. Нужно сделать, что бы по нажатию на кнопку этот файл...

Как воспроизвести стандартными средствами mp3 файл
Как воспроизвести стандартными средствами mp3 файл в python. Без разных сторонних модулей, просто звук mp3.

Как воспроизвести .mp3 файл в консольном приложении?
Прошу подсказать какую функцию необходимо использовать для проигрывания музыки, желательно чтобы прилагалась библиотека которую нужно...

Как воспроизвести mp3 файл с winmm.dll
Уважаемые посетители уважаемого мною ресурса cyberforum.ru не затруднит ли Вас моя просьба оказать мне помощь? Мне необходимо с помощью...

Как воспроизвести звуковой файл (wav или mp3)
Знаю про PLAY И SOUND,но это пищание со спикера пилит по мозгам , хотелось бы вывод собственно на колонки с файлов.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Опции темы

Новые блоги и статьи
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html и его же старой инструкции по установке Lazarus с gtk2. . .
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер. Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru