Введение
Однажды мне позвонили из филиала и сказали, что надоело им при отгрузке товара каждый раз набирать водителей лапами для ТТН. Хотим, говорят, чтобы из списка можно было выбрать. Функционал такой уже давно был реализован в центральном офисе в виде регистра для хранения и доработанной обработки печати ТТН. Но в филиалах использовалась типовая УТ, регулярно обновляемая тамошними франчами и как следствие добавлять регистр в филиальные базы было нецелесообразно - мальчики/девочки на обновлениях о том, как обновлять нетиповые базы не знают, а обновлять самому кучу баз через удаленный доступ - то еще удовольствие...
Велосипеды
Как любой программист я решил не изобретать свой, а поискать уже готовый велосипед. Но увы, нашел только два.
//infostart.ru/public/64350/ <- недостаток в том, что сохраняет в пользовательских настройка. Т.е. каждый пользователь должен набирать свой набор водителей, что неудобно если у вас более одно пользователя выписывающего документы. Также настройки имеют тенденцию "слетать", что дополнительно добавляет головной боли.
//infostart.ru/public/59634/ <- решение явно хорошее, но к сожалению платное.
Реализация
Погрустив о том, что готового нет, пришлось писать свою свистульку. Все филиальные базы файловые и поэтому было решено немножко допилить обработку из типовой УТ - ПечатьТТН, чтобы она хранила список водителей в фале который будет располагаться в каталоге с базой. Это и было успешно сделано. При попытке сохранения или выбора из списка в каталоге базы ищется файлик voditeli.DBF и в него сохраняются или из него считываются водители. Таки образом достигается простота работы, отсутствие необходимости модифицировать конфигурацию, низкие требования к квалификации персонала устанавливающего данную обработку.
Как установить
Как подключить внешнюю печатную форму ТТН к конфигурации :
1. В режиме 1С:Предприятие открываем меню Сервис -> Дополнительные печатные формы и обработки -> Внешние печатные формы.
2. Добавляем новый отчет. Вводим наименование, к примеру "ТТН (с сохранением)". Справа жмем кнопку в виде папки "Заменить файл внешней обработки". Выбираем скачанный файл.
3. В табличной части Принадлежность печатной формы добавляем строку и выбираем документ "Реализация товаров и услуг". Сохраняем внешний отчет.
4. Открываем любой документ "Реализация товаров и услуг", жмем кнопку "Печать". В списке должен появится пункт "ТТН (с сохранением)".
Работа самого отчета
Собственно в отчет добалвены две кнопки.
1. "Записать" - при нажатии в список водителей будет добавлена запись содержащая все заполненные поля в открытой в данный момент форме. Т.е. вам нужно заполнить ТТН для нового водителя - вводите данные во все поля, и жмете сохранить. При следующей отгрузке с использованием данного водителя - жмем кнопку "Выбор водителя" и выбираем уже сохраненного.
2. "Выбор водителя" - открывает список сохраненных водителей. Устанавливаем курсор на нужном водителей, жмем кнопку "Выбрать". Можно редактировать водителей непосредственно в табличной части выбора. Главное - не забыть нажать кнопку "Сохранить файл". При закрытии, если была изменена табличная часть - отчет спросит, нужно ли сохранить изменения.
Если база серверная
Если база серверная, то для того, чтобы отчет работал необходимо создать на одной из машин сети обещдоступную папку, с возможностью записи в нее. В самом отчете загляните в процедуру УстановитьПутьИмяФайла(), в строке ПутьИмяФайла = ""; замените пустые кавычки на путь к созданной сетевой папке например вот так ПутьИмяФайла = "\\compname\share\voditeli.dbf" имя файла указывать обязательно, но можно можно изменить на свое усмотрение. Только учитывайте, что XBase работает только с файлами у которых не более 8 символов в имени файла.
Послесловие
Возможно, что отчет содержит ошибки или недоработки. Буду признателен за багрепорты. Если будут пожелания - пишите, рассмотрю, если окажутся полезными - постараюсь реализовать.
За сим откланиваюсь, надеясь, что эта поделка-свистулька найдет своего благодарного пользователя, которого будет радовать своей работой и экономить время.
Слова для поиска:
ТТН 1-Т Товарно-транспортная накладная.