Rttsv

Rttsv

Аналитик 1с и начинающий разработчки 1с
Пикабушник
Дата рождения: 1 сентября
111 рейтинг 4 подписчика 2 подписки 4 поста 0 в горячем
Награды:
5 лет на Пикабу За подвиги в Мире PlayStation 5
7

Контроль на переполнение ячейки в УТ 11.5 при ручном проведении размещения

Всем привет. Хочу поделиться реальным кейсом по началу наведения порядка на адресном складе в 1С:Управление торговлей 11. На данный момент который вылился в написание небольшого, но очень полезного расширения.

Дано: Клиент со складом, работающим по жесткому формату: 1 ячейка = 1 паллет. Казалось бы, идеальная схема, где сложно ошибиться. Однако при простейшей проверке оказалось — около 10% ячеек числились переполненными. То есть по базе в ячейке, рассчитанной на один паллет, лежало по два, а то и три.

Причина: Человеческий фактор. Операторы по разным причинам ошибались при ручном вводе документа «Отбор (размещение) товаров» (промахнулся строкой, выбрал не ту ячейку или при погрузке или при отгрузке, забыл списать по результатам инвентаризации т.п.).

Типовом контроль УТ 11. Главная подстава типового механизма в том, что лимиты (объем или вес) УТ 11 использует только для автоматического алгоритма (когда вы жмете «Создать задания на размещение»). Алгоритм честно перебирает ячейки и отбрасывает заполненные. Но если оператор вручную бьет документ и указывает ячейку, 1С считает: раз человек в здравом уме туда это кладет, значит, он видит, что товар влезает. Система молча проводит документ. Никаких проверок при ручном проведении нет.

По требованиям заказчика требуется оставить возможность изменения ячеек в документе размещения операторам на ближайшее время.

Решение: Расширение с «правом на подвиг». Прикрепляю само расширение может кому пригодиться в посте не могу комментарием сделаю.

Было решено написать расширение, которое проверяет остатки регистра ТоварыВЯчейках с учетом того, что мы сейчас туда пытаемся положить.

Если лимит по объему или весу превышен, оператору вылетает диалоговое окно:

«Внимание! При размещении в ячейку [Номер] будет заполнение более 100% по объему. Отменить проведение документа? [Да] / [Нет]»

Почему оставили кнопку «Нет» (провести документ), а не сделали жесткий запрет? Потому что склад — это живой организм. Бывают ситуации, когда по базе в ячейке еще висит товар, но физически она уже пустая, а паллет нужно поставить вот прям срочно. Оператор берет ответственность на себя, жмет «Нет» и проводит документ.

Так же для исправления данной ситуации были произведены и сохранены настройки типовых отчетов для поиска переполненных ячеек. Теперь при пересменке обязательно формируется отчет и он должен пустым.

Ну и куда же без инструкций на каждый процесс (приемка, отгрузка, инвентаризация, блокировка ячеек, перемещение, разбор задвоенных ячеек.) и подготовки настроек для отчетов для контроля ошибок в процессе.



Далее планируется расписать оставшиеся складские бизнес процессы.
Настроить ТСД и клевевернс.
Провести полное обучение сотрудников склада
И после все же запретить операторам выбирать ячейка в ручную при размещении.

Показать полностью
5

Доработал нумерацию счетов-фактур в 1С:УТ 11.5 по подразделениям без создания обособленного подразделения

Обратился бухгалтер одной небольшой организации с просьбой сделать суфикс по обособленному подразделению в счете-фактуре.
То есть если счет фактура просто от организации то Номер выглядит так: Счет-фактура № 1, а если от обособленного подразделения, то так Счет-фактура № 1/1. Сохраняя сквозную нумерацию. Причем в организации используется несколько 1с. Это УТ(Управление торговлей) и БП КОРП(Бухгалтерия предприятия КОРП) и документы по ЭДО отправляются из БП.
В БП все работает уже как надо.
Изначально был показан типовой механизм решения данной задачи - это вынос обособленного подразделения в отдельную организацию с видом обособленное подразделение. Заказчику по целому ряду причин данных подход не подошел.
Далее зайдя в документ счет-фактура выданный сразу видно реквизит "Номер на печать", пробуем изменить его значения и сформировать интересующие нас печатные формы и убеждаюсь, что это то что нужно.

