Введение
Задача: перенос данных (номенклатуры, цены, остатки) из конфигурации Розница 1.0 в УНФ ред. 2.0. Для этого мы будем использовать конвертацию данных с помощью инструмента КД 2.0.
Основные этапы:
- Загрузка метаданных конфигураций.
- Настройка правил конвертации.
- Выгрузка начальных остатков.
Пошаговая инструкция
Шаг 1: Подготовка метаданных
Необходимо загрузить метаданные конфигураций, чтобы обеспечить корректную работу механизма конвертации данных.
Шаг 2: Пример выгрузки через документ “Ввод начальных остатков”
Скриншот интерфейса
Код выгрузки начальных остатков
Ниже приведён пример кода для выгрузки данных о начальных остатках с учётом последних закупочных цен:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
| ТоварыНаСкладахОстатки.КоличествоОстаток КАК Количество
|ПОМЕСТИТЬ вт_Остатки
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
|
|ИНДЕКСИРОВАТЬ ПО Номенклатура;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ДокПоступление.Номенклатура КАК Номенклатура,
| МАКСИМУМ(ДокПоступление.Ссылка.Дата) КАК Дата
|ПОМЕСТИТЬ вт_Первая
|ИЗ
| Документ.ПоступлениеТоваров.Товары КАК ДокПоступление
|ГДЕ
| ДокПоступление.Ссылка.Проведен
| И ДокПоступление.Номенклатура В
| (ВЫБРАТЬ вт_Остатки.Номенклатура ИЗ вт_Остатки)
|
|СГРУППИРОВАТЬ ПО ДокПоступление.Номенклатура;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ПоступлениеТоваровТовары.Номенклатура,
| ПоступлениеТоваровТовары.Ссылка.Дата,
| ПоступлениеТоваровТовары.Цена
|ПОМЕСТИТЬ вт_ЦеныЗакуп
|ИЗ
| Документ.ПоступлениеТоваров.Товары КАК ПоступлениеТоваровТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ вт_Первая КАК вт_Первая
| ПО ПоступлениеТоваровТовары.Номенклатура = вт_Первая.Номенклатура
| И ПоступлениеТоваровТовары.Ссылка.Дата = вт_Первая.Дата
|ГДЕ
| ПоступлениеТоваровТовары.Ссылка.Проведен;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| вт_Остатки.Номенклатура,
| вт_Остатки.Количество,
| вт_ЦеныЗакуп.Цена,
| вт_Остатки.Количество * вт_ЦеныЗакуп.Цена КАК Сумма
|ИЗ
| вт_Остатки
| ЛЕВОЕ СОЕДИНЕНИЕ вт_ЦеныЗакуп ПО вт_Остатки.Номенклатура = вт_ЦеныЗакуп.Номенклатура
|ГДЕ
| НЕ вт_Остатки.Номенклатура.ПометкаУдаления";
ВыборкаДок = Запрос.Выполнить().Выбрать();
// Формирование таблицы значений для выгрузки
тзТовары = Новый ТаблицаЗначений;
тзТовары.Колонки.Добавить("ЕдиницаИзмерения");
тзТовары.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число"));
тзТовары.Колонки.Добавить("Цена", Новый ОписаниеТипов("Число"));
тзТовары.Колонки.Добавить("Номенклатура");
тзТовары.Колонки.Добавить("СтавкаНДС");
тзТовары.Колонки.Добавить("СтруктурнаяЕдиница");
тзТовары.Колонки.Добавить("Сумма", Новый ОписаниеТипов("Число"));
тзТовары.Колонки.Добавить("СуммаБезНДС", Новый ОписаниеТипов("Число"));
// Заполнение данных
Данные = Новый Структура();
Данные.Вставить("Организация", Справочники.Организации.НайтиПоРеквизиту("ИНН", "024401452808"));
Данные.Вставить("Комментарий", "Перенос из Розницы 1");
Данные.Вставить("Дата", ТекущаяДата());
Пока ВыборкаДок.Следующий() Цикл
НовСтр = тзТовары.Добавить();
ЗаполнитьЗначенияСвойств(НовСтр, ВыборкаДок);
КонецЦикла;
Данные.Вставить("Запасы", тзТовары);
// Выгрузка данных
ВыгрузитьПоПравилу("", Данные, "ВводНачальныхОстатков");
Отказ = Истина;
Пояснения к коду
- Первый блок запроса: Получение остатков товаров на складе.
- Второй блок: Определение последней даты поступления по каждому товару.
- Третий блок: Получение цены по каждому товару на основе последней даты поступления.
- Четвёртый блок: Совмещение данных по остаткам и закупочным ценам для расчёта общей стоимости.
Скачать правила.
Правила выгрузки из Розницы 1 в Управление нашей фирмой 3.0Заключение
Конвертация данных через КД 2.0 позволяет эффективно переносить начальные остатки между конфигурациями. В данном примере описан процесс выгрузки остатков с учётом последних закупочных цен. Подобные решения помогут автоматизировать переход между версиями программных продуктов 1С.