Имя: Пароль:
1C
1С v8
Создание новой строки и ее заполнение
0 NepomAR
 
13.01.22
09:49
Здравствуйте, подскажите пожалуйста. есть 2 управляемые формы в документе, основная форма, и форма "помощник ввода данных". в помощнике ввода ввожу данные, при нажатии кнопки "заполнить " в основной форме заполняется строка данными из формы "помощник ввода " в табличную часть документа. Скажите пожалуйста как создать новую строку в основной форме, в табличной части и записать туда данные и формы помощник ввода.
1 NepomAR
 
13.01.22
10:12
(0) &НаСервере
Процедура ЗаполнитьНовуюСтрокуНаСервере()
    СтруктураНовойСтроки = Новый Структура;
    СтруктураНовойСтроки.Вставить("1",1);
    
    СтруктураНовойСтроки.Вставить("2",2);
    СтруктураНовойСтроки.Вставить("3",3);
    СтруктураНовойСтроки.Вставить("4",4);
    СтруктураНовойСтроки.Вставить("5",5);
    СтруктураНовойСтроки.Вставить("6",6);
    СтруктураНовойСтроки.Вставить("7",7);
    СтруктураНовойСтроки.Вставить("8",8);
    СтруктураНовойСтроки.Вставить("9",9);
    СтруктураНовойСтроки.Вставить("10",10);
    СтруктураНовойСтроки.Вставить("11",11);
    СтруктураНовойСтроки.Вставить("12",12);
    СтруктураНовойСтроки.Вставить("13",13);
    СтруктураНовойСтроки.Вставить("14",14);
    СтруктураНовойСтроки.Вставить("15",15);
    

    НоваяСтрока = Объект.Спецификация.Добавить();
    ЗаполнитьЗначенияСвойств(НоваяСтрока,СтруктураНовойСтроки);
КонецПроцедуры

&НаКлиенте
Процедура ЗаполнитьНовуюСтроку(Команда)
    
        ЗаполнитьНовуюСтрокуНаСервере();
КонецПроцедуры
2 Галахад
 
гуру
13.01.22
10:16
Крутой код. Кстати ключ у структуры, не может быть цифрой.
3 NepomAR
 
13.01.22
10:27
(2) я знаю что не может быть
4 NepomAR
 
13.01.22
10:29
(2) это просто пример того как думаю
5 NepomAR
 
13.01.22
10:46
(2) &НаСервере
Процедура ЗаполнитьНовуюСтрокуНаСервере()
    СтруктураНовойСтроки = Новый Структура;
    СтруктураНовойСтроки.Вставить("ТипПанели",ТипПанели);
    //СтруктураНовойСтроки.Вставить("Подрезка",Объект.Подрезка);
    СтруктураНовойСтроки.Вставить("Замок",Замок);
    СтруктураНовойСтроки.Вставить("RALВнутренний",RALВнутренний);
    СтруктураНовойСтроки.Вставить("RALНаружный",RALНаружний);
    СтруктураНовойСтроки.Вставить("ПрофилировкаВнутренняя",ПрофилировкаВнутренняя);
    СтруктураНовойСтроки.Вставить("ПрофилировкаНаружная",ПрофилировкаНаружная);
    СтруктураНовойСтроки.Вставить("ТолщинаВнутреннегоМеталла",ТолщинаВнутреннегоМеталла);
    СтруктураНовойСтроки.Вставить("ТолщинаНаружногоМеталла",ТолщинаНаружногоМеталла);
    СтруктураНовойСтроки.Вставить("ТолщинаИзделия",ТолщинаИзделия);
    СтруктураНовойСтроки.Вставить("ШиринаИзделия",ШиринаИзделия);
    СтруктураНовойСтроки.Вставить("Маркировка",Маркировка);
    СтруктураНовойСтроки.Вставить("Ось",Ось);
    

    НоваяСтрока = Объект.СпецификацияПанелей.Добавить();
    ЗаполнитьЗначенияСвойств(НоваяСтрока,СтруктураНовойСтроки);
КонецПроцедуры

&НаКлиенте
Процедура ЗаполнитьНовуюСтроку(Команда)
    
        ЗаполнитьНовуюСтрокуНаСервере();
КонецПроцедуры
6 FIXXXL
 
13.01.22
10:57
(0) а как данные возвращаешь из формы Помощника?
7 NepomAR
 
13.01.22
11:54
(6) &НаСервере
Процедура ЗаполнитьНовуюСтрокуНаСервере(СтруктураНовойСтроки)
    
    НоваяСтрока = Объект.СпецификацияПанелей.Добавить();
    
    ЗаполнитьЗначенияСвойств(НоваяСтрока, СтруктураНовойСтроки);
КонецПроцедуры

&НаКлиенте
Процедура ЗаполнитьНовуюСтроку(Команда)
    СтруктураНовойСтроки  = ПолучитьСтруктуруПараметровСэндвичПанели();
    КонецПроцедуры

&НаКлиенте
Функция ПолучитьСтруктуруПараметровСэндвичПанели()
    
    ДанныеСтруктуры = Новый Структура;
    
    ДанныеСтруктуры.Вставить("ТипСтандарта",ТипСтандарта);
    ДанныеСтруктуры.Вставить("ТипПанели",ТипПанели);
    ДанныеСтруктуры.Вставить("Подрезка",Объект.Подрезка);
    ДанныеСтруктуры.Вставить("Замок",Замок);
    ДанныеСтруктуры.Вставить("RALВнутренний",RALВнутренний);
    ДанныеСтруктуры.Вставить("RALНаружный",RALНаружний);
    ДанныеСтруктуры.Вставить("ПрофилировкаВнутренняя",ПрофилировкаВнутренняя);
    ДанныеСтруктуры.Вставить("ПрофилировкаНаружная",ПрофилировкаНаружная);
    ДанныеСтруктуры.Вставить("ТолщинаВнутреннегоМеталла",ТолщинаВнутреннегоМеталла);
    ДанныеСтруктуры.Вставить("ТолщинаНаружногоМеталла",ТолщинаНаружногоМеталла);
    ДанныеСтруктуры.Вставить("ТолщинаИзделия",ТолщинаИзделия);
    ДанныеСтруктуры.Вставить("ШиринаИзделия",ШиринаИзделия);
    ДанныеСтруктуры.Вставить("Маркировка",Маркировка);
    ДанныеСтруктуры.Вставить("Ось",Ось);
    ДанныеСтруктуры.Вставить("Фасад",Фасад);
    ДанныеСтруктуры.Вставить("Количество",Количество);
    ДанныеСтруктуры.Вставить("КоличествоШт",КоличествоШт);
    ДанныеСтруктуры.Вставить("ЦенаСНДС",ЦенаСНДС);
    ДанныеСтруктуры.Вставить("ДлинаИзделия",ДлинаИзделия);
    ДанныеСтруктуры.Вставить("ТипПокрытияВнешний",ТипПокрытияНаружный);
    ДанныеСтруктуры.Вставить("ТипПокрытияВнутренний",ТипПокрытияВнутренний);
    ДанныеСтруктуры.Вставить("Утеплитель",Утеплитель);
    ДанныеСтруктуры.Вставить("Качество","");
    
    Возврат ДанныеСтруктуры;
КонецФункции

вот сейчас пока так.
8 Ёпрст
 
13.01.22
12:07
(7) а из формы в форму как ?
9 Мимохожий Однако
 
13.01.22
12:12
10 NepomAR
 
13.01.22
12:24
(8)
переделала, сейчас добавляет строку но она пустая, теперь пытаюсь  понять как ее заполнить.
&НаКлиенте
Процедура ЗаполнитьНовуюСтроку(Команда)
    СтруктураНовойСтроки  = ПолучитьСтруктуруПараметровСэндвичПанели();
    НоваяСтрока = ЭтаФорма.ВладелецФормы.Объект.СпецификацияПанелей.Добавить();
    ЗаполнитьЗначенияСвойств(НоваяСтрока, СтруктураНовойСтроки);

КонецПроцедуры


Из формы в форму код выглядит так

&НаКлиенте
Процедура ПомощникВводаСтрок(Команда)
    
     ОткрытьФорму("Документ.ртСпецификацияДоговораСделки.Форма.ФормаПомощникВводаСтрок",,ЭтаФорма);
    
КонецПроцедуры
11 NepomAR
 
13.01.22
12:26
(8) ЗаполнитьЗначенияСвойств не работает. пока не пойму как заполнить
12 FIXXXL
 
13.01.22
12:30
(10) при закрытии ФормаПомощникВводаСтрок надо данные вернуть владельцу
13 Галахад
 
гуру
13.01.22
12:30
Так не будет работать:
НоваяСтрока = ЭтаФорма.ВладелецФормы.Объект.СпецификацияПанелей.Добавить();

Верните данные в форму владелец и там заполните.
14 FIXXXL
 
13.01.22
12:32
простейший пример http://1clenta.ru/pattern/62
можно и через Оповестить()
15 SuperMario
 
13.01.22
12:35
(14) ужас!
16 FIXXXL
 
13.01.22
12:40
(15) сорри, не та ссылка :)
это старье модальное, отставить
17 FIXXXL
 
13.01.22
12:42
18 NepomAR
 
13.01.22
12:50
(17) Сделала вот так, и все работает. заполняет как нужно)
&НаКлиенте
Процедура ЗаполнитьНовуюСтроку(Команда)
    СтруктураНовойСтроки  = ПолучитьСтруктуруПараметровСэндвичПанели();
    НоваяСтрока = ЭтаФорма.ВладелецФормы.Объект.СпецификацияПанелей.Добавить();
    ЗаполнитьЗначенияСвойств(НоваяСтрока, СтруктураНовойСтроки);
    ЭтаФорма.Закрыть(СтруктураНовойСтроки);
КонецПроцедуры
19 Kassern
 
13.01.22
12:52
(18) не лучший способ, неявно пихать данные. Чем вас оповещения не устроили?
20 NepomAR
 
13.01.22
12:54
(19) попробовала сделать так и получилось, оповещение не стала пробовать. попробую сделать через оповещение.
21 Kassern
 
13.01.22
13:05
(20) можете посмотреть как в типовых конфах подбор товаров работает. Там используется событие формы источника "ОбработкаВыбора". В ней просто указываете следующее:
Если ИсточникВыбора = ПутьДоФормыВыбра Тогда //например "Документ.РеализацияТоваровУслуг.Форма.ФормаПодбораТоваровИзЗаказа"
  //Получаем из временного хранилища таблицу и загружаем в ТЧ
КонецЕсли

На форме выбора пихаем выбранные позиции во временное хранилище и не забываем ОповеститьОВыборе(АдресТоваровВХранилище)
22 NepomAR
 
13.01.22
13:19
(21) поняла Вас, спасибо.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший