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

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

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

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

Элен62

Есть документ с табличными полями, Есть тп Услуги с колонками (Наименование, Кол-во...) и есть тп. Сотрудники с теми же колонками. Нужно чтобы все что введено и будет вводиться в колонки  "Услуги" дублировалось в тп "Сотрудники". Как связку сделать? По коду подскажете. Я через запрос делала...но зашпарилась.  Вот такой код в "Услугах" при изменении Номенклатуры
Процедура УслугиНоменклатураПриИзменении(Элемент)

   СтрокаТабличнойЧасти = ЭлементыФормы.Услуги.ТекущиеДанные;
         // Заполняем реквизиты табличной части.
   ОбработкаТабличныхЧастей.ЗаполнитьСодержаниеТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
   ОбработкаТабличныхЧастей.ЗаполнитьСодержаниеТабЧасти(СтрокаТабличнойЧасти,ЭтотОбъект);

   ЗаполнитьСчетаУчетаВСтрокеТабЧастиРегл(СтрокаТабличнойЧасти, "Услуги", ОтражатьВБухгалтерскомУчете, ОтражатьВНалоговомУчете);
       ОбработкаТабличныхЧастей.ЗаполнитьСтавкуНДСТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект, "Реализация");
   
   // Заполнение цены зависит от розничности операции.
   ОбработкаТабличныхЧастей.ЗаполнитьЦенуПродажиТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект, мВалютаРегламентированногоУчета);

   // Рассчитываем реквизиты табличной части.
   ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
   ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
   
   КонецПроцедуры



Вот, а что же писать При изменении номенклатуры в Сотрудниках к примеру. Подскажите пожалуйста.

Klyacksa

Ну добавляем в процедуру УслугиНоменклатураПриИзменении код по изменению таб.части Сотрудники. Можно даже сделать так: раз там должна тч Услуги полностью копироваться, то номер строки в Услуги будет совпадать с соответствующей строкой в Сотрудники. То есть как-то так:

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

// дальше меняем все нужные поля
СтрокаТабличнойЧастиСотрудники.Колонка1=СтрокаТабличнойЧасти.Колонка1;
и т.д.


xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

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

Элен62


Элен62

Процедура УслугиНоменклатураПриИзменении(Элемент)

   СтрокаТабличнойЧасти = ЭлементыФормы.Услуги.ТекущиеДанные;
   ТабЧастиСотрудники=ЭтотОбъект.Сотрудники;
         // Заполняем реквизиты табличной части.
   ОбработкаТабличныхЧастей.ЗаполнитьСодержаниеТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
   ЗаполнитьСчетаУчетаВСтрокеТабЧастиРегл(СтрокаТабличнойЧасти, "Услуги", ОтражатьВБухгалтерскомУчете, ОтражатьВНалоговомУчете);
    //ЗаполнитьСчетаУчетаВСтрокеТабЧастиРегл(СтрокаТабличнойЧасти, "Сотрудники", ОтражатьВБухгалтерскомУчете, ОтражатьВНалоговомУчете);
   ОбработкаТабличныхЧастей.ЗаполнитьСтавкуНДСТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект, "Реализация");
   
   // Заполнение цены зависит от розничности операции.
   ОбработкаТабличныхЧастей.ЗаполнитьЦенуПродажиТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект, мВалютаРегламентированногоУчета);
       // Рассчитываем реквизиты табличной части.
   ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
   ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
Если ТабЧастиСотрудники.Количество()<СтрокаТабличнойЧасти.НомерСтроки тогда   
   
   СтрокаТабличнойЧастиСотрудники=ТабЧастиСотрудники.Добавить();
    СтрокаТабличнойЧастиСотрудники.Номенклатура=СтрокаТабличнойЧасти.Номенклатура;
    СтрокаТабличнойЧастиСотрудники.Исполнители=СтрокаТабличнойЧасти.Исполнители;
