powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / [игнор отключен] [закрыт для гостей] / Продолжение записи документов в цикле при возникновении отказа проведения - 1С
4 сообщений из 4, страница 1 из 1
Продолжение записи документов в цикле при возникновении отказа проведения - 1С
    #39474017
jediAlex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Делаю собственную конфигурацию для учета работ по проектам. Иерархия учета такая(кратко для вопроса):Объект->ДокументПоОбъекту->НазначениеСотрудника. НазначениеСотрудника - документ, регистрирующий назначения работы выбранному сотруднику по выбранному документу объекта. Ранее учет работ велся в другой БД, где не был реализован запрет на повторный ввод одной и той же работы по документу. Здесь такое требование появилось и я его реализовал так в модуле объекта:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Процедура КонтрольЗаписиДубликата(Отказ) Экспорт
Запрос = Новый Запрос();
Запрос.Текст="ВЫБРАТЬ
             |  НазначенияСотрудникам.Ссылка
             |ИЗ
             |  Документ.НазначенияСотрудникам КАК НазначенияСотрудникам
             |ГДЕ
             |  НазначенияСотрудникам.Сотрудник = &Сотрудник
             |  И НазначенияСотрудникам.ПроектныйДокумент = &Документ
             |  И НазначенияСотрудникам.ВидРаботы = &ВидРаботы
             |  И НазначенияСотрудникам.Ссылка <> &Ссылка";
             Запрос.УстановитьПараметр("Сотрудник",Сотрудник);
             Запрос.УстановитьПараметр("Документ",ПроектныйДокумент);
             Запрос.УстановитьПараметр("ВидРаботы",ВидРаботы);
             Запрос.УстановитьПараметр("Ссылка",Ссылка);
            Выборка = Запрос.Выполнить().Выбрать();
            Если Выборка.Количество()>0  И (Не РольДоступна("ПланированиеИКонтрольПроектов") ИЛИ Не РольДоступна("Администратор"))Тогда
            ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Для выбранного сотрудника уже запланировано "+ ВидРаботы + " по выбранному документу. Повторное планирование работы с выбранными параметрами запрещено!");   
            Отказ=Истина;   
            КонецЕсли;  
КонецПроцедуры


Далее потребовалось сделать обработку, позволяющую получить список всех назначений(работ) объекта для редактирования параметров работ и сохранения изменений. Назначения я выгрузил в ТЧ и затем прописал процедуру перепроведения Назначенийсотрудникам с учетом внесенных изменений. Изменения вносятся в ТЧ обработки непосредственно без открытия формы документа:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
&НаСервере
Процедура СохранитьИзмененияНаСервере()
    // Вставить содержимое обработчика.
    Для Стр=0 По Объект.НеЗакрытыеРаботыПоОбъектам.Количество()-1 Цикл
    ДокументДляЗакрытия=Объект.НеЗакрытыеРаботыПоОбъектам[Стр].Ссылка.ПолучитьОбъект(); 
    ДокументДляЗакрытия.Записать(РежимЗаписиДокумента.ОтменаПроведения);    
    ДоступныйОстатокЧасов=ОстатокЧасовДляПланирования(Объект.НеЗакрытыеРаботыПоОбъектам[Стр].Подразделение,Объект.Объект);
    //КолЧасовПланПрежний=ПолучитьПланПоЗалдаче(Объект.НеЗакрытыеРаботыПоОбъектам[Стр].Ссылка);
        //Если ТипЗнч(Объект.НеЗакрытыеРаботыПоОбъектам[Стр].КолЧасовПлан)="Число" И ТипЗнч(ДоступныйОстатокЧасов)="Число" Тогда
    Если  ДоступныйОстатокЧасов>=0 Тогда
    Если Объект.НеЗакрытыеРаботыПоОбъектам[Стр].КолЧасовПлан<=ДоступныйОстатокЧасов Тогда
    ДокументДляЗакрытия.КолЧасовПлан=Объект.НеЗакрытыеРаботыПоОбъектам[Стр].КолЧасовПлан;
    ДокументДляЗакрытия.ДатаОкончанияПлан=Объект.НеЗакрытыеРаботыПоОбъектам[Стр].ДатаОкончанияПлан;
    ДокументДляЗакрытия.Записать(РежимЗаписиДокумента.Проведение);
Иначе Сообщить("Для задачи в строке "+Объект.НеЗакрытыеРаботыПоОбъектам[Стр].НомерСтроки+ " доступно часов план не более "+ДоступныйОстатокЧасов);
    
КонецЕсли;
    КонецЕсли;
//Иначе Сообщить("Тип КолЧасовПлан в строке "+Объект.НеЗакрытыеРаботыПоОбъектам[Стр].НомерСтроки+" "+ТипЗнч(Объект.НеЗакрытыеРаботыПоОбъектам[Стр].КолЧасовПлан)+", Тип ДоступныйОстатокЧасов в строке "+Объект.НеЗакрытыеРаботыПоОбъектам[Стр].НомерСтроки+" "+ТипЗнч(ДоступныйОстатокЧасов));     
//КонецЕсли;    
КонецЦикла; 
;
КонецПроцедуры


Код работает как надо, если нет повторяющихся работ. Как только доходит до повторяющейся записи, срабатывает КонтрольЗаписиДубликата и цикл останавливается. Как сделать так, чтобы цикл отработал до конца, пропуская дубликаты(просто не записывая их)?
...
Рейтинг: 0 / 0
Продолжение записи документов в цикле при возникновении отказа проведения - 1С
    #39475781
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Свернуть тз по одинаковым полям?
...
Рейтинг: 0 / 0
Продолжение записи документов в цикле при возникновении отказа проведения - 1С
    #39475927
Zerro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попытка?) а ошибки в ТЗ и вывод на экран
...
Рейтинг: 0 / 0
Продолжение записи документов в цикле при возникновении отказа проведения - 1С
    #39475954
Фотография netfrog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В нескольких конторах видел аналогичные программы. Есть стандарт ITIL, может вам это нужно?
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Продолжение записи документов в цикле при возникновении отказа проведения - 1С
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]