Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) несколько табличных частей как в 8 (число прочтений - 6769 )
mozer
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
несколько табличных частей как в 8
26. Марта 2012 :: 04:36
Печать  
Хочется к одному документу иметь несколько табличных частей, как в 8-ке.
Кто то делал подобное??
  
Наверх
 
IP записан
 
vinogradoff
Full Member
***
Отсутствует



Сообщений: 107
Зарегистрирован: 06. Февраля 2010
Пол: Мужской
Re: несколько табличных частей как в 8
Ответ #1 - 26. Марта 2012 :: 05:33
Печать  
Несколько ТЗ, которые записываются в одну ТЧ документа, либо несколько ТЗ, которые записываются в ТЧ разных документов.
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: несколько табличных частей как в 8
Ответ #2 - 26. Марта 2012 :: 05:53
Печать  
Я делал так:
  • Документ - шапка. В нем может вообще не быть ТЧ, или же в ТЧ хранится список подчиненных документов. Он же является и интерфейсом доступа ко всем подчиненным документам.
    При проведении он проводит все подчиненные документы и не проводится сам, если хотя бы один из подчиненных не провелся.
  • Набор подчиненных документов, которые запрещены для интерактивного открытия и создания.
  
Наверх
 
IP записан
 
mozer
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: несколько табличных частей как в 8
Ответ #3 - 26. Марта 2012 :: 06:47
Печать  
Dmitry The Wing писал(а) 26. Марта 2012 :: 05:53:
Я делал так:
  • Документ - шапка. В нем может вообще не быть ТЧ, или же в ТЧ хранится список подчиненных документов. Он же является и интерфейсом доступа ко всем подчиненным документам.
    При проведении он проводит все подчиненные документы и не проводится сам, если хотя бы один из подчиненных не провелся.
  • Набор подчиненных документов, которые запрещены для интерактивного открытия и создания.

То есть ты создавал на каждую табличную часть по документу?
  
Наверх
 
IP записан
 
mozer
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: несколько табличных частей как в 8
Ответ #4 - 26. Марта 2012 :: 06:48
Печать  
vinogradoff писал(а) 26. Марта 2012 :: 05:33:
Несколько ТЗ, которые записываются в одну ТЧ документа, либо несколько ТЗ, которые записываются в ТЧ разных документов.

Набор данных для табличных частей различный. по этому и нужно разнести по разным таблицам, но все это относится к одному документу.
  
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: несколько табличных частей как в 8
Ответ #5 - 26. Марта 2012 :: 07:56
Печать  
Я делал (и переделывал). Много и по разному.

Самый простой вариант - ссылка на служебный документ, ТЧ которого используем как доп. ТЧ.
Из плюсов - наиболее простая работа. Возможна некоторая унификация (например, служебный док СписокСотрудников, используется как доп ТЧ для документов разных видов).
Из минусов - выжираение IDDoc и раздутый журнал документов. Хотя в моей практике была всего одна база, в которой IDDoc дошел до 1 в последнем разряде и даже на ней в самых радужных перспективах развития фирмы (т.е. когда дела идут исключительно в гору и документооборот только растет) ИДшников хватило бы еще лет на 10. Но если бы там все допТЧ строили на служебных документах - фиг знает, какие были бы прогнозы.

Второй вариант - делаем справочник, строка доп ТЧ = элемент справочника.
Из минусов - ИДшник тратится на каждую строку, что на сверх-крупных проектах тоже может плачевно кончится (хотя тут есть пути решения).
В реализации - при использовании классов ничуть не сложнее, чем п.1. При отсутствии классов - ну, посложнее, но не слишком сильно.

Третий вариант (на мой взгляд, самый правильный) - делаем в скуле дополнительную таблицу, с необходимой структурой.
Из минусов - 1Ска не сможет следить за этой таблицой -> все реструктуризации и контроли целостности структуры/данных базы делать самому.
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: несколько табличных частей как в 8
Ответ #6 - 26. Марта 2012 :: 10:05
Печать  
Satans Claws писал(а) 26. Марта 2012 :: 07:56:
Я делал (и переделывал). Много и по разному.
Первый вариант - это и есть то, что описано мною выше, за исключением того, что "служебных" документов может быть более одного типа.
Второй вариант вызывает больше проблем, чем преимуществ. Сталкивался, но сам не применял, ввиду повышенной сложности и больших потерь в скорости при обработке.
Третий вариант тоже кое-где применяется, но это полезно только в том случае, когда данные не должны отражаться в движениях по регистрам.

