1С:Архив это не конфигурация 1С, а отдельный программный продукт. И "Конвертация данных" тут никак не поможет.
Честно говоря не знал... Гдето видел, что на августовском ИТС 2007 года есть статья "Интеграция 1С : Архива 2.5 и 1 С : Предприятия 8.0"
Есть так же внешняя компонента для работы с 1С:Архивом. Вот еще код, может поможет:
Попытка ЗагрузитьВнешнююКомпоненту("ArcDocAddIn.dll"); Исключение Сообщить("Не удаётся загрузить внешнюю компоненту 1С:Архива", СтатусСообщения.Важное); Сообщить(" " + ОписаниеОшибки()); Возврат; КонецПопытки;
Попытка ТестовыйAPI = Новый("AddIn.AddInExtension"); Исключение Сообщить("Не удаётся подключиться к API 1С:Архива", СтатусСообщения.Важное); Сообщить(" " + ОписаниеОшибки()); Возврат; КонецПопытки;
API = Новый("AddIn.AddInExtension"); ОтветАрхива = API.OpenDocument(UID); Сообщить(ОтветАрхива);
Я думаю вместе с дистрибутивом программы должна быть документация по API 1С:Архива. Используя его и компоненту можно перетащить документы в конфигурацию.
Или вытащите данные в "1С Документооборот ПРОФ" а потом из нее Конвертацией данных
Смотря какие документы. Есть такая конфигурация "Конвертация данных". С помощью ее можно просто настроить правила переноса: устанавливаете какие объекты одной конфигурации переходят в какие объекты другой, а так же реквизиты. После этого с помощью специальных обработок и сформированных правил обмена переносите данные. Поискав в интернете, Вы найдете много написанного об этом.
А "ПередЗаписью"? Объект.Наименование = Объект.Наименование + Объект.Код;
Кстате, представим что вы записали номенклатуру как надо, потом открываете - и наименование у Вас такое "Товар00001" (с кодом, так ведь?). А теперь если ее еще раз записать, тогда наименование будет такое "Товар0000100001". Нехорошо
Кстате в файловом варианте, после 5-минутного зависания (как и в DB2) имеем такую ошибку:
Цитата
Помилка роботи сеансу Помилка при виконанні запиту POST до ресурсу /e1cib/moxel: через: Сеанс відсутній або вилучений ID=1cffdd79-a019-4434-a609-ea7ccc1f362e, File=src\SeanceContextBasImpl.cpp(909)
Значит проблема не в DB2...
О! Теперь другая ошибка в файловом варианте:
Кстате после нажатия на кнопку печати строка состояния постоянно пишет следующее:
Проблема решена! Ошибка крылась в платформе 8.2.13.219! В 8.2.14.533 работает нормально!
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Если Параметры.Свойство("АдресГотовогоОбъекта") Тогда НовыйДокумент=ПолучитьИзВременногоХранилища(Параметры.АдресГотовогоОбъекта); ЗначениеВРеквизитФормы(НовыйДокумент,"Объект"); КонецЕсли; КонецПроцедуры
Цитата(Vofka @ 11.10.11, 13:38)
В 8.1 и в 8.2 (толстый клиент) в процедуру ПриПолученииДанных тоже пару раз заходит, этого тоже до сих пор никто объяснить не может , поэтому, возможно, стОит смириться...
Цитата(kivals @ 11.10.11, 15:35)
Неверный сам подход: если созданный объект не нужно записывать (перед открытием формы), то нужно просто открыть форму, указав что вводится объект на основании: ПараметрыФормы = Новый Структура("Основание", Основание); ОткрытьФорму("Документ.ЧекККМ_Опт.ФормаОбъекта", ПараметрыФормы);
Спасибо, работает! Работают оба варианта, но я выберу тот что проще!
Я вот уже долго мучаюсь. Вот есть у меня управляемая форма списка. Получается произвольным запросом. Запрос возвращает много всяких полей. В элементе формы "Список" я добавил несколько колонок, указал источник данных. Некоторые скрыл. Но при активации строки списка мне нужно получить значение скрытой колонки. Если я создаю колонку, делаю видимость = "Ложь" то программно не могу потом получить значение этой колонки. Как до нее добратся?
Может как-то через текущую строку таблицы формы получить значение из динамического списка?
Отключал пользовательскую видимость, а обычную включал - все равно не достучатся.
Разобрался сам. В конструкторе форм там где отображается динамический список (справа), развернув его, нужно отметить галочками в колонке "Использовать всегда" напротив тех реквизитов, которые нужно, и не обязательно их вставлять в таблицу формы.
Был такой случай: у клиента при реструктуризации хозрасчетного затирались все субконто. Нужно было после реструктуризации перенести все данные из копии вручну. Проблема стала в переносе ссылок между базами, так как ссылка в из одной базы после перемещения через внешнее соединение в другую базу ставала "чужой" в той базе, хоть УникальныйИдентификатор оставался одинаковый.
Проблема решилась функциями : ЗначениеВСтрокуВнутр() и ЗначениеИзСтрокиВнутр(). Первая преобразует любую ссылку в текстовое представление ссылки, которое передается через внешнее соединение в идентичную базу и преобразуется там в ссылку с помощью второй функции.
Для примера решил выложить обработку, которая успешно переносит все данные регистра бухгалтерии хозрасчетного через внешнее соединение таким способом (опробовано на клиентах).
Обработка запускается на базе, куда нужно перенести данные, и подключается к базе, через внешнее соединение, откуда нужно перенести данные. Вызывает функцию из модуля внешнего соединения подключенной базы, которая возвращает данные (ТЗ с данными хозрасчетного) и в текущей базе замещает все данные регистра полученными из другой базы.
Вообщем в базе, к которой подключается обработка, в модуле внешнего соединения должна быть процедура:
ПоказатьСостояние("Попытка подключения..."); Соединение = Новый COMObject("V82.COMConnector");
База = Соединение.Connect("Srvr=""server1c"";Ref=""GOR_B"";Usr=""Логин"";Pwd=""36787463"""); // Для серверной базы // База = Соединение.Connect("File=""D:\Bases\GOR_B"";Usr=""Логин"";Pwd=""36787463"""); // Для файловой базы
ПоказатьСостояние("Выполняется получение данных из удаленной базы..."); ТЗ = База.ПолучитьДанныеТаблицыОбъекта(); КолВсего = ТЗ.Количество(); ПоказатьСостояние("Выполняется заполнене данных на этой базе...");
Итератор = 1;
ПервыйРаз = Истина; ТекРегистратор = Неопределено; НаборЗаписей = Неопределено; Для Каждого Выборка Из ТЗ Цикл Если ЗначениеИзСтрокиВнутр(Выборка.РегистраторСсылка) <> ТекРегистратор Тогда Если ПервыйРаз Тогда ПервыйРаз = Ложь; Иначе Попытка НаборЗаписей.Записать(); Исключение Сообщить("Не удалось присвоить регистратора: "+ТекРегистратор); Возврат; КонецПопытки КонецЕсли; ТекРегистратор = ЗначениеИзСтрокиВнутр(Выборка.РегистраторСсылка); НаборЗаписей = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Регистратор.Установить(ТекРегистратор); //НаборЗаписей.Записать(); КонецЕсли; ПоказатьСостояние("Выполняется заполнене данных "+Окр(Итератор*100 /КолВсего,6)+" %"); Итератор = Итератор + 1; Запись = НаборЗаписей.Добавить(); ЗаполнитьЗначенияСвойств(Запись,Выборка); Запись.Регистратор = ЗначениеИзСтрокиВнутр(Выборка.РегистраторСсылка); Запись.СчетДт = ЗначениеИзСтрокиВнутр(Выборка.СчетДтСсылка); Запись.СубконтоДт[ЗначениеИзСтрокиВнутр(Выборка.СубконтоДт1Тип)] = ЗначениеИзСтрокиВнутр(Выборка.СубконтоДт1Ссылка); Запись.СубконтоДт[ЗначениеИзСтрокиВнутр(Выборка.СубконтоДт2Тип)] = ЗначениеИзСтрокиВнутр(Выборка.СубконтоДт2Ссылка); Запись.СубконтоДт[ЗначениеИзСтрокиВнутр(Выборка.СубконтоДт3Тип)] = ЗначениеИзСтрокиВнутр(Выборка.СубконтоДт3Ссылка); //Запись.СубконтоДт[ЗначениеИзСтрокиВнутр(Выборка.СубконтоДт4Тип)] = ЗначениеИзСтрокиВнутр(Выборка.СубконтоДт4Ссылка); Запись.СчетКт = ЗначениеИзСтрокиВнутр(Выборка.СчетКтСсылка); Запись.СубконтоКт[ЗначениеИзСтрокиВнутр(Выборка.СубконтоКт1Тип)] = ЗначениеИзСтрокиВнутр(Выборка.СубконтоКт1Ссылка); Запись.СубконтоКт[ЗначениеИзСтрокиВнутр(Выборка.СубконтоКт2Тип)] = ЗначениеИзСтрокиВнутр(Выборка.СубконтоКт2Ссылка); Запись.СубконтоКт[ЗначениеИзСтрокиВнутр(Выборка.СубконтоКт3Тип)] = ЗначениеИзСтрокиВнутр(Выборка.СубконтоКт3Ссылка); //Запись.СубконтоКт[ЗначениеИзСтрокиВнутр(Выборка.СубконтоКт4Тип)] = ЗначениеИзСтрокиВнутр(Выборка.СубконтоКт4Ссылка); Запись.Организация = ЗначениеИзСтрокиВнутр(Выборка.ОрганизацияСсылка); Запись.ВалютаДт = ЗначениеИзСтрокиВнутр(Выборка.ВалютаДтСсылка); Запись.ВалютаКт = ЗначениеИзСтрокиВнутр(Выборка.ВалютаКтСсылка); Запись.НалоговоеНазначениеДт = ЗначениеИзСтрокиВнутр(Выборка.НалоговоеНазначениеДтСсылка); Запись.НалоговоеНазначениеКт = ЗначениеИзСтрокиВнутр(Выборка.НалоговоеНазначениеКтСсылка); Запись.СчетДополнительный = ЗначениеИзСтрокиВнутр(Выборка.СчетДополнительныйСсылка); КонецЦикла; НаборЗаписей.Записать();
Конечно при нажатии на кнопку "Выполнить" запускается процедура "КнопкаВыполнитьНажатие".
А это, собственно, сама обработка. ... может кому будет полезно))
Обновлено 29.03.2012 в связи с появлением налогового назначения. Адаптировано под бухгалтерию для Украины. Для УТП следует просто раскомментировать четвертые субконто в коде
Есть еще один очень хитрый вариант, если данные меняются не часто: Использовать свойство внешнего модуля "Повторное использование возвращаемых значений" (Повторне використання значень, що повертаються). 1. Создаете новый общий модуль 2. Ставите галку "Повторное использование возвращаемых значений" 3. Пишите функцию, которая Вам возвращает Ваши труднособираемые данные в этом модуле 4. Функция обязательно должна иметь параметр (например число. Параметр не обязательно использовать внутри функции)
Например у Вас функция:
Функция ПолучитьСложныеДанные(КакойТоПараметр)
...
// Нигде в функции "КакойТоПараметр" не встречается, но функция путем запросов возвращает данные КонецФункции
Далее дело обстоит так: когда Вы вызываете функцию и например передаете число или строку:
Результат = ПолучитьСложныеДанные(5);
Функция проведет сложные расчеты и вернет Вам результат. Но если вы ее вызовите снова:
Результат = ПолучитьСложныеДанные(5);
Функция вернет тот же результат, но в этот раз не будет проводить расчетов, а вернет сразу результат, полученный в предыдущий раз.
Если теперь вызвать
Результат = ПолучитьСложныеДанные(6);
функция опять проведет расчеты и вернет некий (может и другой результат)
Если снова вызвать
Результат = ПолучитьСложныеДанные(6);
- тот же результат но без вычислений
Результат = ПолучитьСложныеДанные(5);
- результат полученный в первый раз тоже без вычислений.
И все это делает галочка в модуле "Повторное использование возвращаемых значений".
Честно говоря я не тестировал это все, но теоретически - должно работать
Тогда, я не понимаю, что нужно установить, чтобы общий модуль стал модулем обычного приложения?, и мог использовать глобальные переменные.
Общий модуль не может быть модулем обычного приложения. Модуль обычного приложения - это, так сказать, глобальный модуль. В нем выполняются процедуры при запуске системы, подключаются обработчики ожидания и т. д. - тоесть выполняются такие глобальные задачи. Я даже не вижу смысла использовать там какие-то переменные. Есть модуль управляемого приложения - этот модуль "заменяет" модуль обычного приложения, когда 1С запускается в управляемом режиме. Есть модуль внешнего соединения - экспортные процедуры в этом модуле доступны при подключении к даной базе из другой базы.
Если все уж так плохо с получением данных из регистров, можно воспользоватся "СохранитьЗначение", "ВосстановитьЗначение". Но я бы занялся именно оптимизацией получения данных из регистров
Мне вот в этой структуре СтруктураПараметровФормы нужно еще передать таблицу с данными типа "ДанныеФормыКоллекция". Но среди доступных типов параметров нет такого типа, потому как параметр я эту таблицу передать немогу. Пробую на сервере
{МодульУправляемогоПриложения(875)}: Помилка при встановленні значення атрибуту контексту (ТаблицаТоваров) УправляемоеПриложение.ЗагрузитьТаблицуТоваров(ФормаПечатиЧекаККМ.Объект.ТаблицаТ оваров,ТаблицаТоваровККМ); через: Неможна змінювати поле, яке містить об’єкт даних форми
Как можно в открытую форму передать табличные данные?
ВебКлиент
Пытаюсь передать в серверную процедуру параметр типа "УправляемаяФорма" - пишет
Цитата
Помилка відображення типів: Відсутнє відображення для типу 'УправляемаяФорма'
...может потому что серверная процедура находится в общем модуле?
Может сделать список значений, состоящий из списков значений и не парится, но это будет такое извращение...
Разобрался сам Вообщем ФормаПечатиЧекаККМ - это у нас только-что полученная форма обработки. У обработки этой есть табличная часть "ТаблицаТоваров". Есть еще "ТаблицаТоваровККМ" типа ДанныеФормыКоллекция. Нужно ТаблицаТоваровККМ загрузить в табличную часть ТаблицаТоваров обработки, форму которой мы получили.
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!