gifts2017

Ограничение доступа к контрагентам для конфигурации, в которой функционал ограничения отсутствует по умолчанию

Опубликовал Петр Лунегов (pvlunegov) в раздел Администрирование - Защита, права, пароли

Добрый день, читатель! Я покажу тебе, как в конфигурации (в которой функционал ограничения отсутствует по умолчанию) ограничить сотрудников компании (менеджеров) при работе в 1С только определенными контрагентами.
Например, при заведении Заказа Покупателя (или Поставщика) менеджер может видеть и создавать документы только по определенным Контрагентам. Это сделано для удобства работы отдела продаж, когда за каждым Менеджером в отделе закреплен определенный круг Клиентов. Другие менеджеры не могут видеть и менять чужие заказы, так как в них указаны не их Контрагенты (не закрепленные за ними).
Думаю, я понятно объяснил, что я хочу вам показать.

Проблемы организации работы в 1С на Предприятии и путь решения

Первоначально такая задача возникла у одного моего клиента, которому понадобилось оптимизировать работу отдела продаж. В его отделе возникали конфликты и даже потасовки между Менеджерами. Возникали ситуации, когда один менеджер редактировал чужие Заказы. Еще были ситуации, когда клиент звонил другому менеджеру, а тот, не зная договоренностей, ставил неправомерную скидку. Ситуаций много, но корень один. Я предложил клиенту изменить работу в 1С таким образом, что у Менеджера в 1С вообще не было возможности работать не со своим Контрагентом. Права на Контрагентов назначает начальник отдела продаж. У Менеджера нет вообще никакой возможности, ни одной лазейки работать не со своим Контрагентом. Ну разве что на уровне СУБД, но туда его никто не пустит. Итак, для тех, кто не в курсе, есть такая возможность в 1С - "Права на уровне записей".

Пример для понимания, что такое Права на уровне записей

Например, у нас есть Заказ №1, в котором указан Контрагент №1, закрепленный за Менеджером №1. В этом случае Менеджер №2, за которым Контрагент №1 НЕ ЗАКРЕПЛЕН, не сможет не только открыть и посмотреть Контрагента как справочник, или увидеть его в списке, он не сможет даже открыть ЗАКАЗ №1, в котором указан Контрагент №1.Это достигается с помощью механизма доступа на уровне записей.

Начнем внедрение в 1С!

Начнем изменение 1С УТ (Управление Торговлей), редакция 10.3, чтобы у нас все вышеперечисленное заработало. Итак, начнем!

1.1. Ограничение доступа к Контрагентам на уровне записей у Менеджера при заведении Заказа Покупателя 1.1. Ограничение доступа к Контрагентам на уровне записей у Менеджера при заведении Заказа Покупателя

На скриншоте показана ситуация, когда Менеджер в 1С открывает список Заказов, создает новый документ и открывает список Контрагентов из документа. В списке Контрагентов видно, что он может видеть и выбирать в Заказ только Контрагентов из своего круга. Круг Контрагентов закрепляется за каждым Менеджером руководителем отдела Продаж.

2.1. Роль Менеджер По Продажам 2.1. Роль Менеджер По Продажам

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

2.2. Роль Менеджер По Продажам доступ к Контрагентам 2.2. Роль Менеджер По Продажам доступ к Контрагентам

Интересная фишка! Я такое решение нашел, не додумался самостоятельно! Права на справочник Контрагенты ВООБЩЕ СНЯТ! Т.е. чтобы у Менеджера был доступ к Контрагентам, надо это прописать программно. Таким образом все лазейки Менеджеру закрыты. Это сделано для гарантии. Потому что менеджеры - народ ушлый! они ищут лазейки в 1С и находят неожиданные дыры в безопасности. Чтобы Программисту не влетело по шапке, надо все эти лазейки на корню пресечь! Теперь Программист имеет ПОЛНЫЙ контроль над доступом к Контрагентам. Если не прописать доступ программно, то его не будет!Этим мы и займемся!

3. Настраиваем регистр Сведений Настройки Прав доступа пользователей 3. Настраиваем регистр Сведений Настройки Прав доступа пользователей в режиме 1с Предприятие

Добавим записи в регистр у каждого Менеджера. В объекте Доступа Выберем созданный элемент справочника "Группы доступа к контрагентам". Назовем созданный элемент по имени пользователя. В качестве пользователя выберем (создадим, если нет) элемент справочника "Группы пользователей" с наименованием Пользователя

4. Вноми изменения в код обработки НастройкаПравДоступа 4. Вносим изменения в код обработки НастройкаПравДоступа.

В фукцию ПолучитьСписокОбластейДанных(ТипДанных) и процедуру ПередОткрытием(Отказ, СтандартнаяОбработка) вносим строки, как показано на скриншоте. Вот код функции и процедуры с изменениями:

