Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 22:32

Помогите со связкой таблиц 8.1

Автор Элен62, 16 фев 2011, 12:01

0 Пользователей и 1 гость просматривают эту тему.

Klyacksa

Цитата: cska-fanat-kz от 17 фев 2011, 14:28
ЗаполнитьЗначенияСвойств(ТЧ1, ТЧ2);

То есть вместо "полотна" будет одна единственная строка
Да, спасибо, что-то я не подумала об этом.

Цитировать
ЭлементыФормы.Сотрудники.Колонки.Количество=ЭлементыФормы.Услуги.ТекущиеДанные.Количество;
Ну здрассте, ЭлементыФормы.Сотрудники.Колонки.Количество - это же колонка, а не значение. Конечно, он туда не будет число записывать. Странно еще, что не ругается...
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Klyacksa

Так, стоп. Мы же находимся в табличной части Услуги, какие у нас могут быть текущие данные из таб.части Сотрудники???

У нас просто ЭлементыФормы.Сотрудники.ТекущаяСтрока возвращает Неопределено.

Элен62, я же вам уже 2 раза писала, как нужно найти подходящую строку с таб.части Сотрудники!
Пишу третий раз:
Если ТабЧастиСотрудники.Количество()<СтрокаТабличнойЧасти.НомерСтроки тогда 
   СтрокаТабличнойЧастиСотрудники=ТабЧастиСотрудники.Добавить();
Иначе
   СтрокаТабличнойЧастиСотрудники=ТабЧастиСотрудники.Получить(СтрокаТабличнойЧасти.НомерСтроки-1);
КонецЕсли;
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Элен62

Цитата: Klyacksa от 17 фев 2011, 14:36
Так, стоп. Мы же находимся в табличной части Услуги, какие у нас могут быть текущие данные из таб.части Сотрудники???

У нас просто ЭлементыФормы.Сотрудники.ТекущаяСтрока возвращает Неопределено.

Элен62, я же вам уже 2 раза писала, как нужно найти подходящую строку с таб.части Сотрудники!
Пишу третий раз:
Если ТабЧастиСотрудники.Количество()<СтрокаТабличнойЧасти.НомерСтроки тогда 
   СтрокаТабличнойЧастиСотрудники=ТабЧастиСотрудники.Добавить();
Иначе
   СтрокаТабличнойЧастиСотрудники=ТабЧастиСотрудники.Получить(СтрокаТабличнойЧасти.НомерСтроки-1);
КонецЕсли;





Никакой реакции.
вот
Процедура УслугиКоличествоПриИзменении(Элемент)
   СтрокаТабличнойЧасти = ЭлементыФормы.Услуги.ТекущиеДанные;
   ТабЧастиСотрудники=ЭтотОбъект.Сотрудники;
   ОбработкаТабличныхЧастей.РассчитатьКоличествоМестТабЧасти(ЭлементыФормы.Услуги.ТекущиеДанные, ЭтотОбъект);
   ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(ЭлементыФормы.Услуги.ТекущиеДанные, ЭтотОбъект);
   ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(ЭлементыФормы.Услуги.ТекущиеДанные, ЭтотОбъект);
   
Если ТабЧастиСотрудники.Количество()<СтрокаТабличнойЧасти.НомерСтроки тогда 
   СтрокаТабличнойЧастиСотрудники=ТабЧастиСотрудники.Добавить();
ЭлементыФормы.Сотрудники.Колонки.Количество=ЭлементыФормы.Услуги.Колонки.Количество;

Иначе
   СтрокаТабличнойЧастиСотрудники=ТабЧастиСотрудники.Получить(СтрокаТабличнойЧасти.НомерСтроки-1);
КонецЕсли;   
так же?

Элен62


Элен62

Если ТабЧастиСотрудники.Количество()<СтрокаТабличнойЧасти.НомерСтроки тогда 
   СтрокаТабличнойЧастиСотрудники=ТабЧастиСотрудники.Добавить();
ЭлементыФормы.Сотрудники.Колонки.Количество=ЭлементыФормы.Услуги.Колонки.Количество;


Сюда даже не заходит..сразу на иначе перескакивает

Klyacksa

Нет. Не так.
ЭлементыФормы.Сотрудники.Колонки.Количество - это КОЛОНКА. А не значение поля в данной строке. В нее нельзя ничего записывать.

