Загрузка данных


1. Тема

Реализация механизма привязки инвентарных и серийных номеров к номенклатуре при проведении инвентаризации основных средств с использованием ТСД.

2. Цель доработки

Обеспечить возможность привязки ранее не зарегистрированных инвентарных и серийных номеров к элементам справочника «Номенклатура» непосредственно в процессе инвентаризации на ТСД.

Автоматизировать создание и обновление соответствующих записей в справочниках 1С:УХ при загрузке результатов инвентаризации.

3. Суть доработки

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

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

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

Если номер отсутствует либо не имеет привязки к номенклатуре, пользователю должна предоставляться возможность выбора соответствующего оборудования из справочника «Номенклатура».

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

При завершении инвентаризации новые привязки вместе с результатами пересчёта должны передаваться в 1С:УХ посредством существующего HTTP-сервиса.

4. Объекты модификации

На стороне 1С:УХ:

- Документ "ПересчетТМЦ".
- Табличная часть "ОсновныеСредства".
- Справочник "Номенклатура".
- Справочник «Инвентарные номера».
- Справочник «Серийные номера».
- HTTP-сервис «Интеграция с ТСД».
- Серверные процедуры обработки результатов инвентаризации.

На стороне мобильного приложения:

- Форма проведения инвентаризации.
- Механизм обработки сканирования штрихкодов.
- Форма выбора номенклатуры.
- Локальные справочники инвентарных и серийных номеров.
- Механизм синхронизации справочников.
- Механизм формирования и отправки JSON.

Фактические имена объектов и реквизитов необходимо использовать в соответствии с конфигурациями УХ и мобильного приложения.

5. Описание технического решения

5.1. Обработка сканирования на ТСД

При сканировании кода необходимо реализовать следующий алгоритм:

1. Получить значение отсканированного кода.
2. Проверить наличие кода среди уже обработанных номеров текущей инвентаризации.
3. Если код ранее обрабатывался, повторное сканирование игнорировать.
4. Выполнить поиск кода в локальном справочнике «Инвентарные номера».
5. Если соответствующая запись не найдена, выполнить поиск в справочнике «Серийные номера».
6. Если запись найдена, определить связанную с ней номенклатуру.
7. Если номенклатура определена, добавить оборудование в список пересчёта.
8. Если номер найден, но связь с номенклатурой отсутствует, открыть форму выбора номенклатуры.
9. Если код отсутствует в обоих справочниках, открыть форму определения типа номера.

Форма определения типа номера

При отсутствии отсканированного значения в справочниках пользователь должен выбрать один из вариантов:

- Инвентарный номер.
- Серийный номер.

После определения типа необходимо открыть форму выбора номенклатуры.

5.2. Реализация формы выбора номенклатуры

Необходимо разработать форму выбора оборудования из справочника «Номенклатура».

Требования к форме:

1. Отображать список доступных элементов номенклатуры.
2. Реализовать поиск по наименованию и артикулу.
3. Обеспечить выбор элемента нажатием на соответствующую строку.
4. Исключить возможность выбора оборудования, у которого уже заполнен номер сканируемого типа.
5. После выбора выполнить сохранение новой привязки в локальных данных.
6. Добавить выбранное оборудование в список пересчёта.
7. Вернуть пользователя на основную форму инвентаризации.

Особенности фильтрации:

При сканировании инвентарного номера должны отображаться элементы номенклатуры, не имеющие привязанного инвентарного номера.

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

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

Например:

У оборудования имеется инвентарный номер, но отсутствует серийный. При сканировании нового серийного номера пользователь должен иметь возможность выбрать данную номенклатуру и дополнить её реквизиты.

5.3. Сохранение новых привязок на ТСД

После выбора номенклатуры необходимо:

1. Получить ссылку на выбранный элемент справочника.
2. Определить тип отсканированного номера.
3. Проверить отсутствие конфликтующих привязок в локальных данных.
4. Создать новую запись либо дополнить существующую.
5. Сохранить информацию о новой привязке для последующей передачи в УХ.
6. Добавить номенклатуру в список пересчёта.

Важно: создание и изменение записей в УХ при выборе оборудования не выполняются.

Все изменения передаются только после завершения инвентаризации.

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

5.4. Ограничения уникальности

Необходимо обеспечить соблюдение следующих условий:

1. Каждый инвентарный номер может принадлежать только одной номенклатуре.
2. Каждый серийный номер может принадлежать только одной номенклатуре.
3. Каждая номенклатура может иметь не более одного инвентарного номера.
4. Каждая номенклатура может иметь не более одного серийного номера.
5. Повторное сканирование одного номера не должно приводить к созданию дополнительных строк пересчёта.
6. Сканирование инвентарного и серийного номеров одной номенклатуры не должно приводить к дублированию оборудования в результатах пересчёта.

Проверки должны выполняться как на стороне мобильного приложения, так и на стороне УХ.

5.5. Формирование результатов пересчёта

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

Для каждой позиции должны передаваться:

Поле| Значение
Номенклатура| Ссылка на выбранную номенклатуру
Количество| 1
В наличии| Истина
Инвентарный номер| Отсканированное или ранее связанное значение
Серийный номер| Отсканированное или ранее связанное значение

Если один из номеров отсутствует, соответствующее значение остаётся незаполненным.

В рамках текущего пересчёта необходимо исключить повторное добавление одной и той же номенклатуры.

5.6. Доработка механизма формирования JSON

Необходимо расширить существующий механизм формирования JSON при завершении инвентаризации.

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

Передаваемые реквизиты:

- Номенклатура.
- Инвентарный номер.
- Серийный номер.

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

Информация о привязках должна передаваться вместе с существующими результатами пересчёта.

Структуру действующего JSON необходимо сохранить, дополнив её необходимыми полями без нарушения существующего механизма обмена.

При отсутствии одного из номеров соответствующее поле должно передаваться пустым.

5.7. Доработка HTTP-сервиса «Интеграция с ТСД»

На стороне УХ необходимо расширить алгоритм обработки входящего JSON.

Алгоритм обработки:

1. Получить JSON с результатами инвентаризации.
2. Определить документ "ПересчетТМЦ", для которого переданы результаты.
3. Выполнить стандартную проверку корректности полученных данных.
4. Получить информацию о новых привязках.
5. Для каждой привязки определить соответствующий элемент номенклатуры.
6. Проверить наличие инвентарного номера в справочнике.
7. Проверить наличие серийного номера в справочнике.
8. Проверить отсутствие конфликтующих привязок.
9. Если инвентарный номер отсутствует, создать новый элемент справочника «Инвентарные номера».
10. Заполнить реквизит "Номенклатура" созданного элемента.
11. Если серийный номер отсутствует, создать новый элемент справочника «Серийные номера».
12. При наличии соответствующего инвентарного номера установить связь серийного номера с ним.
13. Если существующая запись не имеет необходимой привязки, дополнить её.
14. Сохранить изменения справочников.
15. Выполнить стандартную загрузку результатов в табличную часть "ОсновныеСредства" существующего документа "ПересчетТМЦ".

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

Особенности обработки конфликтов:

Если номер уже связан с другой номенклатурой либо соответствующий тип номера уже заполнен у выбранной номенклатуры, необходимо:

1. Прекратить обработку конфликтной записи.
2. Не изменять существующую привязку.
3. Зарегистрировать ошибку в журнале регистрации УХ.
4. Продолжить обработку остальных записей.

В журнале регистрации необходимо фиксировать:

- Документ пересчёта.
- Номенклатуру.
- Инвентарный или серийный номер.
- Причину возникновения конфликта.

Отображение ошибок привязки пользователю ТСД не требуется.

5.8. Обновление данных на ТСД

Необходимо сохранить существующий механизм локального хранения справочников.

Синхронизация данных должна выполняться по отдельной команде пользователя.

При синхронизации необходимо получать из УХ актуальную информацию:

- О номенклатуре.
- Об инвентарных номерах и их привязках.
- О серийных номерах и их привязках.

