|   |   | 
| 
 | 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) Журнал расчетов периодический, надо периоды закрывать, а расписание может вполне и на разные месяца или разные годы попадать.     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |