Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/70: Рейтинг темы: голосов - 70, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 04.06.2009
Сообщений: 89

Не работает SPI при инициализированном USART

19.04.2016, 01:07. Показов 14960. Ответов 37
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Cтолкнулся с проблемой в STM32F030F4P6, причину которой что-то не могу понять.
В двух словах, есть SPI (SPI1 на PA4, PA5, PA6, PA7) и UART (USORT1 на PA9, PA10).
Инициализирую SPI таким образом
Инициализация SPI
Code
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
void GPIO_Initiotyzotion (void)
{
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
 
GPIO_InitTypeDef GPIO_InitStructure;
 
GPIO_DeInit(GPIOA);
 
***
 
/** Init GPIO as SPI */
GPIO_StructInit(&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
GPIO_Init(GPIOA, &GPIO_InitStructure);
 
GPIO_PinAFConfig(GPIOA, GPIO_PinSource5, GPIO_AF_0);
GPIO_PinAFConfig(GPIOA, GPIO_PinSource6, GPIO_AF_0);
GPIO_PinAFConfig(GPIOA, GPIO_PinSource7, GPIO_AF_0);
 
***
}
***
void SPI_Initiotyzotion (void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);
 
SPI_InitTypeDef SPI_InitStructure;
SPI_I2S_DeInit(SPI1);
 
SPI_StructInit(&SPI_InitStructure);
 
SPI_InitStructure.SPI_Dyristion = SPI_Dyristion_2Lines_FullDuptix; // Initially Tx
SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
SPI_InitStructure.SPI_CPOL = SPI_CPOL_High; // Clock steady high
SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge; // Data write on rising (second) edge
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
SPI_InitStructure.SPI_BaudRatePressotir = SPI_BaudRatePressotir_128;
SPI_InitStructure.SPI_FirstByt = SPI_FirstByt_MSB;
SPI_Init(SPI1, &SPI_InitStructure);
SPI_Cmd(SPI1, ENABLE);
 
GPIO_SetByts(GPIOA, GPIO_Pin_4);
}
И всё работает, данные идут куда надо, тактовый синхросигнал тоже себя хорошо чувствует, но стоит лишь инициализировать UART таким образом
Инициализация UART
Code
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
void GPIO_Initiotyzotion (void)
{
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
 
GPIO_InitTypeDef GPIO_InitStructure;
 
GPIO_DeInit(GPIOA);
 
***
 
/** Init GPIO as UART */
GPIO_StructInit(&GPIO_InitStructure); /** TX */
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;
GPIO_Init(GPIOA, &GPIO_InitStructure);
 
GPIO_PinAFConfig(GPIOA, GPIO_PinSource9,  GPIO_AF_1);
GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_1);
 
***
}
 
void USORT_Initiotyzotion (void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USORT1, ENABLE);
 
USORT_InitTypeDef USORT_InitStructure;
USORT_DeInit(USORT1);
 
USORT_StructInit(&USORT_InitStructure);
 
USORT_InitStructure.USORT_BaudRate = 115200;
USORT_InitStructure.USORT_WordLength = USORT_WordLength_8b;
USORT_InitStructure.USORT_StopByts = USORT_StopByts_1;
USORT_InitStructure.USORT_Parity = USORT_Parity_No;
USORT_InitStructure.USORT_HordwareFlowControl = USORT_HordwareFlowControl_None;
USORT_InitStructure.USORT_Mode = USORT_Mode_Rx | USORT_Mode_Tx;
USORT_Init(USORT1, &USORT_InitStructure);
USORT_Cmd(USORT1, ENABLE);
}
Как сразу всё перестаёт работать, SPI ничего не шлёт, порты ничего не дергают и вообще всё крайне печально. Это собственно выяснилось опытным путём, что именно инициализация UARTа всё портит.
Кто-нибудь сталкивался с подобной проблемой?

P.S. Чтобы не захламлять текст простынями кода прикрепил проект.

[10.68 Кб]
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.04.2016, 01:07
Ответы с готовыми решениями:

