Имя: Пароль:
1C
1C 7.7
v7: Конвертация данных Единицы измерения номенклатуры
0 beaver1971
 
14.07.15
08:32
Перенос из 7.7 в 8.2 Номенклатуры.
В Старом справочнике ЕдиницаИзмерения - Справочник
В Новом справочнике есть БазоваяЕдиница (Из справочника КлассификаторЕдиницИзмерения) и ЕдиницыДляОстатков, ЕдиницыДляОтчетов, которые берутся из подчиненного справочника ЕдиницыИзмерений.
Старый ЕдиницыИзмерений выгружается в КлассификаторЕдиницИзмерений.
Для ПКО Номенклатура ПередВыгрузкой создается ТаблицаЗначений (Наименование, Владелец, ЕдиницаИзмерений) и выгружается по правилу в Справочник.ЕдиницыИзмерений.
Всё прекрасно отрабатывает, но как теперь из правила выгрузки ЕдиницИзмерений получить ссылку на выгруженную и заполнить поля в Номенклатуре?
PS. Наименование Номенклатуры меняется при выгрузке :(
1 yurii123
 
14.07.15
09:51
Попробуй это сделать у ПКС номенклатуры, для каждой ед изм. ИсходящимиДанными передать эту ТЗ в ПКО Спр ед изм. Там ВходящиеДанные примут и создадут элемент справочника ед изм и вернет ссылку в номенклатуру.
2 yurii123
 
14.07.15
09:52
Ну не ТЗ конечно, а список значений.
3 beaver1971
 
14.07.15
10:54
(1) Откуда в ПКС взять данные для "Значение"?
Источник данных то не определен, из внешних не получаю.
ПКС_ПриВыгрузке создаю ТаблицуЗначений, Выгрузить по правилу "ЕдиницыИзмерений", справочник ЕдиницИзмерений заполняется, но значение для ПКС ЕдиницыДляОстатков не определено :((
4 Альбатрос
 
14.07.15
10:57
(3)
Значение = СоздатьОбъект("СписокЗначений");
Значение.ДобавитьЗначение(Строка(Источник.БазоваяЕдиница), "Наименование");
Значение.ДобавитьЗначение(Источник.БазоваяЕдиница, "ЕдиницаПоКлассификатору");
Значение.ДобавитьЗначение(1, "Коэффициент");
Значение.ДобавитьЗначение(Источник, "Владелец");
5 beaver1971
 
14.07.15
11:13
(4) и?
ПКО Номенклатура (Источник:Справочник, Приемник:Справочник)
ПКС ЕдиницаИзмеренийДляОтчетов (Источник:неопределен, Приемник:СправочникСсылка)
В ПКС ПриВыгрузке создаю список значений и передаю его в Правило "ЕдиницыИзмерений", Правило успешно создает единицу измерений в справочнике ЕдиницыИзмерений, но в ПКС_ЕдиницаИзмеренийДляОтчетов_ПриВыгрузке ссылка на элемент справочника ЕдиницыИзмерений отсутствует, ибо неизвестна.
6 yurii123
 
14.07.15
14:17
ПКС ЕдИзм

СпрЕдИзм = СоздатьОбъект(Справочник.ЕдИзм);
СпрЕдИзм.....ПолучаешьСсылку и можешь ее запихать где нет ссылки.

ИсходящиеДанные= СоздатьОбъект("СписокЗначений");
ИсходящиеДанные.ДобавитьЗначение(Строка(Источник.БазоваяЕдиница), "Наименование");
ИсходящиеДанные.ДобавитьЗначение(Источник.БазоваяЕдиница, "ЕдиницаПоКлассификатору");
ИсходящиеДанные.ДобавитьЗначение(1, "Коэффициент");
ИсходящиеДанные.ДобавитьЗначение(Источник, "Владелец");
Значение = Приемник;


В справочнике единиц измерения создается элемент справочника и во владельца идет твой Источник.

ПКС для Наименование

Значение = ВходящиеДанные.Получить("Наименование")

ПКС для Владельца

Значение = ВходящиеДанные.Получить("Владелец")

И.т д
7 beaver1971
 
15.07.15
08:39
ПКО Номенклатура
ПКС ЕдиницаХраненияОстатков
ПКС ЕдиницаДляОтчетов
ПКС ЕдиницаИзмеренияМест
Во всех ПКС ПередВыгрузкой одинаково

    ИсходящиеДанные= СоздатьОбъект("СписокЗначений");
    ИсходящиеДанные.ДобавитьЗначение(Строка(Источник.ЕдиницаИзмерения), "Наименование");
    ИсходящиеДанные.ДобавитьЗначение(Источник.ЕдиницаИзмерения, "ЕдиницаПоКлассификатору");
    ИсходящиеДанные.ДобавитьЗначение(1, "Коэффициент");
    ИсходящиеДанные.ДобавитьЗначение(Источник, "Владелец");
    ВыгрузитьПоПравилу(,,ИсходящиеДанные,,"ЕдиницыИзмерения");
    Значение = Приемник;

В результате справочник ЕдиницыИзмерения заполняется, но в Номенклатуре соответствующие значения пустые. Если убрать строку "Значение = Приемник;", то при выгрузке ошибка. Если убрать строку "ВыгрузитьПоПравилу" (хотя правило и определено для каждого ПКС), то выгрузка единиц измерения не происходит.
Как вариант пробовал для каждого ПКС изменять строку:

    ИсходящиеДанные.ДобавитьЗначение("Остаток: " + Строка(Источник.ЕдиницаИзмерения), "Наименование");

И так для каждого ПКС по своему. В итоге в справочнике единиц измерения для каждой номенклатуры 3 (три) значения единиц измерения, но соответствующие значения заполнены.

PS. Если не "победю", то пусть так и будет.... Три единицы измерения.... Но не хотелось бы...
8 yurii123
 
15.07.15
11:03
Посмотри этот код отладчиком, все станет ясно. Смотри Владельца, почему он у тебя пустым приходит.
Значение = Приемник, попробуй заменить Значение = 1. Так как источник у тебя пустой, эта строка запускает ПКС, иначе Отказ.
ВыгрузитьПоПравилу(,,ИсходящиеДанные,,"ЕдиницыИзмерения"),
попробуй заменить на
ИмяПКО ="ЕдиницыИзмерения");
9 beaver1971
 
15.07.15
18:47
(8) ПКО ЕдиницыИзмерения - Не запоминать выгруженные объекты
И всё отработало на ура.....
Сейчас специально на чистой базе Приемник проверил...
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс