Техническое задание: учёт драгметаллов в ломе электроники

Задание, которое получил ИИ-агент в примере «Полный цикл разработки в 1С силами ИИ-агента». Текст приведён без изменений; файл задания есть и в архиве комплекта.

Конфигурация: «Управление торговлей», редакция 11.5
Где выполняется доработка: отдельное расширение конфигурации «УчетДрагметаллов», префикс ДрМ_

Постановка

Компания принимает лом электроники — платы, разъёмы, контакты, катализаторы. В этом ломе содержатся драгоценные металлы: золото, серебро, платина, палладий.

Приёмщик взвешивает партию и видит грязный вес. Но платят сдатчику за чистый вес, а ценность партии определяется не весом лома, а тем, сколько в нём драгоценного металла и сколько этот металл стоит сегодня.

Сейчас всё это считают в таблице на компьютере приёмщика. Нужно вести в программе.


Общие требования

Конфигурация не меняется и с поддержки не снимается. Всё новое живёт в расширении. Типовые объекты — справочники, формы, общие модули — дорабатываются только заимствованием.

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

Права доступа настраиваются сразу при создании каждого объекта, а не в конце работы — подробно в пункте 14.

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


Как проверяется работа

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

Расчёты и проведение — модульными тестами (YAxUnit). Всё, что считает и записывает программа без участия пользователя, закрывается модульными тестами: вес нетто и суммы, расчёт драгоценных металлов, проведение и отмена проведения, движения по регистрам, контроль при проведении. Ожидаемые значения в тестах берутся из этого задания и считаются вручную, а не списываются с того, что вернула программа. Модульные тесты делаются до проверки интерфейса: ошибка в расчёте, найденная тестом, находится за минуты, а найденная на форме — за час.

Формы, кнопки и команды — сценариями Vanessa Automation. Сценарий открывает программу, открывает формы, нажимает кнопки и делает снимки экрана программы. Кнопка считается работающей, только если её нажали в программе и результат появился от нажатия. Каждый снимок исполнитель просматривает сам и проверяет, что на нём видно задуманное.

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

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

Если подключён инструмент работы с данными работающей программы (например, MCP:RSV Data Pro), итоги дополнительно сверяются запросом к базе.

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


1. Справочник «Драгоценные металлы»

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

У металла: наименование, краткий код (AU, AG, PT, PD) и комментарий.

2. Содержание драгоценных металлов в номенклатуре

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

Пример данных:

Номенклатура Металл Содержание, г/кг
Платы компьютерные Золото 0,25
Платы компьютерные Серебро 1,10
Разъёмы позолоченные Золото 1,80
Контакты серебряные Серебро 42,00
Катализаторы автомобильные Платина 1,20
Катализаторы автомобильные Палладий 0,90
Радиодетали, лом Золото 0,08
Радиодетали, лом Серебро 0,60

Список открывается не только из раздела программы, но и прямо из карточки вида лома: на панели навигации карточки номенклатуры, в группе «Перейти», должна появиться команда «Содержание драгоценных металлов». По ней открывается список, где видны строки только этой номенклатурной позиции. У позиции, для которой содержание не заполнено, список открывается пустым, а не с ошибкой.

3. Котировки драгоценных металлов

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

Пример данных:

Дата Металл Цена за грамм, руб.
01.09.2026 Золото 9 850,00
01.09.2026 Серебро 118,40
01.09.2026 Платина 3 120,00
01.09.2026 Палладий 2 940,00
08.09.2026 Золото 9 920,00
08.09.2026 Серебро 121,10

Так же, как у номенклатуры, котировки открываются из карточки металла: на панели навигации карточки металла, в группе «Перейти», — команда «Котировки драгоценных металлов». По ней открывается список котировок только этого металла. Проверяется на двух разных металлах: у каждого — свои котировки.

4. Тестовые данные

Строки из таблицы пункта 2 и котировки из пункта 3 исполнитель заводит в базу сам — любым удобным способом. Сверх них — данные, нужные для проверки (раздел «Как проверяется работа»).

5. Документ «Приёмка лома»

Новый документ. В шапке, помимо даты и номера: организация, склад, партнёр-сдатчик, вид приёмки, комментарий.

Вид приёмки — закрытый список из четырёх значений, пользователь его не пополняет: заготовка, отбор, излишки, деловой прокат. У нового документа — «заготовка».

Табличная часть «Лом» — одна строка на вид лома:

Колонка Как заполняется
Номенклатура выбирает пользователь
Вес брутто, кг вводит пользователь
Вес мусора, кг вводит пользователь
Засор, % вводит пользователь
Вес нетто, кг считается автоматически
Цена за кг вводит пользователь
Сумма считается автоматически

