Имя: Пароль:
1C
 
УФ Как вызвать на сервере функцию формы документа?
0 budnik
 
30.01.18
09:10
Зуп 3 , документ расчет сверхурочно должен вызвать пересчет строки табеля , организовал подписку , как воспользоваться функцией в табеле которая возникает в момент выбора сотрудника.
1 cw014
 
30.01.18
09:12
Совсем не понял о чем речь. Какая подписка?
2 budnik
 
30.01.18
09:12
Подписка на событие при записи документа.
3 cw014
 
30.01.18
09:14
(2) А причем тут форма? И при чем тут пересчет строки?
4 cw014
 
30.01.18
09:15
(2) Если надо те же действия, что и при изменения реквизита табличной части - возьми код из формы и перенеси в модуль документа (только уже с объектом, а не с ДанныеФормыКоллекция)
5 budnik
 
30.01.18
09:20
Вот на форме

&НаСервере
Процедура ЗаполнитьДанныеПоСотрудникуНаСервере()
    УчетРабочегоВремениРасширенныйФормы.ТабельЗаполнитьДанныеПоСотруднику(ЭтаФорма);
КонецПроцедуры

&НаКлиенте
Процедура ДанныеОВремениСотрудникПриИзменении(Элемент)
    ЗаполнитьДанныеПоСотрудникуНаСервере();
КонецПроцедуры




Я на сервере нашел документ для примера
как пересчет организовать и записать документ .

    сс=Документы.ТабельУчетаРабочегоВремени.НайтиПоНомеру("0А00-000015",Источник.Дата);
    
об=сс.ПолучитьОбъект();
    ЭтаФорма=об.ПолучитьФорму();
    Для каждого стр1 Из Источник.Сотрудники Цикл
        НужнаяСтрока = об.ДанныеОВремени.Найти(стр1.Сотрудник);  
        ЭтаФорма.ДанныеОВремени.Текущаястрока = НужнаяСтрока;  
        УчетРабочегоВремениРасширенныйФормы.ТабельЗаполнитьДанныеПоСотруднику(ЭтаФорма);
        
    КонецЦикла;
6 budnik
 
30.01.18
09:20
Ругается   ЭтаФорма=об.ПолучитьФорму();
7 cw014
 
30.01.18
09:21
(6) Конечно. Представь что серверу начихать на формы. Он их не замечает, пока какая нибудь форма с клиентом не потянет его за ложноножку. Тогда он нехотя откликается на пару мгновений и опять забывает про формы
8 budnik
 
30.01.18
09:22
Как красиво и просто сделать , понятно что код выдрать можно и к себе забрать можно .
9 cw014
 
30.01.18
09:22
(6) У тебя есть конкретная функция "УчетРабочегоВремениРасширенныйФормы.ТабельЗаполнитьДанныеПоСотруднику(ЭтаФорма);"
Посмотри, куда она уходит и реально ли ему нужна "ЭтаФорма" или подойдет и "ЭтотОбъект"?
10 budnik
 
30.01.18
09:23
Посмотрел уже , там так
Процедура ТабельЗаполнитьДанныеПоСотруднику(Форма, ЗаполнятьТерриторииИУсловия = Ложь) Экспорт
    Объект = Форма.Объект;
            
    ГоловнаяСтрокаСотрудника = Объект.ДанныеОВремени.НайтиПоИдентификатору(Форма.Элементы.ДанныеОВремени.ТекущаяСтрока);
11 cw014
 
30.01.18
09:25
(10) Ну если оно так, тогда возьми процедуру и перенеси к себе в модуль. Или найди аналогичную для объекта
12 budnik
 
30.01.18
09:26
понимаешь , задачки такие возникают часто и если есть простое решение , это существенно упростит работу.
13 budnik
 
30.01.18
09:27
к тому же функция меняться будет у 1с.
14 cw014
 
30.01.18
09:28
(12)(13)Процедура сама большая?
15 cw014
 
30.01.18
09:28
(12) Простого решения ты тут не найдешь