Новые привязки, созданные в УХ после завершения инвентаризации, должны становиться доступны на ТСД после выполнения синхронизации.

Механизм синхронизации не должен удалять локальные изменения, которые ещё не были успешно переданы в УХ.

6. Дополнительное изменение структуры справочников

В существующей структуре справочник «Инвентарные номера» содержит реквизит "Номенклатура", а справочник «Серийные номера» содержит реквизит "ИнвентарныйНомер".

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

В данной ситуации существующая структура не позволяет напрямую сохранить связь серийного номера с номенклатурой.

Предлагаемое решение:

Добавить в справочник «Серийные номера» реквизит "Номенклатура" с типом "СправочникСсылка.Номенклатура".

Реквизит позволит сохранять привязку серийного номера непосредственно к номенклатуре при отсутствии инвентарного номера.

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

При последующем присвоении инвентарного номера необходимо обновлять связь в элементе справочника «Серийные номера».

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

7. Ожидаемый результат

После реализации доработки пользователь ТСД сможет:

1. Сканировать инвентарные и серийные номера оборудования.
2. Автоматически добавлять в пересчёт оборудование с существующими привязками.
3. Выбирать номенклатуру при сканировании неизвестных номеров.
4. Создавать новые привязки непосредственно в процессе инвентаризации.
5. Дополнять существующие привязки отсутствующими номерами.
6. Передавать результаты инвентаризации в УХ одним действием после завершения пересчёта.

На стороне УХ должны автоматически создаваться недостающие элементы справочников и обновляться существующие записи без нарушения уникальности привязок.

8. Критерии приёмки

№| Проверяемый сценарий| Ожидаемый результат
1| Сканирование известного инвентарного номера| Оборудование автоматически добавлено в пересчёт
2| Сканирование известного серийного номера| Оборудование автоматически добавлено в пересчёт
3| Сканирование неизвестного номера| Открыта форма определения типа номера
4| Выбор номенклатуры для неизвестного номера| Привязка сохранена локально, оборудование добавлено
5| Поиск номенклатуры по наименованию| Отображаются соответствующие элементы
6| Поиск номенклатуры по артикулу| Отображаются соответствующие элементы
7| Выбор номенклатуры с уже заполненным номером нужного типа| Номенклатура недоступна для выбора
8| Привязка серийного номера к номенклатуре с существующим инвентарным номером| Существующая привязка дополнена
9| Привязка инвентарного номера к номенклатуре с существующим серийным номером| Существующая привязка дополнена
10| Повторное сканирование номера| Дублирование отсутствует
11| Сканирование обоих номеров одной номенклатуры| В пересчёте присутствует одна позиция
12| Завершение инвентаризации| Результаты и новые привязки отправлены в УХ
13| Получение новых привязок в УХ| Созданы необходимые элементы справочников
14| Загрузка результатов пересчёта| Существующий документ заполнен корректно
15| Проверка количества| Количество равно 1
16| Проверка наличия| Признак наличия установлен
17| Получение конфликтующей привязки| Запись пропущена, ошибка зарегистрирована
18| Ошибка одной привязки в пакете| Остальные корректные записи обработаны
19| Повторная отправка результатов| Дублирующие привязки не создаются
20| Ручная синхронизация ТСД| Загружены актуальные сведения о привязках

9. Требования к реализации

При разработке необходимо обеспечить:

- Сохранение совместимости с существующим механизмом инвентаризации.
- Отсутствие дублирования элементов справочников.
- Проверку уникальности привязок перед записью данных в УХ.
- Независимую обработку записей при наличии ошибок.
- Регистрацию конфликтов в журнале регистрации.
- Корректную работу при отсутствии одного из номеров оборудования.
- Повторную безопасную обработку ранее полученных данных.
- Сохранение локальных данных ТСД до успешной отправки.
- Отсутствие необходимости постоянного соединения с УХ во время инвентаризации.

Результат доработки: реализован механизм привязки инвентарных и серийных номеров к номенклатуре при работе с ТСД с последующей автоматической регистрацией привязок в УХ.