Имя: Пароль:
1C
1С v8
Подскажите пожалуйста как из внешней обработки запустить процедуру документа
,
0 nurligaianov
 
17.08.16
15:51
Подскажите пожалуйста как из внешней обработки запустить процедуру документа при изменении
1 Горогуля
 
17.08.16
15:51
что за процедура?
2 Mankubus
 
17.08.16
15:51
(0) при изменении чего?
3 Горогуля
 
17.08.16
15:53
(2) наверное, знака зодиака
4 nurligaianov
 
17.08.16
15:53
&НаСервере
Процедура ПриИзмененииСкладаСервер()
    
    Склад = Объект.Склад;
    
    УстановитьПараметрыВыбораТоварыСклад();
    
    СтруктураОтветственного = ЗакупкиСервер.ПолучитьОтветственногоПоСкладу(Объект.Склад, Объект.Менеджер);
    Если СтруктураОтветственного <> Неопределено Тогда
        Объект.Принял = СтруктураОтветственного.Ответственный;
        Объект.ПринялДолжность = СтруктураОтветственного.ОтветственныйДолжность;
    КонецЕсли;
    
    УстановитьДоступностьКомандыПерезаполнитьПоПриемке();
    
    Если Объект.Товары.Количество() > 0 Тогда
        
        МассивУдаляемыхСтрок = Новый Массив();
        
        Если СкладГруппа Тогда
            
            СкладыСервер.ЗаполнитьСкладыВТабличнойЧасти(Объект.Склад, СкладГруппа, Объект.Товары, Истина);
            
            Для Каждого ТекСтрока Из Объект.Товары Цикл
                
                Если (ТекСтрока.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Товар
                        Или ТекСтрока.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.МногооборотнаяТара)
                    И ЗначениеЗаполнено(ТекСтрока.КодСтроки)
                    И ЗначениеЗаполнено(ТекСтрока.ЗаказПоставщику)
                    И Не ЗначениеЗаполнено(ТекСтрока.Склад) Тогда
                    
                    МассивУдаляемыхСтрок.Добавить(ТекСтрока);
                    
                КонецЕсли;
            
            КонецЦикла;
            
        Иначе
        
            МассивУдаляемыхСтрок = Новый Массив();
            
            Для Каждого ТекСтрока Из Объект.Товары Цикл
                
                Если ЗначениеЗаполнено(ТекСтрока.КодСтроки)
                    И ЗначениеЗаполнено(ТекСтрока.ЗаказПоставщику)
                    И (ТекСтрока.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Товар
                        Или ТекСтрока.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.МногооборотнаяТара)
                    И Объект.Склад <> ТекСтрока.Склад Тогда
                    МассивУдаляемыхСтрок.Добавить(ТекСтрока);
                КонецЕсли;
                
            КонецЦикла;
            
        КонецЕсли;
        
        Для Каждого ТекЭлемент Из МассивУдаляемыхСтрок Цикл
            Объект.Товары.Удалить(ТекЭлемент);
        КонецЦикла;
        
    КонецЕсли;
    
    СкладыСервер.ЗаполнитьСкладыВТабличнойЧасти(Объект.Склад, СкладГруппа, Объект.Товары, Истина);
    
    ОбновитьИнформациюПоЗаказам();
    Элементы.ТоварыЗаполнитьСкладВВыделенныхСтроках.Доступность = СкладГруппа;
    ПриИзмененииСкладаВТабличнойЧастиСервер();
    РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
    
    ПодготовитьЗаполнитьУстановитьВидимостьСерий();
    
    АктуализироватьЗакупкуПодДеятельность();
    
    Если Не СкладГруппа Тогда
        Элементы.ТоварыГруппаПолучатель.Заголовок = НСтр("ru = 'Подразделение-получатель'");
    Иначе
        Элементы.ТоварыГруппаПолучатель.Заголовок = НСтр("ru = 'Получатель'");
    КонецЕсли;
    Элементы.ГруппаКартинкаИНадписьНесколькоСкладов.Видимость = СкладГруппа;
    
КонецПроцедуры

&НаСервере
Процедура НалогообложениеНДСПриИзмененииСервер()Экспорт
    
    СтруктураПересчетаСуммы = ПолучитьСтруктуруПересчетаСуммыНДСВТЧ(ЭтаФорма);
    
    СтруктураДействий = Новый Структура;
    СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
    СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
    СтруктураДействий.Вставить("ЗаполнитьПризнакАлкогольнаяПродукция", Новый Структура("Номенклатура", "АлкогольнаяПродукция"));
    СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", Объект.НалогообложениеНДС);
    СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
    СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
    СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
    
    СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
    
    ОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, Неопределено);
    
    ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
    ПересчитатьСуммуСверхЗаказа();
    РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
    УстановитьВидимостьКомандЕГАИС(ЭтаФорма);
КонецПроцедуры
5 Горогуля
 
17.08.16
15:55
(4) умно скопипастить в обработку. умно - ключевое слово
6 nurligaianov
 
17.08.16
15:55
но для запуска из обработки внешней по моему без разницы какая процедура
7 Горогуля
 
17.08.16
15:56
короче, ты не справишься, если хочешь повторить во внешней обработке интерфейсные приколы
8 nurligaianov
 
17.08.16
15:56
А кроме как скопировать не как
9 Fish
 
17.08.16
15:58
(8) Тупой копипаст здесь не поможет.
10 novichok79
 
17.08.16
15:58
если процедура экспортная:
на клиенте - (5),
если из модуля объекта, то надо получитьобъект и потом вызвать эту процедуру.
если модуль менеджера, то надо вызывать через менеджер документов
если процедура неэкспортная, то только (5)
11 nurligaianov
 
17.08.16
15:59
(9) Знаю потому и решил найти способ запустить процедуру из обработки
12 nurligaianov
 
17.08.16
16:00
Процедура не экспортная в модуле формы документа
13 Горогуля
 
17.08.16
16:01
(11) а ты измени склад, она и запустится
14 nurligaianov
 
17.08.16
16:03
через обработку она не запустится если программно добавлять
15 novichok79
 
17.08.16
16:04
(12) значит копипаст в твою обработку. вангуя могу предположить что есть серверный вариант вызова и желательно прибегнуть к его вызову.
16 nurligaianov
 
17.08.16
16:05
(15) как прибегнуть? просто чего только не перепробовал!
17 novichok79
 
17.08.16
16:07
(16) посмотреть как аналогичная ситуация обрабатывается на сервере... или в каких-нибудь правилах обмена. тебе все уже сказали, действуй.
18 Горогуля
 
17.08.16
16:07
(16) попробуй программиста
19 Fish
 
17.08.16
16:10
(16) Цель-то какая у этой обработки? Изменить данные в документе? Так и меняй сами данные документа, при чём здесь вызовы процедур формы документа?
20 Fish
 
17.08.16
16:12
+(19) Ну а если меняешь данные у документа, форма которого открыта, и надо, чтобы там отработало твоё изменение данных, используй обработкуоповещения.
21 Мыш
 
17.08.16
16:25
(0) Нурлыгаянов, ты с какого города? А то знаю одного такого. )
22 nurligaianov
 
17.08.16
18:14
(21) Гоман Олег я вас не знаю как вы можете меня знать?
23 nurligaianov
 
17.08.16
18:29
(21) Так что могу предположить что ты знаешь однофамильца
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.