1. user876792 07.12.18 14:54 Сейчас в теме

БГУ 2.0 При загрузке внешней обработки вылетает ошибка

На строке
Объект.ДопустимыеТипыКлассификаторов.ЗагрузитьЗначения(Параметры.ТипыКлассификаторов.ВыгрузитьЗначения());

{ВнешняяОбработка.ЗагрузкаКлассификаторовИзФайла.Форма.Форма.Форма(24)}: Поле объекта не обнаружено (ТипыКлассификаторов)
Объект.ДопустимыеТипыКлассификаторов.ЗагрузитьЗначения(Параметры.ТипыКлассификаторов.ВыгрузитьЗначения());
Вознаграждение за ответ
Показать полностью
Найденные решения
19. mxz00 07.12.18 19:50 Сейчас в теме +0.2 $m
(18) В таком случае чтобы обработку открыть, можете смело использовать мой код, слегка его модифицировав (раз уж речь о классификаторе продукции):
СписокЗначений = Новый Массив;
СписокЗначений.Добавить("ОКПД");
Объект.ДопустимыеТипыКлассификаторов.ЗагрузитьЗначения(СписокЗначений);

А что касается того, что команды у вас не видно, она завязана на функциональную опцию РаботаВЛокальномРежиме, которая хранится в константе НеИспользоватьРазделениеПоОбластямДанных и где-то в интерфейсе, скорее всего, настраивается. Где именно - хз, надо копаться.
user876792; +1 Ответить
Остальные ответы
Избранное Подписка Сортировка: Древо
2. oyti 20 07.12.18 15:05 Сейчас в теме
Объект Параметры не инициализирован (скорее всего Неопределено), потому и поле объекта найти не может. Нужно копать в этом направлении. Прежде всего понять, когда происходит инициализация параметров, а чтобы убедиться можно в этом месте установить точку останова.
4. user876792 07.12.18 15:08 Сейчас в теме
(2) В параметрах этой формы вообще ничего нет. Обработка типовая
7. user876792 07.12.18 15:22 Сейчас в теме
(2) Во всех процедурах и функциях наставил точек останова
В модуле объекта проходит только этот код
xmlnsXML                			= "http://www.w3.org/XML/1998/namespace";
xmlnsV8XDTO             			= "http://v8.1c.ru/8.1/xdto";
xmlnsОписанияТиповКлассификаторов 	= "urn:uuid:101fa9a0-ea86-11dc-afc4-0002a5d5c51b";
xmlnsКлассификатор      			= "urn:uuid:be515360-d4a7-11dc-8abf-0002a5d5c51b";

ДопДанные = Новый Соответствие;

// Запоминаем временные файлы, чтобы стереть по окончании работы.
ВременныеФайлы = Новый Массив;

МетаданныеКонфигурации = Метаданные;

СвойстваОбъектовМетаданных = МетаданныеКонфигурации.СвойстваОбъектов;
Показать


В модуле формы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	xmlnsXML                = "http://www.w3.org/XML/1998/namespace";
	xmlnsV8XDTO             = "http://v8.1c.ru/8.1/xdto";
	xmlnsОписанияТиповКлассификаторов = "urn:uuid:101fa9a0-ea86-11dc-afc4-0002a5d5c51b";
	xmlnsКлассификатор      = "urn:uuid:be515360-d4a7-11dc-8abf-0002a5d5c51b";
	
	Предупреждение = "В указанном файле не найдено данных для загрузки"; 
	
	Объект.ДопустимыеТипыКлассификаторов.ЗагрузитьЗначения(Параметры.ТипыКлассификаторов.ВыгрузитьЗначения());

КонецПроцедуры
Показать

И запинается на последней строке
Никакие Параметры в коде этих модулей нигде больше не присутствуют
9. ПодводныйТ 12 07.12.18 15:29 Сейчас в теме
(7) это код формы внешней обработки?
10. user876792 07.12.18 15:39 Сейчас в теме
(9) да. модуля объекта и формы. Только тот по которому проходит отладчик до появления ошибки.
11. ПодводныйТ 12 07.12.18 15:45 Сейчас в теме
(10) а Параметры.ТипыКлассификаторов - откуда подтягиваются? можно в отладчике посмотреть стек вызовов?
12. user876792 07.12.18 15:55 Сейчас в теме
(11) Непонятно откуда они подтягиваются.
Прикрепленные файлы:
3. user876792 07.12.18 15:06 Сейчас в теме
Нет в параметрах этой формы вообще ничего. Если добавить параметр ТипыКлассификаторов

{ВнешняяОбработка.ЗагрузкаКлассификаторовИзФайла.Форма.Форма.Форма(24)}: Значение не является значением объектного типа (ВыгрузитьЗначения)
Объект.ДопустимыеТипыКлассификаторов.ЗагрузитьЗначения(Параметры.ТипыКлассификаторов.ВыгрузитьЗначения());

Что там вообще должно быть? Какие туда должны передаваться параметры при открытии?
5. ПодводныйТ 12 07.12.18 15:13 Сейчас в теме
отладчик то что пишет в строке ошибки?
6. user876792 07.12.18 15:17 Сейчас в теме
8. user876792 07.12.18 15:24 Сейчас в теме
(5) {ВнешняяОбработка.ЗагрузкаКлассификаторовИзФайла.Форма.Форма.Форма(24)}: Значение не является значением объектного типа (ВыгрузитьЗначения)
Объект.ДопустимыеТипыКлассификаторов.ЗагрузитьЗначения(Параметры.ТипыКлассификаторов.ВыгрузитьЗначения());
13. oyti 20 07.12.18 16:05 Сейчас в теме
Выложите внешнюю обработку, нужно потыкать в нее палочкой, чтобы разобраться
14. user876792 07.12.18 16:34 Сейчас в теме
15. mxz00 07.12.18 17:03 Сейчас в теме
(14)
Вероятней всего, обработка изначально не внешняя, а выдернута из какой-то конфигурации, где открытие формы вызывается другой обработкой, которая в параметры формы загоняет список типов классификаторов. По хорошему надо находить этот код вызова, смотреть, какие значения туда заполняются, и здесь вместо этой строки просто инициализировать ручками этот список допустимых типов классификаторов.

Если у вас есть доступ к конфигуратору той базы, откуда эта обработка, попробуйте глобальным поиском найти её вызов и посмотреть, что передается в параметр ТипыКлассификаторов.
user876792; +1 Ответить
16. user876792 07.12.18 17:32 Сейчас в теме
(15) Обработка из БГУ 2.0 как и чем она там вызывается непонятно. Если открывать напрямую, та же ошибка
17. mxz00 07.12.18 19:03 Сейчас в теме
Судя по всему, эта форма вызывается из форм списка классификаторов ОКОФ и ОКПД. В одном случае в параметр формы ТипыКлассификаторов передается список значений с единственным значением "ОКОФ", в другом с единственным значением "ОКПД".
Соответственно, чтобы ваша форма открылась, можно попробовать вместо этой строки:
Объект.ДопустимыеТипыКлассификаторов.ЗагрузитьЗначения(Параметры.ТипыКлассификаторов.ВыгрузитьЗначения());

вставить что-нибудь подобное:
СписокЗначений = Новый Массив;
СписокЗначений.Добавить("ОКОФ");
СписокЗначений.Добавить("ОКПД");
Объект.ДопустимыеТипыКлассификаторов.ЗагрузитьЗначения(СписокЗначений);

Не знаю, к чему это приведет, но ошибку конкретно в этой строке обойти позволит.

P.S.: Вы не указали, для каких целей открываете эту обработку как внешнюю, поэтому не понятно, стоит ли оба значения добавлять или только одно. Но в целом примерно так, наверное.
user876792; +1 Ответить
18. user876792 07.12.18 19:21 Сейчас в теме
(17) Выгрузил ее чтобы с поддержки не снимать, поковырять, разобраться.
Так понял вызываться она должна из справочника Общероссийский классификатор продукции, только у меня на форме нет этой кнопки в режиме предприятия, хотя в конфигураторе она есть.
И собственно код этой кнопки
&НаКлиенте
Процедура ЗагрузитьКлассификатор(Команда)
	
	СписокЗначений = Новый СписокЗначений;
	СписокЗначений.Добавить("ОКПД");
	ПараметрыФормы = Новый Структура;
	ПараметрыФормы.Вставить("ТипыКлассификаторов",СписокЗначений);
	ОткрытьФорму("Обработка.ЗагрузкаКлассификаторовИзФайла.Форма.Форма",ПараметрыФормы);
	
КонецПроцедуры
Показать
Прикрепленные файлы:
19. mxz00 07.12.18 19:50 Сейчас в теме +0.2 $m
(18) В таком случае чтобы обработку открыть, можете смело использовать мой код, слегка его модифицировав (раз уж речь о классификаторе продукции):
СписокЗначений = Новый Массив;
СписокЗначений.Добавить("ОКПД");
Объект.ДопустимыеТипыКлассификаторов.ЗагрузитьЗначения(СписокЗначений);

А что касается того, что команды у вас не видно, она завязана на функциональную опцию РаботаВЛокальномРежиме, которая хранится в константе НеИспользоватьРазделениеПоОбластямДанных и где-то в интерфейсе, скорее всего, настраивается. Где именно - хз, надо копаться.
user876792; +1 Ответить
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Старший Программист 1С НОВОСИБИРСК
Новосибирск
зарплата до 130 000 руб.
Полный день

Программист 1С
Новосибирск
зарплата от 75 000 руб.
Полный день



Руководитель проектов 1С
Санкт-Петербург
По совместительству