Теперь осталось решить по какому признаку мы его будем дополнять, откуда брать это самое дополнение и найти типовую процедуру его заполнения.

Обсудив с заказчиком было согласованно добавление реквизита "Добавочный номер СФ" в типовой справочник "Структура предприятия". Тип реквизита строка и его значение после "/" будет добавляться в "Номер на печать" если данное подразделение выбрано в документе.

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

В справочнике в расширении добавил реквизит ДобавочныйНомерСФ Тип число длина 2, так же добавил форму элемента этого справочника в расширение и вывел новый реквизит на форму.

Далее требуется найти текущее место заполнения реквизита. Для этого в конфигурации нашел форму документа, в ней нашел путь к данным Объект.ПредставлениеНомера

И так как это реквизит документа сделал поиск ссылок на объект. в модуле документа Счет-фактураВыданный нашлась процедура:
Процедура УстановитьПредставлениеНомера()

Если Не ЗначениеЗаполнено(Номер) Тогда

УстановитьНовыйНомер();

КонецЕсли;

Если Исправление Тогда

ПредставлениеНомера = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СчетФактураОснование, "ПредставлениеНомера");

Иначе

ПредставлениеНомера = Документы.СчетФактураВыданный.ПолучитьПредставлениеНомера(ЭтотОбъект);

КонецЕсли;
КонецПроцедуры

Решил в расширение добавить процедуру после этой. Для этого в модуле документа в расширении добавил:
&После("УстановитьПредставлениеНомера")

Процедура СФ_УстановитьПредставлениеНомера()

// 1. Проверяем, что подразделения есть

Если ЗначениеЗаполнено(ЭтотОбъект.Подразделение) Тогда

// 2. Получаем новый реквизит

ДобавочныйНомер = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ЭтотОбъект.Подразделение, "ДобавочныйНомерСФ");

// 3. Если он заполнен, добавляем к уже сформированному ПредставлениеНомера

Если ЗначениеЗаполнено(ДобавочныйНомер) Тогда

ЭтотОбъект.ПредставлениеНомера = ЭтотОбъект.ПредставлениеНомера + "/" + СокрЛП(ДобавочныйНомер);

КонецЕсли;

КонецЕсли;

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

Начал проверять не работало, потом отключил безопасный режим и все ок.

Пишу больше для себя, но вдруг кому еще пригодиться.

Ссылка на расширение https://disk.yandex.ru/d/LFtGbUunWxJxMw

Показать полностью 2
5

Как ограничивал видимость клиентов менеджерам в 1С:УТ 11.5, но всё равно дал им искать по всей базе

В общем, недавно прилетел мне довольно интересный (и на первый взгляд противоречивый) заказ на 1С:Управление торговлей 11.5.

Задача: сделать так, чтобы каждый менеджер видел только "своих" клиентов и связанные с ними документы. Всё по классике: разграничение прав доступа, ничего нового...
Но! Тут же прилетает требование номер два: менеджеры занимаются холодными звонками и должны иметь возможность проверить — а нет ли такого клиента уже в базе, и если есть, то за кем он закреплен.

И тут начинается магия 1С.
Типовой механизм прав в 1С работает так, что пользователь вообще не видит чужих клиентов: ни в справочнике, ни в отчетах, ни в документах — даже если где-то есть ссылка на контрагента, она "битая" и не открывается.
То есть хочешь разграничение? Получай: ищи по базе сколько хочешь, всё равно ничего не найдешь кроме своих :)

Что делать?
С одной стороны — надо ограничить доступ, с другой — дать возможность искать по всей базе, но чтобы в ответ не вываливалась лишняя информация.

Как выкрутилися

  • Сделал отдельный регистр сведений — туда пишется только нужная информация о каждом клиенте (наименование, ИНН, КПП, ФИО ответственного). Все поля — строки, чтобы не споткнуться о ограничения прав на уровне ссылок.

  • Настроил подписки на события:

    • При создании/изменении контрагента — запись/обновление в регистре.

    • При удалении (пометка на удаление) — запись из регистра тоже удаляется.

  • Автоматизировал обновление: когда меняется партнер — автоматически обновляется связанный контрагент, чтобы в регистре всегда были актуальные данные.

  • Пилил простую обработку для поиска: вводишь часть названия или ИНН — находишь клиента, и сразу видно: есть такой, или нет, и кто сейчас его "куратор".

