−1
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 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
Функция ПолучитьСеб (Номенклатура,ДатаОстатков) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| УчетПартийОстатки.Номенклатура,
| УчетПартийОстатки.Партия КАК Партия,
| УчетПартийОстатки.СуммаБезНДСОстаток / УчетПартийОстатки.КоличествоОстаток КАК бухСС
|ИЗ
| РегистрНакопления.УчетПартий.Остатки(&ДатаОстатков, Номенклатура В (&Номенклатура)) КАК УчетПартийОстатки
| ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииНоменклатуры.Остатки(&ДатаОстатков, Номенклатура В (&Номенклатура)) КАК ПартииНоменклатурыОстатки
| ПО УчетПартийОстатки.Характеристика = ПартииНоменклатурыОстатки.Характеристика
| И УчетПартийОстатки.МестоХранения = ПартииНоменклатурыОстатки.МестоХранения
| И УчетПартийОстатки.Статус = ПартииНоменклатурыОстатки.Статус
| И УчетПартийОстатки.Номенклатура = ПартииНоменклатурыОстатки.Номенклатура
| И УчетПартийОстатки.Партия = ПартииНоменклатурыОстатки.Партия
|ГДЕ
| УчетПартийОстатки.КоличествоОстаток > 0
|
|УПОРЯДОЧИТЬ ПО
| Партия";
Запрос.УстановитьПараметр("ДатаОстатков", ДатаОстатков);
Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Если ВыборкаДетальныеЗаписи.Следующий() Тогда
Возврат ВыборкаДетальныеЗаписи.бухсс;
КонецЕсли;
КонецФункции
Нашёл сие поделие в базе одного клиента, придраться хочется ко всему, начиная с лютого нэйминга - имя функции ПолучитьСеб(), не намного лучше чем Функция1(), имя переменной в запросе бухСС тоже так себе.
Задача функции вернуть себестоимость единицы товара, при этом число она возвращает только если в запросе что-то есть, понятно что в остальных случаях вернет Неопределено, но себестоимость это всегда число, никаких Неопределено быть не должно.
Если посмотреть текст запроса, то видно, что поля выборки на 100% беруться из одной таблицы, зачем там ещё одну прилепили, да ещё и с полным соединением - теряюсь в догадках.
Упорядочивание по полю Партия вообще смысла не имеет, если уж речь идёт о получении себестоимости, то скорей автор хотел получить её из первой партии, что косвенно подвтерждается выражением "ПЕРВЫЕ 1", но дело в том, что упорядочивание по ссылке (Партия - это элемент справочника Партии) не имеет никакой привязки к дате, т.е. нужно было писать так: "Упорядочить По Партия.ДатаПартии".
Здесь не видно, но функция вызывается только в двух местах модуля и всегда с конкретным значением номенклатуры, т.е. условие виртуальной таблицы может быть оптимизировано до "Номенклатура = &Номенклатура".
Ну и на последок - в данном случае полное соединение конечно нужно ликвидировать, но если бы оно действительно было нужно, то виртуальные таблицы не стоит связывать между собой, предварительно их нужно помещать во временные таблицы и индексировать по полям условий соединения.
VladC,
17 Мая 2022
+1
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 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
ЗапросБезСЛ = Новый Запрос;
ЗапросБезСЛ.Текст = "ВЫБРАТЬ
| КарточкаСделкиТовары.Ссылка.Ссылка КАК СсылкаКС
|ИЗ
| Документ.КарточкаСделки.Товары КАК КарточкаСделкиТовары
|ГДЕ
| КарточкаСделкиТовары.Ссылка.Завершена = ЛОЖЬ
| И КарточкаСделкиТовары.Ссылка.ПометкаУдаления = ЛОЖЬ
| И (КарточкаСделкиТовары.СтатусСтроки = &СтатусСтрокиПлан
| ИЛИ КарточкаСделкиТовары.СтатусСтроки = &СтатусСтрокиПланХочуВЗаказано
| ИЛИ КарточкаСделкиТовары.Ссылка.Клиент = &Электросистем
| И КарточкаСделкиТовары.СтатусСтроки <> &СтатусСтрокиЗавершено)
| И КарточкаСделкиТовары.КонтрактнаяДата < НАЧАЛОПЕРИОДА(&ТекДата, ДЕНЬ)
| И КарточкаСделкиТовары.Ссылка.Подразделение В ИЕРАРХИИ(&ДРП)
| И КарточкаСделкиТовары.Ссылка.ДляПланаПроизводства = ЛОЖЬ
| И КарточкаСделкиТовары.Ссылка.Дата > &ПрошлыйГод
| И КарточкаСделкиТовары.Ссылка.Статус <> ЗНАЧЕНИЕ(Справочник.СтатусыКарточекСделки.Завершена)
//| И КарточкаСделкиТовары.Ссылка.Номер = ""180010002""
|
|СГРУППИРОВАТЬ ПО
| КарточкаСделкиТовары.Ссылка.Ссылка
|
|УПОРЯДОЧИТЬ ПО
| КарточкаСделкиТовары.Ссылка.Дата УБЫВ";
ЗапросБезСЛ.УстановитьПараметр("СтатусСтрокиПлан", Справочники.СтатусыСтрокКарточкиСделки.Запланировано);
ЗапросБезСЛ.УстановитьПараметр("СтатусСтрокиПланХочуВЗаказано", Справочники.СтатусыСтрокКарточкиСделки.Заказано);
ЗапросБезСЛ.УстановитьПараметр("ТекДата", ТекущаяДата());
ЗапросБезСЛ.УстановитьПараметр("ДРП",Справочники.ФункциональныеОтделыПродаж.НайтиПоКоду("d16"));
ЗапросБезСЛ.УстановитьПараметр("Электросистем", Справочники.Контрагенты.НайтиПоКоду("140755"));
ЗапросБезСЛ.УстановитьПараметр("СтатусСтрокиЗавершено", Справочники.СтатусыСтрокКарточкиСделки.Завершено);
ЗапросБезСЛ.УстановитьПараметр("ПрошлыйГод", НачалоГода(НачалоГода(ТекущаяДата())-3 * 86400));
Выборка = ЗапросБезСЛ.Выполнить().Выбрать();
сПользователь = Справочники.Пользователи.НайтиПоКоду("17 644").Руководитель;
НоваяКонтрДата = ОбщиеПроцедурыИФункции.ОпределитьДатуЗавершения(сПользователь, ТекущаяДата(), 3600*8*1);
Пока Выборка.Следующий() Цикл
КС = Выборка.СсылкаКС.ПолучитьОбъект();
НеобходимоЗаписать = Ложь;
Если ЗначениеЗаполнено(Выборка.СсылкаКС.КодSL) Тогда
Для каждого Изделие из КС.Товары Цикл
СтатусСтроки = ПолучитьСтатусСтрокиВSL(Выборка.СсылкаКС.КодSL,Изделие.НомерСтроки,Выборка.СсылкаКС.Склад);
Если СтатусСтроки <> Неопределено И СтатусСтроки <> "F" //выполн.
и СтатусСтроки <> "C" //завершено
Тогда
Если Изделие.КонтрактнаяДата < НачалоДня(ТекущаяДата()) Тогда
Если (Изделие.СтатусСтроки = Справочники.СтатусыСтрокКарточкиСделки.Запланировано
или Изделие.СтатусСтроки = Справочники.СтатусыСтрокКарточкиСделки.Заказано) ИЛИ (Изделие.СтатусСтроки <> Справочники.СтатусыСтрокКарточкиСделки.Завершено И Выборка.СсылкаКС.Клиент = Справочники.Контрагенты.НайтиПоКоду("140755")) Тогда
Изделие.КонтрактнаяДата = НоваяКонтрДата;
НеобходимоЗаписать = Истина;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если НеобходимоЗаписать Тогда
КС.Записать();
Документы.КарточкаСделки.ОбновитьПараметрыКарточкиСделкиВSL(КС);
rs = Неопределено;
КонецЕсли;
Иначе
Для каждого Изделие из КС.Товары Цикл
Если Изделие.КонтрактнаяДата < НачалоДня(ТекущаяДата()) Тогда
Если (Изделие.СтатусСтроки = Справочники.СтатусыСтрокКарточкиСделки.Запланировано
или Изделие.СтатусСтроки = Справочники.СтатусыСтрокКарточкиСделки.Заказано) ИЛИ (Изделие.СтатусСтроки <> Справочники.СтатусыСтрокКарточкиСделки.Завершено И Выборка.СсылкаКС.Клиент = Справочники.Контрагенты.НайтиПоКоду("140755")) Тогда
Изделие.КонтрактнаяДата = НоваяКонтрДата;
НеобходимоЗаписать = Истина;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если НеобходимоЗаписать Тогда
КС.Записать();
rs = Неопределено;
КонецЕсли;
КонецЕсли;
КонецЦикла;
testtest69,
16 Апреля 2022
0
- 1
- 2
- 3
- 4
- 5
Процедура СоздаватьПКОПриИзменении(Элемент)
Если НЕ ЗаписыватьДокументы Тогда
ЗаписыватьДокументы = Истина;
КонецЕсли;
КонецПроцедуры
Нельзя так просто взять и не создавать документы.
Patronize,
15 Февраля 2022
0
- 1
- 2
- 3
- 4
ДокОбъект = ДокСсылка.ПолучитьОбъект();
ДокОбъект.ОбменДанными.Загрузка = Истина;
ДокОбъект.ПометкаУдаления = Истина;
ДокОбъект.Записать();
znsoft,
08 Февраля 2022
−4
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
Функция ПолучитьОсновногоБухгалтераПоОрганизации(организация) Экспорт
текстЗапроса = "
|ВЫБРАТЬ ПЕРВЫЕ 1
| ПользовательБухгалтер
|ИЗ
| РегистрСведений.СКАНИЯ_ОтветственныеБухгалтерыПоОрганизациям
|ГДЕ
| Организация = &организация
| И Основной = ИСТИНА
|";
запрос = Новый Запрос(текстЗапроса);
запрос.УстановитьПараметр("организация", организация);
выборка = запрос.Выполнить().Выбрать();
Если выборка.Следующий() Тогда
возврат выборка.ПользовательБухгалтер;
Иначе
возврат Справочники.Пользователи.ПустаяСсылка();
КонецЕсли;
КонецФункции
alexey85,
31 Января 2022
+1
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
Функция ПолучитьПарамтерыОтправкиРеестра()
Адресат = ПараметрыСеанса.ТекущийПользователь.аОфис.ОфисАрхивации.Ответственный;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ТерриторииИПомещения.Ссылка КАК Ссылка
|ИЗ
| Справочник.ТерриторииИПомещения КАК ТерриторииИПомещения
|ГДЕ
| ТерриторииИПомещения.аОфисПредприятия = &Архив
| И НЕ ТерриторииИПомещения.ПометкаУдаления";
Запрос.УстановитьПараметр("Архив", Адресат.аОфис.ОфисАрхивации);
РЗОф = Запрос.Выполнить().Выгрузить();
Если РЗОф.Количество() = 0 Тогда
Сообщить("Офис архивации """ + Адресат.аОфис.ОфисАрхивации + """ не прикреплен к территории. Обратитесь в техническую поддержку");
ИначеЕсли РЗОф.Количество() > 1 Тогда
Сообщить("Офис архивации """ + Адресат.аОфис.ОфисАрхивации + """ прикреплен к нескольким территориям:");
Для Каждого СтрТер ИЗ РЗОф Цикл
Сообщить(СтрТер.Ссылка);
КонецЦикла;
Сообщить("Обратитесь в техническую поддержку.");
Иначе
ОфисПолучателя = РЗОф[0].Ссылка;
ПодразделениеПолучателя = Адресат.Подразделение;
КонецЕсли;
Возврат Новый Структура("Адресат, ОфисПолучателя, ПодразделениеПолучателя", Адресат, ОфисПолучателя, ПодразделениеПолучателя);
КонецФункции
alexey85,
12 Января 2022
−1
- 1
- 2
Для ТекИндекс = 0 По Объект.Товары.Количество() -1 Цикл
Стр = Объект.Товары[ТекИндекс];
//Интересе, а чем не устроило?:
Для каждого Стр из Объект.Товары Цикл
timofeysin,
06 Декабря 2021
+1
- 1
- 2
- 3
- 4
ДокументСсылка = парВыборка.Документ;
Если СокрЛП(ДокументСсылка) = "" Тогда
Продолжить;
КонецЕсли;
А как вы проверяете на ПустуюСсылку?
timofeysin,
26 Ноября 2021
0
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 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
Процедура ПоказатьРасчетныеСчета()
ТаблицаРасчетныхСчетов.Очистить();
Если ЭтоНовый() Тогда
Возврат;
КонецЕсли;
Выборка = Справочники.ТСЖ.Выбрать();
Пока Выборка.Следующий() Цикл
ТСЖНеБух = Выборка.Ссылка;
Если (ТСЖНеБух.ПометкаУдаления) ИЛИ (ТСЖНеБух.ЭтоУК=1) ИЛИ (ТСЖНеБух.ЭтоУК=2) Тогда
Продолжить;
КонецЕсли;
//--- (1)--- Все СОБСТВЕННЫЕ счета (выборка по владельцу счета)
Если (НЕ ТСЖНеБух.НаБалансеУК) Тогда
ВыбСчетов = Справочники.БанковскиеСчета.Выбрать(,ТСЖНеБух,,"Код Возр");
Пока ВыбСчетов.Следующий() Цикл
Если (НЕ ВыбСчетов.ПометкаУдаления) Тогда
ДобавитьСчет(ТСЖНеБух, ВыбСчетов.Ссылка, ВыбСчетов.Ссылка.ХранилищеУслуг);
КонецЕсли;
КонецЦикла;
КонецЕсли;
//--- (2)--- Все ЧУЖИЕ счета (обход табличной части СчетаУК)
Для Каждого ВыбСчет Из ТСЖНеБух.СчетаУК Цикл
Если (ВыбСчет.Организация = Справочники.ТСЖ.ПустаяСсылка()) ИЛИ
(ВыбСчет.РасчетныйСчет = Справочники.БанковскиеСчета.ПустаяСсылка()) Тогда
Продолжить;
КонецЕсли;
Если НЕ ВыбСчет.РасчетныйСчет.ПометкаУдаления Тогда
ДобавитьСчет(ТСЖНеБух, ВыбСчет.РасчетныйСчет, ВыбСчет.ХранилищеУслуг);
КонецЕсли;
КонецЦикла;
//----------
КонецЦикла;
КонецПроцедуры
Процедура ДобавитьСчет(ТСЖНеБух, РСчет, Хран)
НовСтр = ТаблицаРасчетныхСчетов.Добавить();
НовСтр.Организация = ТСЖНеБух;
НовСтр.Получатель = РСчет.Владелец;
НовСтр.РасчетныйСчет = РСчет;
Если ТСЖНеБух.ВсеУслугиВОдной Тогда
НовСтр.Флаг = "Да, может.";
Иначе
МассУслуг = глПолучитьМассивСсылокУслуг(Хран);
НовСтр.Флаг = ?(МассУслуг.Найти( Ссылка ) = Неопределено, "Нет", "Да, может.");
КонецЕсли;
КонецПроцедуры
ХранилищеЗначений, любимый(?) костыль людей, не слышавших о нормализации.
Вместо того, чтобы сделать регистр сведений со связями (хотя бы)счёт-услуга, мы запихнём список услуг в ХЗ - реквизит счёта. Это ведь так удобно(на самом деле нет)!
CtrlAltReset,
25 Ноября 2021
−1
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 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
&НаСервере
Процедура ЗагрузитьПринятыхНаСервере()
Пользователь = ПользователиИнформационнойБазы.ТекущийПользователь().Имя;
Если Пользователь = "Иванов Иван Юрьевич" ИЛИ Пользователь = "Пупкин Иван Дмитриевич" Тогда
Если ЭтотОбъект.Программа.Пустая() Тогда
Сообщить("Выберите программу");
Возврат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТекущиеКадровыеДанныеСотрудников.Сотрудник КАК Сотрудник
|ИЗ
| РегистрСведений.ТекущиеКадровыеДанныеСотрудников КАК ТекущиеКадровыеДанныеСотрудников
|ГДЕ
| ТекущиеКадровыеДанныеСотрудников.ДатаПриема <> &ДатаУвольнения
| И ТекущиеКадровыеДанныеСотрудников.ДатаПриема МЕЖДУ &Дата1 И &Дата2
| И ТекущиеКадровыеДанныеСотрудников.ДатаУвольнения = &ДатаУвольнения";
Запрос.УстановитьПараметр("Дата1", ЭтотОбъект.Дата1);
Запрос.УстановитьПараметр("Дата2", ЭтотОбъект.Дата2);
Запрос.УстановитьПараметр("ДатаУвольнения", Дата(1,1,1));
ТЗРезультатов = Запрос.Выполнить().Выгрузить();
Для Каждого ТекСтрока Из ТЗРезультатов Цикл
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОбучениеПоОхранеТрудаОценкаПерсонала.Сотрудник КАК Сотрудник,
| ОбучениеПоОхранеТрудаОценкаПерсонала.Программа КАК Программа,
| ОбучениеПоОхранеТрудаОценкаПерсонала.Ответственный КАК Ответственный
|ИЗ
| РегистрСведений.ОбучениеПоОхранеТрудаОценкаПерсонала КАК ОбучениеПоОхранеТрудаОценкаПерсонала
|ГДЕ
| (ОбучениеПоОхранеТрудаОценкаПерсонала.Ответственный.Наименование = &Ответственный ИЛИ ОбучениеПоОхранеТрудаОценкаПерсонала.Ответственный.Наименование = &Ответственный1)
| И ОбучениеПоОхранеТрудаОценкаПерсонала.Программа = &Программа
| И ОбучениеПоОхранеТрудаОценкаПерсонала.Сотрудник = &Сотрудник";
Запрос.УстановитьПараметр("Ответственный", "Иванов Иван Юрьевич");
Запрос.УстановитьПараметр("Ответственный1", "Пупкин Иван Дмитриевич");
Запрос.УстановитьПараметр("Программа", ЭтотОбъект.Программа);
Запрос.УстановитьПараметр("Сотрудник", ТекСтрока.Сотрудник);
Работники = Запрос.Выполнить().Выгрузить();
Если Работники.Количество()>0 Тогда
Иначе
МенеджерЗаписи = РегистрыСведений.ОбучениеПоОхранеТрудаОценкаПерсонала.СоздатьМенеджерЗаписи();
МенеджерЗаписи.Сотрудник = ТекСтрока.Сотрудник;
//МенеджерЗаписи.Программа = ЭтотОбъект.Программа;
МенеджерЗаписи.Ответственный = Справочники.Пользователи.НайтиПоНаименованию(Пользователь);
Попытка
МенеджерЗаписи.Записать(Ложь);
Сообщить("Добавлен сотрудник " + ТекСтрока.Сотрудник);
Исключение
Сообщить("Сотрудник " + ТекСтрока.Сотрудник + " был ранее добавлен");
КонецПопытки;
КонецЕсли;
КонецЦикла;
Иначе
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КадроваяИсторияСотрудников.Сотрудник КАК Сотрудник
|ИЗ
| РегистрСведений.КадроваяИсторияСотрудников КАК КадроваяИсторияСотрудников
|ГДЕ
| КадроваяИсторияСотрудников.ВидСобытия = &ВидСобытия
| И КадроваяИсторияСотрудников.Период МЕЖДУ &Дата1 И &Дата2
| И КадроваяИсторияСотрудников.ВидСобытия = ЗНАЧЕНИЕ(Перечисление.ВидыКадровыхСобытий.Прием)";
Запрос.УстановитьПараметр("Дата1", НачалоДня(ЭтотОбъект.Дата1));
Запрос.УстановитьПараметр("Дата2", КонецДня(ЭтотОбъект.Дата2));
Запрос.УстановитьПараметр("ВидСобытия",Перечисления.ВидыКадровыхСобытий.Прием);
ТЗРезультатов = Запрос.Выполнить().Выгрузить();
Для Каждого ТекСтрока Из ТЗРезультатов Цикл
МенеджерЗаписи = РегистрыСведений.ОбучениеПоОхранеТрудаОценкаПерсонала.СоздатьМенеджерЗаписи();
МенеджерЗаписи.Сотрудник = ТекСтрока.Сотрудник;
МенеджерЗаписи.Программа = ЭтотОбъект.Программа;
МенеджерЗаписи.Ответственный = Справочники.Пользователи.НайтиПоНаименованию(Пользователь);
Попытка
МенеджерЗаписи.Записать(Ложь);
Сообщить("Добавлен сотрудник " + ТекСтрока.Сотрудник);
Исключение
Сообщить("Сотрудник " + ТекСтрока.Сотрудник + " был ранее добавлен");
КонецПопытки;
КонецЦикла;
Перешел из франча на фиксу на заводе, зашел в код, а там такая пизда творится, причем это только верх той хуйни которую я тут вижу.
Код по кнопке заполняет регистр сотрудниками у которых дата приема на работу между выбранными датами
Mixanhe,
13 Октября 2021