powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / Конвертация данных (регистр в справочник)
24 сообщений из 24, страница 1 из 1
Конвертация данных (регистр в справочник)
    #35859703
first_may
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!

Создаю правила конвертации объектов из "Управление торговлей, 10.3" в "Бухгалтерия предприятия, 1.6". Начал с самого простого, на мой взгляд, справочника Номенклатуры. Но возникла проблема по переносу комплектующих, так как в торговле это регистр сведений, а в бухгалтерии это справочник спецификации номенклатуры. Нужна помощь в решении этой задачи. Кто нибудь с этим сталкивался?
...
Рейтинг: 0 / 0
Конвертация данных (регистр в справочник)
    #35859714
paps
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В принципе не трудно.
Типовые правила меняете или свои создаете?
...
Рейтинг: 0 / 0
Конвертация данных (регистр в справочник)
    #35859729
first_may
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне кажется там надо создавать, но если можно без этого обойтись, то хорошобы... Просто в демо-версии есть перенос из регистра накопления в документ. А вот моей ситуации не нашел нигде как сделать :(
...
Рейтинг: 0 / 0
Конвертация данных (регистр в справочник)
    #35859813
first_may
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто нибудь с этим сталкивался?
...
Рейтинг: 0 / 0
Конвертация данных (регистр в справочник)
    #35859843
Господин ПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проблема то в чем?

Сделай ПКО для спецификаций с получением данных из ВходящиеДанные. Собери данные из регистра по выгружаемой "сейчас" номенклатуре в ТЗ, событии ПослеВыгрузки() для номенклатуры, так чтобы каждая строка ТЗ по сути была элементом спр. спецификации. Обойди полученную ТЗ

для каждого _стр Из ТЗ Цикл

ВходящиеДанные = Новый Структура;
ВходящиеДанные.Наименование = ....
ВходящиеДанные.Блабла = ....

ВыгрузитьПоПравилу(, ВходящиеДанные,,,, "ИмяПравилаСпецицикации");

КонецЦикла
...
Рейтинг: 0 / 0
Конвертация данных (регистр в справочник)
    #35859857
first_may
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собери данные из регистра по выгружаемой "сейчас" номенклатуре в ТЗ - есть параметр или переменная, в которой хранится "сейчас" номенклатура? Другимим словами, если делать отбор из регистра для конкретной "сейчас" номенклатуры.
...
Рейтинг: 0 / 0
Конвертация данных (регистр в справочник)
    #35859868
Господин ПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мануал вообще открывали? Источник
...
Рейтинг: 0 / 0
Конвертация данных (регистр в справочник)
    #35859906
first_may
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, читал, но не все понял, поэтому и спрашиваю.

В данном случае для ПКО будет:
Источник - РегистрСведенийЗапись.КомплектующиеНоменклатуры
Значение - СправочникСсылка.СпецификацииНоменклатуры

Для получения комплектующих хотел бы написать запрос с указанием конкретной номенклатуры, для которой надо получить данные. Запрос вот такой например:

ВЫБРАТЬ
КомплектующиеНоменклатуры.ХарактеристикаНоменклатуры,
КомплектующиеНоменклатуры.Комплектующая,
КомплектующиеНоменклатуры.ХарактеристикаКомплектующей,
КомплектующиеНоменклатуры.Количество,
КомплектующиеНоменклатуры.ЕдиницаИзмерения
ИЗ
РегистрСведений.КомплектующиеНоменклатуры КАК КомплектующиеНоменклатуры
ГДЕ
КомплектующиеНоменклатуры.Номенклатура = &ТекущаяНоменклатура

Так вот, как определить чему равна ТекущаяНоменклатура?
...
Рейтинг: 0 / 0
Конвертация данных (регистр в справочник)
    #35859915
Господин ПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
откуда Источник - РегистрСведенийЗапись.КомплектующиеНоменклатуры, если все это происходит в ПКО Номеклатура, После Выгрузки()?
...
Рейтинг: 0 / 0
Конвертация данных (регистр в справочник)
    #35859926
first_may
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То есть все манипуляции надо делать в првиле СправочникСсылка.Номенклатура -> СправочникСсылка.Номенклатура? И при этом не добавлять правило РегистрСведенийЗапись.КомплектующиеНоменклатуры -> СправочникСсылка.СпецификацииНоменклатуры
...
Рейтинг: 0 / 0
Конвертация данных (регистр в справочник)
    #35859932
Господин ПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
читай внимательно что было написано.

одно правило номенклатура->Номенклатура

второе Пустота(ВходящиеДанные) ->СправочникСсылка.СпецификацииНоменклатуры
...
Рейтинг: 0 / 0
Конвертация данных (регистр в справочник)
    #35860102
first_may
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал как написано в помощи, то есть
первое правило
СправочникСсылка.Номенклатура -> СправочникСсылка.Номенклатура

второе
-> СправочникСсылка.СпецификацииНоменклатуры

В обработчике события ПослеВыгрузки написал

Текст = "
| ВЫБРАТЬ
| КомплектующиеНоменклатуры.ХарактеристикаНоменклатуры,
| КомплектующиеНоменклатуры.Комплектующая,
| КомплектующиеНоменклатуры.ХарактеристикаКомплектующей,
| КомплектующиеНоменклатуры.Количество,
| КомплектующиеНоменклатуры.ЕдиницаИзмерения
| ИЗ
| РегистрСведений.КомплектующиеНоменклатуры КАК КомплектующиеНоменклатуры
| ГДЕ
| КомплектующиеНоменклатуры.Объект = &Объект";

Запрос = Новый Запрос();
Запрос.Текст = Текст;
Запрос.УстановитьПараметр("Объект", Источник);

Выборка = Запрос.Выполнить().Выбрать();
Сообщить(Выборка.Количество());



Сохранил и при попытке выгрузить данные из Торговли получаю ошибку:
Ошибка при выгрузке данных: {Обработка.УниверсальныйОбменДаннымиXML(1527)}: Ошибка в обработчике события ПослеВыгрузкиОбъекта
ПКО = СпецификацииНоменклатуры (Регистр сведений: Комплектующие номенклатуры)
Объект = (Выборка из результата запроса)
Обработчик = ПослеВыгрузкиОбъекта
ОписаниеОшибки = Ошибка при вызове метода контекста (Выполнить): {(11, 29)}: Поле не найдено "КомплектующиеНоменклатуры.Объект"
КомплектующиеНоменклатуры.<<?>>Объект = &Объект
ПозицияМодуля = (17)
КодСообщения = 43
...
Рейтинг: 0 / 0
Конвертация данных (регистр в справочник)
    #35860127
Господин ПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ппц.. где в структуре регистра "Объект"?
...
Рейтинг: 0 / 0
Конвертация данных (регистр в справочник)
    #35860132
first_may
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот кусок текста из помощи:

...

Пример:
в приведенном примере контактная информация в файле обмена будет располагаться перед выгруженным объектом.

Запрос = Новый Запрос("
|ВЫБРАТЬ
| КонтактнаяИнформация.Объект,
| КонтактнаяИнформация.Тип,
| КонтактнаяИнформация.Вид,
| КонтактнаяИнформация.Представление,
| КонтактнаяИнформация.Поле1,
| КонтактнаяИнформация.Поле2,
| КонтактнаяИнформация.Поле3,
| КонтактнаяИнформация.Поле4,
| КонтактнаяИнформация.Поле5,
| КонтактнаяИнформация.Поле6,
| КонтактнаяИнформация.Поле7,
| КонтактнаяИнформация.Поле8,
| КонтактнаяИнформация.Поле9,
| КонтактнаяИнформация.Поле10,
| КонтактнаяИнформация.Комментарий
|ИЗ
| РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
|ГДЕ
| КонтактнаяИнформация.Объект = &Объект");

Запрос.УстановитьПараметр("Объект", Источник);
Выборка = Запрос.Выполнить().Выбрать();
Сообщить(Выборка.Количество());
Пока Выборка.Следующий() Цикл
ВыгрузитьПоПравилу(Выборка, , , , "КонтактнаяИнформация");
КонецЦикла;
...
Рейтинг: 0 / 0
Конвертация данных (регистр в справочник)
    #35860142
first_may
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
виноват ступил
...
Рейтинг: 0 / 0
Конвертация данных (регистр в справочник)
    #35860151
first_may
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А при таком варианте:

Текст = "
| ВЫБРАТЬ
| КомплектующиеНоменклатуры.ХарактеристикаНоменклатуры,
| КомплектующиеНоменклатуры.Комплектующая,
| КомплектующиеНоменклатуры.ХарактеристикаКомплектующей,
| КомплектующиеНоменклатуры.Количество,
| КомплектующиеНоменклатуры.ЕдиницаИзмерения
| ИЗ
| РегистрСведений.КомплектующиеНоменклатуры КАК КомплектующиеНоменклатуры
| ГДЕ
| КомплектующиеНоменклатуры.Номенклатура = &Номенклатура";

Запрос = Новый Запрос();
Запрос.Текст = Текст;
Запрос.УстановитьПараметр("Номенклатура", Источник);

Выборка = Запрос.Выполнить().Выбрать();
Сообщить(Выборка.Количество());


Ошибка:
Ошибка при выгрузке данных: {Обработка.УниверсальныйОбменДаннымиXML(1527)}: Ошибка в обработчике события ПослеВыгрузкиОбъекта
ПКО = СпецификацииНоменклатуры (Регистр сведений: Комплектующие номенклатуры)
Объект = (Выборка из результата запроса)
Обработчик = ПослеВыгрузкиОбъекта
ОписаниеОшибки = Ошибка при вызове метода контекста (Выполнить): {(11, 42)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля
неограниченной длины и поля несовместимых типов.
КомплектующиеНоменклатуры.Номенклатура <<?>>= &Номенклатура
ПозицияМодуля = (17)
КодСообщения = 43
...
Рейтинг: 0 / 0
Конвертация данных (регистр в справочник)
    #35860277
first_may
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел еще ошибку свою...
...
Рейтинг: 0 / 0
Конвертация данных (регистр в справочник)
    #35862068
first_may
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще раз перечитал ветку, возникли следующие вопросы. Если делать правила конвертации:

1 номенклатура->Номенклатура
2 Пустота(ВходящиеДанные) ->СправочникСсылка.СпецификацииНоменклатуры

а потом в событии ПослеВыгрузки() для номенклатуры написал следующее:

Текст="
| ВЫБРАТЬ
| КомплектующиеНоменклатуры.ХарактеристикаНоменклатуры,
| КомплектующиеНоменклатуры.Комплектующая,
| КомплектующиеНоменклатуры.ХарактеристикаКомплектующей,
| КомплектующиеНоменклатуры.Количество,
| КомплектующиеНоменклатуры.ЕдиницаИзмерения
| ИЗ
| РегистрСведений.КомплектующиеНоменклатуры КАК КомплектующиеНоменклатуры
| ГДЕ
| КомплектующиеНоменклатуры.Номенклатура = &Номенклатура";

Запрос=Новый Запрос();
Запрос.Текст=Текст;
Запрос.УстановитьПараметр("Номенклатура",Источник);

Спецификация=Новый ТаблицаЗначений();
Спецификация.Колонки.Добавить("Номенклатура");
Спецификация.Колонки.Добавить("Количество");

Выборка=Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
СтрокаСпецификации=Спецификация.Добавить();
СтрокаСпецификации.Номенклатура=Выборка.Комплектующая;
СтрокаСпецификации.Количество=Выборка.Количество;
КонецЦикла;

ИсходящиеДанные= Новый Структура;
ИсходящиеДанные.Вставить("Владелец",Источник);
ИсходящиеДанные.Вставить("Количество",1);
ИсходящиеДанные.Вставить("ИсходныеКомплектующие",Спецификация);

Дальше надо написать код в котором указан вопрос:

ВыгрузитьПоПравилу(,,ИсходящиеДанные,,<ВОТ ТУТ ЧТО НАДО УКАЗЫВТЬ>);
...
Рейтинг: 0 / 0
Конвертация данных (регистр в справочник)
    #35862187
Господин ПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
строку с именем ПКО, по которому выгружаются эти данные
...
Рейтинг: 0 / 0
Конвертация данных (регистр в справочник)
    #35862813
first_may
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А так как обработчки на ПКО:
1 номенклатура->Номенклатура

то надо написать
ВыгрузитьПоПравилу(,,ИсходящиеДанные,,"Номенклатура");

где ПКО
Номенклатура = СправочникСсылка.Номенклатура -> СправочникСсылка.Номенклатура

Но тогда при выгрузке из источника ошибка:
Ошибка в обработчике события ПослеВыгрузкиОбъекта
ПКО = Номенклатура (Справочник: Номенклатура)
Объект = Обувь (Справочник ссылка: Номенклатура)
Обработчик = ПослеВыгрузкиОбъекта
ОписаниеОшибки = Поле объекта не обнаружено (Номенклатура1)
ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML(2967)
КодСообщения = 43
...
Рейтинг: 0 / 0
Конвертация данных (регистр в справочник)
    #35862846
Господин ПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
телепатирую - "Обувь" это группа. п.э. в начале ПослеВыгрузки

Если Источник.ЭтоГруппа Тогда
Отказ = Истина;
КонецЕсли;
...
Рейтинг: 0 / 0
Конвертация данных (регистр в справочник)
    #35862881
first_may
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думаю не из за этого, так как ошибка

Ошибка при выгрузке данных: {Обработка.УниверсальныйОбменДаннымиXML(1527)}: Ошибка в обработчике события ПослеВыгрузкиОбъекта
ПКО = Номенклатура (Справочник: Номенклатура)
Объект = Обувь (Справочник ссылка: Номенклатура)
Обработчик = ПослеВыгрузкиОбъекта
ОписаниеОшибки = Ошибка получения значения свойства объекта (по имени свойства источника)
ПКО = Номенклатура (Справочник: Номенклатура)
ПКС = 2 (Код --> Код)
Объект = (Неопределено)
СвойствоПриемника = Код (Строка)
ОписаниеОшибки = Получение элемента по индексу для значения не определено
ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML(6715)
КодСообщения = 13
ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML(1558)
КодСообщения = 43

Похоже что происходит замена объектов выгрузки.
...
Рейтинг: 0 / 0
Конвертация данных (регистр в справочник)
    #35862886
first_may
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ведь есть же еще правила конвертации свойств для ПКО, а там написано
Код -> Код
Комментарий -> Комментарий

и так далее
...
Рейтинг: 0 / 0
Конвертация данных (регистр в справочник)
    #35864275
first_may
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите пожалуйста, как все таки перенести данные комплектующих из "Управление торговлей, 10.3" в спецификацию "Бухгалтерия предприятия, 1.6". Кде нибудь написан пример переноса регистра в справочник?
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Конвертация данных (регистр в справочник)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]