За заявленный бюджет 1 000 руб. разработку не беру. Цена, состав работ и срок по ТЗ не согласованы; работа не начата. В отклике предлагал сначала посмотреть ТЗ и затем оценить задачу. Заказчику направлено пояснение.
Доброе утро!
Выгрузку DBF на УТ 10.3 делаю внешней обработкой, типовую не трогаю — это спокойнее для обновлений. Нужно только само ТЗ или пример файла от контрагента, чтобы структуру не гадать. Если всё на руках — соберу за пару дней.
Добрый день!
Меня зовут Мария, я менеджер компании AutoSAP. Я представляю команду профильных специалистов по 1С.
Предлагаю провести бесплатную встречу на 1 час. На ней вы пообщаетесь с нашим специалистом, а я подключусь, чтобы зафиксировать договорённости и дальнейшие шаги. Обсудим вашу задачу, текущую ситуацию, ограничения и ожидаемый результат.
По итогам встречи я подготовлю:
- протокол встречи: что обсудили, задачи, договорённости, варианты решения, следующие шаги;
- коммерческое предложение: цена и сроки.
Когда вам удобно созвониться? Можете ответить здесь или выбрать время.
Для выгрузки накладной в формате DBF из 1С 8 УТ 10.3 под требования контрагента, ключевым этапом является точное сопоставление полей вашей 1С с полями в файле DBF, который ожидает получить контрагент. Технически эта задача решается либо с помощью готовых внешних обработок, либо написанием собственного кода на встроенном языке 1С.
📋 Шаг 1: Анализ технического задания (ТЗ)
Прежде чем писать код, необходимо точно понять, что именно требует контрагент. В ТЗ обычно указывается:
· Структура файла: Имя файла (например, NAKLADNAYA.DBF), кодировка (ANSI/OEM).
· Список полей: Точные имена полей в DBF (например, CODE, NAME, QTY) и их типы (символьный, числовой, дата).
· Правила заполнения: Какие именно данные из 1С должны попадать в каждое поле (например, поле NAME — это Номенклатура.Наименование, а QTY — Товары.Количество).
🛠️ Шаг 2: Выбор подхода к реализации
У вас есть два основных пути:
1. Использование готовой внешней обработки: Самый быстрый вариант. Можно поискать готовые решения (например, на Infostart или у партнеров 1С), которые уже умеют выгружать документы в DBF. Их нужно будет только настроить под ТЗ контрагента.
2. Написание собственной обработки: Более гибкий вариант, если ТЗ нестандартное. В 1С 8 для работы с DBF используется встроенный объект XBase.
💻 Шаг 3: Алгоритм создания собственной обработки
Для реализации собственного механизма выгрузки потребуется создать внешнюю обработку. Вот пошаговый план:
1. Создайте внешнюю обработку: В конфигураторе 1С создайте новую внешнюю обработку (Файл -> Новый -> Внешняя обработка).
2. Добавьте форму: Создайте форму обработки, на которую поместите:
· Поле выбора документа (ПолеВвода с типом ДокументСсылка.РеализацияТоваровУслуг или аналогичным для вашей накладной).
· Кнопку «Выгрузить».
3. Напишите код выгрузки: В модуле формы обработки создайте процедуру для обработки нажатия кнопки.
📝 Пример кода для выгрузки
Этот код демонстрирует базовый принцип. Обязательно адаптируйте имена полей и структуру под ТЗ вашего контрагента.
```bsl
&НаКлиенте
Процедура ВыгрузитьНаКладную(Команда)
// 1. Получаем ссылку на выбранный документ
ДокументСсылка = ВыбранныйДокумент;
Если НЕ ЗначениеЗаполнено(ДокументСсылка) Тогда
Сообщить("Выберите документ для выгрузки!");
Возврат;
КонецЕсли;
// 2. Создаем объект XBase для работы с DBF
ФайлDBF = Новый XBase;
// Устанавливаем кодировку (уточните в ТЗ: ANSI для Windows, OEM для DOS)
ФайлDBF.Кодировка = КодировкаXBase.ANSI;
// 3. Описываем структуру полей DBF в соответствии с ТЗ контрагента
// Пример: "CODE" - строка длиной 10, "NAME" - строка 100, "QTY" - число 10.3
ФайлDBF.Поля.Добавить("CODE", "S", 10);
ФайлDBF.Поля.Добавить("NAME", "S", 100);
ФайлDBF.Поля.Добавить("QTY", "N", 10, 3);
// 4. Указываем путь для сохранения файла
ПутьКФайлу = "C:ВыгрузкаNakladnaya.DBF"; // Путь лучше вынести в реквизит формы
ФайлDBF.СоздатьФайл(ПутьКФайлу);
// 5. Получаем данные из документа
// Например, из табличной части "Товары"
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Товары.Номенклатура.Код КАК Код,
| Товары.Номенклатура.Наименование КАК Наименование,
| Товары.Количество КАК Количество
|ИЗ
| Документ.РеализацияТоваровУслуг.Товары КАК Товары
|ГДЕ
| Товары.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
// 6. Записываем данные в DBF
Пока Выборка.Следующий() Цикл
ФайлDBF.Добавить();
ФайлDBF.CODE = Выборка.Код;
ФайлDBF.NAME = Выборка.Наименование;
ФайлDBF.QTY = Выборка.Количество;
// Можно добавить запись в файл сразу, а можно в конце цикла
КонецЦикла;
// 7. Сохраняем и закрываем файл
ФайлDBF.Записать(); // Записывает все добавленные строки
ФайлDBF.ЗакрытьФайл();
Источник: структура кода основана на стандартных примерах работы с XBase.
⚠️ Важные нюансы
· Кодировка: Неправильная кодировка (ANSI или OEM) — самая частая причина, по которой контрагент не может прочитать файл. Уточните этот момент в ТЗ.
· Типы полей: В DBF типы полей строго фиксированы: S — строка, N — число, D — дата. При описании полей (ФайлDBF.Поля.Добавить) нужно точно указывать тип и длину.
· Путь к файлу: Убедитесь, что у пользователя 1С есть права на запись в папку, куда сохраняется файл. Лучше использовать временный каталог или сетевую папку.
· Тестирование: После создания обработки обязательно сделайте тестовую выгрузку и откройте полученный DBF-файл в любой программе, поддерживающей этот формат (например, DBF Viewer), чтобы убедиться, что структура и данные соответствуют ТЗ.
Если уточните конкретные требования из ТЗ (список полей, их типы), я смогу помочь с более точным кодом.
Добрый день! Могу вам помочь, обладаю нужными знаниями и компетенциями для решения вашей задачи. А также могу поделиться кейсами по похожим сферам деятельности. Напишите ваш номер, обсудим детали, буду рад быть полезным!
Добрый день!
Нужно подробное ТЗ или описание структуры выгрузки от контрагента. В бюджет 1000 р. в любом случае не уложимся, но с подробным ТЗ можно уложиться в 2-3 ч, без ТЗ (только со структурой файла, т.е. потребуется время на обсуждение и, возможно, правки) - в 3-4 ч. В указанное время выполнения закладываю риски, т.к. информации мало. Если есть структура файла или ТЗ, отправьте, я уточню оценку.