Удаление кодов маркировки из пула при вводе в оборот УТ11.5, как следствие невозможность повторной печати марки
Доброго времени суток, коллеги. В определенный момент заметили, что пропала возможность повторно напечатать марки (текстиль). С чем связано - не уловили, возможно с обновлением.
Пошел по цепочке: заказ на эмиссию - родились коды в пуле. Можно печатать сколько угодно раз в регистре штрихкодов упаковок, а так же сбрасывая признак печати в заказе. Как только бухгалтер производит ввод марок в оборот - из пула они удаляются, соответственно печать более не возможна.
На сколько понимаю ситуацию, из пула они должны уходить регламентом. Регламент не настроен и не запущен. Уходят именно при отправке марки в оборот.
Что я упускаю в этой цепочке? Как ситуацию поправить/обойти? Организация сама производит, сама продает. Со временем марки затираются, повреждаются в торговом зале, нужна повторная печать. Ранее она была возможна.
Пошел по цепочке: заказ на эмиссию - родились коды в пуле. Можно печатать сколько угодно раз в регистре штрихкодов упаковок, а так же сбрасывая признак печати в заказе. Как только бухгалтер производит ввод марок в оборот - из пула они удаляются, соответственно печать более не возможна.
На сколько понимаю ситуацию, из пула они должны уходить регламентом. Регламент не настроен и не запущен. Уходят именно при отправке марки в оборот.
Что я упускаю в этой цепочке? Как ситуацию поправить/обойти? Организация сама производит, сама продает. Со временем марки затираются, повреждаются в торговом зале, нужна повторная печать. Ранее она была возможна.
Найденные решения
Зачистка процедуры "ОчисткаПулаКодовМаркировкиПоОтчетуОНанесении" в модуле менеджера регистра "ПулКодовМаркировкиСУЗ" принесла результат - марки более из пула не удалаяются.
Попробовал поискать вызовы процедуры и отследить алгоритм "вверх" - без отладки нереально.
Заказчика устраивает, времени на отладку больше не дадут. Далее поработать по этому вопросу вряд ли получится.
Если кто найдет штатное решение - отпишите, думаю будет полезным.
Попробовал поискать вызовы процедуры и отследить алгоритм "вверх" - без отладки нереально.
Заказчика устраивает, времени на отладку больше не дадут. Далее поработать по этому вопросу вряд ли получится.
Если кто найдет штатное решение - отпишите, думаю будет полезным.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)Если регламетное вырублено, то вероятно при печати или при отправке документа данные трутся.
Где можно проверить:
1. Модуль менеджера регистра - гляньте там процедуру что-то вроде "УдалитьНапечатаное" или "Очистить"
2. Гляньте что вызывает регламетное задание - и поставьте там Возврат
3. Глобальный поиск по конфе по названию регистра
Где можно проверить:
1. Модуль менеджера регистра - гляньте там процедуру что-то вроде "УдалитьНапечатаное" или "Очистить"
2. Гляньте что вызывает регламетное задание - и поставьте там Возврат
3. Глобальный поиск по конфе по названию регистра
(2) Регламент не включен, удаляет не он. При печати не трутся - только признак устанавливается.
Удаляются записи именно при обмене с ГИС, в доке ввода в оборот. Это то, что я сразу выяснил.
Если штатных способов нет - полезу в конфу. Не нашел инфу поиском, хотел предварительно узнать - это сейчас норма или что-то делается не так, может, к примеру опция какая не включена.
Удаляются записи именно при обмене с ГИС, в доке ввода в оборот. Это то, что я сразу выяснил.
Если штатных способов нет - полезу в конфу. Не нашел инфу поиском, хотел предварительно узнать - это сейчас норма или что-то делается не так, может, к примеру опция какая не включена.
(3)
Это понятно, в
Регламент не включен, удаляет не он
Это понятно, в
2. Гляньте что вызывает регламетное задание - и поставьте там Возврат
- имелось ввиду, что регл задание вызывает процедуру удаления лишних элементов, и скорее всего эта процедура вызывается и из других мест и всего-то надо там поставить возврат
(4)
По регламенту не совсем так. Регламент вызывает СВОЮ процедуру из менеджера, которая работает по всему регистру на предмет сравнения даты записи в пуле с константой времени хранения.
В данном же случае удаляются конкретные записи из дока обмена. Т.е., да, есть инициатор очистки, есть процедура очистки. Эта процедура либо в менеджере, либо где-то еще. Менеджер я сразу посмотрел. Процедур таких там несколько, но по названию не очень подходят. С инициаторами сложнее - глазами не везде понятны критерии вызова. Отладка сказала бы больше, но, там тонкие клиенты и неопределенное время ввода документов, в общем, проблематично на скорую руку. Пока надеюсь на штатное решение.
- имелось ввиду, что регл задание вызывает процедуру удаления лишних элементов, и скорее всего эта процедура вызывается и из других мест и всего-то надо там поставить возврат
По регламенту не совсем так. Регламент вызывает СВОЮ процедуру из менеджера, которая работает по всему регистру на предмет сравнения даты записи в пуле с константой времени хранения.
В данном же случае удаляются конкретные записи из дока обмена. Т.е., да, есть инициатор очистки, есть процедура очистки. Эта процедура либо в менеджере, либо где-то еще. Менеджер я сразу посмотрел. Процедур таких там несколько, но по названию не очень подходят. С инициаторами сложнее - глазами не везде понятны критерии вызова. Отладка сказала бы больше, но, там тонкие клиенты и неопределенное время ввода документов, в общем, проблематично на скорую руку. Пока надеюсь на штатное решение.
(8)
Там ноль, проверил сразу. Кроме того, эта константа стреляет только если регламентное активно.
(6)
Сегодня клиент выделил немного времени - получилось через отладку пару документов прогнать.
В модуле менеджера регистра "ПулКодовМаркировкиСУЗ" есть процедура "ОчисткаПулаКодовМаркировкиПоОтчетуОНанесении". Она вызывается при выводе марок и, судя по коду, очищает пул. Алгоритм вызова и условия вызова проверить пока не смог - не дали. Пока что заремарил содержимое процедуры, завтра обещают дать обратную связь. Отпишу по результату.
Проверь константу "Срок хранения использованных кодов маркировки в пуле, дней" вручную через функции для технического специалиста, там должен быть ноль.
Там ноль, проверил сразу. Кроме того, эта константа стреляет только если регламентное активно.
(6)
удалось найти решение?
Сегодня клиент выделил немного времени - получилось через отладку пару документов прогнать.
В модуле менеджера регистра "ПулКодовМаркировкиСУЗ" есть процедура "ОчисткаПулаКодовМаркировкиПоОтчетуОНанесении". Она вызывается при выводе марок и, судя по коду, очищает пул. Алгоритм вызова и условия вызова проверить пока не смог - не дали. Пока что заремарил содержимое процедуры, завтра обещают дать обратную связь. Отпишу по результату.
Проверь константу "Срок хранения использованных кодов маркировки в пуле, дней" вручную через функции для технического специалиста, там должен быть ноль. Или даже сам туда ноль поставь и запиши, там есть кнопка.
Прикрепленные файлы:
Зачистка процедуры "ОчисткаПулаКодовМаркировкиПоОтчетуОНанесении" в модуле менеджера регистра "ПулКодовМаркировкиСУЗ" принесла результат - марки более из пула не удалаяются.
Попробовал поискать вызовы процедуры и отследить алгоритм "вверх" - без отладки нереально.
Заказчика устраивает, времени на отладку больше не дадут. Далее поработать по этому вопросу вряд ли получится.
Если кто найдет штатное решение - отпишите, думаю будет полезным.
Попробовал поискать вызовы процедуры и отследить алгоритм "вверх" - без отладки нереально.
Заказчика устраивает, времени на отладку больше не дадут. Далее поработать по этому вопросу вряд ли получится.
Если кто найдет штатное решение - отпишите, думаю будет полезным.
так работает
Процедура ОчисткаПулаКодовМаркировкиПоОтчетуОНанесении(КодыМаркировки) Экспорт
Блокировка = Новый БлокировкаДанных();
ЭлементБлокировки = Блокировка.Добавить("РегистрСведений.ПулКодовМаркировкиСУЗ");
ЭлементБлокировки.ИсточникДанных = КодыМаркировки;
ЭлементБлокировки.ИспользоватьИзИсточникаДанных("КодМаркировки", "КодМаркировки");
ЭлементБлокировки.ИспользоватьИзИсточникаДанных("ХешСуммаКодаМаркировки", "ХешСуммаКодаМаркировки");
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
Блокировка.Заблокировать();
//Набор = РегистрыСведений.ПулКодовМаркировкиСУЗ.СоздатьНаборЗаписей();
//Для Каждого СтрокаПулаКодовМаркировки Из КодыМаркировки Цикл
// Набор.Отбор.КодМаркировки.Установить(СтрокаПулаКодовМаркировки.КодМаркировки);
// Набор.Отбор.ХешСуммаКодаМаркировки.Установить(СтрокаПулаКодовМаркировки.ХешСуммаКодаМаркировки);
// Набор.Записать();
//КонецЦикла;
КонецПроцедуры
Показать
Если предусмотренного решения нет, можно добавить расширение с константой "ОчищатьПулКодовМаркировкиПоОтчетуОНанесении", потом
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
&Вместо("ОчисткаПулаКодовМаркировкиПоОтчетуОНанесении")
Процедура _ОчисткаПулаКодовМаркировкиПоОтчетуОНанесении(КодыМаркировки) Экспорт
Если Константы.ОчищатьПулКодовМаркировкиПоОтчетуОНанесении.Получить() Тогда
ПродолжитьВызов();
КонецЕсли;
КонецПроцедуры
#КонецЕсли
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот