Связь между двумя табличными частями документами

1. sergiyboy 9 08.10.11 12:36 Сейчас в теме
мкак можна решить следующую задачу. Есть документ путевой лист в нём две табличных части путевой лист и реестр накладных, каждая строка тч путевой лист имеет информацию о маршруте количестве ездок, растоянии с грузом и без, и тонаже по путевом листе, каждой строке тч из таблицы путевой лист необходимо чтобы соответствула табличная часть таблицы реестр накладных и необходимо чтобы при добавлении новых накладных изменялось поле тонаж текущей строки тч путевой лист
По теме из базы знаний
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. Adriann 08.10.11 12:47 Сейчас в теме
Проще добавить регистр сведений и хранить информацию там, чтобы не менять документ каждый раз.
3. tango 506 08.10.11 13:25 Сейчас в теме
4. deniseek77 86 08.10.11 13:44 Сейчас в теме
Значения должны храниться? или это только справочная информация? Иными словами- из отчетов или еще откуда то это надо будет получать? тут 2 варианта могу предложить
7. sergiyboy 9 08.10.11 14:03 Сейчас в теме
(4) deniseek77, Жду Ваших предложений
5. sergiyboy 9 08.10.11 13:46 Сейчас в теме
Короче говоря может кто то знаает как сделать чтобы при изменении строки "подчиненной" таблицы изменялись даные в другой таблице в моём случае таблица реестр накладных.
6. sergiyboy 9 08.10.11 13:48 Сейчас в теме
Даные должны хранится для возможности их представления в виде отчёта.
8. sergiyboy 9 09.10.11 17:16 Сейчас в теме
Проблему решил добалением уникального идентификатора в обеиих таблицах и отбором при активизации строки
Код
Процедура ШляховийЛистПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
                  Если НоваяСтрока Тогда
            Элемент.ТекущиеДанные.ID = Новый УникальныйИдентификатор;
         ЭлементыФормы.РеєстрНакладних.ДобавитьСтроку();
      ЭлементыФормы.РеєстрНакладних.ТекущиеДанные.ID= Элемент.ТекущиеДанные.ID;
         КонецЕсли;
      КонецПроцедуры  

      Процедура ШляховийЛистПриАктивизацииСтроки(Элемент)
         ЭлементыФормы.РеєстрНакладних.ОтборСтрок.ID.Установить(Элемент.ТекущаяСтрока.ID);
      КонецПроцедуры
Показать полностью

Также необходимо чтобы при удалении были удалены подченёные строи это решыл следующей обработкой
Код
Процедура ШляховийЛистПередУдалением(Элемент, Отказ)
               ПараметрыОтбора = Новый Структура;
    ПараметрыОтбора.Вставить("ID",ЭлементыФормы.ШляховийЛист.ТекущиеДанные.ID );
    СтрокиУдалить = РеєстрНакладних.НайтиСтроки(ПараметрыОтбора);
    Для Каждого Стр Из СтрокиУдалить Цикл
        РеєстрНакладних.Удалить(Стр);
    КонецЦикла;
      КонецПроцедуры
Показать полностью


Ну а добавление новой строки в регистре накладных сделал следующим образом
Код
Процедура РеєстрНакладнихПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
        Если НоваяСтрока Тогда
ЭлементыФормы.РеєстрНакладних.ТекущиеДанные.ID= ЭлементыФормы.ШляховийЛист.ТекущиеДанные.ID;
ЭлементыФормы.РеєстрНакладних.ТекущиеДанные.Маршрут=ЭлементыФормы.ШляховийЛист.ТекущиеДанные.Маршрут;
ЭлементыФормы.РеєстрНакладних.ТекущиеДанные.Дата=ЭлементыФормы.ШляховийЛист.ТекущиеДанные.ДатаШялховогоЛиста;
         КонецЕсли;
            КонецПроцедуры
Показать полностью


Но с суммой в тч путевые листы по идентификаторе не складывается как понимаю необходимо сделать что то такого рода Процедура при изменени тч тонаж выбрать все строки которые содержат id текущей строки из путевой лист и в цикле посчитать суму, но как это всё написать понятия не имею. Возможно ли это вообще?????????
9. RealJustin 12.10.11 08:35 Сейчас в теме
О, так там - дубль был... а я распинался
Другая тема
10. nbm 216 12.10.11 16:50 Сейчас в теме
Для начала надо сделать колонку "Путевой лист" в ТЧ "Реестр накладных". Колонку сделать с видимостью = Ложь.
В событии ТЧ "Путевой лист" "ПриАктивацииСтроки" прописать процедуру отбора для ТЧ "Реестр накладных", чтобы они соответствовали только конкретному путевому листу. Это для того, что бы случайно не было путаницы.
Ну а далее дело техники. В ТЧ "Реестр накладных" в событии "ПриПолученииДанных" прописываете процедуру для изменения соответствующих данных в ТЧ "Путевой лист". Как то так.
11. maxkisa 12.10.11 17:04 Сейчас в теме
nbm пишет:

Для начала надо сделать колонку "Путевой лист" в ТЧ "Реестр накладных". Колонку сделать с видимостью = Ложь.

В событии ТЧ "Путевой лист" "ПриАктивацииСтроки" прописать процедуру отбора для ТЧ "Реестр накладных", чтобы они соответствовали только конкретному путевому листу. Это для того, что бы случайно не было путаницы.

Ну а далее дело техники. В ТЧ "Реестр накладных" в событии "ПриПолученииДанных" прописываете процедуру для изменения соответствующих данных в ТЧ "Путевой лист". Как то так.


Я бы сделал слегка по-другому:

1. В табличную часть "Путевой лист" добавил бы скрытое поле "ключ" - уникальное значение в пределах строк табличной части. При добавлении новой строки поле автоматически заполняется Максимум(Ключ) + 1

2. В табличную часть "Реестр накладных" аналогичное скрытое поле "ключ", но только оно уже неуникально.

ну и далее по аналогии с предыдущим оратором =)

Почему нужен пункт 1? - если кто-то что-то напутает с нумерацией путевых листов, то обеспечена путаница во второй табличной части. Плюс не надо отслеживать изменение номера путевого листа в первой табличной части, для его замены во второй.
12. gadjik 12.10.11 17:44 Сейчас в теме
(11) maxkisa,
В типовых конфигурациях реализован подобный механизм для учета серийных номеров.
13. sergiyboy 9 14.10.11 20:16 Сейчас в теме
Проблемма с сумой решена добавлением в процедуры по изменению, удалению ... в тч реестр следующего обработчика
[b]ТЗ = РеєстрНакладних.Выгрузить(, "ID,МасаНето");
        ТЗ.Свернуть("ID", "МасаНето");
        Для каждого Стр Из ШляховийЛист Цикл
                Строка = ТЗ.Найти(Стр.ID, "ID");
                Стр.ВсьогоПеревезеноТонн = ?(Строка = Неопределено, 0, Строка.МасаНето);
			КонецЦикла;[b]
14. sergiyboy 9 14.10.11 20:18 Сейчас в теме
Проблемы типа что сортировка или изменения или удаления строк одной из табличной части порождают несоответствия даных в обеих таблицах решена. Тоесть при удалении строк у одной из таблиц изменяються, удаляются пересчитываются строки другой, при изменении делается пересчёт подчинёной таблицы или владельца. всё делается с помощю отбора по идентификатору.
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)