// Функция определяет список областей данных,
// которые соответствуют переданному типу данных
//
// Параметры
//  ТИпДанных - Тип, Анализируемый тип
//
// Возвращаемое значение:
//   СписокЗначений
//
Функция ПолучитьСписокОбластейДанных(ТипДанных)

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

КонецФункции

Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)

	Если НЕ ПараметрыСеанса.ИспользоватьОграниченияПравДоступаНаУровнеЗаписей Тогда
		Предупреждение("В конфигурации отключено использование ограничения прав доступа не уровне записей.");
		Отказ = Истина;
		Возврат;
	КонецЕсли;

	ТипыОбъектовДоступа = Новый Структура;
	
	ТипыОбъектовДоступа.Вставить("Организации", Тип("СправочникСсылка.Организации"));
	ТипыОбъектовДоступа.Вставить("Контрагенты", Тип("СправочникСсылка.ГруппыДоступаККонтрагентам"));

	СсылкаОбъекта = ЭтаФорма.КлючУникальности;
	МетаданныеОбъекта = СсылкаОбъекта.Метаданные();
  
4. Вноми изменения в общий модуль НастройкаПравДоступа 4.1. Вносим изменения в общий модуль НастройкаПравДоступа

Во код с изменениями:

Функция ПолучитьВидОбъектаДоступа(ОбъектДоступа) Экспорт

	Если ТипЗнч(ОбъектДоступа) = Тип("СправочникСсылка.Организации") Тогда
		Возврат Перечисления.ВидыОбъектовДоступа.Организации;
	ИначеЕсли ТипЗнч(ОбъектДоступа) = Тип("СправочникСсылка.ГруппыДоступаККонтрагентам") Тогда
		Возврат Перечисления.ВидыОбъектовДоступа.Контрагенты;
	Иначе
		Возврат Перечисления.ВидыОбъектовДоступа.ПустаяСсылка();
	КонецЕсли;

КонецФункции
 
5. Для роли в доступе добавляем шаблон ограничений 5. Для роли в доступе добавляем шаблон ограничений
5.1. Для роли в доступе добавляем шаблон ограничений 5.1. Для роли в доступе добавляем шаблон ограничений
5.2. Для роли в доступе добавляем шаблон ограничений 5.2. Для роли в доступе добавляем шаблон ограничений
5.3. Для роли в закладке Шаблоны доступа добавляем описание шаблонов 5.3. Для роли в закладке "Шаблоны доступа" добавляем описание шаблонов

Вот код шаблона "ОрганизацияВШапкеКонтрагентВШапке"

##Если &ИспользоватьОграниченияПравДоступаНаУровнеЗаписей ##Тогда
ТекущаяТаблица ИЗ #ТекущаяТаблица КАК ТекущаяТаблица
    ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
        СоставГруппы.Ссылка КАК ГруппаПользователей
    ИЗ
        Справочник.ГруппыПользователей.ПользователиГруппы КАК СоставГруппы
    ГДЕ
        СоставГруппы.Пользователь = &ТекущийПользователь) КАК ГруппыПользователей
    ПО (&ИспользоватьОграниченияПравДоступаНаУровнеЗаписей)
ГДЕ (&ИспользоватьОграниченияПравДоступаНаУровнеЗаписей = ЛОЖЬ
            ИЛИ (НЕ 1 В
                    (ВЫБРАТЬ ПЕРВЫЕ 1
                        1 КАК ПолеОтбора
                    ИЗ
                        РегистрСведений.НазначениеВидовОбъектовДоступа КАК НазначениеВидовОбъектовДоступа
                    ГДЕ
                        НазначениеВидовОбъектовДоступа.ГруппаПользователей = ГруппыПользователей.ГруппаПользователей
                        И ВЫБОР
                            КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Организации)
                            	И ТекущаяТаблица.#Параметр(1) ССЫЛКА Справочник.Организации
                            	И НЕ ТекущаяТаблица.#Параметр(1) = ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)
                                ТОГДА ВЫБОР
                                        КОГДА 1 В
                                                (ВЫБРАТЬ ПЕРВЫЕ 1
                                                    1
                                                ИЗ
                                                    (ВЫБРАТЬ
                                                        1 КАК ПолеОтбора
                                                    ) КАК Оптмизация ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей
                                                        ПО
                                                            НастройкиПравДоступаПользователей.ОбъектДоступа = ТекущаяТаблица.#Параметр(1)
                                                                И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Организации)
                                                                И (НастройкиПравДоступаПользователей.Пользователь = НазначениеВидовОбъектовДоступа.ГруппаПользователей
                                                                    ИЛИ НастройкиПравДоступаПользователей.Пользователь = ЗНАЧЕНИЕ(Справочник.ГруппыПользователей.ВсеПользователи)))
                                            ТОГДА ИСТИНА
                                        ИНАЧЕ ЛОЖЬ
                                    КОНЕЦ
                            КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Контрагенты)
                            	И ТекущаяТаблица.#Параметр(2) ССЫЛКА Справочник.Контрагенты
                            	И НЕ ТекущаяТаблица.#Параметр(2) = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
                                ТОГДА ВЫБОР
                                        КОГДА 1 В
                                                (ВЫБРАТЬ ПЕРВЫЕ 1
                                                    1
                                                ИЗ
                                                    Справочник.Контрагенты КАК Контрагенты ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей
                                                        ПО
                                                            НастройкиПравДоступаПользователей.ОбъектДоступа = Контрагенты.ГруппаДоступаККонтрагенту
                                                                И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Контрагенты)
                                                                И (НастройкиПравДоступаПользователей.Пользователь = НазначениеВидовОбъектовДоступа.ГруппаПользователей
                                                                    ИЛИ НастройкиПравДоступаПользователей.Пользователь = ЗНАЧЕНИЕ(Справочник.ГруппыПользователей.ВсеПользователи))
                                                ГДЕ
                                                    Контрагенты.Ссылка = ТекущаяТаблица.#Параметр(2))
                                            ТОГДА ИСТИНА
                                        ИНАЧЕ ЛОЖЬ
                                    КОНЕЦ
                            ИНАЧЕ ИСТИНА
                        КОНЕЦ = ЛОЖЬ))
                        И НЕ ГруппыПользователей.ГруппаПользователей ЕСТЬ NULL)
##КонецЕсли
  Вот код шаблона "ОрганизацияВШапкеКонтрагентВШапке_Запись"
##Если &ИспользоватьОграниченияПравДоступаНаУровнеЗаписей ##Тогда
ТекущаяТаблица ИЗ #ТекущаяТаблица КАК ТекущаяТаблица
    ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
        СоставГруппы.Ссылка КАК ГруппаПользователей
    ИЗ
        Справочник.ГруппыПользователей.ПользователиГруппы КАК СоставГруппы
    ГДЕ
        СоставГруппы.Пользователь = &ТекущийПользователь) КАК ГруппыПользователей
    ПО (&ИспользоватьОграниченияПравДоступаНаУровнеЗаписей)
ГДЕ (&ИспользоватьОграниченияПравДоступаНаУровнеЗаписей = ЛОЖЬ
            ИЛИ (НЕ 1 В
                    (ВЫБРАТЬ ПЕРВЫЕ 1
                        1 КАК ПолеОтбора
                    ИЗ
                        РегистрСведений.НазначениеВидовОбъектовДоступа КАК НазначениеВидовОбъектовДоступа
                    ГДЕ
                        НазначениеВидовОбъектовДоступа.ГруппаПользователей = ГруппыПользователей.ГруппаПользователей
                        И ВЫБОР
                            КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Организации)
                            	И ТекущаяТаблица.#Параметр(1) ССЫЛКА Справочник.Организации
                            	И НЕ ТекущаяТаблица.#Параметр(1) = ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)
                                ТОГДА ВЫБОР
                                        КОГДА 1 В
                                                (ВЫБРАТЬ ПЕРВЫЕ 1
                                                    1
                                                ИЗ
                                                    (ВЫБРАТЬ
                                                        1 КАК ПолеОтбора
                                                    ) КАК Оптмизация ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей
                                                        ПО
                                                            НастройкиПравДоступаПользователей.ОбъектДоступа = ТекущаяТаблица.#Параметр(1)
                                                                И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Организации)
                                                                И (НастройкиПравДоступаПользователей.Пользователь = НазначениеВидовОбъектовДоступа.ГруппаПользователей
                                                                    ИЛИ НастройкиПравДоступаПользователей.Пользователь = ЗНАЧЕНИЕ(Справочник.ГруппыПользователей.ВсеПользователи))
                                                                И НастройкиПравДоступаПользователей.Запись = ИСТИНА)
                                            ТОГДА ИСТИНА
                                        ИНАЧЕ ЛОЖЬ
                                    КОНЕЦ
                            КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Контрагенты)
                            	И ТекущаяТаблица.#Параметр(2) ССЫЛКА Справочник.Контрагенты
                            	И НЕ ТекущаяТаблица.#Параметр(2) = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
                                ТОГДА ВЫБОР
                                        КОГДА 1 В
                                                (ВЫБРАТЬ ПЕРВЫЕ 1
                                                    1
                                                ИЗ
                                                    Справочник.Контрагенты КАК Контрагенты ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей
                                                        ПО
                                                            НастройкиПравДоступаПользователей.ОбъектДоступа = Контрагенты.ГруппаДоступаККонтрагенту
                                                                И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Контрагенты)
                                                                И (НастройкиПравДоступаПользователей.Пользователь = НазначениеВидовОбъектовДоступа.ГруппаПользователей
                                                                    ИЛИ НастройкиПравДоступаПользователей.Пользователь = ЗНАЧЕНИЕ(Справочник.ГруппыПользователей.ВсеПользователи))
                                                                И НастройкиПравДоступаПользователей.Запись = ИСТИНА
                                                ГДЕ
                                                    Контрагенты.Ссылка = ТекущаяТаблица.#Параметр(2))
                                            ТОГДА ИСТИНА
                                        ИНАЧЕ ЛОЖЬ
                                    КОНЕЦ
                            ИНАЧЕ ИСТИНА
                        КОНЕЦ = ЛОЖЬ))
                        И НЕ ГруппыПользователей.ГруппаПользователей ЕСТЬ NULL)