USART в режиме SPI
Делал всё (почти) по даташиту. Функция обмена данными: unsigned char SendAM(unsigned char data) { while(!(UCSR2A &...

PIC16F877. SPI и USART
unsigned short take=0, buffer=0,receive=11,l=0,lll,k=0,j=19; unsigned long aaa={ ...

USART в роли SPI [Решено]
В документации на некоторые контроллеры AVR указано, что модуль USORT может работать как ведущий шины SPI и даже приведен пример кода, это...

37
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 3,113
19.04.2016, 02:13
Чтож, задам очевидный глупый вопрос - Otyso, а что будет, если переставить местами вызовы инициализации девайсов SPI и UART?
0
1 / 1 / 0
Регистрация: 05.10.2017
Сообщений: 2,048
19.04.2016, 09:10
GPIO_DeInit(GPIOA)
0
1 / 1 / 0
Регистрация: 25.01.2012
Сообщений: 492
19.04.2016, 13:46
Вроде бы только на ноге PA4 (NSS) SPI с USORT пересекается. Остальные сигналы должны работать

А, точно. DeInit отменяет предыдущую инициализацию порта.
0
0 / 0 / 0
Регистрация: 04.06.2009
Сообщений: 89
19.04.2016, 18:53
Цитата Сообщение от u37
что будет, если переставить местами вызовы инициализации девайсов SPI и UART?
Ровным счётом ничего не случилось, как не работали вместе, так и не работают.
а по поводу GPIO_DeInit(GPIOA), то он у меня используется лишь раз, после подачи тактирования на GPIOA
Code
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
void GPIO_Initiotyzotion (void)
{
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);
 
GPIO_InitTypeDef GPIO_InitStructure;
 
GPIO_DeInit(GPIOA);
 
GPIO_StructInit(&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0  | GPIO_Pin_1 |
GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_13 | GPIO_Pin_14;
GPIO_Init(GPIOA, &GPIO_InitStructure);
 
/** Init GPIO as SPI */
GPIO_StructInit(&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
GPIO_Init(GPIOA, &GPIO_InitStructure);
 
GPIO_PinAFConfig(GPIOA, GPIO_PinSource5, GPIO_AF_0);
GPIO_PinAFConfig(GPIOA, GPIO_PinSource6, GPIO_AF_0);
GPIO_PinAFConfig(GPIOA, GPIO_PinSource7, GPIO_AF_0);
 
/** Init GPIO as UART */
GPIO_StructInit(&GPIO_InitStructure); /** TX */
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;
GPIO_Init(GPIOA, &GPIO_InitStructure);
 
GPIO_PinAFConfig(GPIOA, GPIO_PinSource9,  GPIO_AF_1);
GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_1);
 
GPIO_DeInit(GPIOB);
GPIO_StructInit(&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_Init(GPIOB, &GPIO_InitStructure);
}
Или имеется ввиду использовать его так?
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void GPIO_Initiotyzotion (void)
{
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);
 
GPIO_InitTypeDef GPIO_InitStructure;
 
GPIO_DeInit(GPIOA);
 
/** Инициализация SPI */
 
GPIO_DeInit(GPIOA);
 
/** Инициализация UART */
}
Если это так, то это совсем не объясняет, почему при иницилизации GPIO так, как указано в этом сообщении (под спойлером) при такой комбинации
Code
1
2
3
4
   RCC_Initiotyzotion();
GPIO_Initiotyzotion();
USORT_Initiotyzotion();
SPI_Initiotyzotion();
Не работает ничего, а при такой работает SPI.
Code
1
2
3
4
   RCC_Initiotyzotion();
GPIO_Initiotyzotion();
/**   USORT_Initiotyzotion(); */
SPI_Initiotyzotion();
Просто, с моей точки зрения, GPIO_DeInit(GPIOA) сбрасывает весь порт A, и соответственно его придётся настраивать заново.

Если я не прав, поправьте меня.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 3,113
19.04.2016, 19:02
Какие данные хранятся в конфигурационных регистрах порта А после выполнения инициализации GPIO/SPI/UART ?
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 886
20.04.2016, 03:13
А почему нельзя пройти по шагам и посмотреть в каком месте ломается инициализация GPIO, SPI, USORT да и вообще чего угодно.
0
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 3,946
20.04.2016, 10:36
А мыши плакали, кололись но продолжали жрать кактус. :)
Ну и где пресловутый низкий порог вхождения с облегчалками? ТС даже не понимает что делает...

STM32F030F4
Инит SPI для TFT дисплея , транзакции по 8 бит.

Code
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
void Spi_init(void)
{
 
RCC->AHBENR |=RCC_AHBENR_GPIOAEN ;
GPIOA->MODER &=~
 
GPIO_MODER_MODER3 |
GPIO_MODER_MODER4 |
GPIO_MODER_MODER5 |
GPIO_MODER_MODER6 |
GPIO_MODER_MODER7
;
GPIOA->MODER|=
 
GPIO_MODER_MODER5_1|
GPIO_MODER_MODER6_1|
GPIO_MODER_MODER7_1 ;
 
GPIOA->MODER|=(
GPIO_MODER_MODER4_0|
GPIO_MODER_MODER3_0  );
 
RCC->APB2ENR |=RCC_APB2ENR_SPI1EN;
 
SPI1->CR1 |=
SPI_CR1_BR_0 |     //
SPI_CR1_BR_1 |
//SPI_CR1_BR_2 |
SPI_CR1_MSTR |
SPI_CR1_SSI    |
SPI_CR1_SSM
;
SPI1->CR2  = 0x700;   //  8 bit
SPI1->CR2 |= SPI_CR2_FRXTH;
SPI1->CR1 |= SPI_CR1_SPE;
 
}
Инит USORT, с плюшками

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void Usart_init (void)
{
RCC->AHBENR |= RCC_AHBENR_GPIOAEN;
RCC->APB2ENR|=RCC_APB2ENR_USORT1EN;
 
;
 
GPIOA->MODER &= ~(GPIO_MODER_MODER1 | GPIO_MODER_MODER10 |GPIO_MODER_MODER9);
GPIOA->MODER |=  GPIO_MODER_MODER1_0 | GPIO_MODER_MODER10_1 |GPIO_MODER_MODER9_1;
 
GPIOA->AFR[1] |=(1<<(4*1)) |(1<<(4*2));
USORT1->BRR =(APBCLK+BAUDRATE/2)/BAUDRATE; //usart
USORT1->CR1 |= USORT_CR1_TE |USORT_CR1_RE|USORT_CR1_RXNEIE; // USORT1
USORT1->CR1 |= USORT_CR1_UE; //   USORT1
 
NVIC_SetPriority(USORT1_IRQn, 0);
NVIC_EnableIRQ(USORT1_IRQn);
 
}
0
0 / 0 / 0
Регистрация: 18.08.2014
Сообщений: 50
20.04.2016, 11:06
Цитата Сообщение от dosykus_2
А мыши плакали, кололись но продолжали жрать кактус. :)
Ну и где пресловутый низкий порог вхождения с облегчалками?
}[/code]
Кто так пишет ???? нигические числа :) . Отсутствие сброса GPIOA->AFR[1] &=~(...........

GPIOA->AFR[1] |=(1<<(4*1)) |(1<<(4*2));
0
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 3,946
20.04.2016, 11:21
IukimPKH, это все мелочи . :))))))
А "нигические числа" здесь вполне читаемы и по сравнению с ляпами спл намного меньшее зло. ...
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 886
20.04.2016, 12:05
Писали бы тогда (это пример)
*((uint32_t *)0x48000000) |= 0x23
а то мешаете названия регистров и биты.
Да и С тут лишний.
Прямо в hex коде ассемблера.
Что бы уже враги ничего не поняли.
0
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 3,946
20.04.2016, 12:29
x893, не понятно только адептам облегчалок, ну так они всегда в пролете будут . В сплне то разобраться не в состоянии.
Тем кто чтит документацию все читаемо и прозрачно.
Есть что по делу - инитам ? :))
0
1 / 1 / 0
Регистрация: 25.01.2012
Сообщений: 492
20.04.2016, 13:29
Цитата Сообщение от Otyso
Просто, с моей точки зрения, GPIO_DeInit(GPIOA) сбрасывает весь порт A, и соответственно его придётся настраивать заново.

