Имя: Пароль:
1C
1С v8
Получить ссылку открытого документа во внешней обработке
0 Slavik_hak
 
19.01.18
19:42
Подскажите, как получить ссылку из которого запускаем обработку??
Данный код внешней обработки работает через Файл/открыть, но если подключить обработку то сыпется на строчке ЭлементОбъект = Документссылка.ПолучитьОбъект();
Выручайте
//В модуле формы
Процедура ВыполнениеПроцедуры() Экспорт
    
    ЭлементОбъект = ДокументСсылка.ПолучитьОбъект();    
    
    ЭлементОбъект.НДФЛ.Очистить();    
    Для каждого СтрокаТЗ Из ЭлементОбъект.НачисленияУдержанияВзносы Цикл
        СтрокаТЗ.НДФЛ = СтрокаТЗ.Начислено * 0.13;
        СтрокаТЗ.КВыплате = СтрокаТЗ.Начислено - СтрокаТЗ.НДФЛ;
    КонецЦикла;
    //ЭлементОбъект.НДФЛ.Очистить();        
    ЭлементОбъект.Записать();
КонецПроцедуры;
1 Мимохожий Однако
 
19.01.18
19:44
Сначала скажи что ты хочешь, а потом уже есть смысл обсуждать способ реализации.
2 Мимохожий Однако
 
19.01.18
19:46
Традиционно: платформа, конфигурация, колеса, стекло
3 Slavik_hak
 
19.01.18
19:47
Конфа ЗУП 3.1 Платформа новенькая 8.3.10
Хочу внешней обработкой перезаписать табличную часть документа
4 Мимохожий Однако
 
19.01.18
19:50
(3) Документацию по БСП смотрел?
5 Slavik_hak
 
19.01.18
19:52
Ничего не нашел подходящего на сайте its  смотрел
6 Мимохожий Однако
 
19.01.18
20:04
Какая версия БСП используется в твоей конфигурации?
https://its.1c.ru/db/bsp245doc#content:813:hdoc
7 Slavik_hak
 
19.01.18
20:11
Вроде как 3.1.4.161
8 Мимохожий Однако
 
19.01.18
20:11
Есть регистр сведений Версии библиотек
9 Мимохожий Однако
 
19.01.18
20:13
Возьми демо конфигурации наиболее близой БСП. Возьми оттуда пример обработки табличной части или заполнения объекта
10 Slavik_hak
 
19.01.18
20:13
Я там и посмотрел, только называется "Версии подсистем"
11 Мимохожий Однако
 
19.01.18
20:17
(10) (7) Не верю
12 Slavik_hak
 
19.01.18
20:23
https://yadi.sk/i/cLN5B1T93RcBPP ссылка на картинку
13 Мимохожий Однако
 
19.01.18
20:24
(11) 2.4.4.106
14 Slavik_hak
 
19.01.18
20:42
У меня эта команда определена в модуле формы
&НаКлиенте
Процедура ВыполнитьКоманду(Команда, ОбъектыНазначения) Экспорт
    
    Для каждого Элемент из ОбъектыНазначения Цикл
//        ЭлементОбъект = Элемент.ПолучитьОбъект();
//        
//                Для каждого  СтрокаТЗ из ЭлементОбъект.НачисленияУдержанияВзносы Цикл
//            СтрокаТЗ.НДФЛ = СтрокаТЗ.Начислено * 0.13;  
//            //Сообщить(СтрокаТЗ.НДФЛ);//Тест
//ЭлементОбъект.Записать();

//            Для каждого СтрокаНДФЛ Из ЭлементОбъект.НДФЛ Цикл
//                  СтрокаНДФЛ.Налог =  СтрокаТЗ.НДФЛ;
//                  Сообщить(СтрокаТЗ.НДФЛ);
//                КонецЦИкла;
//            
//            КонецЦикла;
//            //ЭлементОбъект.НДФЛ.Очистить();

//        ЭлементОбъект.Записать();
//        //ЭлементОбъект.Обновить();
КонецЦикла;
                Сообщить("в");
    ВыполнитьКомандуНаСервере();
    //Сообщить("ВыполнитьКоманду");
КонецПроцедуры
15 Мимохожий Однако
 
19.01.18
20:45
Покажи процедуры регистрации обработки в модуле обработки (не формы)
16 Slavik_hak
 
19.01.18
20:47
Эта процедура с директивой &НаКлиенте и в нее не попадает точка останова, причем код выполняется.
А если я поменяю директиву компиляции на &Насервере, то точка останова ставится, но параметр ОбъектыНазначения пустой. как с этим бороться
17 Slavik_hak
 
19.01.18
20:48
//Модуль формы
Функция СведенияОВнешнейОбработке() Экспорт
    
    ДокументНазначение = Новый Массив ;
    ДокументНазначение.Добавить("Документ.РегистрацияПрочихДоходов") ;
    
    ПараметрыОбработки = Новый Структура ;
    ПараметрыОбработки.Вставить("Вид","ЗаполнениеОбъекта");
    ПараметрыОбработки.Вставить("Назначение", ДокументНазначение);
    ПараметрыОбработки.Вставить("Наименование","Перерассчитать НДФЛ без вычетов");
    ПараметрыОбработки.Вставить("Версия","ЗУП 3.1.4.161");
    ПараметрыОбработки.Вставить("Информация","Перерассчитать НДФЛ без вычетов сотрудников");
    ПараметрыОбработки.Вставить("БезопасныйРежим",Истина);
    
    КомандыОбработки = ПолучитьКомандыОбработки () ;
    ДобавитьКомандуОбработки (КомандыОбработки, "Перерассчитать НДФЛ без вычетов","ВыполнитьКоманду","ВызовКлиентскогоМетода",Ложь,) ;
    
    ПараметрыОбработки.Вставить("Команды", КомандыОбработки);
    
    Возврат ПараметрыОбработки;
    
КонецФункции

Функция ПолучитьКомандыОбработки ()
    КомандыОбработки = Новый ТаблицаЗначений ;
    КомандыОбработки.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка")) ;
    КомандыОбработки.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка")) ;
    КомандыОбработки.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка")) ;
    КомандыОбработки.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево")) ;
    КомандыОбработки.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка")) ;
    Возврат КомандыОбработки;
КонецФункции    

Процедура ДобавитьКомандуОбработки(КомандыОбработки, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
    НовКоманда = КомандыОбработки.Добавить() ;
    НовКоманда.Представление = Представление ;
    НовКоманда.Идентификатор = Идентификатор ;
    НовКоманда.Использование = Использование ;
    НовКоманда.ПоказыватьОповещение = ПоказыватьОповещение ;
    НовКоманда.Модификатор = Модификатор ;
КонецПроцедуры
18 Мимохожий Однако
 
19.01.18
21:00
Почему используешь клиентский метод, а не серверный?
19 Slavik_hak
 
19.01.18
21:07
потому что в серверном невозможно поставить точку останова, все выполняется, по отладить это дело невозможно,
20 Slavik_hak
 
19.01.18
21:09
Прошу прощения. На клиенте точка останова стивится, но ОбъектыНазначения пусты, а в серверном варианте все выполняется, но точка не ставится и отладка не возможны
21 0xFFFFFF
 
19.01.18
21:18
(19) енто потому, что отладку на сервере отдельно включать надо.
22 Мимохожий Однако
 
19.01.18
21:20
(21) Точно. Или отлаживай код на файловой копии
23 Slavik_hak
 
19.01.18
21:37
это моя файловая база, на домашнем ноуте
24 h-sp
 
19.01.18
21:47
(23) ПолучитьОбъект (GetObject)
Синтаксис:

ПолучитьОбъект()
Возвращаемое значение:

Тип: ДокументОбъект.<Имя документа>; Неопределено.
Неопределено - объекта в базе нет (например, при обмене данными или после непосредственного удаления объекта, на который есть ссылки).
Описание:

Получает по ссылке объект для чтения, изменения, добавления и удаления документа.

Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).

читал??
25 Slavik_hak
 
19.01.18
22:18
(24) Так у меня же в вопросе указан код, я там именно этот метод использую, но проблема в том что когда я подключаю внешнюю обработку у меня нет ссылки на документ
26 h-sp
 
19.01.18
22:28
(25) так вы на клиенте или на сервере? Стоит там слово @наклиенте?
27 Slavik_hak
 
19.01.18
22:32
так как она тогда выполняется и точка останова ставится при компиляции &наКлиенте
28 h-sp
 
19.01.18
22:38
(27) ну тогда не будет работать, смотри г(24), ПолучитьОбьект на клиенте не работает
29 h-sp
 
19.01.18
22:40
Точка останова прекрасно ставится на сервере, чего-то вы там судите
30 Шурик71
 
19.01.18
23:24
&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения) Экспорт
    
........

   текОбъект = ВладелецФормы.Объект; //вот тут он

........
31 Мимохожий Однако
 
20.01.18
07:54
(14) Посмотри отладчиком переменную Элемент. Там должен быть объект или ссылка на него.
32 Gucci76
 
20.01.18
11:41
Доброго времени суток.
Думаю мой вопрос похож
Можно ли из внешней печатной формы открыть другую обработку? И в новую обработку передать ссылку на документ?