Версия для печати темы (https://pro1c.org.ua/index.php?s=3d7648e5f486f32f4bc269498c04ebe0&showtopic=5401)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование управляемых форм 1С 8.2 _ Дерево подчинённости, как и что?

Автор: Gertz 17.11.11, 10:01

Доброе утро!
Начну с того что я в 1С недавно и я в нем не селен, так сказать чайник еще.
Вот поставлена задача: В Документе ЗаказПокупателей в ФормеСписка нужно сделать ДеревоПодчиненности , чтобы при нажатии галочки выводилось значимое справочника.
Все что я смог сделать на данный момент - это добавить ТабличноеПоле в Форму списка и флажок. Как их связать и какие процедуры нужны для того, чтобы сделать задание? Может я не совсем корректно выразился, но походу обсуждения темы буду стараться объяснять подробнее.

Автор: Gertz 17.11.11, 11:40

Ну выручайте. Вроде сделал. Только не совсем то как хотелось бы. При нажатии галочки выводит только отдельным окном и не все содержимое, а только Заказ покупателя сумму и валюту.

Автор: Vofka 17.11.11, 11:43

Экстрасенсов, к сожалению, нету. Пора отпусков нынче.

Автор: Gertz 17.11.11, 11:54

Может,что-то уточнить нужно? Что-то не так описал?

Автор: Vofka 17.11.11, 12:21

Лично я вообще не понял какова задача.

Автор: Gertz 17.11.11, 12:27

Добавить дерево документов "Подчиненные документы" в форму списка "Заказы покупателей".В форму списка "Заказы покупателей"
Заполнение табличной части происходит по алгоритму ОбщейФормы.ФормаСтруктурыПодчиненности.
При смене документа дерево документов должно перезаполняться (очищается, а потом заполняется по текущему документу).
Включаться и отключаться отображение дерева должно по настройке в контекстном меню.
Должна быть кнопка "Отображать структуру подчиненности" тип Булево для формы.
Если кнопка нажата, то дерево документов отображается, если нет, то не отображается. Пользователь сам будет управлять.
Кнопка нужна для производительности.

Думаю, что так будет понятнее.

Автор: Vofka 17.11.11, 12:30

Теперь понятней. Только непонятно в чем конкретно вопрос? Или надо написать готовый код, который вы скопипастите и оно взлетит?

Автор: Gertz 17.11.11, 12:35

Был бы благодарен за пошаговые действия, которые мне надо сделать.

Процедура ОтображатьСтруктуруПодчиненностиПриИзменении(Элемент)
    
    Если ЭлементыФормы.Список.ТекущиеДанные = Неопределено Тогда
        Возврат
    КонецЕсли;
    
    РаботаСДиалогами.ПоказатьСтруктуруПодчиненностиДокумента(ЭтаФорма.ЭлементыФормы.Список.ТекущаяСтрока);
КонецПроцедуры

Так сделал я, но я знаю, что это не тот вариант что мне нужен.

Автор: Vofka 17.11.11, 12:42

Вы задаете слишком абстрактные вопросы. Поэтому за ответ на такой вопрос в виде

Цитата
пошаговые действия, которые мне надо сделать

я захочу денег. А конкретный вопрос вы сформулировать не можете. Поэтому я умываю руки.

Автор: Gertz 17.11.11, 13:14

Помогите с кодом. Я хотел сам сделать, но у меня не получиться. Т.к. я не могу понять структуру Дерева подчиненности!

Автор: MH.z 17.11.11, 15:00

Процедура ОтображатьСтруктуруПодчиненностиПриИзменении(Элемент)
    
      ЭлементыФормы.ТабличноеПоле.Видимость = ОтображатьСтруктуруПодчиненности;
    
КонецПроцедуры

Дальше не знаю как. Сам мучаюсь над таким sad.gif

Был бы благодарен если кто нибудь поможет в написании кода.
А конкретно, когда я ставлю курсором на документ и ставлю галочку вылетало Табличное поле с данными того документа на котором стоит курсор!?

Автор: Ardi 17.11.11, 16:19

Процедура СписокПриАктивизацииСтроки(Элемент)
    ЭлементыФормы.ТабличноеПоле1.Значение = ПолныеПрава.ПолучитьСписокПодчиненныхДокументов(Элемент.ТекущаяСтрока.Ссылка);
    ЭлементыФормы.ТабличноеПоле1.создатьколонки();
КонецПроцедуры

Автор: MH.z 18.11.11, 9:32

Что-то не то. Выдает ошибку.

{Документ.ЗаказПокупателя.Форма.ФормаСписка.Форма(99)}: Поле объекта не обнаружено (Ссылка)
      ЭлементыФормы.ТабличноеПоле1.Значение = ПолныеПрава.ПолучитьСписокПодчиненныхДокументов(Элемент.ТекущаяСтрока.Ссылка);


Возможно ли что параметр не правильно передан?

Автор: MH.z 18.11.11, 10:50

Сделал следующим методом

Функция ПолучитьСписокПодчиненныхДокументов(ДокументОснование) Экспорт
      
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
                   |    СтруктураПодчиненности.Ссылка
                   |ИЗ
                   |    КритерийОтбора.СвязанныеДокументы(&ЗначениеКритерияОтбора) КАК СтруктураПодчиненности";
  
    Запрос.УстановитьПараметр("ЗначениеКритерияОтбора", ДокументОснование);
    Возврат Запрос.Выполнить().Выгрузить();
  
КонецФункции


И все равно выдает туже ошибку. Подскажите где ошибся?

Автор: MH.z 18.11.11, 14:23

В общем все сделал. Может кому пригодиться когда нибудь.
В Общем модуле "ПолныеПрава"

Функция ПолучитьПодчиненныеДокументы(тЗаказ) Экспорт
    
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ЗначениеКритерияОтбора", тЗаказ);
    Запрос.Текст =  "ВЫБРАТЬ РАЗРЕШЕННЫЕ
    | Запрос.Ссылка КАК Ссылка,
    | Запрос.Ссылка.Дата КАК Дата,
    | ЕСТЬNULL(Запрос.Ссылка.СуммаДокумента, 0) КАК СуммаДокумента
    |ИЗ
    | (ВЫБРАТЬ
    |  ВозвратТоваровОтПокупателя.Ссылка КАК Ссылка
    | ИЗ
    |  Документ.ВозвратТоваровОтПокупателя КАК ВозвратТоваровОтПокупателя
    | ГДЕ
    |  ВозвратТоваровОтПокупателя.Сделка = &ЗначениеКритерияОтбора
    |
    | ОБЪЕДИНИТЬ
    |
    | ВЫБРАТЬ
    |  ВозвратТоваровОтПокупателя.Ссылка
    | ИЗ
    |  Документ.ВозвратТоваровОтПокупателя.Товары КАК ВозвратТоваровОтПокупателя
    | ГДЕ
    |  ВозвратТоваровОтПокупателя.ЗаказПокупателя = &ЗначениеКритерияОтбора
    |
    | ОБЪЕДИНИТЬ
    |
    | ВЫБРАТЬ
    |  ЗаказПоставщику.Ссылка
    | ИЗ
    |  Документ.ЗаказПоставщику КАК ЗаказПоставщику
    | ГДЕ
    |  ЗаказПоставщику.ДокументОснование = &ЗначениеКритерияОтбора
    |
    | ОБЪЕДИНИТЬ
    |
    | ВЫБРАТЬ
    |  ЗаказПоставщику.Ссылка
    | ИЗ
    |  Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщику
    | ГДЕ
    |  ЗаказПоставщику.Заказ = &ЗначениеКритерияОтбора
    |
    | ОБЪЕДИНИТЬ
    |
    | ВЫБРАТЬ
    |  ЗакрытиеЗаказовПокупателей.Ссылка
    | ИЗ
    |  Документ.ЗакрытиеЗаказовПокупателей.Заказы КАК ЗакрытиеЗаказовПокупателей
    | ГДЕ
    |  ЗакрытиеЗаказовПокупателей.ЗаказПокупателя = &ЗначениеКритерияОтбора
    |
    | ОБЪЕДИНИТЬ
    |
    | ВЫБРАТЬ
    |  КорректировкаЗаказаПокупателя.Ссылка
    | ИЗ
    |  Документ.КорректировкаЗаказаПокупателя КАК КорректировкаЗаказаПокупателя
    | ГДЕ
    |  КорректировкаЗаказаПокупателя.ЗаказПокупателя = &ЗначениеКритерияОтбора
    |
    | ОБЪЕДИНИТЬ
    |
    | ВЫБРАТЬ
    |  НалоговаяНакладная.Ссылка
    | ИЗ
    |  Документ.НалоговаяНакладная КАК НалоговаяНакладная
    | ГДЕ
    |  НалоговаяНакладная.ДокументОснование = &ЗначениеКритерияОтбора
    |  ИЛИ НалоговаяНакладная.ДокументОснование.Сделка = &ЗначениеКритерияОтбора
    |
    | ОБЪЕДИНИТЬ
    |
    | ВЫБРАТЬ
    |  ПлатежноеПоручениеВходящее.Ссылка
    | ИЗ
    |  Документ.ПлатежноеПоручениеВходящее КАК ПлатежноеПоручениеВходящее
    | ГДЕ
    |  ПлатежноеПоручениеВходящее.ДокументОснование = &ЗначениеКритерияОтбора
    |
    | ОБЪЕДИНИТЬ
    |
    | ВЫБРАТЬ
    |  ПлатежноеПоручениеВходящее.Ссылка
    | ИЗ
    |  Документ.ПлатежноеПоручениеВходящее.РасшифровкаПлатежа КАК ПлатежноеПоручениеВходящее
    | ГДЕ
    |  ПлатежноеПоручениеВходящее.Сделка = &ЗначениеКритерияОтбора
    |
    | ОБЪЕДИНИТЬ
    |
    | ВЫБРАТЬ
    |  ПлатежноеПоручениеВходящее.Ссылка
    | ИЗ
    |  Документ.ПлатежноеПоручениеВходящее.РасшифровкаПлатежа КАК ПлатежноеПоручениеВходящее
    | ГДЕ
    |  ПлатежноеПоручениеВходящее.ДокументПланированияПлатежа = &ЗначениеКритерияОтбора
    |
    | ОБЪЕДИНИТЬ
    |
    | ВЫБРАТЬ
    |  ПлатежноеТребованиеВыставленное.Ссылка
    | ИЗ
    |  Документ.ПлатежноеТребованиеВыставленное КАК ПлатежноеТребованиеВыставленное
    | ГДЕ
    |  ПлатежноеТребованиеВыставленное.ДокументОснование = &ЗначениеКритерияОтбора
    |
    | ОБЪЕДИНИТЬ
    |
    | ВЫБРАТЬ
    |  ПлатежноеТребованиеВыставленное.Ссылка
    | ИЗ
    |  Документ.ПлатежноеТребованиеВыставленное.РасшифровкаПлатежа КАК ПлатежноеТребованиеВыставленное
    | ГДЕ
    |  ПлатежноеТребованиеВыставленное.Сделка = &ЗначениеКритерияОтбора
    |
    | ОБЪЕДИНИТЬ
    |
    | ВЫБРАТЬ
    |  ПлатежноеТребованиеВыставленное.Ссылка
    | ИЗ
    |  Документ.ПлатежноеТребованиеВыставленное.РасшифровкаПлатежа КАК ПлатежноеТребованиеВыставленное
    | ГДЕ
    |  ПлатежноеТребованиеВыставленное.ДокументПланированияПлатежа = &ЗначениеКритерияОтбора
    |
    | ОБЪЕДИНИТЬ
    |
    | ВЫБРАТЬ
    |  ПлатежноеТребованиеПоручениеВыставленное.Ссылка
    | ИЗ
    |  Документ.ПлатежноеТребованиеПоручениеВыставленное.РасшифровкаПлатежа КАК ПлатежноеТребованиеПоручениеВыставленное
    | ГДЕ
    |  ПлатежноеТребованиеПоручениеВыставленное.Сделка = &ЗначениеКритерияОтбора
    |
    | ОБЪЕДИНИТЬ
    |
    | ВЫБРАТЬ
    |  ПлатежноеТребованиеПоручениеВыставленное.Ссылка
    | ИЗ
    |  Документ.ПлатежноеТребованиеПоручениеВыставленное.РасшифровкаПлатежа КАК ПлатежноеТребованиеПоручениеВыставленное
    | ГДЕ
    |  ПлатежноеТребованиеПоручениеВыставленное.ДокументПланированияПлатежа = &ЗначениеКритерияОтбора
    |
    | ОБЪЕДИНИТЬ
    |
    | ВЫБРАТЬ
    |  ПриходныйКассовыйОрдер.Ссылка
    | ИЗ
    |  Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер
    | ГДЕ
    |  ПриходныйКассовыйОрдер.ДокументОснование = &ЗначениеКритерияОтбора
    |
    | ОБЪЕДИНИТЬ
    |
    | ВЫБРАТЬ
    |  ПриходныйКассовыйОрдер.Ссылка
    | ИЗ
    |  Документ.ПриходныйКассовыйОрдер.РасшифровкаПлатежа КАК ПриходныйКассовыйОрдер
    | ГДЕ
    |  ПриходныйКассовыйОрдер.Сделка = &ЗначениеКритерияОтбора
    |
    | ОБЪЕДИНИТЬ
    |
    | ВЫБРАТЬ
    |  ПриходныйКассовыйОрдер.Ссылка
    | ИЗ
    |  Документ.ПриходныйКассовыйОрдер.РасшифровкаПлатежа КАК ПриходныйКассовыйОрдер
    | ГДЕ
    |  ПриходныйКассовыйОрдер.ДокументПланированияПлатежа = &ЗначениеКритерияОтбора
    |
    | ОБЪЕДИНИТЬ
    |
    | ВЫБРАТЬ
    |  РасходныйКассовыйОрдер.Ссылка
    | ИЗ
    |  Документ.РасходныйКассовыйОрдер КАК РасходныйКассовыйОрдер
    | ГДЕ
    |  РасходныйКассовыйОрдер.РасшифровкаПлатежа.Сделка = &ЗначениеКритерияОтбора
    |
    | ОБЪЕДИНИТЬ
    |
    | ВЫБРАТЬ
    |  РеализацияТоваровУслуг.Ссылка
    | ИЗ
    |  Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    | ГДЕ
    |  РеализацияТоваровУслуг.Сделка = &ЗначениеКритерияОтбора
    |
    | ОБЪЕДИНИТЬ
    |
    | ВЫБРАТЬ
    |  РеализацияТоваровУслуг.Ссылка
    | ИЗ
    |  Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслуг
    | ГДЕ
    |  РеализацияТоваровУслуг.ЗаказПокупателя = &ЗначениеКритерияОтбора
    |
    | ОБЪЕДИНИТЬ
    |
    | ВЫБРАТЬ
    |  РеализацияТоваровУслуг.Ссылка
    | ИЗ
    |  Документ.РеализацияТоваровУслуг.Услуги КАК РеализацияТоваровУслуг
    | ГДЕ
    |  РеализацияТоваровУслуг.ЗаказПокупателя = &ЗначениеКритерияОтбора
    |
    | ОБЪЕДИНИТЬ
    |
    
    | ВЫБРАТЬ
    |  РеализацияТоваровУслуг.Ссылка
    | ИЗ
    |  Документ.РеализацияТоваровУслуг.ДокументыРасчетовСКонтрагентом КАК РеализацияТоваровУслуг
    | ГДЕ
    |  РеализацияТоваровУслуг.Сделка = &ЗначениеКритерияОтбора
    |
    | ОБЪЕДИНИТЬ
    |
    | ВЫБРАТЬ
    |  РезервированиеТоваров.Ссылка
    | ИЗ
    |  Документ.РезервированиеТоваров КАК РезервированиеТоваров
    | ГДЕ
    |  РезервированиеТоваров.Заказ = &ЗначениеКритерияОтбора) КАК Запрос
    |
    |УПОРЯДОЧИТЬ ПО
    | Дата";
    Результат = Запрос.Выполнить().Выгрузить();
    Возврат Результат;
КонецФункции


После в форме списка документа "ЗаказПокупателя"
В свойстве табличного поля в событиях "СписокПриАктивизацииСтроки"

Процедура СписокПриАктивизацииСтроки(Элемент)
     ТабличноеПоле1.Очистить();

Если ЭтаФорма.ЭлементыФормы.Список.ТекущаяСтрока <> Неопределено Тогда
  тСписокДокТ = ПолныеПрава.ПолучитьПодчиненныеДокументы(ЭтаФорма.ЭлементыФормы.Список.ТекущаяСтрока);
  Для Каждого тСписокДок Из тСписокДокТ Цикл
   НовСтр = ТабличноеПоле1.Добавить();
   НовСтр.Документ = тСписокДок.Ссылка;
     КонецЦикла;
КонецЕсли;
КонецПроцедуры

Автор: Ardi 18.11.11, 18:07

Цитата(MH.z @ 18.11.11, 11:50) *
    Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
                   |    СтруктураПодчиненности.Ссылка
                   |ИЗ
                   |    КритерийОтбора.СвязанныеДокументы(&ЗначениеКритерияОтбора) КАК СтруктураПодчиненности";

А это что за страшный ужас был???

Автор: MH.z 18.11.11, 23:20

Это я действовал методом тыка так сказать. Я же в это деле еще н спец, поэтому пробовал методом подбора.

Автор: MATEVI 18.11.11, 23:46

Ознакомтесь с http://pro1c.org.ua/index.php?s=&showtopic=4626&view=findpost&p=31321
Или посмотрите групповое проведение документов

Автор: Ardi 18.11.11, 23:49

Цитата(MATEVI @ 19.11.11, 0:46) http://pro1c.org.ua/index.php?act=findpost&pid=37143
Или посмотрите групповое проведение документов

По всем документам ищет код из поста 12.

Автор: MATEVI 19.11.11, 0:10

Цитата(Ardi @ 18.11.11, 23:49) *
По всем документам ищет код из поста 12.

Так я не спорю smile.gif Заслуга Ваша smile.gif Хотя я бы посмотрел как это реализовано в типовой. Хотя это и кусочек типовой smile.gif
Просто если надо не по всем, а по тому списку из запроса. ТО лучше его структрурировать как то и урезать. Вы так не считатете?

Автор: Ardi 19.11.11, 0:15

а в посте 15 уже структурировано и урезано.

Автор: MATEVI 19.11.11, 0:24

Цитата(Ardi @ 19.11.11, 0:15) *
а в посте 15 уже структурировано и урезано.

Ну да на пол экрана smile.gif

Автор: Ardi 19.11.11, 0:39

Цитата(MATEVI @ 19.11.11, 1:24) *
Ну да на пол экрана smile.gif

это 7 процентов от исходного текста запроса.
И в генератор это засунуть... оооочень много кода понадобится.

Автор: MATEVI 19.11.11, 0:52

Цитата(Ardi @ 19.11.11, 0:39) *
это 7 процентов от исходного текста запроса.
И в генератор это засунуть... оооочень много кода понадобится.

Исходный код, а не результат скопированного запроса в студию.

Автор: MH.z 25.11.11, 14:08

Вот + к тому заданию что было, есть еще одно:
Добавить в документ "заказ покупателя" вкладку "структура подчиненности"
На эту вкладку выводится структура подчиненности.
Структура подчиненности выводится не при открытии, а при переходе на вкладку.
Но т.к. я заболел на работе я это не могу сделать. А дома я чтобы не париться скопировал все предыдущее заданию из форума и вставил в нужные места, но оно не работает. Кто может сказать почему? Возможно что платформа не подходит?

Автор: Vofka 25.11.11, 15:38

Цитата
Возможно что платформа не подходит?

А может программист? bk.gif

Автор: MH.z 25.11.11, 15:58

Может. smile.gif Я же и не говорю что я "про" Я учусь только.

Автор: Vofka 25.11.11, 16:01

MH.z, эта тема, по-моему, зашла в тупик. Лично я вообще запутался что сделано, а что надо сделать.

Или это только у меня так?

Автор: MH.z 25.11.11, 16:27

Ранее я писал как я сделал задание. Выложил коды и писал куда и что. Сидя дома, чтобы не писать все с нуля, я просто скопировал мною написанное Запрос в общий модуль ПолныеПрава и тело процедуры СписокПриАктивацииСтроки. И при проверке у меня ничего не сработало. Вот не могу понять почему и надеюсь на то, что мне тут подскажут причину.

Автор: logist 25.11.11, 16:30

Цитата(MH.z @ 25.11.11, 16:27) *
тело процедуры СписокПриАктивацииСтроки.

Процедура связана с самим событием в свойствах списка?

Автор: MH.z 25.11.11, 16:31

Да.

Автор: mister-x 25.11.11, 16:41

а в властивостях цього елементу форми - список, заповнена необхідна подія (ПриАктивизацииСтроки) цією процедурою, тобто чи стоїть у полі ПриАктивизацииСтроки ця процедура?

Автор: MH.z 25.11.11, 16:43

Да заполнено. Проверил уже все 100 раз если не больше

Автор: logist 25.11.11, 16:43

Поставим вопрос по другому - что конкретно не работает? Выдает какие-то ошибки?

Автор: MH.z 25.11.11, 16:46

Цитата(logist @ 25.11.11, 16:43) *
Поставим вопрос по другому - что конкретно не работает? Выдает какие-то ошибки?

Ошибок нет. Значит при проставлении галочки у меня появляется ТабПоле в котором отображается содержимое документа. А в данный момент я ставлю галочку у меня появляется ТабПоле но пустое и при этом курсор стоит на одном из документов.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua