helpf.pro
Регистрация

Индекс находится за границами массива

bless18
08.09.2010 10:07Прочитано: 14551
Здравствуйте!
Необходимо с 1С 7.7 переписать следующий код на 1С 8.1
Код 1C v 7.x
 
Спр = СоздатьОбъект("Справочник.ВидыТМЗРаботУслуг");
Если Спр.Выбрать("Укажите вид ТМЗ","") = 1 Тогда
ВидТМЗВыбр = Спр.ТекущийЭлемент();
КонецЕсли;
СчетТМЗ = ВидТМЗВыбр.СчетТМЗ;
Если СчетТМЗ.ВидСубконто(1) = ВидыСубконто.Номенклатура Тогда
ОткрытьПодбор("Справочник.Номенклатура","Учет");
ИначеЕсли СчетТМЗ.ВидСубконто(1) = ВидыСубконто.ОсновныеСредства Тогда
ОткрытьПодбор("Справочник.ОсновныеСредства","");
ИначеЕсли СчетТМЗ.ВидСубконто(1) = ВидыСубконто.НематериальныеАктивы Тогда
ОткрытьПодбор("Справочник.НематериальныеАктивы","");
КонецЕсли;


Написала на восьмерке:
Код 1C v 8.х
 
Процедура Подбор()
перем Справ;
СтрокаТЗ =ЭлементыФормы.ТМЗ.ТекущиеДанные;
Спр = Справочники.ВидыТМЗРаботУслуг;
ВидТМЗВыбр = Справочники.ВидыТМЗРаботУслуг.ПолучитьСсылку();
ВвестиЗначение(Спр,"Введите значение","СправочникСсылка.ВидыТМЗРаботУслуг");

Субконто1 = ВидТМЗВыбр.СчетТМЗ.ВидыСубконто[0].ВидСубконто;
Субконто2 = ВидТМЗВыбр.СчетТМЗ.ВидыСубконто[1].ВидСубконто;
Если Субконто1 = ПланыВидовХарактеристик.ВидыСубконтоТиповые.Номенклатура Тогда
Справочники.Номенклатура.ПолучитьФормуВыбора();
ИначеЕсли Субконто1 = ПланыВидовХарактеристик.ВидыСубконтоТиповые.ОсновныеСредства Тогда
Справочники.ОсновныеСредства.ПолучитьФормуВыбора();
ИначеЕсли Субконто1 = ПланыВидовХарактеристик.ВидыСубконтоТиповые.НематериальныеАктивы Тогда
Справочники.НематериальныеАктивы.ПолучитьФормуВыбора();
КонецЕсли;
КонецПроцедуры


В строке
Код 1C v 8.х
 Субконто1 = ВидТМЗВыбр.СчетТМЗ.ВидыСубконто[0].ВидСубконто; 
выдается ошибка: {Документ.ПоступлениеТоваровУслуг.Форма.ФормаДокумента(226)}: Индекс находится за границами массива
Субконто1 = ВидТМЗВыбр.СчетТМЗ.ВидыСубконто[0].ВидСубконто;
Yandex
Возможно, вас также заинтересует
Реклама на портале
E_Migachev
08.09.2010 12:05Ответ № 1
Выходит что в ВидТМЗВыбр.СчетТМЗ.ВидыСубконто - индекс 0 не существует, смотри отладчиком что там!
bless18
08.09.2010 12:30Ответ № 2
Там такое: ВидТМЗВыбр = Справочники.ВидыТМЗРаботУслуг.ПолучитьСсылку();
ВидТМЗВыбр его значение "Объект не найден", а тип СправочникМенеджер.ВидыТМЗРаботУслуг
bless18
08.09.2010 13:15Ответ № 3
Еще такой вопрос возник, после того, как Открывается форма выбора справочника, нужно выбранное значение поместить в соответствующее поле ТЗ.. Как это правильно сделать?
Пишу следующее:
Код 1C v 8.х
 
Если Субконто1 = ПланыВидовХарактеристик.ВидыСубконтоТиповые.Номенклатура Тогда
//ВвестиЗначение(Спр,"Номенклатура","СправочникСсылка.Номенклатура");
ЭлементыФормы.ТМЗ.ДобавитьСтроку();
Справочники.Номенклатура.ПолучитьФормуВыбора().РежимВыбора = Истина;
Справочники.Номенклатура.ПолучитьФормуВыбора().ПолучитьДействие() = Истина;
Справочники.Номенклатура.ПолучитьФормуВыбора().Открыть();
СтрокаТЗ.Товар = Справочники.Номенклатура.Выбрать().Наименование;

Ничего не выводится в ТЗ..
E_Migachev
08.09.2010 13:48Ответ № 4
(2) поэтому и вылетает ошибка, не может получить индекс, так как неизчего получать *08
(3) Строки в тз добавляются подругому:
Код 1C v 8.х
 НовСтрока = ЭлементыФормы.ТМЗ.ДобавитьСтроку();
