|
Зарегистрировать внешнюю обработку | ☑ | ||
---|---|---|---|---|
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) биг спасибо
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |