Функции работы с расписанием конфигурации Аналит.Стоматология 7.7

25.11.22

Разработка - Универсальные функции

Функции работы со временем (расчета номеров блоков) для обработки расписания конфигурации Аналит.Стоматология 7.7.
//*******************************************
Функция глВычислитьНомерБлокаС(ммЧас, ммМинуты) Экспорт
    
	// Алгоритм:                  // сколько минут со 00:00 = 9*60 + (0.30*100)
	// 12:45 - 9:00 = 3:45
	// (3:45 / мп) - 1 = БлокС 	

	ммЧасЧисло    = Число(ммЧас);
	ммМинутыЧисло = Число(ммМинуты);
	
	ммВремяВМинутахТочка  = ммЧасЧисло * 60 + ммМинутыЧисло; 
    ммВремяВМинутахНачало = Цел(глНачалоРаботы) * 60 + ((глНачалоРаботы - Цел(глНачалоРаботы)) * 100); 
	ммРазницаВМинутах     = ммВремяВМинутахТочка - ммВремяВМинутахНачало;
	ммРазницаВБлоках      = Цел(ммРазницаВМинутах / глШагРасписания); 

	ммБлокС = ммРазницаВБлоках + 1;
	
	Возврат ммБлокС;
	
КонецФункции 

//*******************************************
Функция глВычислитьНомерБлокаПо(ммЧас, ммМинуты) Экспорт
    
	ммЧасЧисло    = Число(ммЧас);
	ммМинутыЧисло = Число(ммМинуты);
	
	ммВремяВМинутахТочка  = ммЧасЧисло * 60 + ммМинутыЧисло; 
    ммВремяВМинутахНачало = Цел(глНачалоРаботы) * 60 + ((глНачалоРаботы - Цел(глНачалоРаботы)) * 100); 
	ммРазницаВМинутах     = ммВремяВМинутахТочка - ммВремяВМинутахНачало;
	ммРазницаВБлоках      = Цел(ммРазницаВМинутах / глШагРасписания); 

	ммБлокПо = ммРазницаВБлоках + 0;
	
	Возврат ммБлокПо;
	
КонецФункции

//*******************************************
Функция глВычислитьВремяНачПоБлоку(НомерБлока) Экспорт
    
	ммВремяВМинутахНачало = Цел(глНачалоРаботы) * 60 + ((глНачалоРаботы - Цел(глНачалоРаботы)) * 100); // 540    
	ммВремяВМинутахТочка  = ммВремяВМинутахНачало + ((НомерБлока - 1) * глШагРасписания);              // 570
	ммВремяВЧасахТочка    = ммВремяВМинутахТочка / 60;                                                 // 9.5
	
	ммТочкаВремяЧасы   = Цел(ммВремяВЧасахТочка);                             // 9                                                                            
	ммТочкаВремяМинуты = Цел((ммВремяВЧасахТочка - ммТочкаВремяЧасы)  * 60);  // 0.30
	
	ммТочкаВремяЧасы   = Прав("00" + ммТочкаВремяЧасы,   2);
	ммТочкаВремяМинуты = Прав("00" + ммТочкаВремяМинуты, 2); 	
	
	Результат = ммТочкаВремяЧасы + ":" + ммТочкаВремяМинуты;
	
	Возврат Результат;
	
КонецФункции 

//*******************************************
Функция глВычислитьВремяКонПоБлоку(НомерБлока) Экспорт
    
	ммВремяВМинутахНачало = Цел(глНачалоРаботы) * 60 + ((глНачалоРаботы - Цел(глНачалоРаботы)) * 100); // 540  
	ммВремяВМинутахТочка  = ммВремяВМинутахНачало + ((НомерБлока + 0) * глШагРасписания);              // 570
	ммВремяВЧасахТочка    = ммВремяВМинутахТочка / 60;                                                 // 9.5
	
	ммТочкаВремяЧасы   = Цел(ммВремяВЧасахТочка);                             // 9                                                                            
	ммТочкаВремяМинуты = Цел((ммВремяВЧасахТочка - ммТочкаВремяЧасы)  * 60);  // 0.30
	
	ммТочкаВремяЧасы   = Прав("00" + ммТочкаВремяЧасы,   2);
	ммТочкаВремяМинуты = Прав("00" + ммТочкаВремяМинуты, 2); 	
	
	Результат = ммТочкаВремяЧасы + ":" + ммТочкаВремяМинуты;
	
	Возврат Результат;
	
КонецФункции