Дополнительно стоит следить за количеством строк, ибо превышение ими числа 9999 даст нарушение индексов, а это большие потери в скорости, да и целостность базы будет несколько страдать (проверка на этом точно загнется).

Пример из жизни (вариант 1):
Переоценка в базе швейного производства мною была реализована следующим набором документов:
  • Шапка - В шапке содержатся только параметры отбора и процент опрепроизводственных расходов с указанием статьи. ТЧ содержит список подчиненных документов.
  • Лоскуты - ТЧ содержит список лоскутов с ценами (старыми, средними и новыми) и плотностями (аналогично).
  • Материалы - по составу почти как и лоскуты, но не участвует в непосредственной переоценке. Используется в промежуточных расчетах.
  • Номенклатура - список номенклатуры с новыми ценами.
  • Элементы - нормы расходов со ссылкой на номенклатуру, элемент и новую стоимость. Шапка содержит вид норматива.
В среднем переоценка создавала до 50 документов и более.

Для вязального производства схема была аналогичной, однако не требовался документ для лоскутов, но док для материалов производил переоценку этих материалов.
В вязалке переоценка формировала около 15-20 документов за раз.

Количество обосновано составом номенклатуры. В вязалке она порядком меньше.

Третий же вариант усиленно используется в режиме конмтруирования моделей. Прежде чем данные станут нормативами, они формируются из большого числа составляющих, которые нет смысла хранить в 1С.
  
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: несколько табличных частей как в 8
Ответ #7 - 27. Марта 2012 :: 02:52
Печать  
Dmitry The Wing писал(а) 26. Марта 2012 :: 10:05:
Третий вариант тоже кое-где применяется, но это полезно только в том случае, когда данные не должны отражаться в движениях по регистрам.


Эээ
Ты проповедуешь подход, что каждый документ, реализующий табличную часть, должен проводиться и делать соотв. движения?

Как тебе размещение данных в отдельной скулевой таблице мешает делать движения по регистрам?
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: несколько табличных частей как в 8
Ответ #8 - 27. Марта 2012 :: 03:25
Печать  
Satans Claws писал(а) 27. Марта 2012 :: 02:52:
Ты проповедуешь подход, что каждый документ, реализующий табличную часть, должен проводиться и делать соотв. движения?
Я говорю о том, что любой документ, делающий движения, должен хранить в себе данные для этих движений.

Satans Claws писал(а) 27. Марта 2012 :: 02:52:
Как тебе размещение данных в отдельной скулевой таблице мешает делать движения по регистрам?
Видимо, сказывается то, что крайне редко приходится сталкиваться со скульной семеркой, а из этого следует, что доп. данные хранятся не в той же базе, а значит могут терять синхронизацию по разным причинам.

К тому же, всякого рода групповые обработки могут не знать про доп. таблицы, но при этом выполнять перепроведения таких документов. Выполнение же доп. подключений в момент проведения, особенно группового, сильно увеличивает время проведения. Это одна из причин, почему все данные проведения должны быть только в регистрах и в самом документе.
С проводками несколько иная ситуация, но ведь они и привязаны не к документу, а к операции.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: несколько табличных частей как в 8
Ответ #9 - 27. Марта 2012 :: 04:13
Печать  
Dmitry The Wing писал(а) 27. Марта 2012 :: 03:25:
Satans Claws писал(а) 27. Марта 2012 :: 02:52:
Ты проповедуешь подход, что каждый документ, реализующий табличную часть, должен проводиться и делать соотв. движения?
Я говорю о том, что любой документ, делающий движения, должен хранить в себе данные для этих движений.

Satans Claws писал(а) 27. Марта 2012 :: 02:52:
Как тебе размещение данных в отдельной скулевой таблице мешает делать движения по регистрам?
Видимо, сказывается то, что крайне редко приходится сталкиваться со скульной семеркой, а из этого следует, что доп. данные хранятся не в той же базе, а значит могут терять синхронизацию по разным причинам.
да не могут данные теряться.при проведении они идут в той де самой транзакции.
Если эти данные теряются после то с тем же успехом можно
предположить что возможны потери данных и например в rg
со всеми вытекающими последствиями.

Цитата:
К тому же, всякого рода групповые обработки могут не знать про доп. таблицы, но при этом выполнять перепроведения таких документов. Выполнение же доп. подключений в момент проведения, особенно группового, сильно увеличивает время проведения. Это одна из причин, почему все данные проведения должны быть только в регистрах и в самом документе.
С проводками несколько иная ситуация, но ведь они и привязаны не к документу, а к операции.

ничего не может теряться обращения к доп таблицпм идут в том же модуле проведения.
доп подключений не происходит а все идет через стандартное соеденение к базе 1с. Если имеется ввиду использование еще одних таблиц то это не проблема. Также на этих доп таблицах можно организовать свои индексы которые обеспечат эффективный доступ к данным этих доп таблицам sql.

Для обеспечения логич. целосности данных (если действительно такая задача стоит) надо писать свою систему предикатов.



ps
Еще один способ другой таблич части
Вместо дополнительного документа использовать дополнительный справочник ( на справочник меньше накладных расходов)

Также иногда вполне преемлем и способ хранить ТЗ ( доп таблич часть) в строке неограниченной длины.
  
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: несколько табличных частей как в 8
Ответ #10 - 27. Марта 2012 :: 04:23
Печать  
Dmitry The Wing писал(а) 27. Марта 2012 :: 03:25:
Я говорю о том, что любой документ, делающий движения, должен хранить в себе данные для этих движений.
Видимо, сказывается то, что крайне редко приходится сталкиваться со скульной семеркой, а из этого следует, что доп. данные хранятся не в той же базе, а значит могут терять синхронизацию по разным причинам.

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


Ну, тебя же не смущает, что данные документа сама 1С хранит аж даже в 3х таблицах.
Вообще, на мой взгляд - это в корне направильный подход. Ибо у тебя 1 учетный объект (1 учетное событие) - и ВСЕ движения должны делаться этим объектом. Да, для своего проведения он заглянет в доп. таб части (и абсолютно без разницы, как они будут реализованы).
А рассогласование в твоем случае возможно не менее, чем в моем: распровели документ доп части - и все.
Да и с проверками целостности документа на момент проведения хуже - будут или избыточные перекрестные проверки, или каждый документ проверяет целостность только своего куска данных (что никак не гарантирует целостность всего документа).
А обеспечение одновременного проведения-распроведения - тоже то еще развелечение.

Касательно групповых обработок - вот им, как раз, и не положено знать про доп таблицы и связные документы.
Групповое перепроведение должно сказать ровно 1 слово: "Проведись!". И документ должен провестись. Целиком и полностью.

PS про доп таблицы скуля - просто последние лет сколько-то основные базы исключительно на скуле и как-то само собой разумеющееся уже. (Более того - я с прямыми запросами под ДБФом даже и не работал).
А так - принципиально разницы нет, можно создать свои ДБФки и хранить данные в них, чтоб из ДБФной базы не цепляться к непонятному СКЛ-серверу.
  
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: несколько табличных частей как в 8
Ответ #11 - 27. Марта 2012 :: 04:25
Печать  
Z1 писал(а) 27. Марта 2012 :: 04:13:
Также иногда вполне преемлем и способ хранить ТЗ ( доп таблич часть) в строке неограниченной длины.


Ну это уж совсем редкие случаи - ибо в такой реализации нет возможности обратиться непосредственно к строке документа.
  
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: несколько табличных частей как в 8
Ответ #12 - 27. Марта 2012 :: 04:31
Печать  
Dmitry The Wing писал(а) 26. Марта 2012 :: 10:05:
Пример из жизни (вариант 1):
Переоценка в базе швейного производства мною была реализована следующим набором документов:
  • Шапка - В шапке содержатся только параметры отбора и процент опрепроизводственных расходов с указанием статьи. ТЧ содержит список подчиненных документов.
  • Лоскуты - ТЧ содержит список лоскутов с ценами (старыми, средними и новыми) и плотностями (аналогично).
  • Материалы - по составу почти как и лоскуты, но не участвует в непосредственной переоценке. Используется в промежуточных расчетах.
  • Номенклатура - список номенклатуры с новыми ценами.
  • Элементы - нормы расходов со ссылкой на номенклатуру, элемент и новую стоимость. Шапка содержит вид норматива.



А почему, скажем, под ТЧ_Номенклатура не сделать реквизит шапки? Я так понимаю, этот документ в ТЧ будет ровно один.
Да и ТЧ_Лоскуты и ТЧ_Материалы - есть ощущение, что тоже по одному.
Вот ТЧ_Элементы, похоже, да - их будет много.

Или это для обхода ограничения по количеству строк в документах (10К, вроде)?
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: несколько табличных частей как в 8
Ответ #13 - 27. Марта 2012 :: 05:22
Печать  
Satans Claws писал(а) 27. Марта 2012 :: 04:25:
Z1 писал(а) 27. Марта 2012 :: 04:13:
Также иногда вполне преемлем и способ хранить ТЗ ( доп таблич часть) в строке неограниченной длины.


Ну это уж совсем редкие случаи - ибо в такой реализации нет возможности обратиться непосредственно к строке документа.

написал чтобы автор subj знал что есть и такое решение.
для решения его задачи  в ветке изложены вроде все способы какие бываю вообще. так что ему есть из чего выбирать.

  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: несколько табличных частей как в 8
Ответ #14 - 27. Марта 2012 :: 05:47
Печать  
Satans Claws писал(а) 27. Марта 2012 :: 04:23:
А обеспечение одновременного проведения-распроведения - тоже то еще развелечение.
С этим проблем особых нет. Просто на кнопки "ОК" и "Провести" вешается определенная функция, которая сначала вызывает запись и все, что с этим связано, включая все необходимые проверки. Затем проводит документ-шапку (здесь отрабатывает обработка проведения). И в случае успеха проведения вызывает проведение всех подчиненных документов. Если хоть один подчиненный не провелся - у всех снимается проведение, как и у шапки.
Также не стоит забывать о перепроведении, т.е. эта функция вызывается и из ПриЗаписи, в зависимости от контекста вызова.

Satans Claws писал(а) 27. Марта 2012 :: 04:23:
(Более того - я с прямыми запросами под ДБФом даже и не работал).
В качестве механизма прямого доступа предпочитаю использовать 1sqlite, а ему пофик, дбф у тебя или скуль.

Satans Claws писал(а) 27. Марта 2012 :: 04:23:
А так - принципиально разницы нет, можно создать свои ДБФки и хранить данные в них, чтоб из ДБФной базы не цепляться к непонятному СКЛ-серверу.
И огребешь кучу проблем одновременного доступа. Именно их и решает использование SQL-сервера.

Satans Claws писал(а) 27. Марта 2012 :: 04:31:
А почему, скажем, под ТЧ_Номенклатура не сделать реквизит шапки? Я так понимаю, этот документ в ТЧ будет ровно один.
Да и ТЧ_Лоскуты и ТЧ_Материалы - есть ощущение, что тоже по одному.
Вот ТЧ_Элементы, похоже, да - их будет много.
Тут все зависит от объема переоценки.
Если переоценивается только 1 артикул, то одного документа для номенклатуры за глаза хватит, а если группа - то уже может не хватить.
Лоскуты - это обезличенные материалы - элементы нормативов, а в одно изделие используется от 2 до 5 лоскутов, т.е. документов может быть в 2-5 раз больше (может и не быть при повторении лоскутов).
Материалы - это конкретные полотна и другие материалы, которые группируются в лоскуты, а это увеличивает их число в сотни раз. Понятно, что в переоценке используются только существующие на остатках материалы, но их тоже может быть много.

Satans Claws писал(а) 27. Марта 2012 :: 04:31:
Или это для обхода ограничения по количеству строк в документах (10К, вроде)?
В дбф версии поле номера строки имеет тип nwmeric(4,0), т.е. максимальное число строк без нарушения индексов - 9999.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать