Имя: Пароль:
1C
1С v8
Обработка для 1с 8.2 БП не видит субсчета
0 sergey1982
 
25.01.14
19:49
Подскажите, пожалуйста, в БП 2.0 была обработка по установлению в проводках счетов и субконто. По условию, если сч. к-т = 10.09, то сч. дб-т = 44.01. При этом в обработке условия заданы так:
Если Запись.СчетКт.Родитель = ПланыСчетов.Хозрасчетный.Материалы Тогда
Запись.СчетДт = ПланыСчетов.Хозрасчетный.ИздержкиОбращения;
Запись.СубконтоДт.СтатьиЗатрат = Справочники.СтатьиЗатрат.НайтиПоКоду("000000029");
Т.е. обработка искала не конкретно 10.09 а счет 10 по всем субсчетам!
Теперь появилась необходимость установить условие с различением субсчетов 10.09 и 10.10. В обработке задал условие так: Запись.СчетКт.Родитель = ПланыСчетов.Хозрасчетный.СпецоснасткаИСпецодеждаНаСкладе, но ничего не работает. Подскажите, пожалуйста, как мне задать в обработке выбор по субсчетам?
1 hhhh
 
25.01.14
19:55
(а там точно есть субсчета в счете 10.09?
2 sergey1982
 
25.01.14
19:56
в плане счетов есть.
3 sergey1982
 
25.01.14
19:57
Не совсем вопрос понял, извиняюсь
4 sergey1982
 
25.01.14
19:57
могу код обработки показать если что
5 hhhh
 
25.01.14
19:58
(4) какие субсчета у вас у счета 10.09?
6 sergey1982
 
25.01.14
19:59
Поправлюсь, необходимо различать субсчета счета 10 на 10.09 и 10.10
7 sergey1982
 
25.01.14
20:00
А обработка изначально была заточена под счет 10 без разделения на субсчета!!!
8 hhhh
 
25.01.14
20:01
(6) ну так и пишите в программе. Зачем вы в программе субсчета счетов 10.09 и 10.10 берете?
9 sergey1982
 
25.01.14
20:03
Как счет 10.09 называется в коде 1с?
10 sergey1982
 
25.01.14
20:03
Вот код обработки:


Процедура ПриОткрытии()
    ДатаНачала = ТекущаяДата();
    ДатаОкнончания = ТекущаяДата();
    ЭтаФорма.Организация = глЗначениеПеременной("ОсновнаяОрганизация");
КонецПроцедуры

Процедура КнопкаВыполнитьНажатие(Кнопка)
    Если ЭтаФорма.Организация = Справочники.Организации.ПустаяСсылка() Тогда
        Предупреждение("Не указана организация для списания!");
        Возврат;
    КонецЕсли;
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    СписаниеТоваров.Ссылка
                   |ИЗ
                   |    Документ.СписаниеТоваров КАК СписаниеТоваров
                   |ГДЕ
                   |    СписаниеТоваров.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
                   |    И СписаниеТоваров.Организация = &Организация
                   |    И СписаниеТоваров.ПометкаУдаления = ЛОЖЬ";
    Запрос.УстановитьПараметр("ДатаНачала", НачалоДня(ДатаНачала));
    Запрос.УстановитьПараметр("ДатаОкончания", КонецДня(ДатаОкнончания));
    Запрос.УстановитьПараметр("Организация", ЭтаФорма.Организация);
    ВыборкаПоДокументам = Запрос.Выполнить().Выбрать();
    Пока ВыборкаПоДокументам.Следующий() Цикл
        ДокументОбъект = ВыборкаПоДокументам.Ссылка.ПолучитьОбъект();
        
        Если Найти(ДокументОбъект.Склад.Наименование,"клад") > 0 Тогда
            ТекПозиция = Найти(ДокументОбъект.Склад.Наименование,"клад") + 5;
            ТекНаименование = СокрЛ(Сред(ДокументОбъект.Склад.Наименование,ТекПозиция));
            //Сообщить(ТекНаименование);
        Иначе
            ТекПозиция = Найти(ДокументОбъект.Склад.Наименование,"ех") + 3;
            ТекНаименование = СокрЛ(Сред(ДокументОбъект.Склад.Наименование,ТекПозиция));
            //Сообщить(ТекНаименование);
        КонецЕсли;
        
        
        Запрос = Новый Запрос;
        Запрос.Текст = "ВЫБРАТЬ
                       |    ПодразделенияОрганизаций.Ссылка
                       |ИЗ
                       |    Справочник.ПодразделенияОрганизаций КАК ПодразделенияОрганизаций
                       |ГДЕ
                       |    ПодразделенияОрганизаций.Владелец = &Владелец
                       |    И ПодразделенияОрганизаций.Наименование = &Наименование
                       |    И ПодразделенияОрганизаций.ПометкаУдаления = ЛОЖЬ";
        Запрос.УстановитьПараметр("Владелец",ВыборкаПоДокументам.Ссылка.Организация);
        Если ЭтаФорма.Производственное Тогда
            Запрос.УстановитьПараметр("Наименование","Цех " + ТекНаименование);
        Иначе
            Запрос.УстановитьПараметр("Наименование",ДокументОбъект.Склад.Наименование);
        КонецЕсли;
        
        Рез = Запрос.Выполнить().Выбрать();
        Рез.Следующий();
        Подразделение = Рез.Ссылка;
        Если ВыборкаПоДокументам.Ссылка.Проведен = Ложь Тогда
            Попытка
                ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
            Исключение
                Сообщить("Не удалось записать документ "+ДокументОбъект);
                Продолжить;
            КонецПопытки;    
        КонецЕсли;
        Если ВыборкаПоДокументам.Ссылка.РучнаяКорректировка = Ложь Тогда
            ДокументОбъект.РучнаяКорректировка = Истина;
            ЗаписиРегистра = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
            ЗаписиРегистра.Отбор.Регистратор.Установить(ВыборкаПоДокументам.ССылка);
            ЗаписиРегистра.Прочитать();
            
            Если ЗаписиРегистра.Количество() > 0 Тогда
                Если ЭтаФорма.Производственное Тогда
                    Для Каждого Запись ИЗ ЗаписиРегистра Цикл
                        Если Запись.СчетКт = ПланыСчетов.Хозрасчетный.ГотоваяПродукция Тогда
                            Запись.СчетДт = ПланыСчетов.Хозрасчетный.СебестоимостьПродажНеЕНВД;    
                            Запись.СубконтоДт.НоменклатурныеГруппы = Справочники.НоменклатурныеГруппы.НайтиПоНаименованию(ДокументОбъект.Склад.Наименование);
                            //Запись.ПодразделениеДт = Подразделение;
                        ИначеЕсли Запись.СчетКт.Родитель = ПланыСчетов.Хозрасчетный.Материалы Тогда
                            Запись.СчетДт = ПланыСчетов.Хозрасчетный.ОсновноеПроизводство;
                            Запись.СубконтоДт.НоменклатурныеГруппы = Справочники.НоменклатурныеГруппы.НайтиПоНаименованию("Цех " + ТекНаименование);
                            Запись.СубконтоДт.СтатьиЗатрат = Справочники.СтатьиЗатрат.НайтиПоКоду("000000011");
                            Запись.ПодразделениеДт = Подразделение;
                        ИначеЕсли ВыборкаПоДокументам.Ссылка.Склад = Справочники.Склады.НайтиПоНаименованию("Основной склад") И Запись.СчетКт <> ПланыСчетов.Хозрасчетный.ГТД Тогда
                            Запись.СчетДт = ПланыСчетов.Хозрасчетный.ОбщехозяйственныеРасходы;
                            Запись.ПодразделениеДт = Подразделение;
                            //Запись.СубконтоДт.СтатьиЗатрат = Неопределено;
                            //Запись.СубконтоДт.НоменклатурныеГруппы = Неопределено;
                        ИначеЕсли Запись.СчетКт <> ПланыСчетов.Хозрасчетный.ГТД Тогда
                            Запись.СчетДт = ПланыСчетов.Хозрасчетный.ОсновноеПроизводство;
                            Запись.ПодразделениеДт = Подразделение;
                            Запись.СубконтоДт.НоменклатурныеГруппы = Справочники.НоменклатурныеГруппы.НайтиПоНаименованию(ДокументОбъект.Склад.Наименование);
                            //Запись.СубконтоДт.СтатьиЗатрат = Неопределено;
                        КонецЕсли;
    
                    // Рарус byse {
                        Если Запись.СчетДт <> ПланыСчетов.Хозрасчетный.СебестоимостьПродажЕНВД И Запись.СчетКт.Родитель = ПланыСчетов.Хозрасчетный.Товары Тогда
                            Запись.СубконтоДт.СтатьиЗатрат = Справочники.СтатьиЗатрат.НайтиПоКоду("000000029");
                        КонецЕсли;
                    // Рарус byse }
                    КонецЦикла;

                Иначе
                    Для Каждого Запись ИЗ ЗаписиРегистра Цикл
                        Если Запись.СчетКт = ПланыСчетов.Хозрасчетный.ТоварыВРозничнойТорговле Тогда
                            //Запись.СчетДт = ПланыСчетов.Хозрасчетный.ИздержкиОбращения;
                            Запись.СчетДт = ПланыСчетов.Хозрасчетный.СебестоимостьПродажЕНВД;
                            Запись.СубконтоДт.НоменклатурныеГруппы = Справочники.НоменклатурныеГруппы.НайтиПоНаименованию(ДокументОбъект.Склад.Наименование);
                            //Запись.СубконтоДт.СтатьиЗатрат = Справочники.СтатьиЗатрат.НайтиПоКоду("000000029");
                            //Запись.ПодразделениеДт = Неопределено;
                        ИначеЕсли Запись.СчетКт.Родитель = ПланыСчетов.Хозрасчетный.Материалы Тогда
                            Запись.СчетДт = ПланыСчетов.Хозрасчетный.ИздержкиОбращения;
                            Запись.СубконтоДт.СтатьиЗатрат = Справочники.СтатьиЗатрат.НайтиПоКоду("000000029");
                            Если Запись.СубконтоКт.Склады = Справочники.Склады.НайтиПоНаименованию("Основной склад") Тогда
                                Запись.СубконтоДт.НоменклатурныеГруппы = Справочники.НоменклатурныеГруппы.НайтиПоКоду("000000034");
                            ИначеЕсли Найти(ДокументОбъект.Склад.Наименование,"Бар") > 0 Тогда
                                Запись.СубконтоДт.НоменклатурныеГруппы = Справочники.НоменклатурныеГруппы.НайтиПоНаименованию(ДокументОбъект.Склад.Наименование);                                
                            Иначе
                                Запись.СубконтоДт.НоменклатурныеГруппы = Справочники.НоменклатурныеГруппы.НайтиПоНаименованию("Бар " + ТекНаименование);
                            КонецЕсли;
                            //Запись.ПодразделениеДт = Неопределено;
                        //ИначеЕсли Запись.СчетКт = ПланыСчетов.Хозрасчетный.ГотоваяПродукция Тогда
                        //    Запись.СчетДт = ПланыСчетов.Хозрасчетный.ИздержкиОбращения;    
                        ИначеЕсли ВыборкаПоДокументам.Ссылка.Склад = Справочники.Склады.НайтиПоНаименованию("Основной склад") И Запись.СчетКт <> ПланыСчетов.Хозрасчетный.ГТД Тогда
                            Запись.СчетДт = ПланыСчетов.Хозрасчетный.ОбщехозяйственныеРасходы;
                            Запись.ПодразделениеДт = Подразделение;
                            //Запись.СубконтоДт.СтатьиЗатрат = Неопределено;
                            //Запись.СубконтоДт.НоменклатурныеГруппы = Неопределено;
                        ИначеЕсли Запись.СчетКт <> ПланыСчетов.Хозрасчетный.ГТД Тогда
                            Запись.СчетДт = ПланыСчетов.Хозрасчетный.ОсновноеПроизводство;
                            Запись.ПодразделениеДт = Подразделение;
                            Запись.СубконтоДт.НоменклатурныеГруппы = Справочники.НоменклатурныеГруппы.НайтиПоНаименованию(ДокументОбъект.Склад.Наименование);
                            //Запись.СубконтоДт.СтатьиЗатрат = Неопределено;
                        КонецЕсли;
                        // Рарус byse {
                        Если Запись.СчетКт.Родитель = ПланыСчетов.Хозрасчетный.Материалы Тогда
                            Запись.СубконтоДт.СтатьиЗатрат = Справочники.СтатьиЗатрат.НайтиПоКоду("000000029");
                        ИначеЕсли Запись.СчетДт <> ПланыСчетов.Хозрасчетный.СебестоимостьПродажЕНВД И Запись.СчетКт.Родитель = ПланыСчетов.Хозрасчетный.Товары Тогда
                            Запись.СубконтоДт.СтатьиЗатрат = Справочники.СтатьиЗатрат.НайтиПоКоду("000000029");
                        КонецЕсли;
                        // Рарус byse }
                    КонецЦикла;
                КонецЕсли;                    
                    
                ЗаписиРегистра.Записать();
                Попытка
                ДокументОбъект.Записать();
                Исключение
                    Сообщить("Не удалось записать документ "+ДокументОбъект);
                КонецПопытки;    
                
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;    
КонецПроцедуры

Процедура ДатаНачалаПриИзменении(Элемент)
    Если Элемент.Значение > ЭтотОбъект.ДатаОкнончания Тогда
        ЭтотОбъект.ДатаОкнончания = Элемент.Значение;
    КонецЕсли;
КонецПроцедуры
        
        
        //произв
        //10-20.01
        //43-90.02.1 (цех)
        //магазин
        //10-44.01 суб МатРасхЕнвд+НомГруппа
        //41.02-90.02.2 суб
11 hhhh
 
25.01.14
20:04
(10) ну вот у вас

СчетКт.Родитель = ПланыСчетов.Хозрасчетный.СпецоснасткаИСпецодеждаНаСкладе

это же полный бред
12 sergey1982
 
25.01.14
20:06
А как правильно задать?
13 sergey1982
 
25.01.14
20:12
совсем горю ((
14 sergey1982
 
25.01.14
20:25
все ушли (
15 hhhh
 
25.01.14
20:55
СчетКт = ПланыСчетов.Хозрасчетный.СпецоснасткаИСпецодеждаНаСкладе
16 sergey1982
 
25.01.14
21:23
Спасибо огромное, уже разобрался - также как Вы только что написали сделал. Еще раз огромное спасибо за помощь!!!