Исправление ошибки работы с 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

Диадок

См. также

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

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

7200 руб.

02.08.2023    4172    15    1    

33

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

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

29400 руб.

29.06.2023    6001    14    5    

24

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

Расширение позволяет вывести в табличном документе факсимиле печати и подписей и/или вывести произвольную картинку из прикреплённых файлов организации для 1С УТ 11.5, КА 2.5, ERP 2.5, УНФ 3, Розница 3. Вывод факсимиле возможен в табличные документы УПД, УКД, Счёт-фактура, ТОРГ-12 и другие. Возможно настроить вывод для любых типовых макетов (Акт сверки, М-15, ТТН), для этого потребуется отредактировать макет и разместить на нём картинки с установленными именами. Редактирование осуществляется через типовой механизм в пользовательском интерфейсе.

3000 руб.

07.02.2023    6712    73    10    

30

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

Каждый из нас сталкивается с ситуацией, когда какой-нибудь менеджер показывает свой Excel и рассказывает, как он что-то из 1С копирует в него, снабжает пояснениями, выделяет цветом и т.д. и т.п. Заканчивается все просьбой сделать вот чтобы также было в 1С. И оказывается такой человек (почти с гарантией) либо лучшим продажником, либо каким-то важным, за все отвечающим, - на ком все держится.

2 стартмани

22.04.2024    5270    dimanich70    15    

22

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

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

01.03.2024    6864    dimanich70    9    

18
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. charushkin 109 11.05.21 15:09 Сейчас в теме
(0) Спасибо за предложенное решение. Отмечу только, что стоит отправить письмо с описанием проблемы и способом воспроизведения по адресу diadoc@skbkontur.ru. Тогда не придется кастомизировать модуль, ошибка будет рассмотрена и исправлена в новой версии модуля.
leonidol; John_d; +2 Ответить
12. John_d 5891 01.07.21 09:59 Сейчас в теме
(1) прошло два месяца. Проблема так и не решена.
Diadoc1C_UF_5_49_05
Вот мне и пригодилась моя статья, чтобы самостоятельно заново исправлять ошибку в новой версии.
Прикрепленные файлы:
13. charushkin 109 01.07.21 11:48 Сейчас в теме
(12) А вы сообщали об ошибке на линию тех. поддержки?
2. Дмитрий74Чел 239 11.05.21 16:52 Сейчас в теме
За попытку без обработки исключения - по рукам надавать!
artbear; leonidol; sinichenko_alex; work.sable; TimkoNzt; charushkin; +6 Ответить
6. sinichenko_alex 211 12.05.21 06:34 Сейчас в теме
7. TimurD 6 12.05.21 16:53 Сейчас в теме
(6) Дык этож из заповедей ректального программирования: Вечно работающий код. Не нада юзера пугать)))
charushkin; +1 Ответить
8. John_d 5891 12.05.21 18:11 Сейчас в теме
(2) В исключение попадают документы с ошибками, к которым у пользователя нет доступа и эти документы не выводятся в табличную часть. Как вы предлагаете обрабатывать документы к которым нет доступа у пользователя?
9. charushkin 109 13.05.21 14:29 Сейчас в теме
(8) Как минимум нужно записать ошибку в ЖР. В идеале - найти способ исправления.
10. John_d 5891 14.05.21 09:31 Сейчас в теме
(9) Если писать в ЖР, то нужно будет в конкретном случае исключить ошибку доступа к документу. Иначе пользователь выберет период пол года 10000 документов из которых у него доступ есть к 1000 документам его подразделения и нужно будет в журнал сделать 9000 записей.
11. charushkin 109 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 311 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 109 12.05.23 15:37 Сейчас в теме
(14) rozer, привет!

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


Из твоего сообщения непонятно, что именно не работает. Можешь пошагово описать сценарий воспроизведения и параметры окружения (техническую информацию из "О программе" и из модуля)?
16. rozer 311 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 58 12.05.21 02:41 Сейчас в теме
Один раз написал Диадоку что можно улучшить для работы пользователей. Сказали : " За ваши деньги сделаем".
Интересная политика развития документа оборота в Диадоке
zayden; rozer; onsi; rmIvanT; artbear; +5 Ответить
Оставьте свое сообщение