Итог

В результате — все довольны:

  • Менеджеры не видят ничего лишнего, только своих клиентов и документы.

  • Но если что — могут быстро пробить по базе, есть ли такой клиент, и если есть — кто с ним уже работает.

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

P.S.
Если интересно, могу выложить детали реализации или куски кода — спрашивайте в комментах!
И вообще, если есть свои лайфхаки по разграничению доступа в 1С, делитесь, с радостью почитаю :)

Показать полностью
6

Доработка "ДАЛИОН: Управление магазином.ПРО", ред. 1.2 для выгрузки признака маркировки во Frontol 6

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

С чего начал:

  1. Определил маркируемую продукцию среди товарного ассортимента.

  2. Проверил наличие регистрации юридического лица на сайте «Честного знака» как участника оборота по каждой категории маркируемого товара.

  3. Проверил процедуру приёмки товаров и наличие ЭДО.

  4. Оценил готовность системы учёта. В данном случае использовалась старая 1С, которая совсем не знает о маркировке. 1С применялась только для формирования складских остатков и установки цен, с последующей выгрузкой во Frontol.

  5. Проверил готовность кассовых мест: версию прошивки фискальных регистраторов, версию кассового ПО и его поддержку маркированной продукции. Поскольку кассовое ПО — Frontol, дополнительно уточнил наличие актуальной и настроенной версии Frontol Mark Unit.

  6. Оценил наличие локального модуля «Честного знака» для соблюдения разрешительного режима (с учётом будущих требований).

Что удалось определить:

  1. Пройдясь по магазину, обнаружил, что в ассортименте есть бутилированная вода, безалкогольные напитки (энергетики, соки, газировки и т. п.), молочная продукция (в данном случае — мороженое) и товары лёгкой промышленности (полотенца, скатерти).

  2. Регистрация на сайте ЧЗ («Честный знак») была, но не все категории маркируемого товара были указаны в личном кабинете. Это было исправлено.

  3. Приёмка по ЭДО полностью отделена от системы учёта 1С. Однако сам ЭДО есть, и в нём проводится доверительная приёмка (по факту марки не проверяются, документы принимаются «на доверии»).

  4. Текущая версия 1С не поддерживает маркировку. Было принято решение добавить реквизит «Вид маркировки» в карточку номенклатуры и доработать выгрузку признака маркировки, чтобы Frontol понимал это при продаже. (Техническое описание доработки — в отдельной статье.)

  5. Frontol требовалось обновить из-за отсутствия поддержки некоторых видов маркировки. Также потребовалось обновить и настроить Mark Unit.

  6. Локального модуля ЧЗ вообще не было, пришлось установить. На одной из касс для этого даже понадобилась полная переустановка ОС с последующей настройкой, так как локальный модуль ЧЗ не поддерживает 32-битную версию Windows 7. А вот с прошивкой фискальных регистраторов было все впорядке.


    Доработка "ДАЛИОН: Управление магазином.ПРО", ред. 1.2 для выгрузки признака маркировки во Frontol 6
    Так как кофнигурация старая и упоменания маркировки в ней нет в приципе первое, что требуется это создать место где будет список всех видов маркировки. Я это сделал объектом вида перчисление и добавил в него все виды которые нашел в руководстве итегратора фронтол. В целом там все довольно детально описанно (https://frontol.ru/upload/distr/Frontol%206/Frontol%206.%20%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE%20%D0%B8%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0.pdf) Меня итересовала страница 185 и от туда взяты все виды маркировки и добавлены в перечисление.

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

Далее требуется сделать собсвенно сам фунционал выгрузки.

Посмотрев то как проиводят выгрузку товаров на кассы и увидел наименование обработчика выгрузки.

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

Нашел данную обработку обслуживания там, нашел фунцию с говорящим названием "Функция СформироватьСтрокуТекстаТовары" все уже было весьма неплохо описанно комментариями сделал небольшое добавление ранее там было пусто.

Выше сделал сопосотавление

На этом выгрузка из 1с сталла корретной.

Показать полностью 4
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества