Каталог решений - Заметки о конвертации данных

Заметки о конвертации данных

Заметки о конвертации данных

В наличии

Сразу замечу, конвертация данных – не мой конек. Но вот текущий проект находится на стадии интеграции с бухгалтерией, и я столкнулся с огромным ворохом проблем, которые не мешало бы обсудить с коллегами. Я надеюсь, что эти заметки помогут не только мне.

Категория:

Описание

Молочников Олег Spb. 2012.

Заметки о конвертации данных

Сразу замечу, конвертация данных – не мой конек. Но вот текущий проект находится на стадии интеграции с бухгалтерией, и я столкнулся с огромным ворохом проблем, которые не мешало бы обсудить с коллегами. Я надеюсь, что эти заметки помогут не только мне.

Начну с самых больших граблей, на которые я наступил – я скопировал исходные правила для обмена УПП->УПП, приспособил их под себя и оставил первичную синхронизацию для документов и справочников по внутреннему идентификатору (В начале поиск объекта производится по внутреннему идентификатору (ВИ) и лишь при отсутствии объекта с таким ВИ, производится поиск по указанным реквизитам синхронизации (код, это группа и т.д.).

Это привело к катастрофе, которую обнаружили не сразу, что лишь усилило разрушительный результат. Оказывается ВИ не настолько уникальны, как описывает 1С. В бухгалтерской базе, в которой работа до этого велась несколько лет, это привело к перезаписи некоторых старых документов и справочников. При запрете синхронизации по внутреннему идентификатору проблема вроде бы исчезла, но доказать это может только время.

Несколько хитростей, которые я применил. В УПП ведется по ролевой учет, где каждый ролик это серия номенклатуры с добавленными реквизитами (вес, метраж, площадь, тех. инф., исходные рулоны). Естественно, выгружать документы из сотен позиций в бухгалтерию смысла нет. Выгружаются только данные о весе в килограммах, строки сворачиваются до структуры: Номенклатура, ширина, вес (как количество).

Для этого перед обработкой табличной части товары удобно вставлять код наподобие вот этого:

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВложенныйЗапрос.Номенклатура,
| ВложенныйЗапрос.Количество,
| ВложенныйЗапрос.СуммаНДС,
| ВложенныйЗапрос.Сумма,
| ВложенныйЗапрос.СтавкаНДС,
| ВложенныйЗапрос.СерияНоменклатурыНомерГТД КАК НомерГТД,
| ВложенныйЗапрос.СерияНоменклатурыСтранаПроисхождения КАК СтранаПроисхождения,
| ВЫБОР
| КОГДА ВложенныйЗапрос.Количество > 0
| ТОГДА ВложенныйЗапрос.Сумма / ВложенныйЗапрос.Количество
| ИНАЧЕ 0
| КОНЕЦ КАК Цена,
| &ЕдПоКлассификатору КАК ЕдПоКлассификатору,
| ВложенныйЗапрос.Ширина
|ИЗ
| (ВЫБРАТЬ
| РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
| СУММА(ВЫБОР
| КОГДА РеализацияТоваровУслугТовары.СерияНоменклатуры = ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА РеализацияТоваровУслугТовары.Количество
| ИНАЧЕ РеализацияТоваровУслугТовары.Количество * РеализацияТоваровУслугТовары.СерияНоменклатуры.Вес
| КОНЕЦ) КАК Количество,
| СУММА(РеализацияТоваровУслугТовары.СуммаНДС) КАК СуммаНДС,
| СУММА(РеализацияТоваровУслугТовары.Сумма) КАК Сумма,
| РеализацияТоваровУслугТовары.СтавкаНДС КАК СтавкаНДС,
| РеализацияТоваровУслугТовары.СерияНоменклатуры.НомерГТД КАК СерияНоменклатурыНомерГТД,
| РеализацияТоваровУслугТовары.СерияНоменклатуры.СтранаПроисхождения КАК СерияНоменклатурыСтранаПроисхождения,
| РеализацияТоваровУслугТовары.ХарактеристикаНоменклатуры.ШиринаВтулки.Наименование КАК Ширина
| ИЗ
| Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
| ГДЕ
| РеализацияТоваровУслугТовары.Ссылка = &Ссылка
|
| СГРУППИРОВАТЬ ПО
| РеализацияТоваровУслугТовары.Номенклатура,
| РеализацияТоваровУслугТовары.СтавкаНДС,
| РеализацияТоваровУслугТовары.СерияНоменклатуры.НомерГТД,
| РеализацияТоваровУслугТовары.СерияНоменклатуры.СтранаПроисхождения,
| РеализацияТоваровУслугТовары.ХарактеристикаНоменклатуры.ШиринаВтулки.Наименование
| ) КАК ВложенныйЗапрос";
Запрос.УстановитьПараметр("Ссылка", Источник.Ссылка);
Запрос.УстановитьПараметр("ЕдПоКлассификатору", Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию("кг"));
КоллекцияОбъектов= Запрос.Выполнить().Выгрузить();

В УПП ведется учет по номенклатуре и характеристике (ширине рулона).

В бухгалтерии нет возможности использовать характеристики номенклатуры.

Для каждой комбинации номенклатуры и ширины создается отдельный элемент номенклатуры с кодом номенклатуры, состоящим из кода номенклатуры и ширины рулона. Для этого:

1.      Перед выгрузкой номенклатуры:

ИсходящиеДанные= Новый Структура;
ИсходящиеДанные.Вставить("Ширина",ОбъектКоллекции.Ширина);

Перед выгрузкой реквизита “Код” справочника Номенклатура:

ШиринаРулона = "0000";
Если ВходящиеДанные <> Неопределено и ВходящиеДанные.Свойство("Ширина") тогда
    ВходящиеДанные.Свойство("Ширина",ШиринаРулона);
    Если ШиринаРулона <> "" Тогда
        ШиринаРулона = СтрЗаменить(СокрЛП(ШиринаРулона)," ","");
        ШиринаРулона = СтрЗаменить(СокрЛП(ШиринаРулона)," ","");
        ШиринаРулона = Прав(ШиринаРулона,4);
        ДлинаШР      = СтрДлина(ШиринаРулона);
        ШиринаРулона = Формат(0, "ЧЦ="+(4-ДлинаШР)+"; ЧН=; ЧВН=; ЧГ=")+ШиринаРулона;
    КонецЕсли;
КонецЕсли;
КодРулона = Прав(СокрЛП(Источник.Код),6);
ДлинаКода = СтрДлина(КодРулона);
КодРулона = Формат(0, "ЧЦ="+(6-ДлинаКода)+"; ЧН=; ЧВН=; ЧГ=")+КодРулона;
Значение  = СокрЛП("u"+КодРулона+ШиринаРулона);

3.      При выгрузке реквизита “Наименование” справочника Номенклатура:

ШиринаРулона = "0000";
 Если ВходящиеДанные <> Неопределено и ВходящиеДанные.Свойство("Ширина")  тогда
     ВходящиеДанные.Свойство("Ширина",ШиринаРулона);
     Если ШиринаРулона <> "" Тогда
         ШиринаРулона = СтрЗаменить(СокрЛП(ШиринаРулона)," ","");
         ШиринаРулона = СтрЗаменить(СокрЛП(ШиринаРулона)," ","");
         ШиринаРулона = Прав(ШиринаРулона,4);
         ДлинаШР      = СтрДлина(ШиринаРулона);
         ШиринаРулона = Формат(0, "ЧЦ="+(4-ДлинаШР)+"; ЧН=; ЧВН=; ЧГ=")+ШиринаРулона;
     КонецЕсли;
 КонецЕсли;
 КодРулона = Прав(СокрЛП(Источник.Код),6);
 ДлинаКода = СтрДлина(КодРулона);
 КодРулона = Формат(0, "ЧЦ="+(6-ДлинаКода)+"; ЧН=; ЧВН=; ЧГ=")+КодРулона;
 Значение = СокрЛП("u"+КодРулона+ШиринаРулона);

Я хотел бы создать группу, посвященную конвертации данных, где можно поделиться своими решениями и обсудить возникающие проблемы.

Также, если народу будет интересно, я хотел бы написать продолжение посвященное следующим темам: организация автоматического обмена, использование планов обмена, учет давальческого сырья и выгрузка данных в бухгалтерию.

 PS: Надеюсь вам понравится эта и другие мои статьи и разработки на //sale.itcity.ru/profile/48714/.

Очень жду ваших комментариев  и пожеланий.

Молочников Олег Spb. 2012.

has been added to your cart:
Оформление заказа