8.х Замена физической таблицы в документе

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем st88, 8 ноя 2012.

  1. TopicStarter Overlay
    st88
    Offline

    st88 Профессионал в 1С Команда форума

    Регистрация:
    18 окт 2012
    Сообщения:
    1.725
    Симпатии:
    28
    Баллы:
    54
    Есть в документе табличная часть "Работы" , вот хотелось бы от неё избавиться на форме документа, и превратить её в какуюнить вертуальную таблицу или может Структуру или может Массив?! Как это организовать, что бы работал вот этот участок кода, но только не со строками таблицы в документе а с ...?

    Для Каждого Стр Из ТаблицаЗадолженности1 Цикл
    НовСтр = Работы.Добавить();
    НовСтр.Абонент = Стр.Абонент;
    НовСтр.Оборудование = Стр.Оборудование;
    НовСтр.Прейскурант = Стр.Прейскурант;
    НовСтр.Количество = Стр.Количество;
    Если ПоПрейскуранту1 Тогда
    ПересчитатьСтрокуТЧ1(НовСтр,ПоПрейскуранту1,ДатаРасчета);
    Иначе
    НовСтр.Сумма = Стр.Сумма;
    Если НовСтр.Количество <> 0 Тогда
    НовСтр.Цена = Стр.Сумма/НовСтр.Количество;
    Иначе
    НовСтр.Цена = 0;
    КонецЕсли;
    КонецЕсли;
    СуммадокументаАбон = СуммадокументаАбон + НовСтр.Сумма;
    КонецЦикла;
  2. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    ну нет никаких проблем поместить эти данные в виртуальную таблицу. просто смотря для чего. если уже документ проведен и вы работаете с ним, то данные по этой ТЧ должны вообще то в каком то регистре храниться и можно запросом оттуда брать. Можно как уже выше сказал - выгрузить в ТЗ и передать ее как парметр в запрос и поместить в виртуальную таблицу
  3. TopicStarter Overlay
    st88
    Offline

    st88 Профессионал в 1С Команда форума

    Регистрация:
    18 окт 2012
    Сообщения:
    1.725
    Симпатии:
    28
    Баллы:
    54
    нет, документ не проведён. я открываю документ и внём эта таблица заполняется. но она мне не нужна, нужно только из одной колонки получать значения строк.

    Пробовал сделать переменную ТаблицаЗначений, но в главном модуле есть обращение такого вида:

    Ежегодно = ДокументОбъект.Метаданные().ТабличныеЧасти[ИмяТЧ].Реквизиты.Найти("Ежегодно") <> Неопределено;

    Соответсвенно ошибка сразу вылетает тут:

    ТабличныеЧасти[ИмяТЧ] ---- нет такого поля.....

    Короче мне надог чтобы этой таблицы не было физически в документе, но и в тоже время была как бы виртуально, чтобы с неё значения получать.
  4. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    либо используйте регистры, а если надо чтобы пользователь ее не видел, то можно на форму то не выводить ее (фактически она останется как табчасть документа и заполняться будет как раньше, только пользователь этого не увидит)
  5. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    ну сделайте ей видимость Ложь или не размещайте ее на форме
  6. TopicStarter Overlay
    st88
    Offline

    st88 Профессионал в 1С Команда форума

    Регистрация:
    18 окт 2012
    Сообщения:
    1.725
    Симпатии:
    28
    Баллы:
    54
    да причём тут форма, на форме её и не размещаю.! Надо чтоб она не хранилась в реквизитах документа!!!! и вообще её там не было!

    Сейчас она там: Документ-Данные-ТабличныеЧасти-Работа-Её реквизиты.....!!!
  7. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    вы опишите задачу - для чего это вам надо, может не в том направлении идете? а так пока не понятно зачем заморачиваться с виртуальной таблицей, которую каждый раз при манипуляциях с документом придется куда нить сохранять...
  8. TopicStarter Overlay
    st88
    Offline

    st88 Профессионал в 1С Команда форума

    Регистрация:
    18 окт 2012
    Сообщения:
    1.725
    Симпатии:
    28
    Баллы:
    54
    да манипуляций с ней будет минимум, создаём документ, заполняем его выковыривая значения из этой таблицы, всё записываем документ. таблица больше не нужна, модифицироваться значения полученные из неё не меняются.
  9. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    а откуда в ней значения то браться будут изначально? ну открыли вы документ и откуда данные?
  10. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    Действительно не совсем понятна задача. Если она Вам не нужна и вы от нее хотите избавиться. Удаляйте ее из реквизитов и просто размещайте на документе ТЧ - создаввайте там колонки руками, что мешает и заполняйте ее
  11. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    если какие то стационарные данные для заполнения, то можно их оформить в структуру типа справочник или перечисление (мысли вслух, догадки)
  12. TopicStarter Overlay
    st88
    Offline

    st88 Профессионал в 1С Команда форума

    Регистрация:
    18 окт 2012
    Сообщения:
    1.725
    Симпатии:
    28
    Баллы:
    54
    Почитайте пост 1 и 3 там всё написано!(код для чего я дал по заполнению этой таблице на основе данных из другой таблицы?!...) Напомню только что речь идёт о таблице "Работы"!

    да не нужна она мне ни в каком физическом виде она, ни как вручную создана, ни как в реквизитах описана. нужна как бы как виртуальная, документ заполнился и всё больше нигде не нужна, типа как временная переменная (токо вот тип что бы был, подходящий под этот код:
    Ежегодно = ДокументОбъект.Метаданные().ТабличныеЧасти[ИмяТЧ].Реквизиты.Найти("Ежегодно") <> Неопределено;

    прочитайте первые посты, прежде....
  13. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    но вот этот код - для Табличной части документа. Под него можно только табличную часть загнать. Если хотите работать с временно созданной таблицей значений, то создавайте ее, заполняйте на основе ее ваш документ. Она будет существовать только на этапе работы, физически ее не будет. НО ваш код вам придется править.

    З.Ы. пост я прочитала, но ни фига не поняла, что у вас за задача. Мне кажется вы либо пытаетесь чужие наработки использовать, но не совсем понимаете зачем они и как работают, либо пытаетесь создать свое, но намудрили в алгоритме. Не в обиду было бы сказано.
  14. TopicStarter Overlay
    st88
    Offline

    st88 Профессионал в 1С Команда форума

    Регистрация:
    18 окт 2012
    Сообщения:
    1.725
    Симпатии:
    28
    Баллы:
    54
    надо подогнать под тот код, т.к. его нельзя редактировать, т.к. это общий модуль конфигурации поставщика и его трогать нельзя.
    Первым делом и была сделана переменная имеющая тип ТаблицаЗначений. но этот вариант как я написал ранее не подходит мне...(
  15. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    а документ тоже нельзя править? сделайте табчасть и используйте ее в свое удовольствие вместе с этим кодом. Зачем заморачиваться с виртуальной таблицей. Не хотите лишние данные хранить? очистите табчасть в определенный момент и все
  16. TopicStarter Overlay
    st88
    Offline

    st88 Профессионал в 1С Команда форума

    Регистрация:
    18 окт 2012
    Сообщения:
    1.725
    Симпатии:
    28
    Баллы:
    54
    Документ после записи править нельзя, тока смотреть или отправить в архив.
    Сейчас так и сделано, хотел просто не награмождать документ ещё одной ТЧ, но видимо другого выхода нет.

    Я так понимаю можно отчистить ТЧ в процедуре ПриЗаписи();
    тупо Работы.Очистить(); ????

    зы: а ТЧ вообще из документа при записи удалить нельзя, этож вроде как объект Формы??? или ... ???
  17. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    табличная часть - это часть документа, вы путаете с табличным полем - вот это элемент формы как раз таки

    а очистить можно и вашим методом

    в своем посте под "править документ" я имела ввиду не данные, а именно структуру
  18. TopicStarter Overlay
    st88
    Offline

    st88 Профессионал в 1С Команда форума

    Регистрация:
    18 окт 2012
    Сообщения:
    1.725
    Симпатии:
    28
    Баллы:
    54
    Я Вас понял. Спасибо. Пока оставлю всё как есть, если начальству не понравится, тогда буду думать что делать дальше.
  19. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    если начальству внешний вид должен понравиться, быстродействие, функционал, а не сам код, то это одно, а если смотреть будут именно организацию функционала - это другое

Поделиться этой страницей