ТМЦ исполнителей: убрать неиспользуемый функционал
Гуидо перевели обмен ТМЦ на 1С:Шину. Механизм создания списаний по HTTP-очереди (DEV1C-30408) подлежит удалению. Отчёт показывает, как всё устроено сейчас, что именно безопасно убрать и в каком порядке.
Цель. Убрать механизм DEV1C-30408 (HTTP-очередь списаний Гуидо), не задев боевой механизм создания «Перемещение запасов» и общие объекты системы.
Решение go/no-go. Геннадий подтвердил: функционал убираем.
Все факты ниже перепроверены по исходникам (src/cf, src/cfe) 2026-06-02: номера строк, рубильники, цепочка вызова эндпоинта, отсутствие внутренних вызовов точек входа.
Главный вывод
«Перемещение запасов / Списание на расходы» создаётся двумя независимыми путями. В проде живёт Path B (списания при записи документа ОУП). Path A (HTTP-очередь, DEV1C-30408) спящий — рубильник = Ложь. Удаляем только Path A. Path B остаётся — это единственный механизм формирования Перемещений из ОУП, 32109 его не замещает (лишь меняет источник наполнения ОУП).
Как работает сейчас
Документ «Перемещение запасов» с видом операции «Списание на расходы» по обслуживаниям Гуидо может создаваться двумя разными механизмами. Это ключ ко всей задаче: удаляемый функционал — только один из них.
Path A — HTTP-очередь (DEV1C-30408, спящий)
Двусоставной путь, рубильник
Guido_СоздаватьСписанияИзGuidoПоОчередиДанныхHTTPСервиса (в проде = Ложь):
- Вход: Гуидо POST-ом шлёт uuid задачи в эндпоинт
createcompletedtask— uuid пишется в очередь-регистрDM_Guido_ЗадачиСоСписаниемЗапасов(Обработано = Ложь). - Разбор: процедура
Guido_ОбработкаОчередиСписаний_СозданиеСписаниячитает очередь, опрашивает Гуидо через GETperformed-tasksи формирует «Перемещение запасов».
Path B — при записи ОУП (боевой)
Рубильник GUIDO_ЗагружатьСписанияОтдельноОтРабот (в проде = Ложь):
после записи документа «Оказание услуг поставщиком» (ОУП) внешняя доп.обработка
«Обработка после записи регламентное» вызывает
ОбработатьПослеЗаписи → СоздатьЗакрывающиеДокументы →
ссо_СписаниеДавальческихМатериалов.СФормироватьСписаниеНаОсновании,
и «Перемещение запасов» формируется по данным самого ОУП (без опроса Гуидо).
Что меняет DEV1C-32109
Новый механизм дм_ОбслуживанияГуидо меняет только источник
наполнения ОУП: ТМЦ приходят в 1С:Шину массивом items[] и
раскладываются в табличную часть «Списанные товары» по uuid_1c. Сам модуль
«Перемещение запасов» не создаёт (проверено: ноль упоминаний
ПеремещениеЗапасов / ссо_ в модуле). Перемещение по-прежнему делает Path B.
Инцидент 22.05 как доказательство, что живёт Path B
Отключение доп.обработки «Обработка после записи Оказание услуг поставщиком» остановило создание «Перемещение запасов» — обработку вернули. Значит боевой путь — Path B, а Path A с рубильником = Ложь фактически не работает.
Эндпоинт createcompletedtask — разобран
Ранее ошибочно считали «POST-ручки нет». Ручка есть — это
data-driven маршрут в расширении ЗапросыИзВнешнихСистем. Имя
createcompletedtask не встречается в коде литералом, потому что это
ключ маршрутизации, хранящийся в справочнике DM_Параметры.
| Шаг | Что происходит | Где |
|---|---|---|
| 1. HTTP-сервис | URL-шаблон /{ИмяМетода} (catch-all), POST → метод v1post |
cfe/ЗапросыИзВнешнихСистем/HTTPServices/API/Ext/Module.bsl:8 |
| 2. Делегирование | v1post → дмЗапросыИзВнешнихСистем.ВыполнитьМетодHTTPСервиса(Запрос) |
cf/CommonModules/дмЗапросыИзВнешнихСистем/Ext/Module.bsl |
| 3. Диспетчер | по ИмяМетода = createcompletedtask ищет одноимённый параметр в DM_ЗначенияПараметров → имя модуля ЗИВС_ПолучениеЗадачСоСписаниями → Вычислить("…ОбработатьЗапрос(Запрос)") |
тот же модуль; нет параметра → 404 «Метод отсутствует» |
| 4. Обработчик | принимает POST { "uuid": "…" }, пишет запись в РС DM_Guido_ЗадачиСоСписаниемЗапасов (Обработано = Ложь) |
cfe/ЗапросыИзВнешнихСистем/CommonModules/ЗИВС_ПолучениеЗадачСоСписаниями/Ext/Module.bsl |
Почему пометка параметра на удаление = выключение ручки
Удаление/отключение параметра-маршрута
createcompletedtask в DM_Параметры заставляет диспетчер вернуть
404 «Метод отсутствует» — эндпоинт гаснет без правки кода. Это уже
сделано в проде (комм. Николаенко, 2026-05-19). HTTP-сервис API, метод
v1post и диспетчер дмЗапросыИзВнешнихСистем — общий catch-all
на десятки методов ЗИВС, их не трогаем.
Схема потоков
Path A vs Path B — сравнение
| Признак | Path A — HTTP-очередь | Path B — при записи ОУП |
|---|---|---|
| Рубильник (DM_Параметры) | Guido_СоздаватьСписанияИзGuidoПоОчередиДанныхHTTPСервиса |
GUIDO_ЗагружатьСписанияОтдельноОтРабот |
| Значение в проде | Ложь → спящий | Ложь → рабочий |
| Точка входа | DM_ОбщегоНазначенияСервер.Guido_ОбработкаОчередиСписаний_* (стр. 3173, 3461) | дмОказаниеУслугПоставщиком.ОбработатьПослеЗаписи → СоздатьЗакрывающиеДокументы → ссо_СписаниеДавальческихМатериалов.СФормироватьСписаниеНаОсновании |
| Опрос Гуидо | GET performed-tasks |
нет (по данным записанного ОУП) |
| Вход данных | POST createcompletedtask → очередь-РС |
ТМЦ в ОУП: 1С:Шина items[] (32109) или старый performed-tasks |
Что удаляем по DEV1C-32301
Удаляется только Path A — функционал DEV1C-30408 (HTTP-очередь списаний). Это спящий механизм, его удаление не влияет на боевое формирование «Перемещение запасов».
- Удаляем: эндпоинт-маршрут, очередь-регистр, процедуры разбора очереди, рубильник Path A (Группа 1).
- Оставляем (НЕ удаляем): Path B — единственный механизм
формирования Перемещений из ОУП (Группа 2). Альтернативы ему нет: 32109 Перемещение не
создаёт. Path B не гасится. После удаления Path A — только упростить его (убрать
ветку рубильника, всегда вызывать
СоздатьЗакрывающиеДокументы). - Не трогаем никогда: общие объекты — параметры подключения к API Guido, обмен с бухгалтерией, общесистемное перечисление вида операции (Группа 3).
Как удалять — пошагово
Этап 1. Path A (можно делать сразу)
- Маршрут
createcompletedtaskв DM_Параметры — оставить помеченным на удаление / удалить запись. Эндпоинт сразу начнёт отдавать 404, код HTTP не правим. В проде уже помечен. - Найти и снять регламентное задание / доп.обработку, вызывающую
Guido_ОбработкаОчередиСписаний_СозданиеСписанияи…_СвязываниеСписанияОказанияУслугПоставщиков(прямых вызовов в коде нет — запуск внешний). Без этого процедуры останутся «висящими». - Удалить процедуры
Guido_ОбработкаОчередиСписаний_СозданиеСписания(стр. 3173) и…_СвязываниеСписанияОказанияУслугПоставщиков(стр. 3461) вDM_ОбщегоНазначенияСервер. - Удалить общий модуль
ЗИВС_ПолучениеЗадачСоСписаниями(расш. ЗапросыИзВнешнихСистем) — эксклюзивен этому механизму. - Удалить регистр сведений
DM_Guido_ЗадачиСоСписаниемЗапасов(после удаления процедур, которые его читают/пишут). - Удалить параметр-рубильник
Guido_СоздаватьСписанияИзGuidoПоОчередиДанныхHTTPСервисав DM_Параметры. - Проверить параметры из списка «на проверку» (см. ниже) — удалять только те, что не используются Path B.
Не удалять при чистке Path A
HTTP-сервис API, метод v1post,
модуль-диспетчер дмЗапросыИзВнешнихСистем — общий catch-all для десятков
методов ЗИВС. Удаляем только запись-маршрут в DM_Параметры, не сам сервис.
Этап 2. Упрощение Path B (после подтверждения 32109) — НЕ удаление
Path B остаётся работать — это единственный механизм формирования Перемещений. Удалять его нельзя: иначе Перемещения перестанут создаваться. После того как аналитик подтвердит корректность потока через 1С:Шину, делается только зачистка следов Path A в точке Path B:
- В
ОбработатьПослеЗаписиубрать веткуЕсли Не СписаниеОтдельноОтРабот— всегда вызыватьСоздатьЗакрывающиеДокументы(после удаления Path A режим «отдельно от работ» ведёт в никуда). - Упразднить рубильник
GUIDO_ЗагружатьСписанияОтдельноОтРаботв DM_Параметры.
Модуль ссо_СписаниеДавальческихМатериалов и
СоздатьЗакрывающиеДокументы не удаляем — они и есть боевой
механизм; ссо_ вдобавок используется ЗаказомПоставщику.
Группа 1 — Path A: удалить, низкий риск
| Объект | Путь | Эксклюзивность |
|---|---|---|
Параметр-маршрут createcompletedtask (знач. ЗИВС_ПолучениеЗадачСоСписаниями) |
данные в БД — в проде помечен на удаление | только этот механизм |
Общий модуль ЗИВС_ПолучениеЗадачСоСписаниями |
cfe/ЗапросыИзВнешнихСистем/CommonModules/ЗИВС_ПолучениеЗадачСоСписаниями/Ext/Module.bsl | только этот механизм |
РС DM_Guido_ЗадачиСоСписаниемЗапасов (изм. ИдентификаторЗадачи, рес. Обработано) |
cf/InformationRegisters/DM_Guido_ЗадачиСоСписаниемЗапасов.xml | только этот механизм |
Процедура Guido_ОбработкаОчередиСписаний_СозданиеСписания |
DM_ОбщегоНазначенияСервер/Ext/Module.bsl:3173 | вызовов в исходниках нет (запуск извне) |
Процедура Guido_ОбработкаОчередиСписаний_СвязываниеСписанияОказанияУслугПоставщиков |
DM_ОбщегоНазначенияСервер/Ext/Module.bsl:3461 | то же |
Параметр-рубильник Guido_СоздаватьСписанияИзGuidoПоОчередиДанныхHTTPСервиса |
DM_Параметры | только Path A |
Группа 2 — Path B: живой, НЕ удалять
Path B — единственный механизм формирования Перемещений из ОУП. Не удаляется в рамках 32301. Правки ниже — только следствие удаления Path A.
| Объект | Путь | Примечание |
|---|---|---|
ОбработатьПослеЗаписи + СоздатьЗакрывающиеДокументы |
cfe/RMS_Карсервис/Documents/дмОказаниеУслугПоставщиком/Ext/ManagerModule.bsl:38 | боевая точка; оставить. После удаления Path A — упростить (убрать ветку рубильника) |
Модуль ссо_СписаниеДавальческихМатериалов (СФормироватьСписаниеНаОсновании, ДобавитьВОчередьНаПроведение) |
cfe/СозданиеСвязанныхОбъектов/CommonModules/ссо_СписаниеДавальческихМатериалов/Ext/Module.bsl (есть в репозитории) | используется также ЗаказомПоставщику, не только Гуидо — целиком не удалять |
Параметр GUIDO_ЗагружатьСписанияОтдельноОтРабот |
DM_Параметры | переключатель A/B. После удаления Path A ветка «Истина» тупиковая — упразднить, оставив «всегда Path B» |
Группа 3 — общие объекты: НЕ удалять
- Параметры подключения к API Guido (
Имя_сервера_API_GUIDO,Порт_сервера_API_GUIDO,Authorization_Tokin_API_GUIDO,Login_API_GUIDO,Pass_API_GUIDO) — используются такжедмGuidoОбменНоменклатуройИОстатками,дмGuidoОбменОстатками. МенеджерОбменаЧерезУниверсальныйФормат+ ПКОДокумент_ПеремещениеЗапасов_НаРасходы_Отправка(МенеджерОбменаЧерезУниверсальныйФормат/Ext/Module.bsl ~452, ~24239) — обмен с бухгалтерией для всех «Списание на расходы», не только Гуидо.- Перечисление
ВидыОперацийПеремещениеЗапасов.СписаниеНаРасходы— общесистемное.
Параметры Path A, требующие проверки перед удалением
Перед удалением убедиться, что эти параметры не задействованы в Path B:
Проверить перекрёстное использование
Guido_АдресМетодаВыполненныхЗаданий,
Guido_ДопСведениеИдентификаторОказанияУслугДляСписанияНаРасходы,
Guido_ВидРемонтаСписанияНаРасходы,
Guido_СписаниеНаРасходы_КомментарийДокументов,
ПолучательПеремещениеМ15Списание, GUIDO_Контрагент.
Статус DEV1C-32109 и порядок удаления
Последовательность
1. Гуидо уже отправляют ТМЦ через 1С:Шину; 32109 наполняет ОУП из items[].
2. Подтвердить у аналитика, что целевой поток «шина → ОУП → Path B → Перемещение» работает (см. вопрос ниже).
3. Удалить Path A (Этап 1, Группа 1).
4. Упростить Path B — убрать ветку рубильника (Этап 2). Path B НЕ удаляется.
Вопрос аналитику (блокирует физическое удаление Path A)
Гуидо уже шлют ТМЦ через шину. Подтвердить корректность потока:
- Все ли обслуживания с ТМЦ идут через шину, или часть ещё через performed-tasks?
- По обслуживаниям из шины Перемещение «Списание на расходы» точно формируется (Path B отрабатывает)?
- Нет ли задвоения списаний, если по одному uuid пришли и шина (
items[]), и performed-tasks?
Открытые вопросы
- Go/no-go: решение Гены утвердительное — функционал убираем. закрыт
- Эндпоинт
createcompletedtask— реален, это data-driven POST-маршрут в расш. ЗапросыИзВнешнихСистем (диспетчер по параметру DM_Параметры → модульЗИВС_ПолучениеЗадачСоСписаниями). Формулировка постановки верна. закрыт - Расш. «Создание связанных объектов» присутствует в этом
репозитории (
cfe/СозданиеСвязанныхОбъектов), отдельный доступ не нужен. уточнён - «Новый путь формирования Перемещений» — неточная формулировка. 32109 меняет только источник наполнения ОУП; Перемещение формирует прежний Path B. уточнён
- Поток через 1С:Шину — подтвердить у аналитика (см. раздел «Статус 32109»). От ответа зависит старт Этапа 2. к аналитику
Источник фактов: tasks/2026-06/DEV1C-32301-…/description.md (раздел
«Карта удаления», инвентаризация 2026-06-02, перепроверена по исходникам). Связанные
задачи: DEV1C-30408 (функционал к удалению), DEV1C-32109 (новый механизм через 1С:Шину).