|
v7: Нужно что-то типа Регистра сведений в 7.7 | ☑ | ||
---|---|---|---|---|
0
Пенза58
18.09.13
✎
07:35
|
7.7 уже совсем плохо помню помогите с регистрами.
Задача нужно вести учет времени преподавателей, чтобы не поставить им занятие на одно время. В день в расписании может быть 12 часов. Для учета есть оборотный регистр с Измерениями: ДатаДень, Преподаватель, НомерЧаса и ресурс Единичка(записывается всегда цифра 1) и есть еще реквизиты данных о занятии. Нужно: 1. Как-то по-быстрому получить, значение Единичка для измерений, чтобы понять, что занятия есть. 2. Если по измерениям есть значения, то получить значения реквизитов. 3. Дата документа и дата работы преподавателя будут не совпадать, т.е. например документ от 18.09.2013, а преподаватель работал 10.09.2013, если нас интересует что было 10.09.2013 то получи остатки на эту дату мы не получим значения регистра, как сделать так, чтобы обороты относились к другой дате? |
|||
1
Пенза58
18.09.13
✎
07:36
|
Пока наваял:
Функция РаспПр(ВыбДень,ВыбПрепод,ВыбНомЧас) пВыбДень=ВыбДень; пВыбПрепод=ВыбПрепод; пВыбНомЧас=ВыбНомЧас; Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |ОбрабатыватьДокументы все; |ДатаДеньРег = Регистр.РаспПрепод.ДатаДень; |ПреподавательРег = Регистр.РаспПрепод.Преподаватель; |НомерЧасаРег = Регистр.РаспПрепод.НомерЧаса; |ПротоколРег = Регистр.РаспПрепод.Протокол; |РасписаниеРег = Регистр.РаспПрепод.Расписание; |ДисциплинаРег = Регистр.РаспПрепод.Дисциплина; |ВидОбученияРег = Регистр.РаспПрепод.ВидОбучения; |ПреподРазделаРег = Регистр.РаспПрепод.ПреподРаздела; |Единичка = Регистр.РаспПрепод.Единичка; |Условие(ДатаДеньРег = пВыбДень); |Условие(ПреподавательРег = пВыбПрепод); |Условие(НомерЧасаРег = пВыбНомЧас); |"//}}ЗАПРОС ; // Если ошибка в запросе, то выход из процедуры Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Сообщить("Не удалось выполнить запрос к регистру"); Возврат 0; КонецЕсли; ТзРезРег=СоздатьОбъект("ТаблицаЗначений"); Запрос.Выгрузить(ТзРезРег,1,0); Сообщить("Колстр"+ТзРезРег.КоличествоСтрок()); Если ТзРезРег.КоличествоСтрок()=0 Тогда Возврат 1; Иначе Если ТзРезРег.Единичка=1 Тогда ТзРезРег.ВыбратьСтроку(); Возврат 0; Иначе Возврат 1; КонецЕсли; КонецЕсли; //Запрос.ВыбратСтроку(); КонецФункции Процедура ОбработкаПроведения() //Здесь следует написать алгоритм проведения документа ВыбратьСтроки(); Пока ПолучитьСТроку()=1 Цикл Для НомЧаса=1 по 12 Цикл СтрЧаса="Час"+?(НомЧаса<10,"0","")+СокрЛП(Строка(НомЧаса)); Если ПустоеЗначение(ПолучитьАтрибут(СтрЧаса))=0 тогда ТекПрепод=ПолучитьПустоеЗначение("Справочник.Работники"); Если ПустоеЗначение(Преподаватель.Работник)=0 тогда ТекПрепод= Преподаватель.Работник; КонецЕсли; МожноЗаписать=РаспПр(ДатаДень,ТекПрепод,НомЧаса); Если МожноЗаписать=0 Тогда Сообщить("МожноЗаписать"+МожноЗаписать); СтатусВозврата(0); возврат; КонецЕсли; Регистр.РаспПрепод.ДатаДень = ДатаДень; Регистр.РаспПрепод.Преподаватель =ТекПрепод; Регистр.РаспПрепод.НомерЧаса = НомЧаса; Регистр.РаспПрепод.Протокол = КПротоколу.ТекущийДокумент(); Регистр.РаспПрепод.Расписание = ТекущийДокумент(); Регистр.РаспПрепод.Дисциплина = Дисциплина; Регистр.РаспПрепод.ВидОбучения = ВидОбучения; Регистр.РаспПрепод.ПреподРаздела = Преподаватель; Регистр.РаспПрепод.Единичка=1; Регистр.РаспПрепод.ДвижениеВыполнить(); КонецЕСли; КонецЦикла; КонецЦикла; КонецПроцедуры но это как-то не работает. |
|||
2
VladZ
18.09.13
✎
07:38
|
(0) ИМХО, 7.7 не подходит для решения таких задач. Используй другие инструменты.
|
|||
3
mishaPH
модератор
18.09.13
✎
07:39
|
(0) кто мешает сделать это все на справочнике?
|
|||
4
VladZ
18.09.13
✎
07:43
|
ИМХО, лучше подходит любая база данных.
|
|||
5
Пенза58
18.09.13
✎
07:44
|
(3) можно, но геморно
И это можно только часы записать, а реквизиты уже не получится. |
|||
6
Толич
18.09.13
✎
07:48
|
(5) Я бы тоже на справочнике сделал.
|
|||
7
КапЛей
18.09.13
✎
07:53
|
справочник с периодикой.
|
|||
8
Chai Nic
18.09.13
✎
07:53
|
Регистры накопления в семерке убогие
|
|||
9
Пенза58
18.09.13
✎
07:59
|
(6) (7) Реквизиты вы как туда засунете?
Вот есть условно данные: Иванов 10.09.2013 1час Математика Группа 1 Иванов 10.09.2013 2час Геометрия Группа 1 Иванов 10.09.2013 3час Геометрия Группа 2 Иванов допустим справочник, дата - дата периодического реквизита, а все остальное т.е.: 1час Математика Группа 1 2час Геометрия Группа 1 3час Геометрия Группа 2 надо зашифровать в строку, потом это доставать и делать поиск по справочникам. |
|||
10
МихаилМ
18.09.13
✎
07:59
|
заведите вспомогательный док для движений
не используйте ресурсы. тогда не будет накопительной таблицы но этим можно пожертвовать. |
|||
11
Пенза58
18.09.13
✎
08:01
|
(10) Т.е. данные брать из табличных частей документа?
|
|||
12
КапЛей
18.09.13
✎
08:06
|
(9) если задача будет описана чуть подробнее чем в (0) и оплачена (пензякам как земелям скидки) готов сделать.
|
|||
13
VladZ
18.09.13
✎
08:07
|
(8) Там их вообще нет. Есть просто регистры.
|
|||
14
Пенза58
18.09.13
✎
08:13
|
(12) Сделать я и сам могу, на крайний случай буду данный из ТЧ документов обрабатывать.
|
|||
15
Ёпрст
18.09.13
✎
08:24
|
||||
16
VladZ
18.09.13
✎
08:36
|
Делал в свое время. Все данные - в справочнике. Само расписание - в базе данных (DBF). Расставить - не проблема. Проблемы начнутся дальше...
|
|||
17
KUBIK
18.09.13
✎
08:42
|
(0) Поищи конфу типа "1С: Аналит: Стоматология" 7.7 - помню там есть документ "ЗаписьНаПрием" и отчеты, позвояющие видеть кто из врачей когда занят (типа шахматки)
|
|||
18
Пенза58
18.09.13
✎
08:58
|
(17) Спасибо.
|
|||
19
Абыр
18.09.13
✎
09:18
|
(0) можно с журналом расчетов попробовать
|
|||
20
Стрелок
18.09.13
✎
09:31
|
Писал когда то конфу с нуля на 7.7 для частной клиники. Если интересно - могу поискать в архивах. конфа рабочая - с 2007 года крутится в реальной частной медклинике. Там есть понятие "Запись на приём" для каждого врача.
|
|||
21
Стрелок
18.09.13
✎
09:32
|
делал кажется даже не на регистрах, а на счетах. но могу ошибаться. давно было
|
|||
22
Пенза58
18.09.13
✎
10:01
|
(19) Журнал расчетов периодический, надо периоды закрывать, а расписание может вполне и на разные месяца или разные годы попадать.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |