Комментаторы, вы тут все такие "на опыте". А реально, по-любому пишите говно-код, который потом не разобрать. Изучайте принципы ООП и SOLID. Это единственный 1с программист, который доходчиво объясняет в ютубе) Жду новый контент
Может ты тогда почитаешь про нормальные формы баз данных? Ничего что он их тут нарушает? " Принципы солид ООП", а базу по нормальным формам ? Какое склеивание строк, какая константа с неограниченной длиной. Регистр сведений - самый лучший вариант. При этом я не говорю, что это плохо, рынок хочет быстро и дешево, так пусть получает такие решения
@@mendicator4319 и правда, а зачем мы тогда вообще заморачиваемся и храним данные в различных таблицах? Может тогда также через запятую в строку, и в константу, у нее же неограниченная длина, ой как удобно 😍
@@БипейШтифонов константа тоже таблица, причем конкретно эта мизерного размера. Чтение скуля практически мгновенное. Разницы что ты будешь читать из регистра или из такой константы нет. И да, в 1С нет нормальных форм базы данных, везде избыточность
@@mendicator4319 да, одна таблица на одну константу? А вот в старых платформах, которые до сир пор ходят, это одна таблица, где хранятся все константы. ОЧЕНЬ вкусно туда записывать большие строки. Я о том, что да, по скорости это будет одно и тоже. Но формы придумали не просто так, это масштабируемость. Если завтра вам придёться добавить новую колонку к этой табличке, или поменять логику работы? Как же удобно работать со стройкой и раскладывать ее постоянно, ну просто прекрасно. Да и правда, избыточность просто необходима на сегодняшний день, некоторые правила просто морально устарели, но блин, первым правилом пользуются все на уровне интуиции. Зачем пихать разнородную информацию в одну сущность, это неправильно.
Большое спасибо! Форма подачи материала сжатая и, на мой взгляд, лучшая из всех! Только недавно делал подобное, только ещё было условие, чтобы пользователь с определённой ролью не мог снимать пометку проведения.
Более правильным, в данном случае, было бы врезаться в метод ИзменениеЗапрещено. Сначала проверим наш запрет, затем (если по нашему запрету можно редактировать), вызовем метод из конфигурации (ПродолжитьВызов). Такая реализация позволит не только интерактивно запрещать редактировать, но и когда документ записывается программно.
Процедуру "ОбновитьВидимостьВидовДокументов" можно сделать НаКлиентеНаСервереБезКонтекста и параметром передавать форму. Тогда не будет лишнего (и не нужного) серверного вызова при изменении значения реквизита на форме.
Отлично! Вот это я удачно попал. Как раз на работе поставили задачу разработать дополнительный запрет для определенных док-в, в том числе в разрезе пользователей. Но можно ведь реализовать такой же, более полноценный и гибкий инструмент. Спасибо Иван. Разбор задач класс👍
Отличная подача, молодец! В 1С давно, но было интересно!! Единственное, тут наверно платформа была с лицензией проф, так как на базовой лицензии расширения вроде не работают.
Формат разбора задачь ОГОНЬ ! ПРям чувствуешь как НЕО в матрице, впитыешь 1сКунфу. И по скорости видео тоже отлично. Что-то по архитектуре можно было добавить, если бы вы комментировали, что такой-то подход ведёт к нагрузке сервера, другой подход более трудоёмкий. И обошлись без запросов в этот раз. Лайк501
Иван, спасибо за новое видео, как всегда, все очень ясно и понятно (кто ясно мыслит, тот ясно излагает), небольшое уточнение, вы показывали на БП базовой, в базовую версию не получится подключить расширение(кроме патчей 1с), если она не подключена к полной версии платформы, стоит это уточнить для желающих повторить
очень полезно было посмотреть, качественно поданный материал. только наверное надо было бы еще и по правам уточнить, т.к. в данном случае эта схема будет работать только у пользователя с правами Администратора, всем остальным же доступ к документам будет просто закрыт, независимо от установленных значений в расширении.
Как-то раз устраивался на работу. Узнал, что делали много доработок в типовых конфигурациях. Спрашиваю, вы периоды закрываете? Да, говорят, закрываем. Ну, думаю - молодцы, хорошо дорабатывают... Спустя какое-то время я понял, они закрывали период для редактирования😂
Я бы не стал помещать пустую строку в константу "IS_ИменаЗапрещенныхДляРедактированияДокументов" если выбрали вариант запрета отличный от "Использовать для выбранных". Это позволило бы сохранять список документов в случае, если, например, потребовалось временно отключить запрет. А в реализованном варианте в таком случае придётся вспоминать, какие именно документы были запрещены и заново проставлять все нужные флаги.
Как всегда, ясно-понятно! Иван, хотелось бы разобраться, как через расширение редактировать, вывести пользовательскую колонну в табличную часть Приходная накладная с (цена товара в usd) Спасибо. Круто!
откройте форму в конфигурации, в разделе "реквизиты", и основной реквизит (как правило это Объект) поместите в расширение. Только после этого можно изменять форму в расширении
Можешь сделать видео? Есть обработка и на стороне сервера происходит длительная операция например нужно много документов перебрать каким то оброзом изменить. И что бы пользователь не видел крутящиеся колесеко, вывести прогресс бар, которое покажет сколько еще ждать
При проверке документа на возможность редактирования, лучше сначала проверять включена ли такая настройка, нужно нам вообще что-то проверять, а потом что за объект, какие там документы запрещены и тп.
Спасибо за видео! Формат очень нравится. Подскажите, пожалуйста, чем можно заменить использование констант, т.к. типовая конфигурация в режиме совместимости 8.3.14, а константы в данном режиме не поддерживаются.
При проверке вхождения документа в список запрещённых, не быстрее было бы искать в строке-константе название документа? Конечно, добавив ";" в начало и с конец обеих строк.
Большое спасибо за Ваш труд. Можно уточнить по одному моменту: для чего раскладывать строку в массив, для поиска, а не искать сразу в строке? Это оптимальнее для скорости поиска или какая-то другая причина? Или просто приведен один из вариантов возможной реализации? Интересуюсь без "задней мысли", просто при использовании строк с разделителями как варианта некого списка, я произвожу поиск сразу в этой строке с разделителями (естественно если такая строка относительно небольшого размера), поэтом если мой вариант медленнее или затратнее по памяти, я буду использовать Ваш метод.
@@ironskills-1c Вот тоже самое думал при просмотре видео (насчет массивов и строк). Зачем в цикле создавать массив, а потом из него строку с разделителями. Неужели нельзя было сразу в цикле создавать строку константы добавляя виды документов? Огромное спасибо за Ваш труд! Всегда рад Вашим новым видео. Удачи!
После внедрения данного решения "как есть" сразу пользователи прибегут с жалобами, что они не могут документы открыть, потому что у них ошибка прав доступа. Т.к. текущая реализация работает только под полными правами. Всем остальным ролям чтение новых констант не доступно и при попытке прочитать их значение в функции проверки приведёт к данной ошибке. Есть два варианта: 1. Перед проверкой устанавливать привелигированный режим вызовом функции "УстановитьПривилегированныйРежим(Истина)". 2. В расширение добавить одну из базовых ролей, например, БазовыеПраваБСП, и добавить в расширении для этой роли права на чтение новым константам.
Спасибо за дополнение, Павел. Добавлю только, что для расширений есть флаг "Использовать основные роли для всех пользователей". При установленном флаге пользователи не прибегут ;)
Видео познавательное, буду использовать новые знания в работе. Хотелось бы видео по созданию внешней обработки для регламентного задания(запуск команд объектов, формирование файлов и отправка на почту клиентам)
Здравствуйте! Спасибо за видео! Скажите, почему сразу после ... ИмяДокумента = МетаданныеОбъекта.Имя; ИменаЗапрещенныхДокументов = Константы.IS_ИменаЗапрещенныхДляРедактированияДокументов.Получить(); ... Мы сразу не используем ... Если СтрНайти(ИменаЗапрещенныхДокументов, ИмяДокумента) Неопределено Тогда ... а получаем из строки массив строк МассивЗапрещенных?
В при чтении на сервере проверить, что текущий объект - документ можно гораздо проще: Если Метаданные.Документы.Содержит(ТекущийОбъект.Метаданные()) Тогда ... ну и можно обойтись без использования массива запрещенных, а ограничиться поиском по подстроке: Если СтрНайти(ИменаЗапрещенныхДокументов, ИмяДокумента) > 0 Тогда ... Мой вариант функции IS_ИзмененияЗапрещены ======================================================= Функция IS_ИзмененияЗапрещены(ТекущийОбъект) УстановитьПривилегированныйРежим(Истина); МетаданныеОбъекта = ТекущийОбъект.Метаданные(); Если Метаданные.Документы.Содержит(МетаданныеОбъекта) Тогда ВариантЗапрета = Константы.IS_ВариантЗапретаРедактирования.Получить(); Если ВариантЗапрета = Перечисления.IS_ВариантыЗапретаРедактирования.ИспользоватьДляВсех Тогда Возврат Истина; ИначеЕсли ВариантЗапрета = Перечисления.IS_ВариантыЗапретаРедактирования.ИспользоватьДляВыбранных Тогда ИменаЗапрещенныхДокументов = Константы.IS_ИменаЗапрещенныхДляРедактированияДокументов.Получить(); Возврат СтрНайти(ИменаЗапрещенныхДокументов, МетаданныеОбъекта.Имя) > 0; КонецЕсли; КонецЕсли; Возврат Ложь; КонецФункции =======================================================
Поиск по подстроке, можно словить ошибку, если одно имя документа будет в составе другого имени документа («АвансовыйОтчет», «АвансовыйОтчетНовый»). И лучше использовать не массив, а структуру, и проверять через Свойство, это позволит исключить моменты связанные с регистрами букв, вдруг в имени документа поменяют в одном символе регистр (редкий случай, но возможность такого исключать нельзя). Ну и соответственно тогда и разделитель использовать вместо «;» - «,». ИменаЗапрещенныхДокументов = Новый Структура (Константы.IS_ИменаЗапрещенныхДляРедактированияДокументов.Получить()); ЗначениеПометки = ИменаЗапрещенныхДокументов.Свойство(ИмяДокумента);
Фоновая музыка огонь) на экзамене конечно за запись конкатинации текста в константу оценку снизили бы. Регистр сведений однозначно. Строки неограниченной длины это зло.
не совсем понятно - зчем такая функция нужна, ведь у пользователя все равно есть возможно распровести изменить и снова провести. Логичнее функция запрета любого изменения проведенного документа в том числе и распроведения, при этом целесообразно было бы создать кнопку на документе или некую форму в которой формировался бы запрос на разрешение распроведения документа, и если запрос утверждается, то возможность распровити и изменить документ появляется. А эта функция странная - не понятно какой смысл эти ограничения несут? если это просто для обучения и смысла реального действительно нет, то вопросов нет, видео познавательное
а если добавится вариант запрета (разрешения) то сразу все сломается, нужно не иначе делать, а иначеесли с проверкой варианта запрета, даже если нет других вариантов, они могут появиться в будущем, типичный 1эсовский подход, моё работает, а дальше пофиг
Условие видимости 1 строкой делается) примерно: Видимость = Вариант = Перечисление; В расширяемой функции тоже проще можно сделать: Возврат Результат ИЛИ РезультатИзменениеЗапрещено; Зачем городить ненужные кучи строк кода, но для новичков пойдет.
тот же вопрос. Для нужд упр. и регл учета это мегадырень. Тоесть Мареванне из бухгалтерии нельзя лезть в сданный закрытый период, но если она распровведет док то можно. Браво! Но все же думаю тема показа не о правильности логики изменений..
@@МихаилАаа-д3ю нет, не тоже самое. Когда мы складываем строки, проге приходиться увеличивать количество памяти, занимаемой строковой переменной (как динамические массивы в дельфи и пр.), т.к. мы изначально выделили мало памяти (собственно сколько памяти нужно, в 1С указать нельзя). А метод СтрСоеденить вычисляет длину конечной строки, сразу создает переменную с нужной длиной и при конкатенации не нужно наращивать память. Примерно так это работает.
Комментаторы, вы тут все такие "на опыте". А реально, по-любому пишите говно-код, который потом не разобрать. Изучайте принципы ООП и SOLID. Это единственный 1с программист, который доходчиво объясняет в ютубе) Жду новый контент
Может ты тогда почитаешь про нормальные формы баз данных? Ничего что он их тут нарушает? " Принципы солид ООП", а базу по нормальным формам ? Какое склеивание строк, какая константа с неограниченной длиной. Регистр сведений - самый лучший вариант. При этом я не говорю, что это плохо, рынок хочет быстро и дешево, так пусть получает такие решения
@@БипейШтифонов его решение изящнее, какой нах регистр сведений
@@mendicator4319 и правда, а зачем мы тогда вообще заморачиваемся и храним данные в различных таблицах? Может тогда также через запятую в строку, и в константу, у нее же неограниченная длина, ой как удобно 😍
@@БипейШтифонов константа тоже таблица, причем конкретно эта мизерного размера. Чтение скуля практически мгновенное. Разницы что ты будешь читать из регистра или из такой константы нет. И да, в 1С нет нормальных форм базы данных, везде избыточность
@@mendicator4319 да, одна таблица на одну константу? А вот в старых платформах, которые до сир пор ходят, это одна таблица, где хранятся все константы. ОЧЕНЬ вкусно туда записывать большие строки. Я о том, что да, по скорости это будет одно и тоже. Но формы придумали не просто так, это масштабируемость. Если завтра вам придёться добавить новую колонку к этой табличке, или поменять логику работы? Как же удобно работать со стройкой и раскладывать ее постоянно, ну просто прекрасно. Да и правда, избыточность просто необходима на сегодняшний день, некоторые правила просто морально устарели, но блин, первым правилом пользуются все на уровне интуиции. Зачем пихать разнородную информацию в одну сущность, это неправильно.
Большое спасибо! Форма подачи материала сжатая и, на мой взгляд, лучшая из всех! Только недавно делал подобное, только ещё было условие, чтобы пользователь с определённой ролью не мог снимать пометку проведения.
Иван, огромное спасибо! Поясняешь каждое действие, и всё понятно.
Самый лучший канал по Разработке в 1С.
В будущем если будут вебинары с удовольствием буду присутствовать!
Спасибо за просмотр и комментарий)
Огромное спасибо за видео! Формат нравиться, хорошо что задачу Вы показали от начала и до конца, на типовой - это супер!
Спасибо. Отличный формат. Особенно интересны задачи с типовыми конфигурациями.
Более правильным, в данном случае, было бы врезаться в метод ИзменениеЗапрещено. Сначала проверим наш запрет, затем (если по нашему запрету можно редактировать), вызовем метод из конфигурации (ПродолжитьВызов). Такая реализация позволит не только интерактивно запрещать редактировать, но и когда документ записывается программно.
Процедуру "ОбновитьВидимостьВидовДокументов" можно сделать НаКлиентеНаСервереБезКонтекста и параметром передавать форму. Тогда не будет лишнего (и не нужного) серверного вызова при изменении значения реквизита на форме.
Просто супер. Очень грамотные и толковые пояснения. Автору респект и уважуха.
Отлично! Вот это я удачно попал. Как раз на работе поставили задачу разработать дополнительный запрет для определенных док-в, в том числе в разрезе пользователей. Но можно ведь реализовать такой же, более полноценный и гибкий инструмент.
Спасибо Иван. Разбор задач класс👍
Всё понятно. Вопросов нет. Препод супер!
Огромное спасибо! Особенно за принцип выбора элементов "галочками", а то я уже отчаялся в попытка сделать такой механизм выбора...
спасибо за очередную полезную лекцию. хотелось бы еще увидеть запрет видимости чего либо (справочники/документы/др)
Отличный формат! Без воды. Просьба указывать версию платформы.
Уровень объяснения материала у Ивана в режиме - БОГ!
Как всегда высшая оценка по шкале крутости.
Видео просто находка!!! Лайк однозначно! Давай больше таких видео!!!!
Спасибо за видео, всё по делу. Единственное не хватает проверки на выбор хоть одного документа из списка)
Отличная подача, молодец! В 1С давно, но было интересно!! Единственное, тут наверно платформа была с лицензией проф, так как на базовой лицензии расширения вроде не работают.
Формат разбора задачь ОГОНЬ ! ПРям чувствуешь как НЕО в матрице, впитыешь 1сКунфу. И по скорости видео тоже отлично. Что-то по архитектуре можно было добавить, если бы вы комментировали, что такой-то подход ведёт к нагрузке сервера, другой подход более трудоёмкий. И обошлись без запросов в этот раз. Лайк501
Спасибо, отличный материал.
Спасибо большое, отличное видео, особенно для тех, кто только начинает.
Спасибо! Прекрасный урок!!!!
Иван, спасибо за новое видео, как всегда, все очень ясно и понятно (кто ясно мыслит, тот ясно излагает), небольшое уточнение, вы показывали на БП базовой, в базовую версию не получится подключить расширение(кроме патчей 1с), если она не подключена к полной версии платформы, стоит это уточнить для желающих повторить
Согласен, упустил этот момент. Спасибо большое, в будущем буду стараться упоминать такие вещи)
Спасибо. Очень хорошая подача материала.
Видео очень познавательное.
очень полезно было посмотреть, качественно поданный материал. только наверное надо было бы еще и по правам уточнить, т.к. в данном случае эта схема будет работать только у пользователя с правами Администратора, всем остальным же доступ к документам будет просто закрыт, независимо от установленных значений в расширении.
Спасибо за дополнение)
Просто, но изящно. Спасибо!
Было очень интересно, Спасибо!
Отличное видео, узнал много нового!
Как-то раз устраивался на работу. Узнал, что делали много доработок в типовых конфигурациях.
Спрашиваю, вы периоды закрываете?
Да, говорят, закрываем.
Ну, думаю - молодцы, хорошо дорабатывают...
Спустя какое-то время я понял, они закрывали период для редактирования😂
Суперпонятное объяснение!
Я бы не стал помещать пустую строку в константу "IS_ИменаЗапрещенныхДляРедактированияДокументов" если выбрали вариант запрета отличный от "Использовать для выбранных". Это позволило бы сохранять список документов в случае, если, например, потребовалось временно отключить запрет. А в реализованном варианте в таком случае придётся вспоминать, какие именно документы были запрещены и заново проставлять все нужные флаги.
А есть список плана по видео? Когда примерно ждать обновление не типовых и настройка sql и 1с сервера кластера
Отличное видео 👍
Как всегда, ясно-понятно!
Иван, хотелось бы разобраться, как через расширение редактировать, вывести пользовательскую колонну в табличную часть Приходная накладная с (цена товара в usd)
Спасибо. Круто!
откройте форму в конфигурации, в разделе "реквизиты", и основной реквизит (как правило это Объект) поместите в расширение. Только после этого можно изменять форму в расширении
Можешь сделать видео? Есть обработка и на стороне сервера происходит длительная операция например нужно много документов перебрать каким то оброзом изменить. И что бы пользователь не видел крутящиеся колесеко, вывести прогресс бар, которое покажет сколько еще ждать
Спасибо за идею, Антон, постараемся сделать что-то подобное)
При проверке документа на возможность редактирования, лучше сначала проверять включена ли такая настройка, нужно нам вообще что-то проверять, а потом что за объект, какие там документы запрещены и тп.
Спасибо за комментарий)
Класс, спасибо!
Спасибо за видео! Формат очень нравится. Подскажите, пожалуйста, чем можно заменить использование констант, т.к. типовая конфигурация в режиме совместимости 8.3.14, а константы в данном режиме не поддерживаются.
Здравствуйте!) Можно создать план видов характеристик (ПВХ), в нём реквизит "Значение", и хранить предопределенные значения в этом ПВХ)
Спасибо!@@ironskills-1c
Класс!
А как на счет принудительно подписывать все документы на событие перед записью, и в оброботчике ругатся на запрет изменение ?
Спасибо огромное!!! ♥
А с помощью внешней обработки можно будет изменять такие документы. Я бы на такой вариант тоже сделал бы проверку ))
Да, программист изменить документ программно (из кода) сможет)
Респект Вам🎉
При проверке вхождения документа в список запрещённых, не быстрее было бы искать в строке-константе название документа? Конечно, добавив ";" в начало и с конец обеих строк.
Большое спасибо за Ваш труд. Можно уточнить по одному моменту: для чего раскладывать строку в массив, для поиска, а не искать сразу в строке? Это оптимальнее для скорости поиска или какая-то другая причина? Или просто приведен один из вариантов возможной реализации? Интересуюсь без "задней мысли", просто при использовании строк с разделителями как варианта некого списка, я произвожу поиск сразу в этой строке с разделителями (естественно если такая строка относительно небольшого размера), поэтом если мой вариант медленнее или затратнее по памяти, я буду использовать Ваш метод.
Здравствуйте, Дмитрий!) В видео показан лишь пример реализации, искать в строке тоже можно)
@@ironskills-1c Вот тоже самое думал при просмотре видео (насчет массивов и строк). Зачем в цикле создавать массив, а потом из него строку с разделителями. Неужели нельзя было сразу в цикле создавать строку константы добавляя виды документов? Огромное спасибо за Ваш труд! Всегда рад Вашим новым видео. Удачи!
@@ironskills-1c Ниже увидел все за и против.
После внедрения данного решения "как есть" сразу пользователи прибегут с жалобами, что они не могут документы открыть, потому что у них ошибка прав доступа. Т.к. текущая реализация работает только под полными правами. Всем остальным ролям чтение новых констант не доступно и при попытке прочитать их значение в функции проверки приведёт к данной ошибке.
Есть два варианта:
1. Перед проверкой устанавливать привелигированный режим вызовом функции "УстановитьПривилегированныйРежим(Истина)".
2. В расширение добавить одну из базовых ролей, например, БазовыеПраваБСП, и добавить в расширении для этой роли права на чтение новым константам.
Спасибо за дополнение, Павел. Добавлю только, что для расширений есть флаг "Использовать основные роли для всех пользователей". При установленном флаге пользователи не прибегут ;)
Видео познавательное, буду использовать новые знания в работе. Хотелось бы видео по созданию внешней обработки для регламентного задания(запуск команд объектов, формирование файлов и отправка на почту клиентам)
Хотелось бы видео а запрете на просмотр опред. Бух. Счетов, напр. Сч.70.
Спасибо за идею для ролика
Здравствуйте! Спасибо за видео! Скажите, почему сразу после
...
ИмяДокумента = МетаданныеОбъекта.Имя;
ИменаЗапрещенныхДокументов = Константы.IS_ИменаЗапрещенныхДляРедактированияДокументов.Получить();
...
Мы сразу не используем
...
Если СтрНайти(ИменаЗапрещенныхДокументов, ИмяДокумента) Неопределено Тогда
...
а получаем из строки массив строк МассивЗапрещенных?
ИмяДокумента может быть частью имени другого документа.
Почему то расширение не работает на ручные операции, может из-за того что у него нет статуса не проведен, либо проведен, либо помечен на удаление
Нужно проверить, может быть для документа "Операция" не используется дата запрета редактирования (т.е. дата запрета на эти документы не влияет)
Круто
А почему у меня не ставится флаг не ограниченная длинна у константы ?
В при чтении на сервере проверить, что текущий объект - документ можно гораздо проще:
Если Метаданные.Документы.Содержит(ТекущийОбъект.Метаданные()) Тогда
...
ну и можно обойтись без использования массива запрещенных, а ограничиться поиском по подстроке:
Если СтрНайти(ИменаЗапрещенныхДокументов, ИмяДокумента) > 0 Тогда
...
Мой вариант функции IS_ИзмененияЗапрещены
=======================================================
Функция IS_ИзмененияЗапрещены(ТекущийОбъект)
УстановитьПривилегированныйРежим(Истина);
МетаданныеОбъекта = ТекущийОбъект.Метаданные();
Если Метаданные.Документы.Содержит(МетаданныеОбъекта) Тогда
ВариантЗапрета = Константы.IS_ВариантЗапретаРедактирования.Получить();
Если ВариантЗапрета = Перечисления.IS_ВариантыЗапретаРедактирования.ИспользоватьДляВсех Тогда
Возврат Истина;
ИначеЕсли ВариантЗапрета = Перечисления.IS_ВариантыЗапретаРедактирования.ИспользоватьДляВыбранных Тогда
ИменаЗапрещенныхДокументов = Константы.IS_ИменаЗапрещенныхДляРедактированияДокументов.Получить();
Возврат СтрНайти(ИменаЗапрещенныхДокументов, МетаданныеОбъекта.Имя) > 0;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
=======================================================
Поиск по подстроке, можно словить ошибку, если одно имя документа будет в составе другого имени документа («АвансовыйОтчет», «АвансовыйОтчетНовый»). И лучше использовать не массив, а структуру, и проверять через Свойство, это позволит исключить моменты связанные с регистрами букв, вдруг в имени документа поменяют в одном символе регистр (редкий случай, но возможность такого исключать нельзя). Ну и соответственно тогда и разделитель использовать вместо «;» - «,».
ИменаЗапрещенныхДокументов = Новый Структура (Константы.IS_ИменаЗапрещенныхДляРедактированияДокументов.Получить());
ЗначениеПометки = ИменаЗапрещенныхДокументов.Свойство(ИмяДокумента);
Спасибо большое, Павел, за то что поделились альтернативным способом решения👍
Спасибо, Алексей!)
Фоновая музыка огонь) на экзамене конечно за запись конкатинации текста в константу оценку снизили бы. Регистр сведений однозначно. Строки неограниченной длины это зло.
Согласен, но не хотелось усложнять) А вообще строки неограниченной длины в типовых сплошь и рядом)
Скажите а если пользователь будет перепроводить документы в рамках закрытия месяца программа не будет ругаться?
Нет, поскольку при закрытии месяца документы проводятся программно, а запрет сделали только при проведении из формы.
А как сделать чтобы пользователь видел только свои документы, и редактирование разрешено. А чужие нет. Это РЛС. Но все осложняется, то что это фреш.
Да, Михаил, это надо настраивать на уровне профиля групп доступа ограничение по ответственному...
Для ут такой настройки нет
Формат разбора задач супер. Лайк! p.s. иконку с автором бы поменьше сделать. в ~1,5 раза и фоновую музыку не включать))
А у Вас свой канал есть? Или Вы только на чужих каналах советы раздаете?
Спасибо за видео! Формат нравится. Был пропущен момент с переносом галок справа налево.
18:33
не совсем понятно - зчем такая функция нужна, ведь у пользователя все равно есть возможно распровести изменить и снова провести. Логичнее функция запрета любого изменения проведенного документа в том числе и распроведения, при этом целесообразно было бы создать кнопку на документе или некую форму в которой формировался бы запрос на разрешение распроведения документа, и если запрос утверждается, то возможность распровити и изменить документ появляется. А эта функция странная - не понятно какой смысл эти ограничения несут? если это просто для обучения и смысла реального действительно нет, то вопросов нет, видео познавательное
Да, это скорее учебный пример, чем окончательное решение)
а если добавится вариант запрета (разрешения) то сразу все сломается, нужно не иначе делать, а иначеесли с проверкой варианта запрета, даже если нет других вариантов, они могут появиться в будущем, типичный 1эсовский подход, моё работает, а дальше пофиг
Спасибо за комментарий) Решение не претендует на готовое решение, это лишь учебный пример, показывающий алгоритм решения задачи.
Условие видимости 1 строкой делается) примерно: Видимость = Вариант = Перечисление;
В расширяемой функции тоже проще можно сделать: Возврат Результат ИЛИ РезультатИзменениеЗапрещено;
Зачем городить ненужные кучи строк кода, но для новичков пойдет.
спасибо за комментарий) да, можно короче, но хочется, чтобы начинающим тоже было понятно)
Спасибо за данный урок. Очень информативно. Единственное пожелание - убрать музыкальный фон.
Я даже музыку не заметил) Слушал на скорости 1.5.
чет задача странная) редактировать нельзя, но снять с проведения проведенный документ можно)!
тот же вопрос. Для нужд упр. и регл учета это мегадырень. Тоесть Мареванне из бухгалтерии нельзя лезть в сданный закрытый период, но если она распровведет док то можно. Браво! Но все же думаю тема показа не о правильности логики изменений..
это можно сказать защита от случайного проведения, например, когда пользователи повально закрывают формы документов кнопкой "Провести и закрыть")
Зачем массив собирать, а потом в строку склеивать? Можно же было сразу в цикле итоговую строку сформировать
Реально. Что то он намудрил.
@@LiffeApp такой способ формирования быстрей, чем через конкатенацию.
@@timurdanilenko3582 Ничего подобного. Тем более, что в итоге все равно будет конкатенация.
Через строку конкатенация это колхоз
@@МихаилАаа-д3ю нет, не тоже самое. Когда мы складываем строки, проге приходиться увеличивать количество памяти, занимаемой строковой переменной (как динамические массивы в дельфи и пр.), т.к. мы изначально выделили мало памяти (собственно сколько памяти нужно, в 1С указать нельзя). А метод СтрСоеденить вычисляет длину конечной строки, сразу создает переменную с нужной длиной и при конкатенации не нужно наращивать память. Примерно так это работает.
+100500
Супер!