Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
06 Мар 2021, 17:33
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Копирование папки файлов (вместе со всеми подпапками) в 1С:Документооборот  (Прочитано 3363 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ijk987

  • *
  • Сообщений: 3
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2017-08-09
  • Сайт: www.galkov.pro
  • Профессия: Ученик 1С
Всем привет! Помогите, пожалуйста, со следующей задачей. Внедряем в своей организации 1С:Документооборот для совместной работы над проектами (занимаемся проектированием зданий) и хотим все файлы по проектам хранить в отдельных папках определенной структуры (в папке проекта - две папки "Проектная документация" и "Рабочая документация", в каждой из них - подпапки для хранения данных определенных разделов документации ("Раздел 1 Пояснительная записка", "Раздел 2 Проект полосы отвода" и т.д.)). При этом мы хотим соответствующим образом настроить права доступа пользователей к содержимому папок проектов (архитекторы должны иметь полный доступ к папке "Раздел 3 Архитектурные решения", доступ на чтение к папкам других разделов и т.п.).
Проблема в том, что интерфейс программы не предоставляет возможность копировать одну папку в другую вместе со всеми подпапками. Для решения этой задачи мы написали следующую функцию, копирующую "шаблонную" папку в новое расположение:

Процедура КопироватьПапкуФайлов(КопируемаяПапка,НовыйРодитель)

НовПапка = КопируемаяПапка.Скопировать();
НовПапка.Родитель = НовыйРодитель;
НовПапка.Записать();

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

КонецПроцедуры

Однако, при этом права, установленные на старую папку, новой папке не назначаются.

Подскажите, пожалуйста, как можно скопировать права с одной папки на другую?


Оффлайн Golickoff

  • ****
  • Сообщений: 435
  • РЕПУТАЦИЯ: 47
  • КПД: 11%
  • НЕ Есть Null после шести
  • Регистрация: 2015-02-05
  • Сайт: 
  • Профессия: Программист 1С
А
СтараяПапка.Родитель = НовыйРодитель;
СтараяПапка.Записать();
не работает? Мы ведь о группах справочника сейчас, я правильно понял?
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

Оффлайн ijk987

  • *
  • Сообщений: 3
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2017-08-09
  • Сайт: www.galkov.pro
  • Профессия: Ученик 1С
Все верно. Нужно создать копию элемента справочника ПапкиФайлов вместе с дочерними элементами в новом расположении.

Мы хотим создать несколько "шаблонных" папок проектов со всеми необходимыми подпапками и назначенными нужным образом правами и при начале работы над новым проектом просто копировать нужную структуру в папку текущих проектов, то есть нужно именно скопировать. Если же поменять владельца папки, то, как я понимаю, она будет перенесена, и для следующего проекта структуру папок придется создавать заново.

Копирование мы реализовали посредством рекурсии, поскольку вызов метода "Скопировать()" не копирует дочерние элементы. Также оказалось, что помимо этого метод "Скопировать()" не копирует еще и права доступа.

Оффлайн Golickoff

  • ****
  • Сообщений: 435
  • РЕПУТАЦИЯ: 47
  • КПД: 11%
  • НЕ Есть Null после шести
  • Регистрация: 2015-02-05
  • Сайт: 
  • Профессия: Программист 1С
Никогда не сталкивался с документооборотом. Если права на группы справочника настраиваются средствами конфигурации, а не платформы, скорее всего есть какой-то регистр сведений с этими правами. Если это так, нужно разобраться как он работает и при копировании делать запрос к этому регистру, из выборки результатов которого устанавливать права на новые объекты.
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

Оффлайн ijk987

  • *
  • Сообщений: 3
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2017-08-09
  • Сайт: www.galkov.pro
  • Профессия: Ученик 1С
Спасибо за помощь! Все получилось! Реализовал следующим образом:

Процедура КопироватьПапкуФайлов(КопируемаяПапка,НовыйРодитель)

НовПапка = КопируемаяПапка.Скопировать();
НовПапка.Родитель = НовыйРодитель;
НовПапка.Записать();

ИменаРазрешений = Новый Массив;
ИменаРазрешений.Добавить("ЧтениеПапокИФайлов");
ИменаРазрешений.Добавить("ИзменениеПапок");
ИменаРазрешений.Добавить("ДобавлениеПапокИФайлов");
ИменаРазрешений.Добавить("ИзменениеПапокИФайлов");
ИменаРазрешений.Добавить("ПометкаУдаленияПапокИФайлов");
ИменаРазрешений.Добавить("УправлениеПравами");
ИменаРазрешений.Добавить("НаследованиеРазрешено");

НастройкиПравИсх = РегистрыСведений.НастройкиПравОбъектов.Прочитать(КопируемаяПапка);
ОписаниеПравИсх = НастройкиПравИсх.Настройки;
ОписаниеПравКон = РегистрыСведений.НастройкиПравОбъектов.Прочитать(НовПапка.Ссылка).Настройки;
ОписаниеПравКон.Очистить();

Для каждого ОписаниеПраваИсх Из ОписаниеПравИсх Цикл
Если ОписаниеПраваИсх.НастройкаРодителя Тогда
Продолжить;
КонецЕсли;
ОписаниеПраваКон = ОписаниеПравКон.Добавить();
ОписаниеПраваКон.Пользователь = ОписаниеПраваИсх.Пользователь;
ОписаниеПраваКон.ВладелецНастройки = НовПапка.Ссылка;
Для Каждого ИмяРазрешения Из ИменаРазрешений Цикл
Если ЗначениеЗаполнено(ОписаниеПраваИсх[ИмяРазрешения]) Тогда
ОписаниеПраваКон[ИмяРазрешения] = ОписаниеПраваИсх[ИмяРазрешения];
КонецЕсли;
КонецЦикла;
КонецЦикла;
РегистрыСведений.НастройкиПравОбъектов.Записать(НовПапка.Ссылка, ОписаниеПравКон, НастройкиПравИсх.Наследовать);

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

КонецПроцедуры


Теги:
 

Документооборот 8.3. Зависания 1С при нажатии на кнопку "Ознакомился", "Согласовано", "Исполнено"

Автор kiksiРаздел Пользователям "1С - Предприятие 8"

Ответов: 3
Просмотров: 1885
Последний ответ 04 Дек 2019, 06:09
от drv
Объединение конфигураций "Документооборот гос. учреждения" и "Гос. и муницип. закупки"

Автор Рената МарсельевнаРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 2541
Последний ответ 19 Янв 2015, 20:02
от дфтын
Дублируются письма в "1С:Документооборот"

Автор ilyavРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 5031
Последний ответ 04 Сен 2015, 07:28
от Luzena
1С документооборот, версия 1.4.7.101, версия платформы 8.3.5.1248, вопрос быстродействия

Автор Клара_МРаздел Пользователям "1С - Предприятие 8"

Ответов: 1
Просмотров: 2720
Последний ответ 07 Окт 2015, 16:03
от дфтын
1С:Документооборот задачи стартуют только только первым 2-м пользователям (попарный! старт задач).

Автор Aleksey_ArtРаздел Пользователям "1С - Предприятие 8"

Ответов: 0
Просмотров: 1512
Последний ответ 10 Окт 2016, 11:54
от Aleksey_Art

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
106 Сообщений
LexaK
34 Сообщений
antoneus antoneus
32 Сообщений
Алексей_1985_06
29 Сообщений
BuhRust
20 Сообщений
ls600 ls600
18 Сообщений
kah
15 Сообщений
DNN
11 Сообщений
DmitriyF DmitriyF
11 Сообщений
Ивашка
9 Сообщений

* Кто онлайн

  • Точка Гостей: 197
  • Точка Скрытых: 0
  • Точка Пользователей: 1
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal