Имя: Пароль:
1C
1C 7.7
v7: спр.найтипокоду помогите
0 sevensword
 
24.02.14
12:38
1с 7.7 бу 4.5, 7.70.489
проблема в какой то ерунде, но не могу понять почему не получается,
надо чтобы при проведении документа если в табличной части есть товар с определенным кодом, по нему создавалась проводка, использую найти по коду, все равно при проведении проводка проходит по всем строкам

    Пока получитьстроку()=1 Цикл  
               Операция.новаяпроводка();

                   спр=создатьобъект("Справочник.Номенклатура");
          
              Если  спр.найтипокоду("000000153")=1 Тогда

              Операция.Дебет.Счет =  СчетПокоду("90.1.1");
            Операция.Дебет.Субконто(1,товар);  
            Операция.Кредит.Счет =  СчетПокоду("41.1");
            Операция.Кредит.Субконто(1,товар);
            Операция.Кредит.фирмы=фирма;  
            Операция.количество=количество;
            Операция.сумма=сумма;
1 zak555
 
24.02.14
12:39
откажись от самодельного документа и воспользуйся типовым
2 zak555
 
24.02.14
12:39
в типом смотрят не на код номенклатуры, а на тип его : товар/услуга/работа
3 zak555
 
24.02.14
12:40
+ (2) в зависимости от которого ставится проводка по списанию себестоимости
4 zak555
 
24.02.14
12:40
в (0) ошибка
проводки
Дт 90.1 (Выручка) Кт 41.1 (Товары)
быть не может
5 1Сергей
 
24.02.14
12:42
Операция.новаяпроводка(); // внутрь Если запихни
6 sevensword
 
24.02.14
12:45
типовой не пойдет,
(4) проводка правильная будет по 60.2 и 41.1
(5) не помогает пробывал
7 1Сергей
 
24.02.14
12:46
(6) отладчиком пользовался?
8 vladko
 
24.02.14
12:46
(0) Если  спр.найтипокоду("000000153")=1 Тогда
Ты что, каждый раз в справочнике товаров ищешь такой товар?
хотя бы так:
Пока получитьстроку()=1 Цикл  
               Операция.новаяпроводка();                  
          
              Если  СокрЛП(товар.Код) = "000000153" Тогда

              Операция.Дебет.Счет =  СчетПокоду("90.2.1");
            Операция.Дебет.Субконто(1,товар.ВидНоменклатуры);  
            Операция.Кредит.Счет =  СчетПокоду("41.1");
            Операция.Кредит.Субконто(1,товар);
            Операция.Кредит.фирмы=фирма;  
            Операция.количество=количество;
            Операция.сумма=сумма;
9 sevensword
 
24.02.14
12:47
сорри 62.1 (6)
10 zak555
 
24.02.14
12:47
(6) почему не подойдёт *?
11 sevensword
 
24.02.14
12:50
(8) ты прав так гораздо удачнее
все пошло всем спасибо
12 zak555
 
24.02.14
12:51
акуенно -- списывать себестоимость равную продаже =)
т.е. на 41 будут минусы
13 sevensword
 
24.02.14
12:51
(10) потому что помимо этой проводки в модуля куча самописных проводок
14 zak555
 
24.02.14
12:54
(13) какие ?
15 Chum
 
24.02.14
13:24
Идиотизм


>если в табличной части есть товар с определенным кодом, по нему создавалась проводка

л_ТЗ = СоздатьОбъект("ТаблицаЗначений");
ВыгрузитьТабличнуюЧасть(л_ТЗ);
Если л_ТЗ.НайтиЗначение(л_НужныйКод, 0, л_КолонкаГдеИскать) <> 0 Тогда
Операция.новаяпроводка();
// заполнение реквизитов проводки
КонецЕсли;


У тебя используется цикл по строкам и поиск кода в справочнике, а не в табличной части документа. Идиотская структура, соответственно, не тот результат.
16 aka AMIGO
 
24.02.14
13:43
честно, пытался минут 5 разобраться с логикой - так и не понял: зачем, перебирая строки, сделать только одну проводку? а остальные товары - так и останутся без проводки, но будут в проведенном документе?
и кто после этого будет в документе разбираться? бухгалтерия?
сочувствую им от всей души..