Должно быть вот так:
Процедура УслугиКоличествоПриИзменении(Элемент)
  СтрокаТабличнойЧасти = ЭлементыФормы.Услуги.ТекущаяСтрока;

  ОбработкаТабличныхЧастей.РассчитатьКоличествоМестТабЧасти(ЭлементыФормы.Услуги.ТекущиеДанные, ЭтотОбъект);
  ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(ЭлементыФормы.Услуги.ТекущиеДанные, ЭтотОбъект);
  ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(ЭлементыФормы.Услуги.ТекущиеДанные, ЭтотОбъект);

  ТабЧастиСотрудники=ЭтотОбъект.Сотрудники;  
  Если ТабЧастиСотрудники.Количество()<СтрокаТабличнойЧасти.НомерСтроки тогда
       СтрокаТабличнойЧастиСотрудники=ТабЧастиСотрудники.Добавить();
  Иначе
       СтрокаТабличнойЧастиСотрудники=ТабЧастиСотрудники.Получить(СтрокаТабличнойЧасти.НомерСтроки-1);
  КонецЕсли;  

  СтрокаТабличнойЧастиСотрудники.Количество=СтрокаТабличнойЧасти.Количество;
КонейПроцедуры

И когда обновите, попробуйте начать с пустого документа. То есть добавлять первую строку в "Услуги"
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Элен62

Цитата: Klyacksa от 17 фев 2011, 15:06
Нет. Не так.
ЭлементыФормы.Сотрудники.Колонки.Количество - это КОЛОНКА. А не значение поля в данной строке. В нее нельзя ничего записывать.

Должно быть вот так:
Процедура УслугиКоличествоПриИзменении(Элемент)
  СтрокаТабличнойЧасти = ЭлементыФормы.Услуги.ТекущаяСтрока;

  ОбработкаТабличныхЧастей.РассчитатьКоличествоМестТабЧасти(ЭлементыФормы.Услуги.ТекущиеДанные, ЭтотОбъект);
  ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(ЭлементыФормы.Услуги.ТекущиеДанные, ЭтотОбъект);
  ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(ЭлементыФормы.Услуги.ТекущиеДанные, ЭтотОбъект);

  ТабЧастиСотрудники=ЭтотОбъект.Сотрудники;  
  Если ТабЧастиСотрудники.Количество()<СтрокаТабличнойЧасти.НомерСтроки тогда
       СтрокаТабличнойЧастиСотрудники=ТабЧастиСотрудники.Добавить();
  Иначе
       СтрокаТабличнойЧастиСотрудники=ТабЧастиСотрудники.Получить(СтрокаТабличнойЧасти.НомерСтроки-1);
  КонецЕсли;  

  СтрокаТабличнойЧастиСотрудники.Количество=СтрокаТабличнойЧасти.Количество;
КонейПроцедуры

И когда обновите, попробуйте начать с пустого документа. То есть добавлять первую строку в "Услуги"


:)) Работает так как дохтор прописал)). Спасибо еще раз, сейчас буду с другими также вытворять. Без заморочек.

Klyacksa

А теперь сделайте так.
вместо строчки: СтрокаТабличнойЧастиСотрудники.Количество=СтрокаТабличнойЧасти.Количество;
вставьте: ЗаполнитьЗначенияСвойств(СтрокаТабличнойЧастиСотрудники, СтрокаТабличнойЧасти);
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Элен62

Кстати, когда цену ввожу то появляется промежуточная ошибка {ОбщийМодуль.ОбщегоНазначения(2577)}: Значение не является значением объектного типа (Имя)
   ИмяТабличнойЧасти = Метаданные.НайтиПоТипу(ТипЗнч(СтрокаТабличнойЧасти)).Имя;

Это только при заполнении в первый раз. И в табл.части Сотрудники она еще не считает, только когда меняю цену в Услугах еще раз..то в тчСотрудники появляется и табличка с ошибкой больше не появляется. почему так? Она ведет к Общему модулю:
Функция ПолучитьИмяТабличнойЧастиПоСсылкеНаСтроку(СтрокаТабличнойЧасти) Экспорт

   ИмяТабличнойЧасти = Метаданные.НайтиПоТипу(ТипЗнч(СтрокаТабличнойЧасти)).Имя;
   Возврат ИмяТабличнойЧасти;

КонецФункции

Так все считает...но было бы не плохо ее убрать.

Элен62

Это общиймодуль Общегоназначения

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск