Консультация № 141040
30.07.2008, 11:27
0.00 руб.
0 10 3
Добрый день. Можно ли создать документ из двух табличных частей так, чтобы одна табличная часть была подчиненной конкретной строке другой табличной части.

Обсуждение

Неизвестный
30.07.2008, 12:07
общий
это ответ
Здравствуйте, ДАС Алекс!
Имеется ввиду что бы конкретный строки одной табличной части были подчинены строке другой табличной части?
В чистом виде так сделать нельзя. Но можно в обход. Ввести в каждуй из табличных частей по одному полю для связи Идентификатор и через него связывать строки. Получиться связь один ко многим.
а в форме документа при активизации строки в первой табличной части выводить в таблицу значений соответствующие строки из второй.
Неизвестный
30.07.2008, 12:27
общий
это ответ
Здравствуйте, ДАС Алекс!

Это несложно!

Для 7.7:
Создаёте вспомогательныйдокумент, в котором будт хранится:
- ссылка на основной документ, а в основном документе ссылка на вспомогательный (чтоб можно было их связывать).

в табл. части:
- номер строки основногшо документа или ссылка на товар из основного документа;
- вспомогательные данные.

Затем при открытии основного документа читается вспомогательный, загружаете в таблицу значений и при перемещении курсора по строкам, в дополнительной табличке на форме (таблица значений) отображаете данные, привязанные к текущей строке.

Для 8-й платформы:
В дополнительных свойствах второй таблицы, поле Данные, там указать связь с 1-й таблицей

С уважением, Владимир.
Неизвестный
30.07.2008, 14:08
общий
Для 7.7: Создаёте вспомогательныйдокумент, в котором будт хранится: - ссылка на основной документ, а в основном документе ссылка на вспомогательный (чтоб можно было их связывать). в табл. части: - номер строки основногшо документа или ссылка на товар из основного документа; - вспомогательные данные. Затем при открытии основного документа читается вспомогательный, загружаете в таблицу значений и при перемещении курсора по строкам, в дополнительной табличке на форме (таблица значений) отображаете данные, привязанные к текущей строке.


Это означает, что для каждой строки будет создаваться отдельный документ.
Неизвестный
30.07.2008, 14:31
общий
это ответ
Здравствуйте, ДАС Алекс!
Возможно, только не подчиненной. Вторую таблицу можно фильтровать по выбранной строке в первой таблице.
Неизвестный
30.07.2008, 14:52
общий
Для 8-й платформы:
В дополнительных свойствах второй таблицы, поле Данные, там указать связь с 1-й таблицей


Владимир, а можно тут поподробнее: какую связь надо будет указать в данных что бы такая связь заработала?
Неизвестный
30.07.2008, 16:08
общий
Это означает, что для каждой строки будет создаваться отдельный документ.


Неверно!
В одном вспомогательном документе будет храниться вторая таблица одного основного документа!
На практике это так (пример табличной части вспомогательногго документа):
Код:

Строка СсылкаТоварОсновногоДокумента ДопРеквизит1 ДопРеквизит2 ДопРеквизит3 и т.д. ....
1 Хлеб Бородинский Мука ржаная кг 0,400
2 Хлеб Бородинский Соль кг 0,002
3 Хлеб Бородинский Вода л 0,200
4 Хлеб Бородинский Этикетка шт 1
5 Хлеб Бородинский П/э упаковка шт 1
6 Кекс с изюмом Мука в/с кг 0,5
7 Кекс с изюмом Изюм кг 0,05
8 Кекс с изюмом Сахар кг 0,04
9 Кекс с изюмом Сахарная пудра кг 0,004


А когда в основном документе курсор проходит по строке, например, с товаром "Хлеб бородинский", то в таблице значений отображается часть строк, принадлежащих к Бородинскому хлебу, т.е. с 1 по 5. И т.д.
Неизвестный
31.07.2008, 19:41
общий
2 ДАС Алекс: Я склоняюсь к мысли добавления нового реквизита в шапку документа типа "Строка" неограниченной длины и добавления на форму документа таблицы значений - думаю, так будет более корректно и с точки зрения затраченного времени на собственно модификацию конфигурации, и с точки зрения целостности данных и размера базы.
Неизвестный
01.08.2008, 12:39
общий
С точки зрения производительности посмотрите http://www.mista.ru/articles1c/speed.htm
Неизвестный
01.08.2008, 13:37
общий
Отличная ссылка!
При создании строковых реквизитов шапки документа следует внимательно отнестись к решению: делать их неограниченной или конкретной длины. Реквизиты неограниченной длины несколько замедляют обращение к данным реквизитам (а не к документу вообще), но существенно экономят объем базы данных при частичном заполнении строк, так как записываются блоками по 80 символов. Причем пустая строка (не заполненный реквизит) не будет занимать места вообще.

Если в структуре документа имеются реквизиты типа "Документ", то система автоматически поддерживает механизм подчиненных документов. Для этого в информационной базе хранится список ссылок на подчиненные документы. Затраты системы на поддержание этого списка по конкретному документу зависят от количества различных значений типа "Документ" в реквизитах документа. Если, например, в документе будет присутствовать два реквизита типа "Документ" в шапке, то в список будет заноситься две записи. А если в документе будет присутствовать один реквизит типа "Документ" в табличной части, то в список будет занесено столько записей, сколько строк в табличной части конкретного документа, при условии, что во всех строках эти значения разные. Данный механизм в конфигурации не может быть отключен. Описанное влияние реквизитов типа "Документ" имеет смысл учитывать при проектировании структуры документа.

Реквизит "Строка" неограниченной длины создаст "торможение" только при чтении (открытие документа - чтение реквизита, формирование таблицы значений) и записи в него (изменение текущей строки табличной части - перерисовка таблицы значений, запись документа - запись в реквизит).
Дополнительный "служебный" документ - это создание узкого места для целостности: два новых файла (dbf и cdx), распухание базы - новый "основной" документ значит новый "служебный" документ, такое же "торможение" при изменении текущей строки табличной части "основного" документа - перерисовка таблицы значений, записи "основного" документа, добавьте сюда еще проработку исключительной ситуации если "основной" документ не записался, описание запретов/разрешений для интерактивного редактирования "служебного" документа...
Неизвестный
01.08.2008, 18:41
общий
Дополнительный "служебный" документ - это создание узкого места для целостности: два новых файла (dbf и cdx)

Уточню: Не 2-х, а 4-х: dhxxxx.dbf и dhxxxx.cdx для шапки и dtxxxxx.dbf + dtxxxx.cdx для табличной части.
Форма ответа