В конфигурации 1с7.7 Аналит.Стоматология используется причудливое хранение моментов записи на прием в виде номеров блоков времени с шагом в заданную минимальную продолжительность времени приема от времени начала приема. Ничего не понятно? Мне тоже было непонятно, пока суровая реальность не заставила разбираться с этим вопросом.

Итак, имеем константы: НачалоРаботы, КонецРаботы и МинимальнаяПродолжительность.

Например, дано НачалоРаботы = 9, КонецРаботы = 21 и МинимальнаяПродолжительность 30;

Итого получаем 21-9 -> 12*2 -> 24 блока в расписании рабочего дня.

Или, например, дано НачалоРаботы = 10, КонецРаботы = 18 и МинимальнаяПродолжительность 15;

Итого получаем 18-10 -> 8*4 -> 32 блока в расписании рабочего дня.

Итого: если пациент записан в первую клинику с 10:00 до 11:00, то запись о его приеме в первой базе будет храниться как: ВремяНач = 3 блок и ВремяКон = 4 блок.

Во второй же базе будет храниться как: ВремяНач = 1 блок и ВремяКон = 4 блок.

И этот замечательный пирог украшается хранением данных о приеме в реквизитах табличной части документа ЗаписьНаПрием, где время нач названо БлокС, а время кон БлокПо.

Я выше набросал 4 функции, которые позволяют конвертировать эту иезуитскую систему счисления в нормальное читабельное время и обратно. Если столкнетесь с задачами по этой конфигурации, то добавьте эти функции в глобальный модуль - их  использование спасет немного вашего драгоценного времени.

Алоха. Всем добра и красивых, понятных алгоритмов.

Аналит.Стоматология 77 планировщик расписание

См. также

Библиотека процедур и функций для технологической платформы "1С: Предприятие 7.7"

Универсальные функции Платформа 1С v7.7 Россия Абонемент ($m)

В библиотеку собраны различные функции по работе с документами, журналами, типами данных, строками, датой и временем, таблицами значений, Excel, файлами, XML, JSON, Http-сервисами, SMTP серверами и т.п.

1 стартмани

22.12.2023    752    9    user706545_kseg1971    0    

4

1С 7.7 и новый 1С:Контрагент

Универсальные функции Платформа 1С v7.7 Конфигурации 1cv7 Россия Бесплатно (free)

Получение реквизитов контрагентов из 1С:Контрагент для старых конфигураций под 1с 7.7.

25.04.2022    1890    zhenyat    7    

6

Печать таблицы значений в 1С 7.7 при отладке

Универсальные функции Платформа 1С v7.7 Россия Бесплатно (free)

Функция выводит таблицу значений в табличный документ. (v7.7) Особенно полезно при отладке. Не нужно вносить изменения в код, вызываем функцию как вычисляемое выражение при останове. Если таблица обрабатывается в несколько этапов, можно вывести её после каждого и визуально проследить эволюцию.

30.06.2021    4516    Zoltan_Black    11    

2

Установка принтера по умолчанию для 1С 7.7

Универсальные функции Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Установка принтера по умолчанию в 1С 7.7. Обработка может быть полезна в том случае, когда нужно установить принтер по умолчанию, а доступа к рабочему столу нет (например, терминальный режим без рабочего стола или remoteApp)

1 стартмани

13.02.2019    13360    4    alsen    3    

4

Формирование строки json в 1С: 7.7

Универсальные функции Платформа 1С v7.7 Конфигурации 1cv7 1С:Комплексная 7.7 Абонемент ($m)

Предлагается набор функций 1с 7.7 для формирования строки json стандартными средствами.

1 стартмани

10.12.2018    10201    malovandrey    5    

18

Как создать индикатор в 1С:Предприятии 7.7

Универсальные функции Работа с интерфейсом Платформа 1С v7.7 Конфигурации 1cv7 Россия Абонемент ($m)

В статье дано описание создания индикатора на форме в среде разработки 1С:Предприятие 7.7 исключительно типовыми средствами.

1 стартмани

27.09.2016    18716    2    HAMMER_59    6    

2

Проверка часового пояса

Информационная безопасность Универсальные функции Платформа 1С v7.7 Бесплатно (free)

При использовании терминалок для удаленных баз, иногда при входе в базу данных необходимо исключить возможность входа пользователей с компьютеров с другим часовым поясом. Например, работают в Новосибирской базе с временем UTC +6 и пытаются зайти в базу с UTC +3.

16.05.2016    12821    kudenzov    3    

10
Оставьте свое сообщение