Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 06:22

Конвертация "Установка цен" из УТ 11 в БП 2.0

Автор roofless, 15 июл 2015, 13:40

0 Пользователей и 1 гость просматривают эту тему.

roofless

всем привет

кто-нибудь делал конвертацию док-та "установка цен номенклатуры" из УТ 11 в БП 2.0?
при первом взгляде получается, что конвертироваться должно из одного в несколько док-тов

открыл правила синхронизации УТ-БП, там выдирают из РС ЦеныНоменклатуры. пробовал тем же методом, но столкнулся с ограничениями параметров (там выгрузка идет в зависимости от того, менялась цена или нет)

поделитесь, пожалуйста, хотя бы алгоритмом действий

MuI_I_Ika

А зачем вам в БП цены, если вы используете УТ. Ну да ладно. В БП 2.0 цены по моему не в документе устанавливались, а регистром.

Если это так как я помню, то делайте выборку регистра из УТ и пишите его в соответствующий регистр БП.

roofless

Цитата: MuI_I_Ika от 15 июл 2015, 16:40
А зачем вам в БП цены, если вы используете УТ. Ну да ладно. В БП 2.0 цены по моему не в документе устанавливались, а регистром.

Если это так как я помню, то делайте выборку регистра из УТ и пишите его в соответствующий регистр БП.

для ведения в БП суммового учета.

делаю выборку из УТ:
Запрос = Новый Запрос("ВЫБРАТЬ
                      | ЦеныНоменклатуры.Период,
                      | ЦеныНоменклатуры.ВидЦены КАК ВидЦены,
                      | ЦеныНоменклатуры.Номенклатура,
                      | ЦеныНоменклатуры.Цена КАК Цена,
                      | ЦеныНоменклатуры.Валюта
                      |ИЗ
                      | РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
                      |ГДЕ
                      | ЦеныНоменклатуры.Период > &Период
                      | И ЦеныНоменклатуры.ВидЦены = &ВидЦены
                      |
                      |СГРУППИРОВАТЬ ПО
                      | ЦеныНоменклатуры.Период,
  | ЦеныНоменклатуры.ВидЦены,
  | ЦеныНоменклатуры.Номенклатура,
  | ЦеныНоменклатуры.Валюта,
  | ЦеныНоменклатуры.Цена
  |ИТОГИ
  | МАКСИМУМ(Цена)
  |ПО
  | Период,
  | ВидЦены,
  | Номенклатура
  |");

Запрос.УстановитьПараметр("Период", ДатаНачала);
Запрос.УстановитьПараметр("ВидЦены", РозничныйВидЦены);


дальше обрабатываю результат. должно получиться за каждый период по каждому виду цены по одному документу с тч "номенклатура, цена, валюта"
то есть за 2015.01.01 00.00.00 по виду цен "цена поступления" отдельный док. для другого вида цен - следующий док

обрабатываю результат вот так:

ВыборкаПоПериодам = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоПериодам.Следующий() Цикл

СтруктураОбъекта = Новый Структура;
СтруктураОбъекта.Вставить("Ссылка");
СтруктураОбъекта.Вставить("Дата", ВыборкаПоПериодам.Период);

//ВыборкаПоВидамЦен = ВыборкаПоПериодам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

ВыборкаПоВидамЦен = ВыборкаПоПериодам.Выбрать();

ВыборкаПоВидамЦен.Количество();

Пока ВыборкаПоВидамЦен.Следующий() Цикл

СтруктураОбъекта.Вставить("ТипЦен", ВыборкаПоВидамЦен.ВидЦены);

Товары = Новый ТаблицаЗначений;
Товары.Колонки.Добавить("Номенклатура");
Товары.Колонки.Добавить("Цена");
Товары.Колонки.Добавить("Валюта");

//ВыборкаДетали = ВыборкаПоВидамЦен.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
ВыборкаДетали = ВыборкаПоВидамЦен.Выбрать();
Пока ВыборкаДетали.Следующий() Цикл
Если ЗначениеЗаполнено(ВыборкаДетали.Номенклатура) Тогда
ЗаполнитьЗначенияСвойств(Товары.Добавить(), ВыборкаДетали);
КонецЕсли;
КонецЦикла;

СтруктураОбъекта.Вставить("Товары", Товары);
СтруктураОбъекта.Вставить("ПометкаУдаления", Товары.Количество() = 0);
СтруктураОбъекта.Вставить("Проведен", НЕ Товары.Количество() = 0);
// Выгрузка документа
//ВыгрузитьПоПравилу(СтруктураОбъекта,,,, "УстановкаЦенНоменклатуры");

КонецЦикла;
КонецЦикла;


и в итоге у меня ВыборкаДетали всегда пустая. что не так делаю?(
Добавлено: 16 июл 2015, 11:24


скрин выполнения запроса в консоли

MuI_I_Ika

Возможно вот с этим что-то не так.

ЦеныНоменклатуры.Период > &Период

Вы выбираете цены где период больше некой даты. Надеюсь это не текущая дата.

ВыборкаПоВидамЦен = ВыборкаПоПериодам.Выбрать();

Здесь нужно выбирать по группировкам.


roofless

сам разобрался

для следующих поколений оставляю код для ПВД послеобработки

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВидыЦен.Ссылка
|ИЗ
| Справочник.ВидыЦен КАК ВидыЦен
|ГДЕ
| ВидыЦен.ПометкаУдаления = Ложь
| И ВидыЦен.ИспользоватьПриПродаже = Истина";

Результат = Запрос.Выполнить();

ВидыЦен = Результат.Выгрузить();

Запрос = Новый Запрос("ВЫБРАТЬ
                      | ЦеныНоменклатуры.Период,
                      | ЦеныНоменклатуры.ВидЦены КАК ВидЦены,
                      | ЦеныНоменклатуры.Номенклатура,
                      | ЦеныНоменклатуры.Цена КАК Цена,
                      | ЦеныНоменклатуры.Валюта
                      |ИЗ
                      | РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
                      |ГДЕ
                      | ЦеныНоменклатуры.Период >= &Период
                      | И (ЦеныНоменклатуры.ВидЦены В (&ВидЦены))
                      |
                      |СГРУППИРОВАТЬ ПО
                      | ЦеныНоменклатуры.Период,
  | ЦеныНоменклатуры.ВидЦены,
  | ЦеныНоменклатуры.Номенклатура,
  | ЦеныНоменклатуры.Валюта,
  | ЦеныНоменклатуры.Цена
  |ИТОГИ
  | МАКСИМУМ(Цена)
  |ПО
  | Период,
  | ВидЦены
  |");

Запрос.УстановитьПараметр("Период", Параметры.ДатыИзмененияЦен);
Запрос.УстановитьПараметр("ВидЦены", ВидыЦен);


ВыборкаПоПериодам = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоПериодам.Следующий() Цикл

СтруктураОбъекта = Новый Структура;
СтруктураОбъекта.Вставить("Ссылка");
СтруктураОбъекта.Вставить("Дата", ВыборкаПоПериодам.Период);

ВыборкаПоВидамЦен = ВыборкаПоПериодам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

//ВыборкаПоВидамЦен = ВыборкаПоПериодам.Выбрать();

Пока ВыборкаПоВидамЦен.Следующий() Цикл

СтруктураОбъекта.Вставить("ТипЦен", ВыборкаПоВидамЦен.ВидЦены);

Товары = Новый ТаблицаЗначений;
Товары.Колонки.Добавить("Номенклатура");
Товары.Колонки.Добавить("Цена");
Товары.Колонки.Добавить("Валюта");

//ВыборкаДетали = ВыборкаПоВидамЦен.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
ВыборкаДетали = ВыборкаПоВидамЦен.Выбрать();
Пока ВыборкаДетали.Следующий() Цикл
Если ЗначениеЗаполнено(ВыборкаДетали.Номенклатура) Тогда
ЗаполнитьЗначенияСвойств(Товары.Добавить(), ВыборкаДетали);
КонецЕсли;
КонецЦикла;

СтруктураОбъекта.Вставить("Товары", Товары);
СтруктураОбъекта.Вставить("ПометкаУдаления", Товары.Количество() = 0);
СтруктураОбъекта.Вставить("Проведен", НЕ Товары.Количество() = 0);
// Выгрузка документа
ВыгрузитьПоПравилу(СтруктураОбъекта,,,, "УстановкаЦенНоменклатуры");

КонецЦикла;
КонецЦикла;

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск