Имя: Пароль:
1C
1С v8
можно ли в структуру вложить еще одну структуру?
,
0 ОноНас
 
19.10.11
13:26
необходимо в структуру добавить еще одну структуру возможно ли такое?
делаю вот так, но при "ПолучитьФорму" появл. ошибка.


&НаКлиенте
Функция СписокОтбораКартриджей(ТЧ)
   Перем стПараметр;
   стПараметр = Новый Структура;
   Если ТЧ.Количество() > 1 Тогда
       Для каждого Картридж Из ТЧ Цикл
           // проверяем чтобы Картридж.Картридж был заполнен,
           // иначе такой параметр не нужен
           Если НЕ ПустаяСтрока(Картридж.Картридж) Тогда
               стПараметр.Вставить(Картридж, Картридж);
           КонецЕсли;            
       КонецЦикла;
   КонецЕсли;
   Возврат стПараметр;    
КонецФункции
//-----------------------------------------------------------------

&НаКлиенте
Процедура ТЧКартриджОтОтправителяКартриджНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
   Перем Форма, ПараметрФормы;
   СтандартнаяОбработка = Ложь;
   ПараметрФормы = Новый Структура;
   // передаем имя документа или справочника, который является родителем
   ПараметрФормы.Вставить("Родитель", Объект.Ссылка);
   // из &НаКлиенте Перечислен() не получить, только &НаСервере
   ПараметрФормы.Вставить("РеквизитКартриджа",Перечислен());
   // если тч заполнена, то передаем в форму выбора данные столбца "Картридж"
   ПараметрФормы.Вставить("ОтборКартриджа", СписокОтбораКартриджей(Объект.ТЧКартриджОтОтправителя));
   Форма = ПолучитьФорму("Справочник.Картриджи.ФормаВыбора", ПараметрФормы, Элементы.ТЧКартриджОтОтправителя);
   Форма.Открыть();
КонецПроцедуры
1 zak555
 
19.10.11
13:27
как ошибка звучит 7
2 ОноНас
 
19.10.11
13:28
{Документ.ПеремещениеКартриджа.Форма.ФормаДокумента.Форма(101)}: Ошибка при вызове метода контекста (ПолучитьФорму)
   Форма = ПолучитьФорму("Справочник.Картриджи.ФормаВыбора", ПараметрФормы, Элементы.ТЧКартриджОтОтправителя);
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'val':
   форма: Элемент
   имя: {http://v8.1c.ru/8.2/mngsrv/ws}val
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'Value':
   форма: Элемент
   имя: {http://v8.1c.ru/8.1/data/core}Value
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа 'ДанныеФормыЭлементКоллекции'
3 Reset
 
19.10.11
13:29
В кривокод врубаться лень, но
Структура=Новый Структура("ВложеннаяСтруктура",Новый Структура("А,Б",1,2));
писать можно.
4 Scooter
 
19.10.11
13:29
(0)можно
Новый СТркутра("ШапкаДокумента", Новый Структура("АдынАдын", 11))
5 Reset
 
19.10.11
13:31
(2) Как водится, ошибка с сабжем никак не связана
6 ОноНас
 
19.10.11
13:31
(3)(4) ясно. главное, что можно. дальше сам разберусь
7 Reset
 
19.10.11
13:33
Для каждого Картридж Из ТЧ Цикл
           // проверяем чтобы Картридж.Картридж был заполнен,

           // иначе такой параметр не нужен

           Если НЕ ПустаяСтрока(Картридж.Картридж) Тогда
               стПараметр.Вставить(Картридж, Картридж);
           КонецЕсли;

Ехал Картридж через Картридж,
Видит Картридж, в Картридж Картридж.
Сунул Картридж в Картридж Картридж,
Картридж,Картридж,Картридж!
8 Reset
 
19.10.11
13:34
(7) Я не со зла, если что, прости, автор)
9 ОноНас
 
19.10.11
13:36
(7) Ухахаха...))))). если называть переменные правильно, то получаются слишком длинные названия.

вообще, как правильно называть переменные?
10 Reset
 
19.10.11
13:38
(9) ну например я бы написал
Для каждого СтрокаТЧ Из ТЧ Цикл

СтрокаТЧ - не длиннее Картридж, но явно понятней.
11 shamannk
 
19.10.11
13:39
Да
12 ОноНас
 
19.10.11
13:40
еще иногда возникают проблемы с "придумыванием" названий для процедур и функций(((
13 Reset
 
19.10.11
13:42
Я бы советовал потратить иногда побольше времени на придумывание правильного названия. Даже потраченные 10 минут сторицей окупятся впоследствии при анализе
14 Господин ПЖ
 
19.10.11
13:43
(0) для коллекции говнокода?
15 Mort
 
19.10.11
13:43
http://www.ozon.ru/context/detail/id/5011068/

вот тут неплохие рекомендации по именованию переменных и функций и не только. Нужно конечно адаптировать к среде 1С, но в целом лучше чем обычно встречается.
16 Mort
 
19.10.11
13:44
Я по первой даж выписывал перечень правил, которыми уже на автомате пользуюсь повсеместно.
17 Irbis
 
19.10.11
13:45
(0) прикинь, работает
   Структура=Новый Структура();
   Для Инд=1 по 1000000 Цикл
       Структура=Новый Структура("Структура", Структура);
   КонецЦикла;