НовСтрока.Товар = Справочники.Номенклатура.Выбрать().Наименование;
E_Migachev
08.09.2010 13:54Ответ № 5
+(4) только не ДобавитьСтроку(); а Добавить();
bless18
08.09.2010 13:55Ответ № 6
Строку я добавила.. а потом в поле этой строки хочу поместить выбранное из открывшейся формы справочника значение..
Код 1C v 8.х
 
Если Субконто1 = ПланыВидовХарактеристик.ВидыСубконтоТиповые.Номенклатура Тогда
//ВвестиЗначение(Спр,"Номенклатура","СправочникСсылка.Номенклатура");
ЭлементыФормы.ТМЗ.ДобавитьСтроку();

Справочники.Номенклатура.ПолучитьФормуВыбора().РежимВыбора = Истина;
Справочники.Номенклатура.ПолучитьФормуВыбора().ПолучитьДействие() = Истина;
Справочники.Номенклатура.ПолучитьФормуВыбора().Открыть();
СтрокаТЗ.Товар = Справочники.Номенклатура.Выбрать().Наименование;

bless18
08.09.2010 13:56Ответ № 7
Вот, но значение не добавляется
P. S. НовСтрока = ЭлементыФормы.ТМЗ.ДобавитьСтроку();
выдает ошибку: "Обращение к процедуре как к функции"
E_Migachev
08.09.2010 14:20Ответ № 8
Выборка так далжна быть
Код 1C v 8.х
 СтрокаТЗ.Товар = Справочники.Номенклатура.Выбрать();   
E_Migachev
08.09.2010 14:31Ответ № 9
+(8) Как выбрать элемент справочника...
bless18
08.09.2010 15:23Ответ № 10
Спасибо за процедурку )
СтрокаТЗ.Товар = Справочники.Номенклатура.Выбрать(); СтрокаТЗ = Неопределено, видимо непонятно что выбирать
Вот как бы написать так, что СтрокаТЗ = Выбранному значению из Форма.ОткрытьМодально();?
bless18
08.09.2010 15:27Ответ № 11
Код 1C v 8.х
 
Если Субконто1 = ПланыВидовХарактеристик.ВидыСубконтоТиповые.Номенклатура Тогда
//ВвестиЗначение(Спр,"Номенклатура","СправочникСсылка.Номенклатура");
ЭлементыФормы.ТМЗ.ДобавитьСтроку();
Форма = Справочники.Номенклатура.ПолучитьФормуВыбора();
Результат = Форма.ОткрытьМодально();
СтрокаТЗ.Товар = Результат;


СтрокаТЗ.Товар = выбранному элементу из открывшегося справочника, но это не выводится в ТЧ, т е при трессировке видно что СтрокаТЗ.Товар = ВыбранныйТовар, а в ТЧ нет его
E_Migachev
08.09.2010 15:40Ответ № 12
(11) я и говорю ) в ТЧ нужно задавать так:
Код 1C v 8.х
 НовСтрока = ТМЗ.Добавить();
Новстрока.Товар = Результат;
bless18
09.09.2010 08:36Ответ № 13
Не хочет она отображаться *12
Код 1C v 8.х
 
Процедура Подбор()
перем Справ;
СтрокаТЗ =ЭлементыФормы.ТМЗ.ТекущиеДанные;
Спр = Справочники.ВидыТМЗРаботУслуг;
ВидТМЗВыбр = Справочники.ВидыТМЗРаботУслуг.ПолучитьСсылку();
ВвестиЗначение(Спр,"Укажите вид ТМЗ","СправочникСсылка.ВидыТМЗРаботУслуг");
СчетТМЗ = ВидТМЗВыбр.СчетТМЗ;
Если Субконто1 = ПланыВидовХарактеристик.ВидыСубконтоТиповые.Номенклатура Тогда
НовСтрока = ТМЗ.Добавить();
Форма = Справочники.Номенклатура.ПолучитьФормуВыбора();
Результат = Форма.ОткрытьМодально();
СтрокаТЗ.Товар = Результат;
ИначеЕсли Субконто1 = ПланыВидовХарактеристик.ВидыСубконтоТиповые.ОсновныеСредства Тогда
//ВвестиЗначение(Спр,"Номенклатура","СправочникСсылка.ОсновныеСредства");
ИначеЕсли Субконто1 = ПланыВидовХарактеристик.ВидыСубконтоТиповые.НематериальныеАктивы Тогда
//ВвестиЗначение(Спр,"Номенклатура","СправочникСсылка.НематериальныеАктивы");
КонецЕсли;
КонецПроцедуры

E_Migachev
09.09.2010 10:13Ответ № 14
(13) Почему у тебя СтрокаТЗ.Товар = Результат;? *17
нужно НовСтрока.Товар = Результат;
bless18
09.09.2010 10:23Ответ № 15
Оооой!!! Точно!!!!!
Спасииибо большое-пребольшое!!!!! )
bless18
09.09.2010 11:37Ответ № 16
Вопрос закрыт!
Подсказка: Вы получили ответ на свой вопрос - закройте вопрос!
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.