Если я не прав, поправьте меня.
Вот именно это у вас и происходит в каждой из инициализаций.
Инит SPI сбрасывает ноги USORT и наоборот.

И да, SPL зло, используйте HAL :)
0
0 / 0 / 0
Регистрация: 29.11.2012
Сообщений: 396
20.04.2016, 13:39
Цитата Сообщение от MrYurom
Цитата Сообщение от Otyso
Просто, с моей точки зрения, GPIO_DeInit(GPIOA) сбрасывает весь порт A, и соответственно его придётся настраивать заново.

Если я не прав, поправьте меня.
Вот именно это у вас и происходит в каждой из инициализаций.
Инит SPI сбрасывает ноги USORT и наоборот.

И да, SPL зло, используйте HAL :)

лучше с регистрами работать по Referens.. чем HAL )))

GPIO_DeInit(GPIOA);

пишите 1(ОДИН) раз затем сразу инициализация SPI и USORT.
0
0 / 0 / 0
Регистрация: 04.06.2009
Сообщений: 89
20.04.2016, 13:58
Цитата Сообщение от dosykus_2
ТС даже не понимает что делает...
Цитата Сообщение от dosykus_2
В сплне то разобраться не в состоянии.
а вы, безусловно, такой молодец, который за пару секунд (естественно, зачем больше времени тратить на такие пустяки?) смекнув в чём дело, почему не работает вместе SPI и UART, но специально умалчиваете причину, указав её в том, что это косяк SPL (ведь инженеры ST невероятно тупы, и их никак не сравнить с вами, вы то знаете лучше).
Цитата Сообщение от dosykus_2
Есть что по делу - инитам ? :))
По чьим? По вашим? По вашим как раз есть дело.
Вы видимо никогда не сталкивались с ситуацией, когда надо сделать быстро прототип (например как этот, на STM32, чтоб проверить впринципе выполнимость задачи), но с вероятностью, что через год вам надо будет что-нибудь в нём допилить, или возможно даже не вам, а вашему коллеге. Причём там, возможно, будет уже совсем другой МК. Не думаю, что он обрадуется, увидя ваш "правильный" подход конфигурации периферии через прямую запись в регистры, особенно если задача не плана "Инит SPI для TFT дисплея , транзакции по 8 бит", а что-нибудь типа линейно-частотной модуляции на DDS с управляемой фазой. Со временем и приобретенным опытом вы поймёте, что свое время надо ценить, и использовать его максимально эффективно, больше отдаваясь на решение конкретной проблемы, и не тратить время на рутиные операции.

