Связь между двумя табличными частями документами
мкак можна решить следующую задачу. Есть документ путевой лист в нём две табличных части путевой лист и реестр накладных, каждая строка тч путевой лист имеет информацию о маршруте количестве ездок, растоянии с грузом и без, и тонаже по путевом листе, каждой строке тч из таблицы путевой лист необходимо чтобы соответствула табличная часть таблицы реестр накладных и необходимо чтобы при добавлении новых накладных изменялось поле тонаж текущей строки тч путевой лист
По теме из базы знаний
- Корпоративный мозг на 1С и Python
- Пример переноса справочников, документов и движений через Эксель и "Конвертацию данных 2" из оптовой учетной системы 1С 7.7 Комплексной 4.2 и розничной учетной системы Рарус Торговый комплекс -> в 1С 8.3 ЕРП 2.4 (расширение и дополнительные реквизиты)
- Не спеша, эффективно и правильно – путь разработки. Часть 2. Теория
- Маркировка лекарственных препаратов. Часть первая "Быстрая интеграция"
- Особенности приема и передачи в переработку в системе ERP 2.4
Ответы
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
Проблему решил добалением уникального идентификатора в обеиих таблицах и отбором при активизации строки
Также необходимо чтобы при удалении были удалены подченёные строи это решыл следующей обработкой
Ну а добавление новой строки в регистре накладных сделал следующим образом
Но с суммой в тч путевые листы по идентификаторе не складывается как понимаю необходимо сделать что то такого рода Процедура при изменени тч тонаж выбрать все строки которые содержат id текущей строки из путевой лист и в цикле посчитать суму, но как это всё написать понятия не имею. Возможно ли это вообще?????????
Код |
---|
Процедура ШляховийЛистПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
Если НоваяСтрока Тогда
Элемент.ТекущиеДанные.ID = Новый УникальныйИдентификатор;
ЭлементыФормы.РеєстрНакладних.ДобавитьСтроку();
ЭлементыФормы.РеєстрНакладних.ТекущиеДанные.ID= Элемент.ТекущиеДанные.ID;
КонецЕсли;
КонецПроцедуры
Процедура ШляховийЛистПриАктивизацииСтроки(Элемент)
ЭлементыФормы.РеєстрНакладних.ОтборСтрок.ID.Установить(Элемент.ТекущаяСтрока.ID);
КонецПроцедуры
Показать полностью |
Также необходимо чтобы при удалении были удалены подченёные строи это решыл следующей обработкой
Код |
---|
Процедура ШляховийЛистПередУдалением(Элемент, Отказ)
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("ID",ЭлементыФормы.ШляховийЛист.ТекущиеДанные.ID );
СтрокиУдалить = РеєстрНакладних.НайтиСтроки(ПараметрыОтбора);
Для Каждого Стр Из СтрокиУдалить Цикл
РеєстрНакладних.Удалить(Стр);
КонецЦикла;
КонецПроцедуры Показать полностью |
Ну а добавление новой строки в регистре накладных сделал следующим образом
Код |
---|
Процедура РеєстрНакладнихПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
Если НоваяСтрока Тогда
ЭлементыФормы.РеєстрНакладних.ТекущиеДанные.ID= ЭлементыФормы.ШляховийЛист.ТекущиеДанные.ID;
ЭлементыФормы.РеєстрНакладних.ТекущиеДанные.Маршрут=ЭлементыФормы.ШляховийЛист.ТекущиеДанные.Маршрут;
ЭлементыФормы.РеєстрНакладних.ТекущиеДанные.Дата=ЭлементыФормы.ШляховийЛист.ТекущиеДанные.ДатаШялховогоЛиста;
КонецЕсли;
КонецПроцедуры Показать полностью |
Но с суммой в тч путевые листы по идентификаторе не складывается как понимаю необходимо сделать что то такого рода Процедура при изменени тч тонаж выбрать все строки которые содержат id текущей строки из путевой лист и в цикле посчитать суму, но как это всё написать понятия не имею. Возможно ли это вообще?????????
Для начала надо сделать колонку "Путевой лист" в ТЧ "Реестр накладных". Колонку сделать с видимостью = Ложь.
В событии ТЧ "Путевой лист" "ПриАктивацииСтроки" прописать процедуру отбора для ТЧ "Реестр накладных", чтобы они соответствовали только конкретному путевому листу. Это для того, что бы случайно не было путаницы.
Ну а далее дело техники. В ТЧ "Реестр накладных" в событии "ПриПолученииДанных" прописываете процедуру для изменения соответствующих данных в ТЧ "Путевой лист". Как то так.
В событии ТЧ "Путевой лист" "ПриАктивацииСтроки" прописать процедуру отбора для ТЧ "Реестр накладных", чтобы они соответствовали только конкретному путевому листу. Это для того, что бы случайно не было путаницы.
Ну а далее дело техники. В ТЧ "Реестр накладных" в событии "ПриПолученииДанных" прописываете процедуру для изменения соответствующих данных в ТЧ "Путевой лист". Как то так.
nbm пишет:
Для начала надо сделать колонку "Путевой лист" в ТЧ "Реестр накладных". Колонку сделать с видимостью = Ложь.
В событии ТЧ "Путевой лист" "ПриАктивацииСтроки" прописать процедуру отбора для ТЧ "Реестр накладных", чтобы они соответствовали только конкретному путевому листу. Это для того, что бы случайно не было путаницы.
Ну а далее дело техники. В ТЧ "Реестр накладных" в событии "ПриПолученииДанных" прописываете процедуру для изменения соответствующих данных в ТЧ "Путевой лист". Как то так.
Для начала надо сделать колонку "Путевой лист" в ТЧ "Реестр накладных". Колонку сделать с видимостью = Ложь.
В событии ТЧ "Путевой лист" "ПриАктивацииСтроки" прописать процедуру отбора для ТЧ "Реестр накладных", чтобы они соответствовали только конкретному путевому листу. Это для того, что бы случайно не было путаницы.
Ну а далее дело техники. В ТЧ "Реестр накладных" в событии "ПриПолученииДанных" прописываете процедуру для изменения соответствующих данных в ТЧ "Путевой лист". Как то так.
Я бы сделал слегка по-другому:
1. В табличную часть "Путевой лист" добавил бы скрытое поле "ключ" - уникальное значение в пределах строк табличной части. При добавлении новой строки поле автоматически заполняется Максимум(Ключ) + 1
2. В табличную часть "Реестр накладных" аналогичное скрытое поле "ключ", но только оно уже неуникально.
ну и далее по аналогии с предыдущим оратором =)
Почему нужен пункт 1? - если кто-то что-то напутает с нумерацией путевых листов, то обеспечена путаница во второй табличной части. Плюс не надо отслеживать изменение номера путевого листа в первой табличной части, для его замены во второй.
Проблемма с сумой решена добавлением в процедуры по изменению, удалению ... в тч реестр следующего обработчика
[b]ТЗ = РеєстрНакладних.Выгрузить(, "ID,МасаНето");
ТЗ.Свернуть("ID", "МасаНето");
Для каждого Стр Из ШляховийЛист Цикл
Строка = ТЗ.Найти(Стр.ID, "ID");
Стр.ВсьогоПеревезеноТонн = ?(Строка = Неопределено, 0, Строка.МасаНето);
КонецЦикла;[b]
Проблемы типа что сортировка или изменения или удаления строк одной из табличной части порождают несоответствия даных в обеих таблицах решена. Тоесть при удалении строк у одной из таблиц изменяються, удаляются пересчитываются строки другой, при изменении делается пересчёт подчинёной таблицы или владельца. всё делается с помощю отбора по идентификатору.
Вакансии
Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)