8.х УТ Дополнительные реквизиты документа

Тема в разделе ""1С:Управление торговлей УТ"", создана пользователем dimon_k, 27 окт 2012.

  1. TopicStarter Overlay
    dimon_k
    Offline

    dimon_k Опытный в 1С Команда форума

    Регистрация:
    17 янв 2011
    Сообщения:
    259
    Симпатии:
    17
    Баллы:
    29
    Добавил в "режиме Предприятия" доп. реквизит к документу РТУ "оригиналы документов в бухгалтерии" (булево:Да, Нет). Как сделать защиту от изменения этого реквизита от всех кроме одного юзверя базы?
  2. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    Ну правильнее было бы делатьпроверку не на юзверя а на наличии определенной роли у этого пользователя через РОЛЬДОСТУПНА(), но а зачем было добавлять реквизит? что в свойства обекта нельзя было добавить свойство?
  3. x_under
    Offline

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

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    13
    Баллы:
    29
    2 Draco: доп реквизит это и есть свойство, просто оно сразу отражается в форме. Добро пожаловать в БСП =)

    А вот запрет редактирования необходимо настраивать только через конфигуратор.
  4. TopicStarter Overlay
    dimon_k
    Offline

    dimon_k Опытный в 1С Команда форума

    Регистрация:
    17 янв 2011
    Сообщения:
    259
    Симпатии:
    17
    Баллы:
    29
    Если можно подробнее как через конфигуратор настроить доступ к дополнительным реквизитам в зависимости от роли. Просто сейчас у меня через подписку на событие "Сохранение" (по документам Заказ/Реализация/Поступление идет проверка пользователя для запрета изменения "чужих" документов) вот и хотел туда еще это дописать но пока не нашел как получать значение этого реквизита. Да и конфигурацию менять нельзя (обновления ставят ИТС-ники)
  5. x_under
    Offline

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

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    13
    Баллы:
    29
    Никак вы не сделаете такое ограничение без корректировки конфы.
    Хотя в УТ 11 можно поискать роль. Вдруг есть стандартная, их же там куча.
  6. Svet42
    Offline

    Svet42 Опытный в 1С

    Регистрация:
    19 окт 2013
    Сообщения:
    200
    Симпатии:
    1
    Баллы:
    29
    Здравствуйте, прошу у вас совета. В общем ситуация такая. Платформа 8.2, УНФ 1.4. Создаю ВПФ договор, которая будет распечатываться из документа СчетНаОплату, нужно добавить доп.реквизит ДатаОбучения, я его добавила в режиме с предприятия, он у меня храниться в ПВХ. И вытащить на печать ДатуОбучения у меня не получается. Подскажите, где я ошибаюсь.
    Код:
    Функция ПечатнаяФорма(МассивОбъектов, ОбъектыПечати, ИмяМакета) Экспорт[/size]
    ТабличныйДокумент = Новый ТабличныйДокумент;
    
    ИмяМакета = "ДоговорЮЛ";
    Запрос = Новый Запрос();
    //Запрос.УстановитьПараметр("ТекущийДокумент", Документы.СчетНаОплату);
    Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
    Запрос.Текст =
    
    "ВЫБРАТЬ
    | СчетНаОплату.Ссылка,
    | СчетНаОплату.Дата КАК ДатаДокумента,
    | СчетНаОплату.Контрагент,
    | СчетНаОплату.Организация,
    | СчетНаОплату.Организация.Префикс КАК Префикс,
    | СчетНаОплату.Контрагент.КонтактноеЛицо КАК КонтактныеЛица,
    | СчетНаОплату.БанковскийСчет,
    | СчетНаОплату.Номер КАК НомерД,
    | СчетНаОплату.Запасы.(
    |  Ссылка,
    |  Номенклатура,
    |  Количество,
    |  Сумма КАК СуммаДок,
    |  Содержание,
    |  ВЫБОР
    |   КОГДА (ВЫРАЗИТЬ(СчетНаОплату.Запасы.Номенклатура.НаименованиеПолное КАК СТРОКА(1000))) = """"
    |    ТОГДА СчетНаОплату.Запасы.Номенклатура.Наименование
    |   ИНАЧЕ ВЫРАЗИТЬ(СчетНаОплату.Запасы.Номенклатура.НаименованиеПолное КАК СТРОКА(1000))
    |  КОНЕЦ КАК Поле1
    | ),
    | СчетНаОплату.ВалютаДокумента
    |ИЗ
    | Документ.СчетНаОплату КАК СчетНаОплату";
    
    Шапка = Запрос.Выполнить().Выбрать();
    
    //ПервыйДокумент = Истина;
    
    Пока Шапка.Следующий() Цикл
    ВыборкаСтрокЗапасы = Шапка.Запасы.Выбрать();
    
    Запрос1 = Новый Запрос;
    ПВХ = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("ДатаОбучения");
    Запрос1.УстановитьПараметр("Значение",ПВХ);
    Запрос1.Текст =
    "ВЫБРАТЬ
    | СчетНаОплату.Номер,
    | СчетНаОплату.ДополнительныеРеквизиты.(
    |  Ссылка,
    |  Свойство,
    |  Значение
    | )
    |ИЗ
    | Документ.СчетНаОплату КАК СчетНаОплату
    |ГДЕ
    | СчетНаОплату.ДополнительныеРеквизиты.Ссылка = &Значение";
    Шапка1 = Запрос1.Выполнить().Выбрать();
    
    //ВыборкаСтрокДополнительныеРеквизиты=Запрос1.ДополнительныеРеквизиты.Выполнить().Выбрать();
    
    
    Макет = ПолучитьМакет("ПФ_MXL_ДоговорЮЛ");
    СведенияОбОрганизации = УправлениеНебольшойФирмойСервер.СведенияОЮрФизЛице(Шапка.Организация, Шапка.ДатаДокумента, ,Шапка.БанковскийСчет);
    СведенияОбКонтрагенте = УправлениеНебольшойФирмойСервер.СведенияОЮрФизЛице(Шапка.Контрагент,Шапка.КонтактныеЛица);
    
    
    ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
    НомерДок= ПрефиксацияОбъектовКлиентСервер.ПолучитьНомерНаПечать(Шапка.НомерД);
    ОбластьМакета.Параметры.ТекстЗаголовка = "Договор №КЦР " 
    +  НомерДок 
    +  "о проведении обучения. " ;
    
    ОбластьМакета.Параметры.Дата=Формат(Шапка.ДатаДокумента, "ДФ=""dd. MM. yyyy""");
    ТабличныйДокумент.Вывести(ОбластьМакета);
    
    ОбластьМакета = Макет.ПолучитьОбласть("Тело");
    ОбластьМакета.Параметры.Контрагент = УправлениеНебольшойФирмойСервер.ОписаниеОрганизации(СведенияОбКонтрагенте, "ПолноеНаименование");
    ОбластьМакета.Параметры.Контакт =УправлениеНебольшойФирмойСервер.ПолучитьКонтактныеЛицаКонтрагента(Шапка.Контрагент ); 
    Пока ВыборкаСтрокЗапасы.Следующий() Цикл
    ОбластьМакета.Параметры.Заполнить(ВыборкаСтрокЗапасы);
    Если ЗначениеЗаполнено(ВыборкаСтрокЗапасы.Содержание) Тогда
    ОбластьМакета.Параметры.Запас = ВыборкаСтрокЗапасы.Содержание;
    Иначе
    ОбластьМакета.Параметры.Запас = УправлениеНебольшойФирмойСервер.ПолучитьПредставлениеНоменклатурыДляПечати(ВыборкаСтрокЗапасы.Запас, );
    КонецЕсли;
    ОбластьМакета.Параметры.Сумма = ВыборкаСтрокЗапасы.СуммаДок;
    СуммаКПрописи = ВыборкаСтрокЗапасы.СуммаДок;
    СуммаТ =УправлениеНебольшойФирмойСервер.СформироватьСуммуПрописью(СуммаКПрописи,Шапка.ВалютаДокумента);
    ОбластьМакета.Параметры.СуммаПрописью= "("+ СуммаТ + ")";
    КонецЦикла;
    Пока Шапка1.Следующий() Цикл
    ВыборкаСтрокДополнительныеРеквизиты = Шапка1.ДополнительныеРеквизиты.Выбрать();
    Пока ВыборкаСтрокДополнительныеРеквизиты.Следующий() Цикл
    ОбластьМакета.Параметры.Заполнить(ВыборкаСтрокДополнительныеРеквизиты);
    ОбластьМакета.Параметры.ДатаОб = Формат(ВыборкаСтрокДополнительныеРеквизиты.Значение,"ДФ=""dd. MM. yyyy""" );
    КонецЦикла; 
    КонецЦикла;
    ТабличныйДокумент.Вывести(ОбластьМакета);
    КонецЦикла;
    ОбластьМакета = Макет.ПолучитьОбласть("Подвал");
    Если ЗначениеЗаполнено(СведенияОбОрганизации.Банк) Тогда
    ОбластьМакета.Параметры.БанкПолучателяПредставление = СведенияОбОрганизации.Банк.Наименование + " " + СведенияОбОрганизации.Банк.Город;
    КонецЕсли;
    ОбластьМакета.Параметры.ИНН = СведенияОбОрганизации.ИНН;
    ОбластьМакета.Параметры.КПП = СведенияОбОрганизации.КПП;
    ОбластьМакета.Параметры.БИКБанкаПолучателя = СведенияОбОрганизации.БИК;
    ОбластьМакета.Параметры.СчетБанкаПолучателяПредставление = СведенияОбОрганизации.КоррСчет;
    ОбластьМакета.Параметры.СчетПолучателяПредставление = СведенияОбОрганизации.НомерСчета;
    ОбластьМакета.Параметры.ПредставлениеЗаказчика = УправлениеНебольшойФирмойСервер.ОписаниеОрганизации(СведенияОбКонтрагенте, "ПолноеНаименование,ЮридическийАдрес,ПочтовыйАдрес,Телефоны,");
    
    ТабличныйДокумент.Вывести(ОбластьМакета);
    
    ОбластьМакета = Макет.ПолучитьОбласть("ПодвалТаб");
    ТабличныйДокумент.Вывести(ОбластьМакета);
    Возврат ТабличныйДокумент;						   
    
    КонецФункции
    
    
  7. Леонидыч
    Offline

    Леонидыч

    Регистрация:
    19 май 2011
    Сообщения:
    42
    Симпатии:
    0
    Баллы:
    1
    И вам не хворать.
    Вот, что есть вот это -
    Код:
    СчетНаОплату.ДополнительныеРеквизиты.Ссылка
    , тип значения Ссылки?
  8. Svet42
    Offline

    Svet42 Опытный в 1С

    Регистрация:
    19 окт 2013
    Сообщения:
    200
    Симпатии:
    1
    Баллы:
    29
    Разобралась, с горем пополам скидываю
    Код:
    , доп реквизит выводит, но вот с циклом где то косячнула, буду дальше разбираться. [/size]
    [size=4]Функция ПечатнаяФорма(МассивОбъектов, ОбъектыПечати, ИмяМакета) Экспорт[/size]
    
    ТабличныйДокумент = Новый ТабличныйДокумент;
    
    ИмяМакета = "ДоговорЮЛ";
    Запрос = Новый Запрос();
    //Запрос.УстановитьПараметр("ТекущийДокумент", Документы.СчетНаОплату);
    Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
    Запрос.Текст =
    
    "ВЫБРАТЬ
    | СчетНаОплату.Ссылка,
    | СчетНаОплату.Дата КАК ДатаДокумента,
    | СчетНаОплату.Контрагент,
    | СчетНаОплату.Организация,
    | СчетНаОплату.Организация.Префикс КАК Префикс,
    | СчетНаОплату.Контрагент.КонтактноеЛицо КАК КонтактныеЛица,
    | СчетНаОплату.БанковскийСчет,
    | СчетНаОплату.Номер КАК НомерД,
    | СчетНаОплату.Запасы.(
    |  Ссылка,
    |  Номенклатура,
    |  Количество,
    |  Сумма КАК СуммаДок,
    |  Содержание,
    |  ВЫБОР
    |   КОГДА (ВЫРАЗИТЬ(СчетНаОплату.Запасы.Номенклатура.НаименованиеПолное КАК СТРОКА(1000))) = """"
    |    ТОГДА СчетНаОплату.Запасы.Номенклатура.Наименование
    |   ИНАЧЕ ВЫРАЗИТЬ(СчетНаОплату.Запасы.Номенклатура.НаименованиеПолное КАК СТРОКА(1000))
    |  КОНЕЦ КАК Запас
    | ),
    | СчетНаОплату.ВалютаДокумента
    |ИЗ
    | Документ.СчетНаОплату КАК СчетНаОплату";
    
    Шапка = Запрос.Выполнить().Выбрать();
    Пока Шапка.Следующий() Цикл
    ВыборкаСтрокЗапасы = Шапка.Запасы.Выбрать();
    
    // 1-ый вариант
    Запрос1 = Новый Запрос;
    ПВХ = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("ДатаОбучения");
    Запрос1.УстановитьПараметр("Свойство",ПВХ);
    Запрос1.УстановитьПараметр("Ссылка",Шапка.Ссылка);
    Запрос1.Текст =
    "ВЫБРАТЬ
    | СчетНаОплатуДополнительныеРеквизиты.Ссылка.Ссылка,
    | СчетНаОплатуДополнительныеРеквизиты.Свойство,
    | СчетНаОплатуДополнительныеРеквизиты.Значение
    |ИЗ
    | Документ.СчетНаОплату.ДополнительныеРеквизиты КАК СчетНаОплатуДополнительныеРеквизиты
    |ГДЕ
    | СчетНаОплатуДополнительныеРеквизиты.Ссылка.Ссылка = &Ссылка
    | И СчетНаОплатуДополнительныеРеквизиты.Свойство = &Свойство";
    
    //Шапка1 = Запрос1.Выполнить().Выбрать();
    ТЗ1 = Запрос1.Выполнить().Выгрузить();
    
    // 2-ой вариант
    //Объект = Шапка.Ссылка.ПолучитьОбъект();
    //ТабДок = Объект.ДополнительныеРеквизиты;
    //ДатаОб = ТабДок.Найти(ПВХ,"Свойство").Значение;
    
    Макет = ПолучитьМакет("ПФ_MXL_ДоговорЮЛ");
    СведенияОбОрганизации = УправлениеНебольшойФирмойСервер.СведенияОЮрФизЛице(Шапка.Организация, Шапка.ДатаДокумента, ,Шапка.БанковскийСчет);
    СведенияОбКонтрагенте = УправлениеНебольшойФирмойСервер.СведенияОЮрФизЛице(Шапка.Контрагент,Шапка.КонтактныеЛица);
    
    
    ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
    НомерДок= ПрефиксацияОбъектовКлиентСервер.ПолучитьНомерНаПечать(Шапка.НомерД);
    ОбластьМакета.Параметры.ТекстЗаголовка = "Договор №КЦР " 
    +  НомерДок 
    +  "о проведении обучения. " ;
    
    ОбластьМакета.Параметры.Дата=Формат(Шапка.ДатаДокумента, "ДФ=""dd. MM. yyyy""");
    ТабличныйДокумент.Вывести(ОбластьМакета);
    
    ОбластьМакета = Макет.ПолучитьОбласть("Тело");
    ОбластьМакета.Параметры.Контрагент = УправлениеНебольшойФирмойСервер.ОписаниеОрганизации(СведенияОбКонтрагенте, "ПолноеНаименование");
    ОбластьМакета.Параметры.Контакт =УправлениеНебольшойФирмойСервер.ПолучитьКонтактныеЛицаКонтрагента(Шапка.Контрагент ); 
    Пока ВыборкаСтрокЗапасы.Следующий() Цикл
    ОбластьМакета.Параметры.Заполнить(ВыборкаСтрокЗапасы);
    Если ЗначениеЗаполнено(ВыборкаСтрокЗапасы.Содержание) Тогда
    ОбластьМакета.Параметры.Запас = ВыборкаСтрокЗапасы.Содержание;
    Иначе
    ОбластьМакета.Параметры.Запас = УправлениеНебольшойФирмойСервер.ПолучитьПредставлениеНоменклатурыДляПечати(ВыборкаСтрокЗапасы.Запас, );
    КонецЕсли;
    ОбластьМакета.Параметры.Сумма = ВыборкаСтрокЗапасы.СуммаДок;
    СуммаКПрописи = ВыборкаСтрокЗапасы.СуммаДок;
    СуммаТ =УправлениеНебольшойФирмойСервер.СформироватьСуммуПрописью(СуммаКПрописи,Шапка.ВалютаДокумента);
    ОбластьМакета.Параметры.СуммаПрописью= "("+ СуммаТ + ")";
    //выводим в макет по 1-му варианту
    ОбластьМакета.Параметры.ДатаОб = Формат(ТЗ1[0].Значение,"ДЛФ=DD");
    //выводим в макет по 2-му варианту
    //ОбластьМакета.Параметры.ДатаОб = Формат(ДатаОб,"ДЛФ=DD");
    КонецЦикла;
    ТабличныйДокумент.Вывести(ОбластьМакета);
    КонецЦикла;
    ОбластьМакета = Макет.ПолучитьОбласть("Подвал");
    Если ЗначениеЗаполнено(СведенияОбОрганизации.Банк) Тогда
    ОбластьМакета.Параметры.БанкПолучателяПредставление = СведенияОбОрганизации.Банк.Наименование + " " + СведенияОбОрганизации.Банк.Город;
    КонецЕсли;
    ОбластьМакета.Параметры.ИНН = СведенияОбОрганизации.ИНН;
    ОбластьМакета.Параметры.КПП = СведенияОбОрганизации.КПП;
    ОбластьМакета.Параметры.БИКБанкаПолучателя = СведенияОбОрганизации.БИК;
    ОбластьМакета.Параметры.СчетБанкаПолучателяПредставление = СведенияОбОрганизации.КоррСчет;
    ОбластьМакета.Параметры.СчетПолучателяПредставление = СведенияОбОрганизации.НомерСчета;
    ОбластьМакета.Параметры.ПредставлениеЗаказчика = УправлениеНебольшойФирмойСервер.ОписаниеОрганизации(СведенияОбКонтрагенте, "ПолноеНаименование,ЮридическийАдрес,ПочтовыйАдрес,Телефоны,");
    ТабличныйДокумент.Вывести(ОбластьМакета);
    ОбластьМакета = Макет.ПолучитьОбласть("ПодвалТаб");
    ТабличныйДокумент.Вывести(ОбластьМакета);
    Возврат ТабличныйДокумент;						   
    
    КонецФункции
    
    
    Функция ОпределитьЗначениеСвойства(ЗначениеСвойства,ВыбОбъект) Экспорт
    
    Перем Стр;
    Стр = "";
    Спр = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения;
    ВыбСпр = Спр.НайтиПоНаименованию(ЗначениеСвойства);
    Если Не ВыбСпр = Спр.ПустаяСсылка() Тогда
    Запрос = Новый Запрос("ВЫБРАТЬ
    | ДополнительныеСведения.Объект,
    | ДополнительныеСведения.Свойство,
    | ДополнительныеСведения.Значение
    |ИЗ
    | РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения
    |ГДЕ
    | ДополнительныеСведения.Объект = &ВыбОбъект
    | И ДополнительныеСведения.Свойство = &ВыбСвойство");
    Запрос.УстановитьПараметр("ВыбОбъект",ВыбОбъект);
    Запрос.УстановитьПараметр("ВыбСвойство",ВыбСпр);
    Выборка = Запрос.Выполнить().Выбрать();
    Выборка.Следующий();
    Стр = Выборка.Значение;
    КонецЕсли;	
    Возврат Стр;	
    
    КонецФункции
    [size=4]
    программный код для тех кто столкнется с такой же проблемой.
  9. Svet42
    Offline

    Svet42 Опытный в 1С

    Регистрация:
    19 окт 2013
    Сообщения:
    200
    Симпатии:
    1
    Баллы:
    29
    да и беда была не с циклом, а просто в запрос нужно было добавить строку
    Где
    | СчетНаОплату.Ссылка В(&МассивОбъектов)", и все выводиться просто замечательно. Если у кого чего не получиться могу скинуть полный код ВПФ.

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