Исправление ошибки работы с RLS в обработке "Диадок стандартный модуль"

07.10.22

Задачи пользователя - Адаптация типовых решений

У пользователя стоят ограничения RLS на документе "РеализацияТоваровУслуг" по подразделению(пользователь видит документы только по своему подразделению). Обработка "Диадок стандартный модуль" выдает в таком случае ошибку, потому что пытается показать пользователю все документы без учета RLS.

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

1. Выгружаем модули из обработки Диадок на диск.

 

2.    Добавил разрешенные в запросы

 

1.

2.

2.    Добавление новой строки в список обернул в попытку

 

3.    Потом эти измененные модули нужно обратно загрузить в обработку диадок

 

Тестировал: 

1С:Комплексная автоматизация 2 (2.4.9.98)

Платформа 1С:Предприятие 8.3 (8.3.16.1148)

Diadoc1C_UF_5_47_01_2

Диадок

См. также

Табличная часть в доп. реквизитах и формирование таблиц в шаблоне docx для 1С:ДО 3.0

Адаптация типовых решений Платформа 1С v8.3 1С:Документооборот Россия Платные (руб)

Расширение конфигурации для «1С:Документооборот КОРП», редакция 3.0. позволяет: 1.использовать произвольные табличные части в качестве дополнительных реквизитов к документу; 2 использовать произвольные табличные части в шаблонах в формате docx для автоматического заполнения таблиц.

29400 руб.

29.06.2023    4452    9    4    

18

Расширение для 1С:УНФ. Автоматическое снятие резервов в Заказах покупателей

Логистика, склад и ТМЦ Адаптация типовых решений Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)

Чтобы не допустить путаницы с обещаниями клиентам и для четкого контроля исполнения заказов мы используем резервирование товаров. Мы доработали УНФ, чтобы она автоматически отменяла старые резервы и не мешала эффективно продавать.

7200 руб.

02.08.2023    2952    4    0    

19

Создать на основании - своя кнопка (БСП). Проблема двух подменю Создать на основании

БСП (Библиотека стандартных подсистем) Адаптация типовых решений Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

Понадобилось в подменю "Создать на основании" добавить свою команду, которая открывает обработку. В процессе доработок появилась проблема двух подменю "Создать на основании". В статье о том, как решились проблемы.

01.03.2024    1282    dimanich70    6    

13

Доработка отчета "Связанные документы" (структура подчиненности) для вывода объектов из любого расширения

Адаптация типовых решений Платформа 1С v8.3 1С:Управление торговлей 11 Россия Абонемент ($m)

Доработка типового отчета "Связанные документы" позволяет просто и быстро расширять состав объектов для построения структуры подчиненности документов, используя объекты основной конфигурации и любых расширений.

1 стартмани

27.10.2023    1994    13    avmartynov    10    

43

Печать непроведенных документов для УТ, КА, ERP. Настройка печати по пользователям, документам и печатным формам

Пакетная печать Печатные формы Адаптация типовых решений Универсальные функции Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.

2 стартмани

22.08.2023    2071    21    progmaster    7    

3
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. charushkin 104 11.05.21 15:09 Сейчас в теме
(0) Спасибо за предложенное решение. Отмечу только, что стоит отправить письмо с описанием проблемы и способом воспроизведения по адресу diadoc@skbkontur.ru. Тогда не придется кастомизировать модуль, ошибка будет рассмотрена и исправлена в новой версии модуля.
leonidol; John_d; +2 Ответить
12. John_d 5277 01.07.21 09:59 Сейчас в теме
(1) прошло два месяца. Проблема так и не решена.
Diadoc1C_UF_5_49_05
Вот мне и пригодилась моя статья, чтобы самостоятельно заново исправлять ошибку в новой версии.
Прикрепленные файлы:
13. charushkin 104 01.07.21 11:48 Сейчас в теме
(12) А вы сообщали об ошибке на линию тех. поддержки?
2. Дмитрий74Чел 234 11.05.21 16:52 Сейчас в теме
За попытку без обработки исключения - по рукам надавать!
artbear; leonidol; sinichenko_alex; work.sable; TimkoNzt; charushkin; +6 Ответить
6. sinichenko_alex 178 12.05.21 06:34 Сейчас в теме
7. TimurD 6 12.05.21 16:53 Сейчас в теме
(6) Дык этож из заповедей ректального программирования: Вечно работающий код. Не нада юзера пугать)))
charushkin; +1 Ответить
8. John_d 5277 12.05.21 18:11 Сейчас в теме
(2) В исключение попадают документы с ошибками, к которым у пользователя нет доступа и эти документы не выводятся в табличную часть. Как вы предлагаете обрабатывать документы к которым нет доступа у пользователя?
9. charushkin 104 13.05.21 14:29 Сейчас в теме
(8) Как минимум нужно записать ошибку в ЖР. В идеале - найти способ исправления.
10. John_d 5277 14.05.21 09:31 Сейчас в теме
(9) Если писать в ЖР, то нужно будет в конкретном случае исключить ошибку доступа к документу. Иначе пользователь выберет период пол года 10000 документов из которых у него доступ есть к 1000 документам его подразделения и нужно будет в журнал сделать 9000 записей.
11. charushkin 104 14.05.21 09:43 Сейчас в теме
(10) Вы в попытку обернули огромный кусок кода. И таким образом замаскируете вообще любые ошибки (в том числе ошибки доступа к документу). Это неправильно. Ошибки нужно не прятать, а находить и исправлять. Искать ошибки можно в рантайме (убрать попытку и разбираться с каждой ошибкой пока не надоест) или в спокойном режиме, анализируя журнал регистрации (для этого нужно оставить попытку и записывать инфу об ошибках).
onsi; kstukov; artbear; Bassgood; +4 Ответить
3. TimkoNzt 11.05.21 18:33 Сейчас в теме
Эпическое исправление, конечно. Хорошо, что в одну статью уместили, а не растянули на три)
Ошибке этой года два, странно, что разрабы исправлять не хотят. У модуля Диадока очень гибкая система обработчиков через внешний модуль. Уверен, там можно было найти событие для вашего случая не меняя обработку. Второй вариант - скопировать модуль интеграции и пилить его под свою конфу, обновляться объединением.
4. kako1toxren 11.05.21 20:13 Сейчас в теме
Вроде бы в последних версиях обработки поправили этот момент.
А можете показать примеры работы с подключаемой обработкой?
14. rozer 306 12.05.23 14:15 Сейчас в теме
(4) нет, даже крайний Универсальный модуль версии 4.31 не работает с RLS.

Я пошел немного другим путем:

1) в Diadoc_4_31_0.epf в табчасть СписокДокументов добавил реквизит "врт_СкрытьСтроку" (булево)
2) в Подключаемом модуле добавил (комменты //+++//roz //---//roz):

// Обработчики заполнения доп. колонок, которые задали в ПолучитьНастройкиДополнительныхКолонокСпискаДокументов
Функция ПослеОбновленияСпискаДокументов(Параметры)
	
	//http://1c-pro-docs.diadoc.ru/ru/latest/func/pm/Posle_Obnovleniya_Spiska_Dokumentov.html

	СписокДокументов	= Параметры.СписокДокументов;
	Режим				= Параметры.Режим;
	
	//+++//roz//2021-11-12 [93078]
	Если Режим = "ПолученныеДокументы" ИЛИ Режим = "ОтправленныеДокументы" Тогда
		
		Запрос = Новый Запрос(
		"ВЫБРАТЬ
		|	ТЧСписокДокументов.НомерСтроки КАК НомерСтроки
		|ПОМЕСТИТЬ вт_СписокДокументов
		|ИЗ
		|	&СписокДокументов КАК ТЧСписокДокументов
		|;
		|
		|////////////////////////////////////////////////////////////­////////////////////
		|ВЫБРАТЬ
		|	ТЧСписокДокументовСКонтрагентами.НомерСтроки КАК НомерСтроки,
		|	ТЧСписокДокументовСКонтрагентами.Контрагент КАК Контрагент,
		|	ТЧСписокДокументовСКонтрагентами.Организация КАК Организация
		|ПОМЕСТИТЬ вт_СписокДокументовСКонтрагентами
		|ИЗ
		|	&СписокДокументовСКонтрагентами КАК ТЧСписокДокументовСКонтрагентами
		|;
		|
		|////////////////////////////////////////////////////////////­////////////////////
		|ВЫБРАТЬ РАЗРЕШЕННЫЕ
		|	вт_СписокДокументовСКонтрагентами.НомерСтроки КАК НомерСтроки,
		|	вт_СписокДокументовСКонтрагентами.Контрагент КАК Контрагент,
		|	вт_СписокДокументовСКонтрагентами.Организация КАК Организация
		|ПОМЕСТИТЬ вт_СписокДокументовСКонтрагентамиРазрешенные
		|ИЗ
		|	вт_СписокДокументовСКонтрагентами КАК вт_СписокДокументовСКонтрагентами
		|ГДЕ
		|	ВЫБОР
		|			КОГДА ТИПЗНАЧЕНИЯ(вт_СписокДокументовСКонтрагентами.Контрагент) = ТИП(Справочник.Контрагенты)
		|				ТОГДА ВЫРАЗИТЬ(вт_СписокДокументовСКонтрагентами.Контрагент КАК Справочник.Контрагенты).Ссылка ЕСТЬ НЕ NULL 
		|			КОГДА ТИПЗНАЧЕНИЯ(вт_СписокДокументовСКонтрагентами.Контрагент) = ТИП(Справочник.Организации)
		|				ТОГДА ВЫРАЗИТЬ(вт_СписокДокументовСКонтрагентами.Контрагент КАК Справочник.Организации).Ссылка ЕСТЬ НЕ NULL 
		|			КОГДА ТИПЗНАЧЕНИЯ(вт_СписокДокументовСКонтрагентами.Организация) = ТИП(Справочник.Организации)
		|				ТОГДА ВЫРАЗИТЬ(вт_СписокДокументовСКонтрагентами.Организация КАК Справочник.Организации).Ссылка ЕСТЬ НЕ NULL 
		|			ИНАЧЕ ЛОЖЬ
		|		КОНЕЦ
		|;
		|
		|////////////////////////////////////////////////////////////­////////////////////
		|ВЫБРАТЬ
		|	вт_СписокДокументов.НомерСтроки КАК НомерСтроки,
		|	ВЫБОР
		|		КОГДА вт_СписокДокументовСКонтрагентамиРазрешенные.НомерСтроки ЕСТЬ NULL
		|			ТОГДА ИСТИНА
		|		ИНАЧЕ ЛОЖЬ
		|	КОНЕЦ КАК врт_СкрытьСтроку
		|ИЗ
		|	вт_СписокДокументов КАК вт_СписокДокументов
		|		ЛЕВОЕ СОЕДИНЕНИЕ вт_СписокДокументовСКонтрагентамиРазрешенные КАК вт_СписокДокументовСКонтрагентамиРазрешенные
		|		ПО вт_СписокДокументов.НомерСтроки = вт_СписокДокументовСКонтрагентамиРазрешенные.НомерСтроки"
		);
		
		Запрос.УстановитьПараметр("СписокДокументов", СписокДокументов.Выгрузить( ,"НомерСтроки"));
		Запрос.УстановитьПараметр("СписокДокументовСКонтрагентами", СписокДокументов.Выгрузить( ,"НомерСтроки, Контрагент, Организация"));
		Выборка = Запрос.Выполнить().Выбрать();
		Пока Выборка.Следующий() Цикл
			СписокДокументов[Выборка.НомерСтроки - 1].врт_СкрытьСтроку = Выборка.врт_СкрытьСтроку;
		КонецЦикла;
		
	КонецЕсли;
	//---//roz//2021-11-12
	
	Возврат Истина;
	
КонецФункции

Показать


3) в модуле Diadoc_4_31_0.epf поправил:

Процедура ТаблицаОтборов_УстановитьОтборы(Таблица, АдресСхемы, мКомпоновщик) Экспорт
	
	Если ТипЗнч(АдресСхемы) = Тип("СхемаКомпоновкиДанных") Тогда
		СхемаСКД = АдресСхемы;
	Иначе
		СхемаСКД = ПолучитьИзВременногоХранилища(АдресСхемы);
	КонецЕсли;
	
	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
	
	Если ТипЗнч(Таблица) = Тип("ТаблицаЗначений") Тогда
		ИсточникДанных = Новый Структура("ТаблицаДанных", Таблица);
	Иначе
		ИсточникДанных = Новый Структура("ТаблицаДанных", Таблица.Выгрузить());
	КонецЕсли;
	
	Макет = КомпоновщикМакета.Выполнить(СхемаСКД, мКомпоновщик.ПолучитьНастройки(), , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
	
	ПроцессорКомпановки = Новый ПроцессорКомпоновкиДанных;
	ПроцессорКомпановки.Инициализировать(Макет, ИсточникДанных);
	
	ТЗРезультат 		= Новый ТаблицаЗначений;
	ПроцессорВывода 	= Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
	ПроцессорВывода.УстановитьОбъект(ТЗРезультат);
	ПроцессорВывода.Вывести(ПроцессорКомпановки, Истина);
	
	Для Каждого Стр Из Таблица Цикл
		Стр.Видимость = Ложь;
	КонецЦикла; 
	
	//+++//roz//2021-11-23 [93078]
	вртПроверятьСкрытьСтроку = Таблица.Колонки.Найти("врт_СкрытьСтроку") <> Неопределено;
	//---//roz//2021-11-23
	
	Для Каждого Стр Из ТЗРезультат Цикл
		
		СтрокаИсходнойТаблицы = Таблица.Найти(Стр.НомерСтроки, "НомерСтроки");  
		
		//+++//roz//2021-11-23 [93078]
		Если вртПроверятьСкрытьСтроку И СтрокаИсходнойТаблицы <> Неопределено Тогда
			Если СтрокаИсходнойТаблицы.врт_СкрытьСтроку Тогда
				Продолжить;
			КонецЕсли; 
		КонецЕсли;  
		//---//roz//2021-11-23
		
		Если СтрокаИсходнойТаблицы <> Неопределено Тогда
			СтрокаИсходнойТаблицы.Видимость = Истина;
		КонецЕсли;
		
	КонецЦикла;
	
КонецПроцедуры

Показать
15. charushkin 104 12.05.23 15:37 Сейчас в теме
(14) rozer, привет!

нет, даже крайний Универсальный модуль версии 4.31 не работает с RLS


Из твоего сообщения непонятно, что именно не работает. Можешь пошагово описать сценарий воспроизведения и параметры окружения (техническую информацию из "О программе" и из модуля)?
16. rozer 306 12.05.23 16:55 Сейчас в теме
(15) Вот открываю модуль оригинальный 4.31 под пользователем с RLS - видим "объект не найден" в Исходящих

с моей доработкой таких строк просто нет.

З.Ы. а вы из Контура? Тогда в (5) стандартный ответ на запрос в службу поддержки. Также и нам отвечают и с RLS проблема с самого начала использования Про модуля.
З.З.Ы. Кста вы вообще веселые ребята - у нас до вчерашнего дня стояла версия 4.17 (она сильно доработана под интеркампани и свою работу с маркировкой) так вот 11.05 эту версию просто деактивировали и все контора осталась без ЭДО...без предупреждения (типо говорят в модуле всплавает инфо и рассылки типо была но ничего не получали и не всплывало). Никаких новостей на сайте нет - поддержка так и не смогла ссылку показать кроме https://www.diadoc.ru/blog/7970. Пришлось срочно переходить на новый релиз... shame on you "контур" ... короче )
Прикрепленные файлы:
17. irinachkas 15.05.23 10:40 Сейчас в теме
(16) Здравствуйте,

Деактивация ключей произошла из-за того, что по требованию ФНС документооборот дополнился новыми технологическими документами: подтверждениями оператора и извещениями о получении участников обмена. Ваша версия модуля не поддерживала данное изменение.

Мы старались уведомить всех пользователей заранее за месяц до деактивации. Делали рассылки, уведомления в самом модуле. Возможно из-за сильно измененного модуля до вас не дошли обновления и уведомления.
По поводу рассылки, проверьте в настройках пользователя, указана ли верная почта

Если есть пожелания по тому, как вам получать уведомления о планируемых изменениях в модуле - можете предложить свой способ? Рассылки на e-mail и уведомления в модулях разработчики не всегда видят.
charushkin; +1 Ответить
5. t278 56 12.05.21 02:41 Сейчас в теме
Один раз написал Диадоку что можно улучшить для работы пользователей. Сказали : " За ваши деньги сделаем".
Интересная политика развития документа оборота в Диадоке
zayden; rozer; onsi; rmIvanT; artbear; +5 Ответить
Оставьте свое сообщение