##КонецЕсли
 

    Вот и все! Все настроено и прекрасно работает! Если у вас будут вопросы, пишите, постараюсь ответить! На этом все, счастливо!

См. также

PowerTools от 1 000
Подписаться Добавить вознаграждение

Комментарии

1. Михаил Зотов (ZOMI) 05.06.15 06:55
Добрый день, пейсатель! В УТ 10.3 то что Ты (ты же нам тыкаешь) тут накалякал делается настройками групп доступа.

Справочник "Группы доступа к контрагентам"
Справочник "Группы доступа к контрагентам" используется для установки прав доступа к объектам - контрагентам различным группам пользователей. С помощью этого справочника настраиваются доступ пользователей к определенным группам контрагентов. Информация о том, к какой группе доступа принадлежит тот или иной контрагент, указывается в справочнике "Контрагенты" на закладке "Прочее". Предусмотрена также возможность отнесения контрагентов к определенной группе доступа с помощью обработки "Групповая обработка справочников и документов".

Пример. Менеджеры отдела продаж должны видеть информацию только по тем контрагентам, которые относятся к группе доступа "Продажи". Тогда в справочник "Группы доступа к контрагентам" необходимо ввести информацию о группе "Продажи", а у соответствующих контрагентов установить эту группу на закладке "Прочее". Менеджеров отдела продаж надо объединить в группу пользователей и установить для этой группы в качестве объекта доступа контрагентов - группу "Продажи". Аналогичным образом можно разделить контрагентов по группам доступа до уровня конкретного менеджера.

Важно. Использование подсистемы установки прав доступа к конкретным объектам возможно только в том случае, если в настройках параметров учета установлен флаг "Использовать ограничение прав доступа на уровне записей".

Dach; pavlov_dv; hulio; agilov_a; insurgut; +5 Ответить
2. Петр Лунегов (pvlunegov) 05.06.15 07:48
ZOMI обижаешь, тыкаешь, обзываешся, нехорошо!

"Добрый день, пейсатель!" - я не пейсатель и не писатель, я программист
"что Ты" - я с вами не знаком и вам не тыкал.
"ты же нам тыкаешь" - упаси боже мне кому то тыкать! У вас что то не то с восприятием. Сходите на прием к психологу. Прочитайте внимательно статью.

"тут накалякал" - я тут не в писульки играю а дело делаю.

Вы тут целый опус накалякали.

Я не спорю, знаний у вас много, тыкайте ими в кого-нибудь другого.

Ваш способ подходит, конечно.
НО! Кто вам дал право запрещать программные действия на уровне конфигуратора?

Ну и что что есть возможность накалякать запрет в справочнике.

А если пользователь достаточно продвинутый, чтобы эти права из справочника убрать?

Именно для этого написана моя статья, чтобы в конфигураторе прописать права.

Если вы чего-то не знаете, не тыкайте не оскорбляйте.
3. Петр Лунегов (pvlunegov) 05.06.15 07:50
ZOMI тебя видимо еще жизнь не научила вежливости.
Думаю рано или поздно научит.

Мой тебе совет, не ходи в чужую хату со своими правилами.
Другие люди вовсе не дураки, мало ли тебе как кажется.

Трижды подумай прежде чем свое пренебрежение и высокомерие показывать.
НИКОГДА не оскорбляй других людей.
4. Анянов Михаил (insurgut) 05.06.15 07:57
(3) pvlunegov, вежливость вежливостью, но в чем-то он прав, а именно в том, что не нужно изобретать то, что уже имеется стандартно в конфигурации :) Мы успешно для озвученной выше задачи используем группы доступа к контрагентам. Затрачено на работу в конфигураторе и изменения типового кода = 0 часов 0 минут 0 секунд.

Тут наверное корректнее статью было бы обозначить как "ограничение доступа к контрагентам для конфигурации, в которой функционал ограничения отсутствует по умолчанию".
5. Денис Буянкин (bds22) 05.06.15 08:47
я тоже не понял, для чего это сделано
если посмотреть в роли Пользователь (а не МенеджерПоПродажам), то можно увидеть, что там уже есть ограничение доступа
6. Петр Лунегов (pvlunegov) 05.06.15 09:00
bds22
Да, есть.
А если нужно создать новую роль со своим набором прав, и вручить эту роль новому пользователю?
Изменять типовую роль Пользователь?
Или написать новую роль, добавить шаблоны?

Я к тому, что если предложен еще один из способов создания велосипеда, то почему сразу столько гнилых помидоров со всех сторон?

Я же не оскорблял ни обзывал никого, я просто написал статью.

Почему сразу столько яда и грязи?
7. Петр Лунегов (pvlunegov) 05.06.15 09:02
Если завидно, пишите свою статью, в которой опишите процесс создания велосипеда.
На первый взгляд все понятно. Велосипед он и в африке велосипед.
но когда начинаешь писать статью по его создания, столько тонкостей возникает.

Вы попробуйте как нибудь написать подобное.

Я потом зайду к вам и раскритикую.
Посмотрим потом на ваши эмоции.

Я же не подхожу к вам и не кричу - вы плохо программируете, все что вы делаете отстой!

Вместо этого я наоборот, своих знакомых программистов хвалю за нестандартный подход. Чего и вам желаю
8. Петр Лунегов (pvlunegov) 05.06.15 09:05
(4) insurgut, вы правы.
НЕ прав уважаемый ZOMI который написал:
"Добрый день, пейсатель! В УТ 10.3 то что Ты (ты же нам тыкаешь) тут накалякал делается настройками групп доступа."

Название статьи можно переозвучить. В таком случае у вас не будет отторжения?
9. Анянов Михаил (insurgut) 05.06.15 09:06
(8) pvlunegov, у меня нет никакого отторжения :) А вам советую воспринимать любую критику спокойно, поскольку любая критика бывает полезной.
10. Евгений МелхОФФ (EMelihoff) 05.06.15 09:10
(7) pvlunegov, Вы не оскорбляйтесь, а примите здравую критику и скажите спасибо. На практике часто встречается, что люди не зная типового функционала пишут свои велосипеды. Вот Вам и указали на то что это не рекомендуется делать в конфигураторе, а то что форма "указаний" не совсем корректная, это нервы )) перепишешь штук 100 таких "великов" потом будешь неадекватно реагировать на такие статьи, я не думаю что Вас хотели оскорбить.
vovan_victory; ZOMI; +2 Ответить
11. Петр Лунегов (pvlunegov) 05.06.15 09:10
insurgut, спасибо на добром слове.
НАсчет критики, я воспринимаю спокойно, если она не выходит за рамки вежливости.
А господин ZOMI vменя честно говоря взволновал своей невежливостью.
Приношу извинения если обидел.

Изменил название статьи.

Возражения принимаются, как и здоровая критика.
Всем спасибо за комментарии!
12. Петр Лунегов (pvlunegov) 05.06.15 09:19
Уважаемые знатоки, подскажите!

Вот тут комментируют как я понимаю знающие типовые конфигурации люди.
У меня есть обработка по закрытию ошибок списания партий по Реализациям.
Она сделана на основе СКД отчета с кнопками, которые автоматизируют процесс создания поступлений по товарам, которые не списаны.
Есть ли подобная функциональность в типовых конфигурациях или тут на сайте?

Я думаю выложить такой велосипед для общего пользования но не уверен.
Могут закидать тухлыми помидорами - дескать уже есть, нам твоего не надо, пошел нафик.

Что скажите?
13. Денис Буянкин (bds22) 05.06.15 09:21
велосипеда я здесь не увидел.
а только запуск штатного функционала в обход
14. Петр Лунегов (pvlunegov) 05.06.15 09:22
Обработка готова, пользуюсь ей для закрытия многочисленных косяков по партионному учету.
НА предприятии много месяцев работали со списанием со складов в минус.
Захотели наладить партионный учет.
Документы списания есть - Реализации. А товара на складе нет!
Для этого случая требуется массовое создания Поступлений.

Моя обработка этот процесс автоматизирует до такой степени, что требуется лишь нажать 1 кнопку, весь процесс идет автоматически.

Все работает правильно, без косяков.

НАверняка уже есть подобные решения здесь на сайте?
15. Денис Буянкин (bds22) 05.06.15 09:22
(12) pvlunegov,
Вам поставили 5 плюсов, это называется закидали тухлыми помидорами?
16. Петр Лунегов (pvlunegov) 05.06.15 09:23
(13) bds22,
ну хорошо, велосипед с турбоускорителями.
Наверняка подобные Агрегаты уже изобретали и выкладывали?

Я просто не могу щас время на поиск тратить.
Может подскажите подобные вещи тут на сайте?
17. Петр Лунегов (pvlunegov) 05.06.15 09:24
(15) bds22,
ок, ну не все видимо.
Кому то статья пригодилась.
Кому то не понравилась.

Всем не угодишь
18. Евгений МелхОФФ (EMelihoff) 05.06.15 09:25
(12) pvlunegov, выкладывайте и даже не сомневайтесь. Критика всегда есть, идеальных решений не бывает, но зато она помогает людям, которые будут читать Вашу статью и коментарии под ней. Вот взять текущий пример статьи, человек перед тем как писать задумается, может штатным функционалом обойтись, если найдёт причины почему нельзя штатным, сделает как Вы рекомендуете. Так что выкладывать стоит. Это Ваше личное мнение и личное решение. Почему нет, то?
19. Денис Буянкин (bds22) 05.06.15 09:25
(16) я про велосипед с правами :)
а что касается выравнивания минусов созданием поступлений - данная конкретная задача наверное слишком редкая, но кому-нибудь пригодится.
у меня например, выполняется продажа с одной организации (по бух учету) на другую, при этом минусы проверяются не на конец или начало периода, а на каждый момент времени, где есть документы. т.е. минус мог образоваться в течение дня в нем же закрыться. и тому подобные фишки, которые может и не нужны кроме меня
20. Петр Лунегов (pvlunegov) 05.06.15 09:32
bds22, вы правы.
Изначально именно под подобные случаи писалась дополнительная роль, которая дублирует шаблоны типовой.
Бывают случаи, когда типовая роль не подходит, приходится писать дополнительную.
В статье просто описал как эти шаблоны перенести.
21. Денис Буянкин (bds22) 05.06.15 09:34
в типовой комплексной есть 2 проблемы, связанные с продажами в минус, которые мне пришлось пофиксить:
при продаже, если нет товара по бух учету, делается проводка по счету 62 не на всю сумму
по упр учету - не списывается партия, в результате остатки по партиям не равны остаткам по регистру товаров.
если второе спорный косяк - то первая проблема серьезная, мешает формировать акты сверки
22. 33lab (33lab) 05.06.15 09:44
(14) pvlunegov, Вроде как логичнее создавать не "поступление ТМЦ" а "оприходование ТМЦ" ибо не совсем понятно от какого контрагента будут оформлены данные "поступления".
(21) bds22,
если второе спорный косяк
- да нет, не спорный - именно из-за этого в типовых конфигурациях 2 этих регистра (товары, партии товаров) всегда "разъезжаются".
23. anry mc (AnryMc) 05.06.15 09:50
Когда я первый раз столкнулся с RLS, тогда же столкнулся и с тем что методология работы с данным механизмом "членораздельно" нигде не описана...
Пришлось выискивать куски, там и сям, спрашивать, "набивать шишки" - так что любое описание применения данного механизма считаю полезным.
Вообще это тема для отдельной публикации.
Например, описать что такое параметры в шаблоне как их создавать или откуда брать, объяснить как шаблон обращается к текущему объекту правил как таблице, да и вообще много вещей которые в РЛС стоит описать понятно и доступно...
24. Петр Лунегов (pvlunegov) 05.06.15 09:52
(22) 33lab,
Оприходование делает движения только по товарным регистрам (ТОвары на складах, Товары организаций, Партии товаров).
Реализация списывает товар в минус.
ТОвара нет на складе.
Оприходовали товар (чуть раньше Реализации)
Реализация списала количество.
Суммы прихода нету по товару.
А как себестоимость будет считаться?
25. anry mc (AnryMc) 05.06.15 09:54
(23) AnryMc,
ЗЫ
Для роли в закладке "Шаблоны доступа" добавляем описание шаблонов
Вот код шаблона "ОрганизацияВШапкеКонтрагентВШапке"


Было бы очень неплохо описать данный шаблон (например комментариями в нём) - что зачем и почему....
26. Петр Лунегов (pvlunegov) 05.06.15 09:54
(23) AnryMc,
изначально эту статью наваял на своем авторском сайте.
Читало много людей. но не комментировали.
Решил переносить статьи с своего сайта сюда на Инфостарт.
Тут сразу пошла хорошая критика. Она мне помогла очень. Всем спасибо!

