Проблема учета отгрузок в разрезе водителей в платформе 1С:Предприятие 7.7 является классической. В типовых конфигурациях того времени (таких как «Торговля и Склад 9.2» или «Бухгалтерский учет 4.5») штатное поле «Водитель» в документах реализации зачастую отсутствует или предназначено только для вывода в печатные формы ТТН, не сохраняясь в базе как аналитика. Рассмотрим подробно несколько способов, как можно реализовать этот учет, начиная от самых простых и заканчивая программными доработками.
В типовой конфигурации «Торговля и Склад 7.7» существует справочник Проекты. Это универсальный аналитический разрез, который можно использовать для любых целей. Разберем по шагам, как настроить учет водителей через этот механизм:
Проект выберем нужного водителя из справочника.Проанализируем преимущества этого метода: вам не нужно привлекать программиста. Чтобы получить результат за месяц, достаточно воспользоваться стандартным отчетом «Продажи по проектам» или «Обороты по проектам». Выставив период за месяц и выбрав группировку по проектам, мы увидим общие суммы и количество отгруженного товара по каждому водителю. Важно помнить, что по проектам в 1С 7.7 фиксируются только обороты, остатки (как на складах) по ним не ведутся, что идеально подходит для нашей задачи.
Если справочник проектов уже задействован для других целей, рассмотрим более гибкий, но менее строгий вариант. В каждом документе отгрузки есть текстовое поле Комментарий.
Выясним, как это работает: при оформлении реализации менеджер вписывает фамилию водителя прямо в текст комментария. Чтобы в конце месяца собрать эти данные, потребуется внешняя обработка, которая будет перебирать документы и искать вхождение фамилии в строке. Пример логики запроса на языке 1С 7.7 может выглядеть так:
Процедура СформироватьОтчет()
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса = "
|Период с ВыбНачПериода по ВыбКонПериода;
|Док = Документ.Реализация.ТекущийДокумент;
|Коммент = Документ.Реализация.Комментарий;
|Сумма = Документ.Реализация.Итог('Сумма');
|Группировка Док;
|";
Если Запрос.Выполнить(ТекстЗапроса) = 1 Тогда
Пока Запрос.Группировка(1) = 1 Цикл
Если Найти(Запрос.Коммент, "Иванов") > 0 Тогда
// Суммируем данные по водителю Иванов
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Важный нюанс: этот метод крайне чувствителен к ошибкам ввода. Если один раз написать «Иванов», а другой «Иванов А.В.», простой поиск может дать неверные результаты. Поэтому мы рекомендуем использовать этот способ только в крайнем случае.
Если требуется надежный и автоматизированный учет, проанализируем вариант с изменением метаданных. Для этого нам понадобится Конфигуратор. Рассмотрим последовательность действий:
Водители.Реализация добавим новый реквизит шапки Водитель с типом значения «Справочник.Водители».Продажи).Разберем ситуацию: если мы просто добавим реквизит в документ, отчету придется перебирать все документы за месяц, что в 1С 7.7 (особенно в DBF-версиях) может занимать очень много времени. Если же мы включим водителя в измерения регистра Продажи, то получение данных будет мгновенным через стандартный объект Запрос по регистру.
Для компаний с жестким контролем материальной ответственности подойдет метод виртуальных складов. Рассмотрим эту схему:
Склады создаются элементы по именам водителей (например, «Склад Машина Иванов»).В этой ситуации отчет «Ведомость по остаткам ТМЦ» в разрезе складов покажет всё, что водитель получил, что отгрузил клиентам и что у него осталось в машине на конец месяца. Это самый прозрачный метод с точки зрения учета остатков, не требующий написания ни одной строчки кода.
Посмотрим на выбор метода в зависимости от ваших условий:
Помните, что в версии 7.7 информация, введенная в печатную форму ТТН «руками» перед печатью, в базе не сохраняется. Если вы пользуетесь именно таким способом заполнения данных о водителе, то единственный путь — начать фиксировать эти данные в самой карточке документа одним из вышеописанных способов.