Вес нетто = (вес брутто − вес мусора) × (1 − засор / 100) — до трёх знаков после запятой, лишние знаки отбрасываются, а не округляются. Сумма = вес нетто × цена за кг. Пересчёт происходит сразу, как только пользователь поменял любое из исходных значений.

Табличная часть «Драгоценные металлы» заполняется по кнопке «Рассчитать металлы» — по строке на каждый металл, найденный в принятом ломе:

Колонка Как заполняется
Металл из содержания металлов в номенклатуре
Чистый металл, г сумма по всем строкам лома: вес нетто × содержание, г/кг; округляется до сотых
Цена за грамм котировка этого металла, действующая на дату документа (последняя введённая не позже этой даты)
Сумма чистый металл × цена за грамм

Под таблицей лома — общий вес нетто и общая сумма, под таблицей металлов — общее количество граммов и общая сумма.

Пример для проверки расчёта: брутто 100 кг, мусор 5 кг, засор 2 %, цена 50 руб./кг → нетто 93,100 кг, сумма 4 655,00 руб. Если это «Платы компьютерные», в металлах: золото 23,28 г, серебро 102,41 г.

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

Форма документа делается по образцу типовых документов. Сначала открыть один-два типовых документа — например, «Заказ клиента» и «Реализация товаров и услуг» — и посмотреть, как они устроены. Потом повторить тот же порядок:

6. Учёт остатков

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

При отмене проведения эти данные снимаются.

Проведение делается по образцу типовых документов. Прежде чем писать код, разобрать, как проводятся те же «Заказ клиента» и «Реализация товаров и услуг», и писать в том же порядке и стиле: как готовятся и записываются движения, как ставятся блокировки, как документ сообщает о причине отказа. Где в конфигурации уже есть готовое — берётся готовое.

6.1. Раздел программы — сразу после пункта 6

Всё, что сделано в пунктах 1–6, пользователь открывает из собственного раздела программы «Драгоценные металлы», а не ищет по чужим разделам. Раздел заводится сразу после пункта 6 и дальше пополняется по ходу работы: появился новый объект — его команда добавляется в раздел в той же части работы. Окончательный вид — пункт 11.

7. Печатная форма «Приёмо-сдаточный акт»

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

В акте: шапка с реквизитами организации, партнёра-сдатчика, склада, номером и датой документа; таблица принятого лома — вес брутто, вес мусора, засор, вес нетто, цена за кг, сумма; итоговая строка; сумма к выплате цифрами и прописью; подписи сдатчика и приёмщика. Драгоценных металлов, котировок и их стоимости в акте нет — это внутренняя оценка компании, сдатчику её не показывают.

Акт помещается на одном листе А4 книжной ориентации, суммы — с двумя знаками после запятой и разделителями разрядов. Длинные значения в шапке (название организации с ИНН, партнёр) переносятся на следующую строку, а не обрезаются. Непроведённый документ печатать нельзя.

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

7.1. Печатная форма «Оценка партии»

Вторая печатная форма того же документа — для внутреннего пользования, на подпись сдатчику не отдаётся. Она показывает, чего партия стоит для компании.

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

Печатается из того же меню «Печать» документа, на одном листе А4. Непроведённый документ печатать нельзя.

8. Отчёт «Драгоценные металлы в ломе»

Пользователь задаёт период и, при необходимости, склад. У отчёта два варианта; у каждого — понятное название, которое видно на закладке и в списке вариантов (название «Основной» не годится).

Вариант «Драгоценные металлы по складам». По каждому металлу: сколько граммов было на начало периода, сколько поступило за период, сколько на конец, и во что это оценивается по котировкам. Внутри металла — разбивка по складам. Итоги обязательны, включая общий итог по всем металлам. Заголовки колонок — «Содержится металла, г» и «Оценка по котировкам, руб.»: это граммы самого драгметалла в принятом ломе и их стоимость по котировке на дату приёмки, а не вес лома и не сумма, выплаченная сдатчикам. Под таблицей — диаграмма: доля каждого металла в общей стоимости принятых металлов.

Вариант «Лом на складах». По каждому виду лома с разбивкой по складам: вес нетто на начало периода, поступило за период, на конец, в килограммах, и сумма, выплаченная сдатчикам. Итоги обязательны. Вес лома и граммы металла в одной таблице не смешиваются: в одной партии лома бывает несколько металлов, и её вес посчитался бы дважды.

Отчёт виден в панели отчётов раздела «Закупки» вместе с прочими отчётами по закупкам и в панели отчётов собственного раздела (пункт 11).

Числа отчёта сверяются с данными базы. Отчёт может открываться и выглядеть правильно, а считать неверно — поэтому оба варианта проверяются по существу:

Если подключён MCP:RSV Data Pro, это делается им: он формирует вариант отчёта в работающей программе и выполняет произвольный запрос к базе. Без него — модульным тестом, который формирует отчёт и сравнивает его итоги с запросом.

9. Внешняя обработка «Монитор приёмки лома»

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

Форма разделена на две части. Слева — список документов приёмки лома с отбором по периоду и по складу: дата, номер, склад, партнёр, вес нетто и сумма; непроведённые документы выделены цветом. Справа — драгоценные металлы документа, выделенного в списке: металл, граммы, цена за грамм, сумма. Список обновляется по кнопке.

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

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

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

10. Приёмка лома в карточке партнёра

В карточке партнёра — отдельная вкладка «Приём лома»:

Признак и лицензия сохраняются в карточке и видны при повторном открытии. Карточка дорабатывается заимствованием — типовая форма не изменяется.

11. Раздел программы «Драгоценные металлы»

Раздел, заведённый в пункте 6.1, доводится до окончательного вида. У него своя картинка, подходящая по смыслу, и три группы:

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

Документ приёмки и отчёт остаются доступными и из раздела «Закупки».

12. Дополнительные отчёты и обработки в разделе

В разделе «Драгоценные металлы» — группа «Дополнительные отчёты и обработки», такая же, как в типовых разделах. Внешняя обработка «Монитор приёмки лома» (пункт 9) подключена к базе как дополнительная обработка и привязана к этому разделу: пользователь открывает её из раздела, а не ищет файл на диске.

Подключаться обработка должна сама — при установке расширения или по отдельной команде; заводить её руками в интерфейсе не требуется. Открытая из раздела, она работает целиком: отбор, кнопки, фоновый пересчёт — так же, как при открытии файлом.

13. Справка по документу «Приёмка лома»

У документа — своя справка, которая открывается по знаку вопроса, как у типовых объектов. Коротко: что это за документ и для чего он нужен, что заполняет пользователь, что считается автоматически, откуда берутся драгоценные металлы и их стоимость, почему документ может не провестись. Пользователь нажимает знак вопроса и видит этот текст, а не пустое окно и не общую справку программы.

14. Права доступа

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

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

Права — те, что нужны для работы: читать, добавлять, изменять, проводить и отменять проведение документа, открывать отчёты и обработки, видеть раздел и его команды.

Удалять объекты насовсем пользователь не должен ни при каких правах, включая полные. Сейчас в карточке элемента в меню «Еще» рядом с «Пометить на удаление» стоит пункт «Удалить» — он удаляет объект из базы сразу и безвозвратно. Такого пункта быть не должно ни в карточке, ни в списке — ни у справочника драгоценных металлов, ни у документа приёмки лома. Ненужное пользователь помечает на удаление, а удаляет помеченное администратор — обработкой удаления помеченных объектов, как это принято в программе.

Проверяется под пользователем с полными правами: в карточке и в списке металла и документа раскрыть меню «Еще» — пункта «Удалить» нет, «Пометить на удаление» есть и работает. Снимок раскрытого меню — по каждому из четырёх мест.


Требования к интерфейсу

Относятся ко всем формам доработки — документа, справочников, внешней обработки и вкладки в карточке партнёра.

  1. Формы проверяются глазами. По каждой форме — снимок работающей программы с настоящими данными, и снимок разбирается: то ли на нём видно, что задумано, и удобно ли этим пользоваться каждый день.
  2. Расположение логичное. Поля сгруппированы по смыслу, группы подписаны, связанные поля рядом, важное выше, редкое — ниже или на отдельной закладке. Ничто не наезжает и не обрезается, форма читается без лишней прокрутки. Строки итогов заполнены, а не пустые.
  3. У каждой кнопки — картинка, подходящая по смыслу. Исполнитель подбирает её сам из имеющихся в программе. Кнопка без картинки не принимается.
  4. У каждой закладки — картинка, подходящая по содержанию.
  5. Формы понятны без объяснений. Подписи — обычными словами, без сокращений; единицы измерения указаны там, где их можно перепутать.
  6. Оформление — как в типовой конфигурации: посмотреть похожие типовые формы и следовать тому же порядку.
  7. Строки различаются значками, а не только текстом: - в списке документов внешней обработки (пункт 9) — значок состояния: проведён, не проведён, помечен на удаление; - в таблице «Драгоценные металлы» документа — свой значок у каждого металла; - в списке содержания металлов (пункт 2) — у каждой строки значок её металла, тот же, что в документе.
  8. Признаки «да/нет» — флажком, как в типовых списках, а не словом «Да» или «Истина». Это касается признака «Сдатчик лома» и любых других признаков в списках и таблицах.

← Вернуться к статье · Статистика прогона