На своем сайте пока малая посещаемость (120 чел. в сутки), так что чуствоввал себя как на необитаемом острове.
Решил сюда на инфостарт переселиться. Хорошо пошло!
27. Петр Лунегов (pvlunegov) 05.06.15 09:55
(25) AnryMc,
Ну если надо, могу доописать.
28. 33lab (33lab) 05.06.15 09:58
(24) pvlunegov, Боюсь я не совсем понял вопрос. Если "оприходование ТМЦ" делает движение по регистру "Партии товаров" то каким образом
Суммы прихода нету по товару
? При проведении "Оприходования ТМЦ" в регистре "Партии товаров" должна была появиться запись с количеством и суммой.
29. anry mc (AnryMc) 05.06.15 10:03
(27) pvlunegov,
Уровень читающих разный бывает, так что "разжевать" никогда не лишне...
ЗЫ Хотя найдутся наверно те кто скажет что слишком "разжевано"...
30. Сергей Пшеничников (Зеленоград) 05.06.15 10:39
Если данного клиента видит только его менеджер и начотдела, то другие менеджеры введут дубли контрагента?
pvlunegov; serpent; +2 Ответить 1
31. Александр Медведев (anig99) 05.06.15 14:40
(27) pvlunegov, этот функционал можно получить ТОЛЬКО средствами RLS, без изменения кода. Да ещё и без привязки к основному менеджеру, а просто к менеджерам клиента. Тогда можно реализовать и просмотр руководителями менеджеров. Но это всё равно не поможет избежать геморроя при обновлении конфигурации.
32. Александр Медведев (anig99) 05.06.15 14:42
(26) pvlunegov, про оформление вашего авторского сайта можно сказать (извините за грубость, ничего личного) - "не можешь ср.ть, не мучай ж.пу". Мне с него сразу захотелось уйти, что я и сделал.
33. Петр Лунегов (pvlunegov) 05.06.15 15:04
anig99
ну дак и уходи, не мучь себя и других. НАм твоя ж..па не нужна. таких как ты не ждем
34. Петр Лунегов (pvlunegov) 05.06.15 15:08
(30) Зеленоград,
Менеджеры не должны заводить Контрагентов.
А если заводят, то можно сделать контроль на дубли.
И вообще это не к программисту вопрос а к руководителю - раздача прав и контроль возможностей в программе.
Ваш вопрос относится к МАКРО архитектуре СИСТЕМЫ прав пользователей.
Это выходит за рамки данной статьи.
35. Петр Лунегов (pvlunegov) 05.06.15 15:09
(31) anig99,
здесь про обновление конфигурации ни слова.
Если в вашем конкретном случае требуется ее обновлять, то эта статья как раз поможет в этом.
Создавайте новую роль и назначайте ограничения в ней.
Какие проблемы при обновлении новой роли то?
36. Петр Лунегов (pvlunegov) 05.06.15 15:11
(31) anig99,
Можно то, можно это.
Одного и того-же можно достичь дцатью способами.
Никто вам не запрещает использовать ваши озвученные способы.
Спасибо, что сказали, не знал.

Я вообще стараюсь системы прав не касаться - геморрою очень много.
Один раз настроил и забыл.
37. Александр Медведев (anig99) 05.06.15 16:03
(33) pvlunegov, так мне и не нужен такой сайт. Просто не надо удивляться про низкую посещаемость.
А про статьи ещё одно замечание. Доступа к справочнику Контрагенты у роли Менеджеры по продажам нет по той причине, что права к справочнику прописаны у роли Пользователь.
Собственно там и присутствует RLS, которая ограничивает доступ к контрагентам на основе групп доступности контрагентов.
И если я не ошибаюсь, то изменения в группах доступности контрагентов требует роли Администрирование пользователей или написание отдельной роли для этого.

Не хотел минус ставить статье, но автор показал незнание стандартных механизмов типовых конфигураций...
38. Александр Медведев (anig99) 05.06.15 16:09
(36) pvlunegov, по заголовку статьи... "Ограничение доступа к контрагентам для конфигурации, в которой функционал ограничения отсутствует по умолчанию". В УТ есть такой функционал. Если речь не об УТ, а какой-то не типовой конфигурации, которая не использует БСП, то где же описание создания всех нужных регистров и кода, которые Вы упоминаете в статье?
39. Александр Медведев (anig99) 05.06.15 16:56
(36) pvlunegov, ещё одно. Что конкретно вы меняете в коде???!!! Всё обведённое на скриншотах УЖЕ есть в типовых. Открыл свою УПП. Там всё это есть, даже больше.
Короче, Вы выдаёте разработки 1с за свои доработки.
40. Петр Лунегов (pvlunegov) 08.06.15 21:59
(39) anig99,
"Короче, Вы выдаёте разработки 1с за свои доработки" - вы опять обобщаете, в который уже раз в моих статьях. У вас просто какая то мания ко мне.
Я ничего не выдаю. В статье про типовой функционал ни слова. Если кому-то надо, найдет.
НЕ сомневаюсь, что любой человек сможет в ТИПОВОЙ РОЛИ "ПОЛЬЗОВАТЕЛЬ" (которая кстати есть почти в любой конфигурации) найти этот функционал.

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

