Переносятся следующие виды документов:
Передача оборудования в монтаж, Принятие к учету ОС, Подготовка к передаче ОС, Перемещение ОС, Инвентаризация ОС, Модернизация ОС, Списание ОС
Необходимо скопировать содержимое полученного макета (из режима 1С Предприятие) и перенести его в макет второй вспомогательной обработки на стороне базы-приёмника(вставляем содержимое скопированного макета в макет второй обработки в режиме Конфигуратор). Далее на стороне базы-приёмника остается только загрузить входные данные. Данные будут считаны построчно из загруженного через конфигуратор макета таб.документа и на основе их создадут необходимые в конечной базе документы. Поиск основных средств в комплексной автоматизации происходит по паре "Наименование+Инв.номер". В случае, если основное средство не найдено, выводится соответствующее сообщение.
В одну из колонок макета выгружается содержимое табличных частей документов. В качестве разделителя между наименованием, инв.номером и количеством/суммой (в зависимости от типа документа ОС) мною используются символы "?" и "!"(см. второй рисунок публикации), как наименее встречаемые в наименованиях основных средств в базе, на которой проводилась работа. Вы можете использовать свои разделители, указав их в прогр.коде в двух обработках. Для успешной обработки входных данных приёмником-Комплексной автоматизацией в наименованиях Ваших основных средств не должны встречаться выбранные Вами символы-разделители(в моем случае это "?" и "!").
Перенос производился на версиях Бухгалтерии (3.0.93.20) и Комплексная автоматизация (2.4.13.170)
Ниже код обработки по выгрузке данных из базы-источника (Бухгалтерия 3)
Функция ТабДокДокументы() Экспорт
ТабДок = Новый ТабличныйДокумент;
ТабДок.ФиксацияСверху = 4;
Макет = ПолучитьМакет("Макет");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ИнвентаризацияОС.Номер КАК НомерДок,
| ИнвентаризацияОС.ОтветственноеЛицо КАК ОтветственноеЛицо,
| ИнвентаризацияОС.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
| ИнвентаризацияОС.Ответственный КАК Ответственный,
| ИнвентаризацияОС.Проведен КАК Проведен,
| NULL КАК МОЛПолучатель,
| NULL КАК ПодразделениеПолучатель,
| ИнвентаризацияОС.Дата КАК Дата,
| ИнвентаризацияОС.Ссылка КАК Ссылка,
| ИнвентаризацияОС.Комментарий КАК Комментарий,
| 4 КАК Порядок
|ПОМЕСТИТЬ ВТ_ОС
|ИЗ
| Документ.ИнвентаризацияОС КАК ИнвентаризацияОС
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| СписаниеОС.Номер,
| NULL,
| СписаниеОС.ПодразделениеОрганизации,
| СписаниеОС.Ответственный,
| СписаниеОС.Проведен,
| NULL,
| NULL,
| СписаниеОС.Дата,
| СписаниеОС.Ссылка,
| СписаниеОС.Комментарий,
| 6
|ИЗ
| Документ.СписаниеОС КАК СписаниеОС
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ПринятиеКУчетуОС.Номер,
| ПринятиеКУчетуОС.МОЛБУ,
| ПринятиеКУчетуОС.ПодразделениеОрганизации,
| ПринятиеКУчетуОС.Ответственный,
| ПринятиеКУчетуОС.Проведен,
| NULL,
| NULL,
| ПринятиеКУчетуОС.Дата,
| ПринятиеКУчетуОС.Ссылка,
| ПринятиеКУчетуОС.Комментарий,
| 1
|ИЗ
| Документ.ПринятиеКУчетуОС КАК ПринятиеКУчетуОС
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ПеремещениеОС.Номер,
| ПеремещениеОС.МОЛОрганизации,
| ПеремещениеОС.ПодразделениеОрганизации,
| ПеремещениеОС.Ответственный,
| ПеремещениеОС.Проведен,
| ПеремещениеОС.МОЛПолучатель,
| ПеремещениеОС.ПодразделениеПолучатель,
| ПеремещениеОС.Дата,
| ПеремещениеОС.Ссылка,
| ПеремещениеОС.Комментарий,
| 3
|ИЗ
| Документ.ПеремещениеОС КАК ПеремещениеОС
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| МодернизацияОС.Номер,
| NULL,
| МодернизацияОС.ПодразделениеОрганизации,
| МодернизацияОС.Ответственный,
| МодернизацияОС.Проведен,
| NULL,
| NULL,
| МодернизацияОС.Дата,
| МодернизацияОС.Ссылка,
| МодернизацияОС.Комментарий,
| 5
|ИЗ
| Документ.МодернизацияОС КАК МодернизацияОС
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ПодготовкаКПередачеОС.Номер,
| NULL,
| ПодготовкаКПередачеОС.ПодразделениеОрганизации,
| ПодготовкаКПередачеОС.Ответственный,
| ПодготовкаКПередачеОС.Проведен,
| NULL,
| NULL,
| ПодготовкаКПередачеОС.Дата,
| ПодготовкаКПередачеОС.Ссылка,
| ПодготовкаКПередачеОС.Комментарий,
| 2
|ИЗ
| Документ.ПодготовкаКПередачеОС КАК ПодготовкаКПередачеОС
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ПередачаОборудованияВМонтаж.Номер,
| NULL,
| ПередачаОборудованияВМонтаж.ПодразделениеОрганизации,
| ПередачаОборудованияВМонтаж.Ответственный,
| ПередачаОборудованияВМонтаж.Проведен,
| NULL,
| NULL,
| ПередачаОборудованияВМонтаж.Дата,
| ПередачаОборудованияВМонтаж.Ссылка,
| ПередачаОборудованияВМонтаж.Комментарий,
| 0
|ИЗ
| Документ.ПередачаОборудованияВМонтаж КАК ПередачаОборудованияВМонтаж
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВТ_ОС.НомерДок КАК НомерДок,
| ПРЕДСТАВЛЕНИЕ(ВТ_ОС.ОтветственноеЛицо) КАК МОЛ,
| ПРЕДСТАВЛЕНИЕ(ВТ_ОС.ПодразделениеОрганизации) КАК Подразделение,
| ПРЕДСТАВЛЕНИЕ(ВТ_ОС.Ответственный) КАК Ответственный,
| ВТ_ОС.Проведен КАК Проведен,
| ПРЕДСТАВЛЕНИЕ(ВТ_ОС.МОЛПолучатель) КАК МОЛПолучатель,
| ПРЕДСТАВЛЕНИЕ(ВТ_ОС.ПодразделениеПолучатель) КАК ПодразделениеПолучатель,
| ВТ_ОС.Дата КАК Дата,
| ВТ_ОС.Ссылка КАК Док,
| ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(ВТ_ОС.Ссылка) = ТИП(Документ.ПеремещениеОС)
| ТОГДА ""Перемещение""
| КОГДА ТИПЗНАЧЕНИЯ(ВТ_ОС.Ссылка) = ТИП(Документ.ПринятиекучетуОС)
| ТОГДА ""Принятие""
| КОГДА ТИПЗНАЧЕНИЯ(ВТ_ОС.Ссылка) = ТИП(Документ.ИнвентаризацияОС)
| ТОГДА ""Инвентаризация""
| КОГДА ТИПЗНАЧЕНИЯ(ВТ_ОС.Ссылка) = ТИП(Документ.СписаниеОС)
| ТОГДА ""Списание""
| КОГДА ТИПЗНАЧЕНИЯ(ВТ_ОС.Ссылка) = ТИП(Документ.МодернизацияОС)
| ТОГДА ""Модернизация""
| КОГДА ТИПЗНАЧЕНИЯ(ВТ_ОС.Ссылка) = ТИП(Документ.ПодготовкаКПередачеОС)
| ТОГДА ""ПодготовкаКПередаче""
| КОГДА ТИПЗНАЧЕНИЯ(ВТ_ОС.Ссылка) = ТИП(Документ.ПередачаОборудованияВМонтаж)
| ТОГДА ""ПередачаВМонтаж""
| КОНЕЦ КАК ТипДокумента,
| ПРЕДСТАВЛЕНИЕ(ВТ_ОС.Комментарий) КАК Комментарий
|ИЗ
| ВТ_ОС КАК ВТ_ОС
|ГДЕ
| ВТ_ОС.Дата МЕЖДУ &ДатаН И &ДатаК
|
|УПОРЯДОЧИТЬ ПО
| Дата,
| ВТ_ОС.Порядок,
| ТипДокумента";
Запрос.УстановитьПараметр("ДатаН", ДатаНачала);
Запрос.УстановитьПараметр("ДатаК", КонецДня(ДатаОкончания));
РезультатЗапроса = Запрос.Выполнить();
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
ТабДок.Очистить();
ОбластьЗаголовок.Параметры.ДатаНачала = Формат(ДатаНачала, "ДЛФ=D");
ОбластьЗаголовок.Параметры.ДатаОкончания = Формат(ДатаОкончания, "ДЛФ=D");
ТабДок.Вывести(ОбластьЗаголовок);
ТабДок.НачатьАвтогруппировкуСтрок();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ДокументОбъект = ВыборкаДетальныеЗаписи.Док.ПолучитьОбъект();
Если ТипЗнч(ДокументОбъект) <> Тип("ДокументОбъект.ПередачаОборудованияВМонтаж") Тогда
ОсновныеСредства = ДокументОбъект.ОС.Выгрузить();
Если ОсновныеСредства.Количество() = 0 Тогда
Продолжить
КонецЕсли;
Иначе ОсновныеСредства = ДокументОбъект.Оборудование.Выгрузить(); //ПередачаОборудованияВМонтаж
Если ОсновныеСредства.Количество() = 0 Тогда
Продолжить
КонецЕсли;
КонецЕсли;
ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
Массив = Новый Массив;
Если ТипЗнч(ДокументОбъект) = Тип("ДокументОбъект.ИнвентаризацияОС") Тогда
КопияТз = ОсновныеСредства.Скопировать(, "ОсновноеСредство, СтоимостьПоРезультатамИнвентаризации");
КопияТз.Колонки.СтоимостьПоРезультатамИнвентаризации.Имя = "Стоимость";
КопияТз.Сортировать("ОсновноеСредство");
Для каждого стр из КопияТз Цикл
Массив.Добавить(Строка(стр.ОсновноеСредство) + "?" + стр.ОсновноеСредство.Код + "!" + стр.Стоимость) // не использую "=" или "+", т.к.встречаются в наименованиях ОС
КонецЦикла;
ИначеЕсли ТипЗнч(ДокументОбъект) = Тип("ДокументОбъект.МодернизацияОС") Тогда
КопияТз = ОсновныеСредства.Скопировать(, "ОсновноеСредство, СуммаМодернизацииНУ");
КопияТз.Сортировать("ОсновноеСредство");
Для каждого стр из КопияТз Цикл
Массив.Добавить(Строка(стр.ОсновноеСредство) + "?" + стр.ОсновноеСредство.Код + "!" + стр.СуммаМодернизацииНУ)
КонецЦикла;
ИначеЕсли ТипЗнч(ДокументОбъект) = Тип("ДокументОбъект.ПередачаОборудованияВМонтаж") Тогда
КопияТз = ОсновныеСредства.Скопировать(, "Номенклатура, Количество");
КопияТз.Сортировать("Номенклатура");
Для каждого стр из КопияТз Цикл
Массив.Добавить(Строка(стр.Номенклатура) + "?" + стр.Номенклатура.Код + "!" + стр.Количество)
КонецЦикла;
Иначе
Для каждого стр из ОсновныеСредства Цикл
Массив.Добавить(строка(стр.ОсновноеСредство) + "?" + стр.ОсновноеСредство.Код)
КонецЦикла;
КонецЕсли;
ОбластьДетальныхЗаписей.Параметры.ОС = СтрСоединить(Массив, ";");
ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
КонецЦикла;
ТабДок.ЗакончитьАвтогруппировкуСтрок();
Возврат ТабДок;
КонецФункции