Имя: Пароль:
1C
 
Зарегистрировать внешнюю обработку
,
0 Garikus
 
17.07.15
10:22
Доброго времени суток, может кто поделится кусочком кода или натолкнет на мысль как программно можно зарегистрировать в базе внешнюю обработку?
1 Бовка
 
17.07.15
10:23
(0) Смотря в какой.
2 Cyberhawk
 
17.07.15
10:24
В разделе инициализации модуля обработки пишешь код.
У тебя УФ или ОП?
3 Garikus
 
17.07.15
10:24
(0) ой сорри 1С 8.2 БП 2.0
4 Бовка
 
17.07.15
10:26
(3) Справочник ВнешниеОбработки, создаешь новый элемент
5 Cyberhawk
 
17.07.15
10:27
Как-то так:

Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    Отказ = Истина;
    Если Метаданные.Имя <> "БухгалтерияПредприятияКОРП" Тогда
        Предупреждение("Данная обработка ТЧ предназначена для документа ""Распределение НДС косвенных расходов""
                        |конфигураци ""Бухгалтерия предприятия КОРП"".
                        |Регистрация обработки не проведена.");
        Возврат;
    КонецЕсли;
    Если НЕ ПравоДоступа("Изменение",Метаданные.Справочники.ВнешниеОбработки) Тогда
        Предупреждение("У Вас недостаточно прав доступа для регистрации обработки в информационной базе. Обратитесь к пользователю с административными правами.");
        Возврат;
    КонецЕсли;
    Эл = Справочники.ВнешниеОбработки.НайтиПоНаименованию(ЭтотОбъект.Метаданные().Синоним);
    Режим = "";
    Если Эл = Справочники.ВнешниеОбработки.ПустаяСсылка() Тогда
        Режим = "Создать";
    Иначе
        Если Вопрос("В информационной базе уже зарегистрирована такая обработка. Обновить существующую?", РежимДиалогаВопрос.ДаНет) = КодВозвратаДиалога.Да Тогда
            Режим = "Обновить";
        КонецЕсли;
    КонецЕсли;     
    Если Режим = "" Тогда
        Возврат;
    КонецЕсли;
    Если Режим = "Создать" Тогда
        ЭлСпрВнОбр = Справочники.ВнешниеОбработки.СоздатьЭлемент();
    КонецЕсли;    
    Если Режим = "Обновить" Тогда
        ЭлСпрВнОбр = Эл.ПолучитьОбъект();
    КонецЕсли;
    ЭлСпрВнОбр.ВидОбработки = Перечисления.ВидыДополнительныхВнешнихОбработок.ЗаполнениеТабличныхЧастей;
    ЭлСпрВнОбр.Наименование = ЭтотОбъект.Метаданные().Синоним;
    ЭлСпрВнОбр.ХранилищеВнешнейОбработки = Новый ХранилищеЗначения(Новый ДвоичныеДанные(ЭтотОбъект.ИспользуемоеИмяФайла));
    ЭлСпрВнОбр.Принадлежность.Очистить();
    Прин = ЭлСпрВнОбр.Принадлежность.Добавить();
    Прин.СсылкаОбъекта = Документы["РаспределениеНДСКосвенныхРасходов"].ПустаяСсылка();
    //Прин.ПредставлениеКнопки = ЭтотОбъект.Метаданные().Синоним;
    Прин.ПредставлениеОбъекта = "Документ """ + Метаданные.Документы["РаспределениеНДСКосвенныхРасходов"].Синоним+"""";
    Прин.ТабличнаяЧастьИмя = Метаданные.Документы["РаспределениеНДСКосвенныхРасходов"].ТабличныеЧасти.СоставКосвенныхРасходов.Имя;
    Прин.ТабличнаяЧастьПредставление = Метаданные.Документы["РаспределениеНДСКосвенныхРасходов"].ТабличныеЧасти.СоставКосвенныхРасходов.Синоним;
    ЭлСпрВнОбр.Записать();
    Предупреждение("Внешняя обработка ТЧ документа ""Распределение НДС косвенных расходов""
                    |зарегистрирована в справочнике ""Внешние обработки""",10);
    Справочники.ВнешниеОбработки.ПолучитьФормуСписка().Открыть();
    Если НЕ ПравоДоступа("Просмотр",Метаданные.Документы.РаспределениеНДСКосвенныхРасходов) Тогда
        Предупреждение("У Вас недостаточно прав доступа просмотра документов ""Распределение НДС косвенных расходов"".",10);
    Иначе
        Док = Документы.РаспределениеНДСКосвенныхРасходов.Выбрать(,,,"Дата Убыв");
        Если Док.Следующий() Тогда
            //Док.Ссылка.ПолучитьФорму().Открыть();
            Документы.РаспределениеНДСКосвенныхРасходов.ПолучитьФормуСписка().Открыть();
        КонецЕсли;
    КонецЕсли;
    Справка = "Перед использованием обработки необходимо заполнить регистр сведений ""Подразделения для распределения НДС"",
              |добавив в него подразделения, которые не должны участвовать в распределении НДС косвенных расходов
              |После этого в табличной части документа ""Распределение НДС косвенных расходов"" воспользоваться меню ""Заполнить"" - ""Обработка распределения НДС""";
    Сообщить(Справка, СтатусСообщения.Обычное);
    Предупреждение(Справка);
КонецПроцедуры
6 Garikus
 
17.07.15
10:30
(5) Спасибо, суть понял. А то 15 баз и в каждую пихать руками обработку или отчет как то муторно...
7 Garikus
 
17.07.15
12:08
Еще вопросик, не могу сообразить
Подключаюсь к удаленной базе "БАЗА"

Обработка = База.Справочники.ВнешниеОбработки.СоздатьЭлемент();
    Обработка.ВидОбработки = База.Перечисления.ВидыДополнительныхВнешнихОбработок.Отчет;
    Обработка.Наименование = Имя;
    Обработка.ХранилищеВнешнейОбработки = Новый ХранилищеЗначения(Новый ДвоичныеДанные(файл));
    Обработка.Записать();
Записывается только имя, хранилище пустое, как быть?
8 Cyberhawk
 
17.07.15
12:20
Конструктор должен вызываться для СОМ-объекта
9 Garikus
 
17.07.15
12:21
(8) а подробне можно?
10 Cyberhawk
 
17.07.15
12:22
хранилище = connection.NewObject("ХранилищеЗначения");
двДанные=connection.NewObject("ДвоичныеДанные","C:\Documents and Settings\rus624\Рабочий стол\49.txt",connection.NewObject("СжатиеДанных"));
11 Garikus
 
17.07.15
12:24
(10) биг спасибо