Бухгалтерия предприятия, редакция 3.0 (3.0.31.13)
Первая обработка "Для БП 3.0 Выгрузка из БП30 СравнитьСуммыТРН В Файл.epf" выгружает в текстовый файл номенклатуру по требованиям-накладным из 1С Бухгалтерия 3.0.
С помощью данной обработки можно, изменив запрос под свои нужды, выгрузить любые данные из любой конфигурации, работающей в режиме "Управляемое приложение".
Вторая обработка "Для УТ 10.3 сравнить суммы ТРН в УТ и БП.epf" загружает полученный с помощью первой обработки текстовый файл в таблицу значений ТЗ_БП, выводит данные требований-накладных в таблицу значений ТЗ_УТ в 1С Управление Торговлей 10.3 и сравнивает суммы. Строки с разницей окрашены в розовый цвет.
Обработка для БП работает на тонком клиенте в клиент-серверном режиме.
Проверено на LINUX Xubuntu13.04 в чистом виде без wine-эмулятора (продукты Билла Гейтса - само собой).
Основная проблема заключалась в сохранении файла на тонком клиенте в режиме клиент-сервер.
На файловой конфигурации и в толстом клиенте проще.
Основные элементы кода обработки для БП 3.0 с помощью которого можно самостоятельно реализовать подобную внешнюю обработку не прибегая к скачиванию за смартмани.
&НаКлиенте
Процедура КнопкаВыгрузитьИСохранитьНажатие(Команда)
ДвоичнДанные = ИспользоватьВременныйФайл();
ИмяФайла = ПолучитьИмяФала();
ДвоичнДанные.Записать(ИмяФайла);
КонецПроцедуры
&НаСервере
Функция ИспользоватьВременныйФайл()
ДанныеЗапроса = ПолучитьРезультатЗапроса(НачалоПериода,КонецПериода);
ИмяВремФайл = ПолучитьИмяВременногоФайла();
ВремФайл = Новый Файл(ИмяВремФайл);
ЗначениеВФайл(ИмяВремФайл,ДанныеЗапроса);
Если ВремФайл.Существует() Тогда
ДвоичнДанные = Новый ДвоичныеДанные(ИмяВремФайл);
Хранилище = Новый ХранилищеЗначения(ДвоичнДанные);
КонецЕсли;
Попытка
УдалитьФайлы(КаталогВременныхФайлов(), ИмяВремФайл);
Исключение
КонецПопытки;
Возврат Хранилище.Получить();
КонецФункции
&НаКлиенте
Функция ПолучитьИмяФала()
НачальноеИмяФайла = Новый Файл("D:\ТабБП.tab");
Режим = РежимДиалогаВыбораФайла.Открытие;
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
ДиалогОткрытияФайла.Каталог = НачальноеИмяФайла.Путь;
ДиалогОткрытияФайла.ПолноеИмяФайла = "ТабУТ_"+Формат(ТекущаяДата(), "ДФ=yyyy_MM_dd__чч_мм_сс");
Текст = "ru = ""Текст""; en = ""Text""";
Фильтр = НСтр(Текст)+"(*.tab)|*.tab";
ДиалогОткрытияФайла.Фильтр = Фильтр;
ДиалогОткрытияФайла.МножественныйВыбор = Ложь;
ДиалогОткрытияФайла.Заголовок = "Укажите имя файла";
Если ДиалогОткрытияФайла.Выбрать() Тогда
Возврат ДиалогОткрытияФайла.ВыбранныеФайлы[0];
Иначе
Возврат НачальноеИмяФайла;
КонецЕсли;
КонецФункции