8.х Странности при присваивании значения субконто

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем gamser, 27 апр 2009.

  1. TopicStarter Overlay
    gamser
    Offline

    gamser Опытный в 1С

    Регистрация:
    27 окт 2006
    Сообщения:
    112
    Симпатии:
    0
    Баллы:
    26
    Конфигурация БП 1.6.9.4
    Обработка написана до меня, попросили клиенты кое что подправить Набрел вот на такие грабли при чтении кода. Проверил в работе - система все проглатывает как миленькая, даже не икает :smile:
    Может быть мне кто-то объяснит как это происходит?

    Фрагмент кода при открытии формы.
    Код:
    СпрСтатьиДвиженияДенежныхСредств = Справочники.СтатьиДвиженияДенежныхСредств;
    СпрПрочиеДоходыИРасходы = Справочники.ПрочиеДоходыИРасходы;	
    КомпенсацияЗаПользованиеЗаймом= СпрСтатьиДвиженияДенежныхСредств.НайтиПоНаименованию("Компенсация за пользование займом");
    ПовышеннаяКомпенсация= СпрСтатьиДвиженияДенежныхСредств.НайтиПоНаименованию("Повышенная компенсация");
    
    
    В дальнейшем создается документ операция
    Код:
    Операция	= Документы.ОперацияБух.СоздатьДокумент();
    
    Возле нее происходят разные пляски с бубном и вот апофигоз :unsure:
    Выделен цветом
    Код:
    Если Строчка.Комментарий = "Начисление компенсации по займу" Тогда 
    Проводка.СчетДт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("76.06");
    Проводка.СчетКт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("91.01");
    Проводка.СубконтоДт[ВидыСубконто.Контрагенты] = Контрагент;
    Проводка.СубконтоДт[ВидыСубконто.Договоры] = ДоговорКонтрагента;
    
    [color=#993399]Проводка.СубконтоКт[ВидыСубконто.ПрочиеДоходыИРасходы]=КомпенсацияЗаПользованиеЗаймом;
    
    Проводка.Организация     = Организация;
    Проводка.Содержание      = Строчка.Комментарий;
    Проводка.Сумма           = Строчка.Сумма;
    СуммаОперации = СуммаОперации + Строчка.Сумма;
    ИначеЕсли Строчка.Комментарий = "Повышенная компенсация" Тогда 
    Проводка.СчетДт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("76.12");
    Проводка.СчетКт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("91.01");
    Проводка.СубконтоДт[ВидыСубконто.Контрагенты] = Контрагент;
    Проводка.СубконтоДт[ВидыСубконто.Договоры] = ДоговорКонтрагента;
    
    [color=#993399]Проводка.СубконтоКт[ВидыСубконто.ПрочиеДоходыИРасходы]=ПовышеннаяКомпенсация;
    
    Проводка.Организация     = Организация;
    Проводка.Содержание      = Строчка.Комментарий;
    Проводка.Сумма           = Строчка.Сумма;
    СуммаОперации = СуммаОперации + Строчка.Сумма;
    КонецЕсли;
    
    
    Вид субконто "Прочие доходы и расходы" имеет тип "СправочникСсылка.ПрочиеДоходыИРасходы",
    А ему присваивается значение типа "СправочникСсылка.СтатьиДвиженияДенежныхСредств" при этом система спокойно проглатывает это несоответствие не говоря ни слова. В результате чего на 91 счете суммы расползаются на субконто которых быть в принципе не должно!!
    Глюк платформы? Релиз 8.1.13.37
  2. 1Cnica
    Offline

    1Cnica Опытный в 1С

    Регистрация:
    13 фев 2009
    Сообщения:
    416
    Симпатии:
    0
    Баллы:
    26
    дык оно и понятно, что присваивает значение СтатьиДвиженияблабла, у тя так и прописано

    Код:
    СпрСтатьиДвиженияДенежныхСредств=Справочники.СтатьиДвиженияДенежныхСредств;
    СпрПрочиеДоходыИРасходы = Справочники.ПрочиеДоходыИРасходы;
    КомпенсацияЗаПользованиеЗаймом= СпрСтатьиДвиженияДенежныхСредств.НайтиПоНаименованию("Компенсация за пользование займом");
    [b]ПовышеннаяКомпенсация[/b]= СпрСтатьиДвиженияДенежныхСредств.НайтиПоНаименованию("Повышенная компенсация");
    
    ....

    Код:
    [color=#993399]Проводка.СубконтоКт[ВидыСубконто.ПрочиеДоходыИРасходы]=[b]КомпенсацияЗаПользованиеЗаймом[/b];
    
    Код:
    [color=#993399]Проводка.СубконтоКт[ВидыСубконто.ПрочиеДоходыИРасходы]=[b]ПовышеннаяКомпенсация[/b];
    
  3. 1Cnica
    Offline

    1Cnica Опытный в 1С

    Регистрация:
    13 фев 2009
    Сообщения:
    416
    Симпатии:
    0
    Баллы:
    26
    а в отладке не пробовал смотреть? как там типы значений пересекаются?

    собсно, вот тебе и результат расползания

    ИМХО всё это :)
  4. TopicStarter Overlay
    gamser
    Offline

    gamser Опытный в 1С

    Регистрация:
    27 окт 2006
    Сообщения:
    112
    Симпатии:
    0
    Баллы:
    26
    Я не потому что присваивается, а почему система не возмущается при этом присваивании?
    Или я туплю, но по моему при присваивании в реквизит определенного типа, например СправочникСсылка.Номенклатура занести значение типа СправочникСсылка.СтатьиДвиженияДенежныхСредств, Должно вызвать по крайней мере легкую истерику движка, типа "ты че не то и не туда суешь", т.е. хоть как-то контролировать соответсвие типов. Сделал обработку из 2х полей
    1 СправочникСсылка.Номенклатура
    2 СправочникСсылка.СтатьиДвиженияДенежныхСредств

    Код:
    Процедура СтатьяДДСПриИзменении(Элемент)
    // Вставить содержимое обработчика.
    ЭтотОбъект.Номенклатура=Элемент.Значение;
    КонецПроцедуры
    
    В результате присваивания ЭтотОбъект.Номенклатура сохраняет свой тип но становится пустой ссылкой
    т.е.
    Код:
    ЭтотОбъект.Номенклатура.Пустая()
    
    возвращает
    Код:
    ИСТИНА
    
    Это я еще могу понять но как в определенный тип заносится значение совершенно другого типа - НЕ ПОНИМАЮ! :unsure:
  5. 1Cnica
    Offline

    1Cnica Опытный в 1С

    Регистрация:
    13 фев 2009
    Сообщения:
    416
    Симпатии:
    0
    Баллы:
    26
    нда....чудеса одЫнэса
  6. x_under
    Offline

    x_under Модераторы Команда форума Модератор

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    13
    Баллы:
    29
    Никаких чудес. Виды субконто - план видов характеристик, в котором присутствуют и элементы типа "Прочие доходы и расходы" и "Статьи движения денежных средств". Соответственно система эти значения глотает.
    Просто при интерактивном заполнении там появляется отбор по типам, а т.к. документ заполняют программно, то система отдает всю ответственность вам.
    Точно так же программно можно в реализацию товаров засунуть договор с поставщиком, а интерактивно нет.
  7. 1Cnica
    Offline

    1Cnica Опытный в 1С

    Регистрация:
    13 фев 2009
    Сообщения:
    416
    Симпатии:
    0
    Баллы:
    26
    дык понятно что план видов характеристик, но тип данного вида субконто один всего - СправочникСсылка.ПрочиеДоходыРасходы

    Вложения:

  8. x_under
    Offline

    x_under Модераторы Команда форума Модератор

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    13
    Баллы:
    29
    Стоп. У Субконто тип Виды субконто. Тип составной!!!

Поделиться этой страницей