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С
Москва
зарплата от 80 000 руб.
Полный день

Консультант-аналитик 1С
Санкт-Петербург
Полный день

Консультант-аналитик 1С
Москва
зарплата от 120 000 руб. до 120 000 руб.
Полный день

Senior 1C Developer ЛЮБОЙ ГОРОД
Москва
зарплата от 80 000 руб.
Полный день

Удаленный ИТ-журналист
Санкт-Петербург
По совместительству