СтрокаТабличнойЧастиСотрудники.Содержание=СтрокаТабличнойЧасти.Содержание;
СтрокаТабличнойЧастиСотрудники.Количество=0;
СтрокаТабличнойЧастиСотрудники.Количество=СтрокаТабличнойЧасти.Количество;
СтрокаТабличнойЧастиСотрудники.Цена=СтрокаТабличнойЧасти.Цена;
//СтрокаТабличнойЧастиСотрудники.Сумма=СтрокаТабличнойЧасти.Сумма;
СтрокаТабличнойЧастиСотрудники.ПроцентСкидкиНаценки=СтрокаТабличнойЧасти.ПроцентСкидкиНаценки;
СтрокаТабличнойЧастиСотрудники.ПроцентАвтоматическихСкидок=СтрокаТабличнойЧасти.ПроцентАвтоматическихСкидок;
СтрокаТабличнойЧастиСотрудники.СтавкаНДС=СтрокаТабличнойЧасти.СтавкаНДС;
СтрокаТабличнойЧастиСотрудники.СчетДоходовБУ=СтрокаТабличнойЧасти.СчетДоходовБУ;
СтрокаТабличнойЧастиСотрудники.СубконтоБУ=СтрокаТабличнойЧасти.СубконтоБУ;
СтрокаТабличнойЧастиСотрудники.СчетРасходовБУ=СтрокаТабличнойЧасти.СчетРасходовБУ;
СтрокаТабличнойЧастиСотрудники.СчетДоходовНУ=СтрокаТабличнойЧасти.СчетДоходовНУ;
СтрокаТабличнойЧастиСотрудники.СубконтоНУ=СтрокаТабличнойЧасти.СубконтоНУ;
СтрокаТабличнойЧастиСотрудники.СчетРасходовНУ=СтрокаТабличнойЧасти.СчетРасходовНУ;
СтрокаТабличнойЧастиСотрудники.ЗаказПокупателя=СтрокаТабличнойЧасти.ЗаказПокупателя;
СтрокаТабличнойЧастиСотрудники.Всего=СтрокаТабличнойЧасти.Всего;
Иначе
     СтрокаТабличнойЧастиСотрудники=ТабЧастиСотрудники.Получить(СтрокаТабличнойЧасти.НомерСтроки-1);
КонецЕсли;


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

Элен62

 =ЭлементыФормы.Услуги.ТекущиеДанные.Количество;
вот это поле он видит значение...но к чему присваивать его. Было так...СтрокаТабличнойЧастиСотрудники.Количество=ЭлементыФормы.Услуги.ТекущиеДанные.Количество;
При этом объявляла СтрокаТабличнойЧасти = ЭлементыФормы.Услуги.ТекущиеДанные;
   ТабЧастиСотрудники=ЭтотОбъект.Сотрудники;


Но не находит поле и все тут. ПРобовала методом при изменении таблияных форм...данные все переносятся...но повально заполняют все графы. дублируют в общем. Но потом чтобы вручную что то дописать-не получается. При изменении страницы- все обновляется со страницы Услуги. Этот варик не подходит.

Klyacksa

Проверьте, чтобы поля действительно были в табличной части Сотрудники. Как вариант, их там нет или есть орфографические ошибки в них.

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

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

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

Klyacksa

Цитата: Элен62 от 17 фев 2011, 11:45
=ЭлементыФормы.Услуги.ТекущиеДанные.Количество;
вот это поле он видит значение...но к чему присваивать его. Было
Попробуйте ТекущаяСтрока вместо ТекущиеДанные.

ТабличноеПоле (TableBox)
ТекущаяСтрока (CurrentRow)
Использование:
Чтение и запись.
Описание:
Содержит текущую строку табличного поля.
Недоступно на сервере 1С:Предприятие. Не используется в модуле внешнего соединения.


ТабличноеПоле (TableBox)
ТекущиеДанные (CurrentData)
Использование:
Только чтение.
Описание:
Содержит данные текущей строки табличного поля.
Недоступно на сервере 1С:Предприятие. Не используется в модуле внешнего соединения.
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

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

Элен62

Значение не является значением объектного типа
{Документ.РеализацияТоваровУслуг.Форма.ФормаДокумента(4343)}: Значение не является значением объектного типа (Количество)
ЭлементыФормы.Сотрудники.ТекущаяСтрока.Количество = ЭлементыФормы.Услуги.ТекущиеДанные.Количество;

Элен62

на наличие опеток проверила-все гуд.

Klyacksa

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

На какой строке будет ругаться?))
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

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

Теги:

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

Рейтинг@Mail.ru

Поиск