Имя: Пароль:
1C
1С v8
Структура подчиненности документа
0 Aleksey1989
 
11.02.13
10:17
Добрый день. Подскажите, пжл, как можно реализовать следующее.
Есть конфа "Бухгалтерия предприятия 2.0", в ней есть документ "Реализация товаров и услуг". На основании этого документа создается документ "Требование-накладная". Надо сделать так, чтобы при нажатии на кнопки "Структура подчиненности документа" в соответствующих документах "Реализация товаров и услуг" и "Требование-накладная" отражалась взаимосвязь этих документов?

П.с. в документе "Требование-накладная" эта взаимосвязь отражается - это произошло в результате добавления в документ "ТребованиеНакладная" нового реквизита с типом "РеализацияТоваровИУслуг", а вот в документе Реализация товаров и услуг никакой взаимосвязи нет.
1 Живой Ископаемый
 
11.02.13
10:19
А ты посмотрел код процедуры которая выполняется прр нажатии на кнопку структура подчиненности?
2 Smallrat
 
11.02.13
10:23
Там всё сделано на критериях отбора - можно исправить критерии, а можно поправить код получения подчиненных документов - это чуть сложнее, но меньше проблем при обновлении:
Код тут - Общие модули - ПолныеПрава.ПолучитьСписокПодчиненныхДокументов()
3 Serg_1960
 
11.02.13
10:25
эээ... РаботаСДиалогами.ПоказатьСтруктуруПодчиненностиДокумента()
4 Trainee
 
11.02.13
10:27
(2) В типовой это делается перебором всех метаданных "вверх" и "вниз".
И да, есть такая штука- критерий отбора, для "вниз".
5 Бледно Золотистый
 
11.02.13
10:28
(2) +1, добавь галочку для нового реквизита в КритерииОтбора - СвязанныеДокументы
6 Aleksey1989
 
11.02.13
10:31
(1) Мельком. В результате этого просмотра я и понял, что для того, чтобы в структуре прослеживалась взаимосвязь, в каком-либо документе должен быть реквизит, имеющий тип родительского документа.
7 and2
 
11.02.13
10:33
(6) у тебя он есть.
имхо, критерий - самое то.
и даже при обновлении - даже если забудешь - легко поправить.
8 Aleksey1989
 
11.02.13
10:33
(5) Спасибо, помогло. Только критерий отбора называется "СтруктураПодчиненности".
9 Smallrat
 
11.02.13
10:34
код дорабатывается примерно так:


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


Я выдернул добавленный код из своей ЗУП и не тестировал, так  что вероятно надо будет выпилить ошибки чтобы заработало (там хоть и сделано очень похоже, но все немного по другому, унификация же, едрить).
10 Trainee
 
11.02.13
10:36
(8) Процедура ВывестиРодительскиеДокументы(ДокументСсылка)
И Процедура ВывестиПодчиненныеДокументы(СтрокаДерева)
- при этом доки могут быть не связаны реквизитами.
А критерий отбора, если такой реквизит есть.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn