Имя: Пароль:
1C
1C 7.7
v7: Конвертация данных в пятницу (основано на реальных событиях)
0 beaver1971
 
24.07.15
11:42
ПКО_ОбъектыВнеоборотныхАктивов выгружает справочник ОбъектыВнеоборотныхАктивов в отдельную группу справочника Номенклатура.
ПКС_НоменклатурнаяГруппаЗатрат_ПередВыгрузкой

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

ПКС_ВидыНоменклатурыЗначения_ПередВыгрузкой

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

ПКО_ВидыВнеоборотныхЗначения - простое правило, принимающее внешние параметры и заполняющее справочник ВидыНоменклатуры. Какого либо кода в нем нет.

ПКО_ЗначениеЗатратыПоВнеоборотнымАктивам
ПКС_Родитель_ПередВыгрузкой

    ЕстьОшибка = 0;
    Попытка
        Если ПустоеЗначение(Источник.Родитель) <> 0 Тогда
            Значение = "Затраты на объекты внеоборотных активов";
            ИмяПКО = "ГруппаЗатратПоВнеоборотнымАктивам";
        КонецЕсли;
    Исключение
        ЕстьОшибка = 1;
        Для х = 1 По ВходящиеДанные.РазмерСписка() Цикл
            ИмяЗначения = "";
            ДляЗначения = ВходящиеДанные.ПолучитьЗначение(х, ИмяЗначения);
            Сообщить("Фигня: " + ИмяЗначения + "=" + ДляЗначения + ";"); // для наглядности
            Если ИмяЗначения = "Родитель" Тогда
                Значение = ДляЗначения;
            КонецЕсли;
        КонецЦикла;
    КонецПопытки;
    // Генерируем ошибку // для наглядности
    Если ЕстьОшибка = 1 Тогда
        Сообщить(Источник.Родитель);
    КонецЕсли;

Как поётся в песне: "Жмем на кнопку, получаем результат"

Начало выгрузки:   24.07.15 14:10:55
Фигня: Наименование=Что ему надо Продуктивный скот;
Фигня: ЭтоГруппа=0;
Фигня: Родитель=Не является объектом с/х продукции;
Фигня: ТипНоменклатуры=Товар;
Фигня: Правило=ВидыВнеоборотныхЗначения;
Ошибка исполнения обработчика:  ПКС_ПередВыгрузкой_ЗначениеЗатратыПоВнеоборотнымАктивам_Родитель_Свойство4
  - Поле агрегатного объекта не обнаружено (Родитель)
Выгружено объектов:   40184
Окончание выгрузки:   24.07.15 14:16:35

Кто пытается ВыгрузитьПоПравилу ЗначениеЗатратыПоВнеоборотнымАктивам вместо ВидыВнеоборотныхЗначения?

Про "Продуктивный скот" известно, что это группа справочника ОбъектыВнеоборотныхАктивов с наименьшим в справочнике кодом.

PS. Про "дебильность" кода в ПКО_ЗначениеЗатратыПоВнеоборотнымАктивам_ПКС_Родитель_ПередВыгрузкой знаю сам ))))))
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.