Прочитайте ВНИМАТЕЛЬНО название статьи. Что-то непонятно?
Если что-то непонятно, читайте полемику выше.
Я не собираюсь каждому тут по много раз одно и тоже объяснять.

"Открыл свою УПП. Там всё это есть, даже больше. " - про это мы уже говорили в комментариях выше.

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

Кому надо, полезную информацию почерпнет из статьи, кто и так знает - НЕ ПРИДИРАЙТЕСЬ емае!

Я тут стараюсь, ЧАСЫ трачу на написание ХОРОШЕЙ статьи с КУЧЕЙ СКРИНШОТОВ.
Все кому не лень поливают грязью.

Блин, народ, какие же вы все сволочи, те кто ни одного слова доброго не сказал!
Хоть бы одно слово - хотя бы ХММ, или там НУ НУ.

Одни - ты хрень пишешь, все это отстой.... а когда покажешь, все расскажешь, объяснишь - просто затыкаются в тряпочку и ничего не пишут, хотя поняли что НЕ ПРАВЫ!

Хоть бы признали - МЫ НЕ ПРАВЫ, ИЗВИНИ, ПЕТР, БЕРЕМ СВОИ СЛОВА НАЗАД!

НУ да ладно, набежали тут эмоции.. все всем пофик, потому что надо только обоср...ть, больше тут похоже никому ничего не надо
41. Михаил Зотов (ZOMI) 09.06.15 01:35
(40) pvlunegov,

Пётр, да, поймите, критикуют не Вас, а Ваши публикации. Вы чересчур близко принимаете чужие мнения не совпадающие с Вашими. Ценность публикации определяется не количеством скриншотов и временем затраченным автором на подготовку статьи, а новизной, оригинальностью решения и/или изящным изложением. Уверен, что Вы с вашей настойчивостью еще подарите миру действительно интересные статьи и решения. Немного не хватает Вам критичности мышления и самоанализа ценности материалов, но это придет. Если я ставлю минус - то этот минус не Вам, а всем материалам, в которых авторы "путаются в трех соснах" и методом самотыка доходят до откровений изложенных в документации к продукту.
the1; suggestive; anig99; Bassgood; +4 Ответить 1
42. Александр Медведев (anig99) 09.06.15 01:58
(40) pvlunegov, во-первых, мои комментарии писались 3 дня назад. Смысл их не поменялся. Могу только градус понизить. Пристал не к Вам, а к обработкам, которые мне интересны. Естественно, открываю публикацию по заголовку и вижу какую-то кашу.
Вот пересматриваю я статью и никак не могу убедить себя, что не прав (:
1. В заголовке написано про конфигурацию, где нет ограничения доступа. Тогда почему рассматриваем УТ?
2. Как назначаются круг контрагентов для менеджера? В статье этого явно не указано. Если через Объект доступа, то чем это отличается от типового решения?
3. Почему весь код повторяет код типовой конфигурации? Если это для того, чтобы вставить в гипотетическую конфигурацию без ограничений доступа, то тогда где инструкции как создавать сопутствующие регистры и справочники?
4. Если есть отличия от типовой в коде, то где они? Выделенные строчки повторяют типовой код.

Пока я вижу только одно отличие - в шаблоне RLS. Но тут можно хотя бы указать, в чем смысл этого шаблона отличается от смыла типового.

Может и есть какие-то объективные причины для существования такого велосипеда, но не из статьи, не из текста публикации этого не понятно. Можно всё-таки пояснить?
Diego_Iv; +1 Ответить
43. Александр Медведев (anig99) 09.06.15 02:02
(40) pvlunegov, про лазейки и программный контроль я и в первый раз читал. Ещё раз. Весь программный код повторяет типовой, RLS такой же. Какие лазейки есть у типовых при использовании контроля на уровне записей?
44. Петр Лунегов (pvlunegov) 09.06.15 06:33
(41) ZOMI,
Спасибо на добром слове.
Я слишком импульсивен и резок в суждениях. В детстве папа меня порол ремнем за двойки - видимо оттуда пошло.
Буду исправлять по мере появления сил.
Да, я настойчивый, иногда излишне.
Вот хотел удалить нафик все публикации, но потом передумал.
Лучше их доработать с учетом всей критики.
Тогда польза по крайней мере для меня будет - материал на всю жизнь усвою.
Что касается знаний по 1с.
Они у меня есть, и вроде даже много, но повторять надо. За годы часть уже запылилась, надо очистить от пыли, обновить.
Для этого обсуждения статей очень подходят.
Буду стараться делать это спокойно, без суеты и эмоций.
Прошу извинить за лишнее.
Всем спасибо!
myr4ik07; ZOMI; +2 Ответить
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа