#0
by Aston86
Привет всем. Я когда то маялся с этим вопросом, но опять вернулся к нему. Как советовали многие сделать две табличные части, в обоих сделать реквизит УникальныйИдентификаторСтроки. При каждом добавлении строк в родительской таблице заполнять этот реквизит, а при добавлении в дочернюю таблицу заполнять этот реквизит из родительской (по текущей строке) и постоянно делать отбор строк по текущей Родительское строке (если она есть). В дочерней таблице убрал колонку номера строк - так как они беспорядочны. Командные панели оставил по умолчанию. Первая проблема с которой я столкнулся - это Переместить текущий элемент вверх или вниз. Покажу на примере: в дочерних указываю номер строки Родитель1 Дочерний 3 Такая ситуация возникнет если в родитель два добавили сначало 2 строки, потом в родитель 1 3 строки и одну в родитель два. Пользователь находясь на родителе два в дочерней таблице пытается переместить 3 строку на вторую и нажимает (Переместить текущий элемент вверх) - ничего не произошло, так как шестая строка поменялась с пятой, для того чтобы переместить на 2 строку надо нажать четыре раза на переместить вверх. Что неправильно как минимум а вдруг будет 20 строк в каждом элементе и тогда нервы пользователя просто не выдержат. Этот подход мне уже кажется неправильным, подскажите плиз как правильно делать подчинённые табличные части и чтоб номер строки в дочерней табличной части тоже отображался и работал нормально. Или как бы сделал и вы. Есть документ такой называется Экспликация к плану строения. В нём описываются этажи, у каждого этажа есть комнаты (сколько их неизвестно), у каждой комнаты есть различные виды площадей. И хотелось бы это всё видеть в одном документе. (На бумаге тоже один документ) С площадями я разобрался а по поводу этажей и комнат сделал подчинённую таблицу и решил как описал выше. Заранее спасибо.
#4
by Кокос
короче там делаешь не по номеру строки. В основной табличной части делаешь поле КлючСтроки. Ну и в подчиненное его тоже. При добавлении строки в основную таблицу обработке изменения строки в серверной функции приизмененииноменклатуры или еще какого поля какомто там общем модуле этот ключ тупо инкрементом заполняешь, соответственно при удалении строк он всегда остается уникальным. В подчиненной таблице делаешь всегда отбор при изменении положения курсора в основной таблице. Ну и в подчиненке при добавлении строки устанавливаешь ключстроки из текущей строки основной. Все мучения будут из-за клиент-серверных передач контекста формы.
#5
by Aston86
KazanKokos ты как внимательно читал что я писал выше или нет. Я так и делаю как ты написал ключ у родителя и по этому ключу отбор строк у дочерней, только вот беда в самом реквизите на форме количество строк не меняется отбор идёт в отображении и при отборе есть лажи когда пытаешься поднять строку выше в подчинённой таблице - почитай что я выше написал внимательно. Если не веришь сам попробуй или покажи пример с подчинённой таблицей где нет проблемы с Переместить текущий элемент вверх или вниз.
#6
by Кокос
ну я тоже помучился с этим. Просто код у клиента на серваке. И я проблему решил еще в прошлом январе. Наизусть не помню.
#7
by Кокос
вся лажа возникала из-за того что присвоения ключа делал не в том месте. ну допустим делал в клиентской функции а надо было на сервере. там особая система клиент-серверных вызовов нужна.
#8
by Aston86
Да у меня проблема не с ключами, отбор идёт верно, проблема состоит в том, что в дочерней таблице хранятся все подчинённые строки родительской, при отборе он отображает всё красиво но при перемещении строк в отобранном родителе бывает ничего не происходит внимательно почитай что я написал выше. На форме в таблице все строки упорядочиваются по номеру строки, хоть отображаешь ты его хоть нет - смотри
#9
by Кокос
ну я решил эту проблему насколько я помню. Вот как это вопрос. Надо запрашивать доступ на сервер и скачивать конфу. а это не раньше следующей недели :)
#10
by Кокос
у меня был расчет площади листов кровли под заказ по нарезку. под каждый лист формировалась таблица профилей в УТ11. Все работало.
#12
by Надсмотрщик
Твоя "подчиненная таблица", при открытой форме, хранится в виртуале, а на экран выводишь только нужные тебе строки
#13
by Aston86
Как в виртуале хранится? - тут поподробнее плиз. В дополнительном реквизите формы (Таблица Значений?) и как на экран выводить только нужные строки?
#14
by Надсмотрщик
В дополнительном реквизите формы ТаблицаЗначений. и на экран выводить только нужные строки - запросом.
#15
by Aston86
Как я понимаю есть ТаблицаЗначений, где хранятся все строки и дополнительная ТаблицаЗначений, где хранятся только подчинённые строки текущего родителя. А в поле формы таблица указать ПУТЬКДанным = дополнительная ТаблицаЗначений?
#17
by vmv
если речь об УФ, то для реализации мастер-детали в виде двух таблиц (одна мастер по которой отбираються записи детали) я бы использовал дерево значений Особенности: Дз должно быть двухуровневое (уровни 0 и 1) это дерево значений объявляешь на форме элементами как таблицы формы и представление списком. в первой(мастер) устанвливаешь не сбрасываемый отбор (уровень = 0) при создании формы, во второй(деталь) уровень = 1 и родитель = мастер.текущаястрока ну и обработчики там попрописывать
#18
by Aston86
У меня чисто человеческая просьба, дайте более подробную информацию если можно. С деревом значений не работал. Примерно знаю что это такое с C#. TreeView типо я так понимаю. Меня интересует два вопроса.1) Как задать только два уровня в дереве. 2) Второе что на первом уровне должны быть строки определённой структура а на втором совершенно другой? Заранее спасибо.
#23
by ChAlex
- есть еще такой механизм, как перетащить. И если так уж нужно вверх и вниз - то опять же рисуешь свою функцию.
#24
by Aston86
В итоге реализовал всё с помощью таблицы значений. При выборе родительского элемента достаю в реквизит формы ТЗ только нужные строки, сделал свои обработчике перемещения, при начале добавления , при удалении и окончании редактирования. Пришлось также свое поле (НомераСтроки) обозвал НомСтроки и сделать чтоб высчитывалось правильно во всех ситуациях и упорядочиваю постоянно по нему вот и всё :) И всё работает пока без проблем.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- v8: Можно ли считать экзамен по специалист по платформе самым сложным?
- v7: Не открывает шаблон Excel
- Как очистить движение при перепроведении
- Как вытащить правила обмена из универсального обмена?
- Как указать в выражении для параметра макета пользовательское поле?
- Как программно переключить закладку панели?
- v7: 1С <-> XML (CommerceML(2))
- v7: Получить периодическое значение справочника 1С 7.7 в прямом запросе
- УТ 10.3 партии и заказы покупателей
- Запись в табличную часть из таблицы значений
- v8: Риб. В центре Не ЗАгружаются данные, выгруженные из периферийной базы.
- w.o.t. вылЕтает при запуске в рдп windows7
- SQL 2008 загрузить бэкап одной базы в другую
- УТ 11: как прикрепить и способ создания внешней обработки для заполнения ТЧ
- Вопросик по КД
- И снова - Неверный формат хранилища данных v8stg
- Есть ли для КД обработки для выгрузки метаданных для УФ?
- Условие в параметрах виртуальной таблицы
- СКД Как объединить заголовки родительских группировок колонок
- При нажатии на ссылку скачать файл на скачивается а открывается в проигрывателе.