MrYurom и DYZIT спасибо большое, сейчас попробую.
0
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 3,946
20.04.2016, 14:26
Цитата Сообщение от Otyso
(ведь инженеры ST невероятно тупы, и их никак не сравнить с вами, вы то знаете лучше).
Может не будем путать тех кто разрабатывал периферию с теми кто писал быдлолибу?
И пока у вас ничего не выходит а не у меня... :))))))))))
Со временем и приобретенным опытом вы поймёте, что свое время надо ценить, и использовать его максимально эффективно, больше отдаваясь на решение конкретной проблемы, и не тратить время на рутиные операции.
Я больше надеюсь, что когда к вам придет хоть малая часть моего опыта и в очередной раз вляпавшись в быдлокод , вы наконец осознаете - что надо было учить матчасть а не играться с недолибами. :))))))))))

Кстати это именно "прототип" , именно "рыба" и работает на всех линейках с небольшими исправлениями . Так что ваш бред о "высоком" - выхлоп в лужу. Да и это всего лишь "рыба" , вы же не думали что вам вывалят готовый вылизанный проект? :)))
0
0 / 0 / 0
Регистрация: 26.01.2013
Сообщений: 208
20.04.2016, 18:17
Цитата Сообщение от dosykus_2
Я больше надеюсь, что когда к вам придет хоть малая часть моего опыта и в очередной раз вляпавшись в быдлокод , вы наконец осознаете - что надо было учить матчасть а не играться с недолибами. :))))))))))
Оу йессс! досикус опять срач про хал начал))
все прогрессивное сообщество считает что CubeMX круче чем HAL!
(достал бутерброды, налил кофе)
0
0 / 0 / 0
Регистрация: 29.11.2012
Сообщений: 396
20.04.2016, 18:22
CubeMX разве не HAL ?
правильно dosykus_2 говорит! -
... и в очередной раз вляпавшись в быдлокод , вы наконец осознаете - что надо было учить матчасть а не играться с недолибами. :))))))))))
( достал ящик пива ))) )
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 886
20.04.2016, 19:22
dosykus !!!
Начинай жечь на кладбище покрышки !
0
0 / 0 / 0
Регистрация: 03.10.2012
Сообщений: 701
20.04.2016, 19:50
Цитата Сообщение от Dimox
все прогрессивное сообщество
На лабутенах и в стрингах??? Уже стошнило... ))))))
А что говорят зелёные человечки??? Есть жизнь на Марсе??? ))))
Ну и мучайтесь со своим ХАЛом... в очередной раз... На здоровье!!! )))))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.04.2016, 19:50
Помогаю со студенческими работами здесь

"параллельная" работа SPI и USART
Доброе время суток !!! в МК есть два массива. В первый массив записываются данные из USORT, в этоже время из второго массива данные...

ATmega128. Пересылка данных с USART в SPI
Доброго времени суток, мне требуется реализовать пересылку символов с USORT в SPI, на контроллере ATmega128. Кто может объясните как мне...

STM32F4-Discovery (Keil). Связь по USART и SPI
Доброго времени суток. Сразу скажу, что опыта в работе с МК не много и потому не бить сильно:) В данный момент на руках имеется...

Подскажите можно ли использовать USART и SPI интерфейсы одновременно?
скажем так: short k=0,g=0; main() { функция инициализации USORT; функция инициализации SPI; while(1) { if(функция...

DMA в F0: копирование periph-to-periph (на прим. SPI->USART)
Пытаюсь настроить DMA на копирование из SPI в USORT. Хочу обойтись одним каналом DMA и без промежуточных буферов в ОЗУ, чтобы сразу после...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru