Имя: Пароль:
1C
1С v8
Ошибка при выполнении обработчика - 'ПередЗаписью'
0 vsafonin
 
05.03.13
20:32
Делаю документ, задача документа распределение аналитики.

В создал процедуру в ней делаю проводки:

Процедура ФормированиеДвижений(СчетДТ, СчетКТ, Сумма, СубконтоДТ1, СубконтоДТ2, СубконтоДТ3, СубконтоКТ1, СубконтоКТ2, СубконтоКТ3);
    Движение = Движения.Хозрасчетный.Добавить();
    Движение.СчетДт = СчетДт;
    Движение.СчетКт = СчетКт;
    Движение.Период = Дата;
    Движение.Сумма = Сумма;
   
    //Формируем движения по регистру бухгалтерии (тип субконто определяется с помощью вспомогательной
    //Функции ОпределитьТипСубконто
   Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.НайтиПоНаименованию(ОпределитьТипСубконто(СчетДт,0))]=СубконтоДТ1;
   Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.НайтиПоНаименованию(ОпределитьТипСубконто(СчетДт,1))]=СубконтоДТ2;
   Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.НайтиПоНаименованию(ОпределитьТипСубконто(СчетДт,2))]=СубконтоДТ3;
   Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.НайтиПоНаименованию(ОпределитьТипСубконто(СчетКт,0))]=СубконтоКТ1;
   Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.НайтиПоНаименованию(ОпределитьТипСубконто(СчетКт,1))]=СубконтоКТ2;
   Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.НайтиПоНаименованию(ОпределитьТипСубконто(СчетКт,2))]=СубконтоКТ3;
   КонецПроцедуры

Сама процедура ошибок не вызывает, но документ все равно не проводится, вылетает с ошибкой:

Ошибка при выполнении обработчика - 'ПередЗаписью'
по причине:
{РегистрБухгалтерии.Хозрасчетный.МодульНабораЗаписей(122)}: Значение не является значением объектного типа (Типы)

Код из Модуля Набора записей:

Для Каждого Субконто Из Проводка.СубконтоДт Цикл
           Составной = ВидыСоставныхСубконто.Получить(Субконто.Ключ);          //
           Если Составной=неопределено Тогда                                   //  
               Составной = Субконто.Ключ.ТипЗначения.Типы().Количество() > 1;  // Кэширование: вид субконто + признак Составной
               ВидыСоставныхСубконто.Вставить(Субконто.Ключ,Составной);        //
           КонецЕсли;                                                          //
           Если Составной
               И НЕ ЗначениеЗаполнено(Субконто.Значение)
               И НЕ (Субконто.Значение = Неопределено) Тогда
               Проводка.СубконтоДт.Вставить(Субконто.Ключ, Неопределено);
           КонецЕсли;
       КонецЦикла;

Чую где то косяк, но не пойму где....
1 vsafonin
 
05.03.13
20:58
Хотябы в какую сторону копать, может я не туда смотрю?
2 vicof
 
05.03.13
21:12
(1)  Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.НайтиПоНаименованию(ОпределитьТипСубконто(СчетДт,0))]=СубконтоДТ1;
   Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.НайтиПоНаименованию(ОпределитьТипСубконто(СчетДт,1))]=СубконтоДТ2;
   Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.НайтиПоНаименованию(ОпределитьТипСубконто(СчетДт,2))]=СубконтоДТ3;
   Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.НайтиПоНаименованию(ОпределитьТипСубконто(СчетКт,0))]=СубконтоКТ1;
   Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.НайтиПоНаименованию(ОпределитьТипСубконто(СчетКт,1))]=СубконтоКТ2;
   Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.НайтиПоНаименованию(ОпределитьТипСубконто(СчетКт,2))]=СубконтоКТ3;
3 vicof
 
05.03.13
21:13
копать в эту сторону.
Если этобухня, то в модуле БухгалтерскийУчет было что-то типа УстановитьСубконто()
4 Serg_1960
 
05.03.13
21:22
(0) Алгоритм, ты уж извини меня, паршивенький. Обращение без анализа и проверки значений. И если "Составной" не равно "Неопределено", - работать как оно будет?

Составной = ВидыСоставныхСубконто.Получить(Субконто.Ключ);
...
Если Составной...
5 Serg_1960
 
05.03.13
21:29
В "Субконто.Ключ" может быть "Неопределено"?

PS: почти аннологичная тема v8: Выбрать в запросе Пустые Субконто
6 vsafonin
 
05.03.13
22:46
(3) Да бухня! Обратился с помощью БухгалтерскийУчет.УстановитьСубконто , и у меня все работает! Спасибо

(4) я только начинаю постигать азы 1с, и если честно мало понял о чем вы. Но спасибо буду подтягивать матчасть.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс