Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1] 2  Все   Вниз
  Печать  
Автор Тема: [1C 7.7] Получить субконто за период.  (Прочитано 59423 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Clight
Интересующийся

ru
Offline Offline

« : 17-04-2013 21:43 » 

1C Предприятие 7.7 (7.70.027), Бухгалтерский учёт, редакция 4.5

Доброго времени суток. Только начинаю программировать в 7.7
Пытаюсь подправить отчёт "ОС все реквизиты". В диалоге формы указывается дата и формируется отчёт с указанием ОС на эту дату. Встал вопрос, формировать отчёт не на дату, а за период + указывать в отчёте только движимые ОС. С "только движимые" проблем вроде нет, примерно знаю как сделать, а вот с периодом как-то застопорился.

Код: (1C v8)
Ит.ВыбратьСубконто(ВидыСубконто.ОсновныеСредства);
Пока Ит.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = 1 Цикл
Т.НоваяСтрока();
Т.Подразделение = Ит.Субконто().Подразделение.Получить.(Дата1)

"Дата1" вводится в форме. Я подредактировал форму и сделал, чтобы можно было указать две даты "С "ДатаНач" по "ДатаКон"". Думал передать эти два значения в Подразделение.Получить, но пишет ошибку - "много параметров передаётся".   А черт его знает...
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 18-04-2013 14:16 » 

Clight, напиши код, начиная со строки
Код: (1C v8)
Ит = ...
Записан
Clight
Интересующийся

ru
Offline Offline

« Ответ #2 : 18-04-2013 21:19 » 

Код: (1C v8)
Процедура Сформировать()  
       
        Таб = СоздатьОбъект("Таблица");
        Таб.ИсходнаяТаблица("Таблица");
        Таб.ВывестиСекцию("Шапка");
       
        Ит = СоздатьОбъект("БухгалтерскиеИтоги");
        Ит.ИспользоватьСубконто(ВидыСубконто.ОсновныеСредства);
        Т = СоздатьОбъект("ТаблицаЗначений");
        Т.НоваяКолонка("Код");
        Т.НоваяКолонка("Наименование");
        Т.НоваяКолонка("Группа");
        Т.НоваяКолонка("Подразделение");
        Т.НоваяКолонка("ДатаВ");
        Т.НоваяКолонка("МОЛ");
        Т.НоваяКолонка("ПСт");
        Т.НоваяКолонка("Срок");
        Т.НоваяКолонка("Ст");
        Т.НоваяКолонка("Аморт");
        Т.НоваяКолонка("Ост");
        Т.НоваяКолонка("Счет");
        Т.НоваяКолонка("Суб1");
        Т.НоваяКолонка("Суб2");
        Т.НоваяКолонка("Суб3");
        Т.НоваяКолонка("АмГр");
        Т.НоваяКолонка("Сост");

Ит.ВыбратьСубконто(ВидыСубконто.ОсновныеСредства);
        Пока Ит.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = 1 Цикл
               
                Т.НоваяСтрока();
                Т.Код = Ит.Субконто().Код;
                Т.Наименование = Ит.Субконто().Наименование;
                Т.Группа = Ит.Субконто().Группа;
                Т.Подразделение = Ит.Субконто().Подразделение.Получить.(Дата1);
                Т.ДатаВ = Ит.Субконто().ДатаВводаВЭксплуатацию;
                Т.МОЛ = Ит.Субконто().МОЛ.Получить(Дата1);
                Т.ПСт = Ит.Субконто().ПервоначальнаяСтоимость.Получить(Дата1);
                Т.Срок = Ит.Субконто().СрокПолезногоИспользования.Получить(Дата1);

Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 19-04-2013 05:58 » 

Не похоже на код из типовой (у меня нет бух. для России - проверить не могу). Кто изначально писал этот отчет?

1. Для лучшего понимания (и ускорения алгоритма) делают так:
Код: (1C v8)
        Пока Ит.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = 1 Цикл
               
                Т.НоваяСтрока();
                ОС = Ит.Субконто();
                Т.Код = ОС.Код;
                Т.Наименование = ОС.Наименование;
                // ...
т.е. все в приведенном тобой примере кода - это обращение к реквизитам элемента справочника. И использование Получить() - это метод периодического реквизита (читай про периодические реквизиты в синтакс-помощнике).

2. Я нигде в коде не вижу обращения к движениям (итогам): идет просто выбор субконто. ИМХО это ничем не отличается от перебора справочника ОС (хотя могу и ошибаться - никогда не использовал БИ в таком режиме).
Записан
Clight
Интересующийся

ru
Offline Offline

« Ответ #4 : 21-04-2013 21:54 » 

Не похоже на код из типовой (у меня нет бух. для России - проверить не могу). Кто изначально писал этот отчет?

1. Для лучшего понимания (и ускорения алгоритма) делают так:
Код: (1C v8)
        Пока Ит.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = 1 Цикл
               
                Т.НоваяСтрока();
                ОС = Ит.Субконто();
                Т.Код = ОС.Код;
                Т.Наименование = ОС.Наименование;
                // ...
т.е. все в приведенном тобой примере кода - это обращение к реквизитам элемента справочника. И использование Получить() - это метод периодического реквизита (читай про периодические реквизиты в синтакс-помощнике).

2. Я нигде в коде не вижу обращения к движениям (итогам): идет просто выбор субконто. ИМХО это ничем не отличается от перебора справочника ОС (хотя могу и ошибаться - никогда не использовал БИ в таком режиме).
Да, это код не из типовой конфы, писал его программист до меня(связи с ним нет). Это внешняя обработка, которая находится в доп. возможностях. В общем суть идеи этого кода состоит в том, чтобы выбрать все нужные субконто на конкретную дату(а мне нужно за конкретный период) и включить их в отчёт. Это главная задача. Извиняюсь за сумбур, надо было скопировать весь код, просто не хотел сразу всё наваливать. В общем вот:
Код: (1C v8)
Процедура Сформировать()  
       
        Таб = СоздатьОбъект("Таблица");
        Таб.ИсходнаяТаблица("Таблица");
        Таб.ВывестиСекцию("Шапка");
       
        Ит = СоздатьОбъект("БухгалтерскиеИтоги");
        Ит.ИспользоватьСубконто(ВидыСубконто.ОсновныеСредства);
       
        Если Ит.ВыполнитьЗапрос(Дата1,Дата1,"01.1,02.1") = 0 Тогда  
                Предупреждение("Не удается выполнить запрос к бухгалтерским итогам!");
                Возврат;
        КонецЕсли;
       
        Т = СоздатьОбъект("ТаблицаЗначений");
        Т.НоваяКолонка("Код");
        Т.НоваяКолонка("Наименование");
        Т.НоваяКолонка("Группа");
        Т.НоваяКолонка("Подразделение");
        Т.НоваяКолонка("ДатаВ");
        Т.НоваяКолонка("МОЛ");
        Т.НоваяКолонка("ПСт");
        Т.НоваяКолонка("Срок");
        Т.НоваяКолонка("Ст");
        Т.НоваяКолонка("Аморт");
        Т.НоваяКолонка("Ост");
        Т.НоваяКолонка("Счет");
        Т.НоваяКолонка("Суб1");
        Т.НоваяКолонка("Суб2");
        Т.НоваяКолонка("Суб3");
        Т.НоваяКолонка("АмГр");
        Т.НоваяКолонка("Сост");
       
       
        Ит.ВыбратьСубконто(ВидыСубконто.ОсновныеСредства);
        Пока Ит.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = 1 Цикл
                Т.НоваяСтрока();
                Т.Код = Ит.Субконто().Код;
                Т.Наименование = Ит.Субконто().Наименование;
                Т.Группа = Ит.Субконто().Группа;
                Т.Подразделение = Ит.Субконто().Подразделение.Получить(Дата1);
                Т.ДатаВ = Ит.Субконто().ДатаВводаВЭксплуатацию;
                Т.МОЛ = Ит.Субконто().МОЛ.Получить(Дата1);
                Т.ПСт = Ит.Субконто().ПервоначальнаяСтоимость.Получить(Дата1);
                Т.Срок = Ит.Субконто().СрокПолезногоИспользования.Получить(Дата1);
               
                Т.Ст = 0;
                Т.Аморт = 0;
                Если Ит.ПолучитьСчет(1,"01.1") = 1 Тогда
                        Т.Ст = Ит.СКД();
                КонецЕсли;
                Если Ит.ПолучитьСчет(1,"02.1") = 1 Тогда
                        Т.Аморт = Ит.СКК();
                КонецЕсли;
               
                Т.Ост = Т.Ст - Т.Аморт;
               
                Если ПустоеЗначение(Ит.Субконто().СчетЗатрат.Получить(Дата1)) = 1 Тогда
                        Т.Счет = "---";
                Иначе     
                        Т.Счет = Ит.Субконто().СчетЗатрат.Получить(Дата1);
                КонецЕсли;
               
                Если (Т.Счет = СчетПоКоду("20")) или (Т.Счет = СчетПоКоду("25")) Тогда
                        Т.Суб1 = Ит.Субконто().Субконто1.Получить(Дата1);
                        Т.Суб2 = Ит.Субконто().Субконто2.Получить(Дата1);
                        Т.Суб3 = Ит.Субконто().Субконто3.Получить(Дата1);
                ИначеЕсли  Т.Счет = СчетПоКоду("23") Тогда
                        Т.Суб1 = Ит.Субконто().Субконто2.Получить(Дата1);
                        Т.Суб2 = Ит.Субконто().Субконто1.Получить(Дата1);
                        Т.Суб3 = Ит.Субконто().Субконто3.Получить(Дата1);
                ИначеЕсли  Т.Счет = СчетПоКоду("26") Тогда
                        Т.Суб1 = "---";
                        Т.Суб2 = Ит.Субконто().Субконто2.Получить(Дата1);
                        Т.Суб3 = Ит.Субконто().Субконто1.Получить(Дата1);
                ИначеЕсли  Т.Счет = СчетПоКоду("79.2") Тогда
                        Т.Суб1 = "---";
                        Т.Суб2 = "---";
                        Т.Суб3 = Ит.Субконто().Субконто1.Получить(Дата1);
                Иначе
                        Т.Суб1 = "---";
                        Т.Суб2 = "---";
                        Т.Суб3 = "---";
                КонецЕсли;
               
                Т.АмГр = Ит.Субконто().АмортизационнаяГруппа;
                Т.Сост = Ит.Субконто().Состояние.Получить(Дата1);
               
        КонецЦикла;
       
       
        Т.ВыбратьСтроки();
        Пока Т.ПолучитьСтроку() = 1 Цикл
                Таб.ВывестиСекцию("Строка");
        КонецЦикла;
       
        Таб.ВывестиСекцию("Итого");
        Таб.ТолькоПросмотр(1);
        Таб.Опции(0,0,4,2);
        Таб.Показать("Все реквизиты ОС");
КонецПроцедуры
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 22-04-2013 08:26 » new

Ты пропустил в предыдущей цитате саму важную строку:
Код: (1C v8)
Ит.ВыполнитьЗапрос(Дата1,Дата1,"01.1,02.1")
Именно здесь и задаются границы выборки.
А значения получаются следующими функциями:
На конец заданного периода: СКД()/СКК()
На начало заданного периода: СНД()/СНК()
Обороты за период: ДО()/КО()

Про все функции (включая ВыполнитьЗапрос) читать внимательно синтакс-помощник Ага
Записан
Clight
Интересующийся

ru
Offline Offline

« Ответ #6 : 22-04-2013 21:24 » 

Ты пропустил в предыдущей цитате саму важную строку:
Код: (1C v8)
Ит.ВыполнитьЗапрос(Дата1,Дата1,"01.1,02.1")
Именно здесь и задаются границы выборки.
А значения получаются следующими функциями:
На конец заданного периода: СКД()/СКК()
На начало заданного периода: СНД()/СНК()
Обороты за период: ДО()/КО()

Про все функции (включая ВыполнитьЗапрос) читать внимательно синтакс-помощник Ага
Опыта работы с запросами(по крайней мере в семерке) у меня нет. Пытаюсь писать по аналогии с тем, что есть. Свою логику писать пока не умею. Мне посоветовали создать периодический объект и работать с ним. Дали в пример кусок кода с реализацией "подразделения", по аналогии с ним написал и для всех субконто. Вот что получилось:
Код: (1C v8)
Процедура Сформировать()  
   
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Таблица");
    Таб.ВывестиСекцию("Шапка");
   
    Ит = СоздатьОбъект("БухгалтерскиеИтоги");
    Ит.ИспользоватьСубконто(ВидыСубконто.ОсновныеСредства);
   
    Пер = СоздатьОбъект("Периодический");
   
   
    //Если Дата(Дата1) > КонецРассчитанногоПериодаБИ() Тогда
    //    Предупреждение("За данный период бухгалтерские итоги не рассчитаны!");
    //    Возврат;
    //КонецЕсли;
   
    Если Ит.ВыполнитьЗапрос(Дата1,Дата2,"01.1,02.1") = 0 Тогда  
        Предупреждение("Не удается выполнить запрос к бухгалтерским итогам!");
        Возврат;
    КонецЕсли;
   
    Т = СоздатьОбъект("ТаблицаЗначений");
    Т.НоваяКолонка("Код");
    Т.НоваяКолонка("Наименование");
    Т.НоваяКолонка("Группа");
    Т.НоваяКолонка("Подразделение");
    Т.НоваяКолонка("ДатаВ");
    Т.НоваяКолонка("МОЛ");
    Т.НоваяКолонка("ПСт");
    Т.НоваяКолонка("Срок");
    Т.НоваяКолонка("Ст");
    Т.НоваяКолонка("Аморт");
    Т.НоваяКолонка("Ост");
    Т.НоваяКолонка("Счет");
    Т.НоваяКолонка("Суб1");
    Т.НоваяКолонка("Суб2");
    Т.НоваяКолонка("Суб3");
    Т.НоваяКолонка("АмГр");
    Т.НоваяКолонка("Сост");
   
   
    Ит.ВыбратьСубконто(ВидыСубконто.ОсновныеСредства);
    Пока Ит.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = 1 Цикл
   
        //Т.НоваяСтрока();
        //ОС = Ит.Субконто();
        //Т.Код = ОС.Код;
        //Т.Наименование = ОС.Наименование;
        //Т.Группа = ОС.Группа;
        //
    //    Т.Подразделение = Ит.Субконто().Подразделение.Получить(Дата1);
    //    Т.ДатаВ = Ит.Субконто().ДатаВводаВЭксплуатацию;
    //    Т.МОЛ = Ит.Субконто().МОЛ.Получить(Дата1);
    //    Т.ПСт = Ит.Субконто().ПервоначальнаяСтоимость.Получить(Дата1);
    //    Т.Срок = Ит.Субконто().СрокПолезногоИспользования.Получить(Дата1);
    //    
        //Т.Ст = 0;
        //Т.Аморт = 0;
        //Если Ит.ПолучитьСчет(1,"01.1") = 1 Тогда
        //    Т.Ст = Ит.СКД();
        //КонецЕсли;
        //Если Ит.ПолучитьСчет(1,"02.1") = 1 Тогда
        //    Т.Аморт = Ит.СКК();
        //КонецЕсли;
        //
        //Т.Ост = Т.Ст - Т.Аморт;
    //    
    //    Если ПустоеЗначение(Ит.Субконто().СчетЗатрат.Получить(Дата1)) = 1 Тогда
    //        Т.Счет = "---";
    //    Иначе    
    //        Т.Счет = Ит.Субконто().СчетЗатрат.Получить(Дата1);
    //    КонецЕсли;
    //    
        //Если (Т.Счет = СчетПоКоду("20")) или (Т.Счет = СчетПоКоду("25")) Тогда
        //    Т.Суб1 = Ит.Субконто().Субконто1.Получить(Дата1);
        //    Т.Суб2 = Ит.Субконто().Субконто2.Получить(Дата1);
        //    Т.Суб3 = Ит.Субконто().Субконто3.Получить(Дата1);
        //ИначеЕсли  Т.Счет = СчетПоКоду("23") Тогда
        //    Т.Суб1 = Ит.Субконто().Субконто2.Получить(Дата1);
        //    Т.Суб2 = Ит.Субконто().Субконто1.Получить(Дата1);
        //    Т.Суб3 = Ит.Субконто().Субконто3.Получить(Дата1);
        //ИначеЕсли  Т.Счет = СчетПоКоду("26") Тогда
        //    Т.Суб1 = "---";
        //    Т.Суб2 = Ит.Субконто().Субконто2.Получить(Дата1);
        //    Т.Суб3 = Ит.Субконто().Субконто1.Получить(Дата1);
        //ИначеЕсли  Т.Счет = СчетПоКоду("79.2") Тогда
        //    Т.Суб1 = "---";
        //    Т.Суб2 = "---";
        //    Т.Суб3 = Ит.Субконто().Субконто1.Получить(Дата1);
        //Иначе
        //    Т.Суб1 = "---";
        //    Т.Суб2 = "---";
        //    Т.Суб3 = "---";
        //КонецЕсли;
        //
        //Т.АмГр = Ит.Субконто().АмортизационнаяГруппа;
        //Т.Сост = Ит.Субконто().Состояние.Получить(Дата1);
       
       
        Т.НоваяСтрока();
        ОС = Ит.Субконто();
        Т.Код = ОС.Код;
        Т.Наименование = ОС.Наименование;
        Т.Группа = ОС.Группа;
   
     Пер.ИспользоватьОбъект("Подразделение", ОС);
     Пер.ВыбратьЗначения(Дата1,Дата2);
       Пока Пер.ПолучитьЗначение() = 1 Цикл
    ДатаЗн = Пер.ДатаЗнач;
    Т.Подразделение = Пер.Значение;
       КонецЦикла;
                   
   
    Т.ДатаВ = ОС.ДатаВводаВЭксплуатацию;
   
    Пер.ИспользоватьОбъект("МОЛ", ОС);
     Пер.ВыбратьЗначения(Дата1,Дата2);
       Пока Пер.ПолучитьЗначение() = 1 Цикл
    ДатаЗн = Пер.ДатаЗнач;
    Т.МОЛ = Пер.Значение;
       КонецЦикла;
       
       
    Пер.ИспользоватьОбъект("ПервоначальнаяСтоимость", ОС);
     Пер.ВыбратьЗначения(Дата1,Дата2);
       Пока Пер.ПолучитьЗначение() = 1 Цикл
    ДатаЗн = Пер.ДатаЗнач;
    Т.ПСт = Пер.Значение;
       КонецЦикла;


    Пер.ИспользоватьОбъект("СрокПолезногоИспользования", ОС);
     Пер.ВыбратьЗначения(Дата1,Дата2);
       Пока Пер.ПолучитьЗначение() = 1 Цикл
    ДатаЗн = Пер.ДатаЗнач;
    Т.Срок = Пер.Значение;
       КонецЦикла;


        Т.Ст = 0;
        Т.Аморт = 0;
        Если Ит.ПолучитьСчет(1,"01.1") = 1 Тогда
            Т.Ст = Ит.СКД();
        КонецЕсли;
        Если Ит.ПолучитьСчет(1,"02.1") = 1 Тогда
            Т.Аморт = Ит.СКК();
        КонецЕсли;
       
        Т.Ост = Т.Ст - Т.Аморт;

   
       
    Пер.ИспользоватьОбъект("СчетЗатрат", ОС);
     Пер.ВыбратьЗначения(Дата1,Дата2);
       Пока Пер.ПолучитьЗначение() = 1 Цикл
    ДатаЗн = Пер.ДатаЗнач;
    Т.Счет = Пер.Значение;
    Если ПустоеЗначение(Пер.Значение) = 1 Тогда
    Т.Счет = "---";
       Иначе
         Т.Счет = Пер.Значение;
    КонецЕсли

       КонецЦикла;  
       
       
       
    Пер.ИспользоватьОбъект("Субконто1", ОС);
    Пер.ИспользоватьОбъект("Субконто2", ОС);
    Пер.ИспользоватьОбъект("Субконто3", ОС);
     Пер.ВыбратьЗначения(Дата1,Дата2);
       Пока Пер.ПолучитьЗначение() = 1 Цикл
    ДатаЗн = Пер.ДатаЗнач;
    Т.Суб1 = Пер.Значение;
    Т.Суб2 = Пер.Значение;
    Т.Суб3 = Пер.Значение;
    Если (Т.Счет = СчетПоКоду("20")) или (Т.Счет = СчетПоКоду("25")) Тогда
          Т.Суб1 = Ит.Субконто().Субконто1.Получить(Дата1);
            Т.Суб2 = Пер.Значение;;
            Т.Суб3 = Пер.Значение;;
        ИначеЕсли  Т.Счет = СчетПоКоду("23") Тогда
            Т.Суб1 = Пер.Значение;;
            Т.Суб2 = Пер.Значение;;
            Т.Суб3 = Пер.Значение;;
        ИначеЕсли  Т.Счет = СчетПоКоду("26") Тогда
            Т.Суб1 = "---";
            Т.Суб2 = Пер.Значение;;
            Т.Суб3 = Пер.Значение;;
        ИначеЕсли  Т.Счет = СчетПоКоду("79.2") Тогда
            Т.Суб1 = "---";
            Т.Суб2 = "---";
            Т.Суб3 = Пер.Значение;;
        Иначе
            Т.Суб1 = "---";
            Т.Суб2 = "---";
            Т.Суб3 = "---";
        КонецЕсли;
       КонецЦикла;  
       
    Т.АмГр = ОС.АмортизационнаяГруппа;
   
    Пер.ИспользоватьОбъект("Состояние", ОС);
     Пер.ВыбратьЗначения(Дата1,Дата2);
       Пока Пер.ПолучитьЗначение() = 1 Цикл
    ДатаЗн = Пер.ДатаЗнач;
    Т.Сост = Пер.Значение;
       КонецЦикла;
       
    КонецЦикла;
   
   
    Т.ВыбратьСтроки();
    Пока Т.ПолучитьСтроку() = 1 Цикл
        Таб.ВывестиСекцию("Строка");
    КонецЦикла;
   
    Таб.ВывестиСекцию("Итого");
    Таб.ТолькоПросмотр(1);
    Таб.Опции(0,0,4,2);
    Таб.Показать("Все реквизиты ОС");
КонецПроцедуры


Процедура ПриОткрытии()
    Дата1 = '01.01.13';
    Дата2 = '01.04.13';
КонецПроцедуры
Однако, отчёт фиговый получается, так как в строку записывается только последнее значение цикла, а нужно все значения за период. Пока на этом застопорился.
Записан
Clight
Интересующийся

ru
Offline Offline

« Ответ #7 : 22-04-2013 21:26 » 

Вот, мне здесь ещё помогают - http://*****.ru/index.php?topic=28239 Там я выложил скрины таблицы и саму обработку.
« Последнее редактирование: 23-04-2013 08:39 от Kivals » Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #8 : 23-04-2013 08:45 » 

Ссылки на другие форумы здесь не нужны: кому понадобится - найдет поиском, благо гугл работает.
Если хочешь чтобы помогли здесь - размещай здесь информацию, прислушивайся к советам и пробуй их применять - решать задачу за тебя никто не будет.

Я не вижу что ты разобрался с тем, что я рекомендовал почитать.
А также (с твоей ссылки) понял что тебе там дают советы на другую тему, т.е. либо я, либо там (а может и в обоих местах) задачу поняли неверно. Так что размести, пожалуйста, скриншоты таблиц "что было" (до твоих изменений) и "что ты хочешь получить" (нарисуй в Excel)
Записан
Clight
Интересующийся

ru
Offline Offline

« Ответ #9 : 24-04-2013 06:13 » 

А что делать, если я не понимаю и у меня нет опыта программирования? Мне совсем не достаточно, просто почитать синтаксис и всё понять в одну минуту. Синкаксис для меня как набор японских иероглифов. Когда мне показывают пример - я начинаю догонять, что хотели мне сказать, а просто на словах - так всё и остаётся. Не зря говорят, что программированию лучше учиться на примерах, причём лёгких вначале.
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #10 : 24-04-2013 08:50 » 

Вариант 1 (если хочешь научиться программированию):
Читать, пробовать, показывать получившийся код и после попытки уточнять в чем же ошибка (что не получается). Да, только лишь почитать, чтобы понять часто не достаточно; а вот попробовать применить полученные от чтения знания - это и есть обучение. А описанная тобой методика "напишите, а я подправлю под себя (не разбираясь в деталях)" - это не обучение на примерах. ИМХО программированию нужно учиться с алгоритмов.

Вариант 2 (если не хочешь учиться):
Найти кого-то, что сделает (возможно - не бесплатно). Этот вариант - не сюда

Добавлено через 5 часов, 53 минуты и 2 секунды:
P.S. Кстати в синтакс-помощнике в конце описание часто приводится типовой пример использования - он более полезен, т.к. показывает зачем конкрентно нужен метод/реквизит.
« Последнее редактирование: 24-04-2013 14:43 от Kivals » Записан
Clight
Интересующийся

ru
Offline Offline

« Ответ #11 : 29-04-2013 05:58 » 

Вот последний код, который у меня написан:
Код: (1C v8)
Процедура Сформировать()  
       
        Таб = СоздатьОбъект("Таблица");
        Таб.ИсходнаяТаблица("Таблица");
        Таб.ВывестиСекцию("Шапка");
       
        Ит = СоздатьОбъект("БухгалтерскиеИтоги");
        Ит.ИспользоватьСубконто(ВидыСубконто.ОсновныеСредства);
       
        Пер = СоздатьОбъект("Периодический");
       
       
        //Если Дата(Дата1) > КонецРассчитанногоПериодаБИ() Тогда
        //      Предупреждение("За данный период бухгалтерские итоги не рассчитаны!");
        //      Возврат;
        //КонецЕсли;
       
        Если Ит.ВыполнитьЗапрос(Дата1,Дата2,"01.1,02.1") = 0 Тогда  
                Предупреждение("Не удается выполнить запрос к бухгалтерским итогам!");
                Возврат;
        КонецЕсли;
       
        Т = СоздатьОбъект("ТаблицаЗначений");
        Т.НоваяКолонка("Код");
        Т.НоваяКолонка("Наименование");
        Т.НоваяКолонка("Группа");
        Т.НоваяКолонка("Подразделение");
        Т.НоваяКолонка("ДатаВ");
        Т.НоваяКолонка("МОЛ");
        Т.НоваяКолонка("ПСт");
        Т.НоваяКолонка("Срок");
        Т.НоваяКолонка("Ст");
        Т.НоваяКолонка("Аморт");
        Т.НоваяКолонка("Ост");
        Т.НоваяКолонка("Счет");
        Т.НоваяКолонка("Суб1");
        Т.НоваяКолонка("Суб2");
        Т.НоваяКолонка("Суб3");
        Т.НоваяКолонка("АмГр");
        Т.НоваяКолонка("Сост");
       
       
        Ит.ВыбратьСубконто(ВидыСубконто.ОсновныеСредства);
        Пока Ит.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = 1 Цикл
   
                //Т.НоваяСтрока();
                //ОС = Ит.Субконто();
                //Т.Код = ОС.Код;
                //Т.Наименование = ОС.Наименование;
                //Т.Группа = ОС.Группа;
                //
        //      Т.Подразделение = Ит.Субконто().Подразделение.Получить(Дата1);
        //      Т.ДатаВ = Ит.Субконто().ДатаВводаВЭксплуатацию;
        //      Т.МОЛ = Ит.Субконто().МОЛ.Получить(Дата1);
        //      Т.ПСт = Ит.Субконто().ПервоначальнаяСтоимость.Получить(Дата1);
        //      Т.Срок = Ит.Субконто().СрокПолезногоИспользования.Получить(Дата1);
        //     
                //Т.Ст = 0;
                //Т.Аморт = 0;
                //Если Ит.ПолучитьСчет(1,"01.1") = 1 Тогда
                //      Т.Ст = Ит.СКД();
                //КонецЕсли;
                //Если Ит.ПолучитьСчет(1,"02.1") = 1 Тогда
                //      Т.Аморт = Ит.СКК();
                //КонецЕсли;
                //
                //Т.Ост = Т.Ст - Т.Аморт;
        //     
        //      Если ПустоеЗначение(Ит.Субконто().СчетЗатрат.Получить(Дата1)) = 1 Тогда
        //              Т.Счет = "---";
        //      Иначе     
        //              Т.Счет = Ит.Субконто().СчетЗатрат.Получить(Дата1);
        //      КонецЕсли;
        //     
                //Если (Т.Счет = СчетПоКоду("20")) или (Т.Счет = СчетПоКоду("25")) Тогда
                //      Т.Суб1 = Ит.Субконто().Субконто1.Получить(Дата1);
                //      Т.Суб2 = Ит.Субконто().Субконто2.Получить(Дата1);
                //      Т.Суб3 = Ит.Субконто().Субконто3.Получить(Дата1);
                //ИначеЕсли  Т.Счет = СчетПоКоду("23") Тогда
                //      Т.Суб1 = Ит.Субконто().Субконто2.Получить(Дата1);
                //      Т.Суб2 = Ит.Субконто().Субконто1.Получить(Дата1);
                //      Т.Суб3 = Ит.Субконто().Субконто3.Получить(Дата1);
                //ИначеЕсли  Т.Счет = СчетПоКоду("26") Тогда
                //      Т.Суб1 = "---";
                //      Т.Суб2 = Ит.Субконто().Субконто2.Получить(Дата1);
                //      Т.Суб3 = Ит.Субконто().Субконто1.Получить(Дата1);
                //ИначеЕсли  Т.Счет = СчетПоКоду("79.2") Тогда
                //      Т.Суб1 = "---";
                //      Т.Суб2 = "---";
                //      Т.Суб3 = Ит.Субконто().Субконто1.Получить(Дата1);
                //Иначе
                //      Т.Суб1 = "---";
                //      Т.Суб2 = "---";
                //      Т.Суб3 = "---";
                //КонецЕсли;
                //
                //Т.АмГр = Ит.Субконто().АмортизационнаяГруппа;
                //Т.Сост = Ит.Субконто().Состояние.Получить(Дата1);
               
               
                Т.НоваяСтрока();
                ОС = Ит.Субконто();
                Т.Код = ОС.Код;
                Т.Наименование = ОС.Наименование;
                Т.Группа = ОС.Группа;
       
         Пер.ИспользоватьОбъект("Подразделение", ОС);
     Пер.ВыбратьЗначения(Дата1,Дата2);
       Пока Пер.ПолучитьЗначение() = 1 Цикл
    ДатаЗн = Пер.ДатаЗнач;
    Т.Подразделение = Пер.Значение;
        Т.ВыбратьСтроки();
Если Т.ПолучитьСтроку() = 1 Тогда
        Таб.ВывестиСекцию("Строка")
КонецЕсли;
       КонецЦикла;
                       
       
        Т.ДатаВ = ОС.ДатаВводаВЭксплуатацию;
       
        Пер.ИспользоватьОбъект("МОЛ", ОС);
     Пер.ВыбратьЗначения(Дата1,Дата2);
       Пока Пер.ПолучитьЗначение() = 1 Цикл
    ДатаЗн = Пер.ДатаЗнач;
    Т.МОЛ = Пер.Значение;
        Т.ВыбратьСтроки();
Если Т.ПолучитьСтроку() = 1 Тогда
        Таб.ВывестиСекцию("Строка")
КонецЕсли;
        //Т.ПолучитьСтроку();
        //Таб.ВывестиСекцию("Строка")
       КонецЦикла;
           
           
        Пер.ИспользоватьОбъект("ПервоначальнаяСтоимость", ОС);
     Пер.ВыбратьЗначения(Дата1,Дата2);
       Пока Пер.ПолучитьЗначение() = 1 Цикл
    ДатаЗн = Пер.ДатаЗнач;
    Т.ПСт = Пер.Значение;
        Т.ВыбратьСтроки();
Если Т.ПолучитьСтроку() = 1 Тогда
        Таб.ВывестиСекцию("Строка")
КонецЕсли;
        //Т.ПолучитьСтроку();
        //Таб.ВывестиСекцию("Строка")
       КонецЦикла;


    Пер.ИспользоватьОбъект("СрокПолезногоИспользования", ОС);
     Пер.ВыбратьЗначения(Дата1,Дата2);
       Пока Пер.ПолучитьЗначение() = 1 Цикл
    ДатаЗн = Пер.ДатаЗнач;
    Т.Срок = Пер.Значение;
        Т.ВыбратьСтроки();
Если Т.ПолучитьСтроку() = 1 Тогда
        Таб.ВывестиСекцию("Строка")
КонецЕсли;
        //Т.ПолучитьСтроку();
        //Таб.ВывестиСекцию("Строка")
       КонецЦикла;


        Т.Ст = 0;
        Т.Аморт = 0;
                Если Ит.ПолучитьСчет(1,"01.1") = 1 Тогда
                        Т.Ст = Ит.СКД();
                КонецЕсли;
                Если Ит.ПолучитьСчет(1,"02.1") = 1 Тогда
                        Т.Аморт = Ит.СКК();
                КонецЕсли;
               
                Т.Ост = Т.Ст - Т.Аморт;

   
           
        Пер.ИспользоватьОбъект("СчетЗатрат", ОС);
     Пер.ВыбратьЗначения(Дата1,Дата2);
       Пока Пер.ПолучитьЗначение() = 1 Цикл
    ДатаЗн = Пер.ДатаЗнач;
        Т.Счет = Пер.Значение;
        Если ПустоеЗначение(Пер.Значение) = 1 Тогда
        Т.Счет = "---";
       Иначе
             Т.Счет = Пер.Значение;
    КонецЕсли;
Т.ВыбратьСтроки();
Если Т.ПолучитьСтроку() = 1 Тогда
        Таб.ВывестиСекцию("Строка")
КонецЕсли;
    //Т.ПолучитьСтроку();
        //Таб.ВывестиСекцию("Строка")
       КонецЦикла;  
           
           
           
        Пер.ИспользоватьОбъект("Субконто1", ОС);
        Пер.ИспользоватьОбъект("Субконто2", ОС);
        Пер.ИспользоватьОбъект("Субконто3", ОС);
     Пер.ВыбратьЗначения(Дата1,Дата2);
       Пока Пер.ПолучитьЗначение() = 1 Цикл
    ДатаЗн = Пер.ДатаЗнач;
        Т.Суб1 = Пер.Значение;
        Т.Суб2 = Пер.Значение;
        Т.Суб3 = Пер.Значение;
        Если (Т.Счет = СчетПоКоду("20")) или (Т.Счет = СчетПоКоду("25")) Тогда
                  Т.Суб1 = Ит.Субконто().Субконто1.Получить(Дата1);
                        Т.Суб2 = Пер.Значение;;
                        Т.Суб3 = Пер.Значение;;
                ИначеЕсли  Т.Счет = СчетПоКоду("23") Тогда
                        Т.Суб1 = Пер.Значение;;
                        Т.Суб2 = Пер.Значение;;
                        Т.Суб3 = Пер.Значение;;
                ИначеЕсли  Т.Счет = СчетПоКоду("26") Тогда
                        Т.Суб1 = "---";
                        Т.Суб2 = Пер.Значение;;
                        Т.Суб3 = Пер.Значение;;
                ИначеЕсли  Т.Счет = СчетПоКоду("79.2") Тогда
                        Т.Суб1 = "---";
                        Т.Суб2 = "---";
                        Т.Суб3 = Пер.Значение;;
                Иначе
                        Т.Суб1 = "---";
                        Т.Суб2 = "---";
                        Т.Суб3 = "---";
                КонецЕсли;
                Т.ВыбратьСтроки();
Если Т.ПолучитьСтроку() = 1 Тогда
        Таб.ВывестиСекцию("Строка")
КонецЕсли;
        //Т.ПолучитьСтроку();
        //Таб.ВывестиСекцию("Строка")
       КонецЦикла;  
           
        Т.АмГр = ОС.АмортизационнаяГруппа;
       
        Пер.ИспользоватьОбъект("Состояние", ОС);
     Пер.ВыбратьЗначения(Дата1,Дата2);
       Пока Пер.ПолучитьЗначение() = 1 Цикл
    ДатаЗн = Пер.ДатаЗнач;
    Т.Сост = Пер.Значение;
        Т.ВыбратьСтроки();
Если Т.ПолучитьСтроку() = 1 Тогда
        Таб.ВывестиСекцию("Строка")
КонецЕсли;
        //Т.ПолучитьСтроку();
        //Таб.ВывестиСекцию("Строка")
       КонецЦикла;
               
        КонецЦикла;
       
       
        //Т.ВыбратьСтроки();
        //Пока Т.ПолучитьСтроку() = 1 Цикл
        //      Таб.ВывестиСекцию("Строка");
        //КонецЦикла;
       
        Таб.ВывестиСекцию("Итого");
        Таб.ТолькоПросмотр(1);
        Таб.Опции(0,0,4,2);
        Таб.Показать("Все реквизиты ОС");
КонецПроцедуры


Процедура ПриОткрытии()
        Дата1 = '01.01.13';
        Дата2 = '01.04.13';
КонецПроцедуры
Никак не могу понять, как правильно организовать вывод всех субконто. Для периодических субконто написал вроде правильно, а для первых трёх не знаю как написать:
Код: (1C v8)
Т.Код = ОС.Код;
Т.Наименование = ОС.Наименование;
Т.Группа = ОС.Группа;
Может быть их тоже как-то в цикл взять? По отдельности или вместе вывести. Вроде по отдельности надо, чтобы брало каждое субконто за период. Также прилагаю скрины таблицы на выходе и скрин таблицы в шаблоне. И саму обработку(на всякий случай).

* скр1.jpg (277.88 Кб - загружено 1098 раз.)
* скр2.jpg (257.7 Кб - загружено 1108 раз.)
* скр3.jpg (269.46 Кб - загружено 1061 раз.)
* скр.jpg (212.22 Кб - загружено 1100 раз.)
* Отчет по ОС все реквизиты.ert (45.5 Кб - загружено 1023 раз.)
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #12 : 29-04-2013 06:23 » 

Хорошо, что что-то пытаешься сделать, но плохо - что бездумно.

Итак вопрос, без которого дальше двигаться не имеет смысла:
где сравнение (2 таблицы в Excel) что было до тебя и что ты хочешь получить на выходе?
Записан
Clight
Интересующийся

ru
Offline Offline

« Ответ #13 : 29-04-2013 21:33 » 

Хорошо, что что-то пытаешься сделать, но плохо - что бездумно.

Итак вопрос, без которого дальше двигаться не имеет смысла:
где сравнение (2 таблицы в Excel) что было до тебя и что ты хочешь получить на выходе?
Дело в том, что не понятно, что в итоге получится. Должно формировать отчёт с ОС за конкретный период времени - это и должно получится. Я не очень понял, как можно сделать две таблицы в ексель, что было до меня и что должно быть? Я могу только скрины сделать того, что было до меня и что в итоге выводит через новый код(3 скрина в прошлом сообщении). Сейчас сделаю скрины, что выводило в старом коде.
Вот полностью сам старый код:
Код: (1C v8)
Процедура Сформировать()  
       
        Таб = СоздатьОбъект("Таблица");
        Таб.ИсходнаяТаблица("Таблица");
        Таб.ВывестиСекцию("Шапка");
       
        Ит = СоздатьОбъект("БухгалтерскиеИтоги");
        Ит.ИспользоватьСубконто(ВидыСубконто.ОсновныеСредства);
       
       
        Если Дата(Дата1) > КонецРассчитанногоПериодаБИ() Тогда
                Предупреждение("За данный период бухгалтерские итоги не рассчитаны!");
                Возврат;
        КонецЕсли;
       
        Если Ит.ВыполнитьЗапрос(Дата1,Дата1,"01.1,02.1") = 0 Тогда  
                Предупреждение("Не удается выполнить запрос к бухгалтерским итогам!");
                Возврат;
        КонецЕсли;
       
        Т = СоздатьОбъект("ТаблицаЗначений");
        Т.НоваяКолонка("Код");
        Т.НоваяКолонка("Наименование");
        Т.НоваяКолонка("Группа");
        Т.НоваяКолонка("Подразделение");
        Т.НоваяКолонка("ДатаВ");
        Т.НоваяКолонка("МОЛ");
        Т.НоваяКолонка("ПСт");
        Т.НоваяКолонка("Срок");
        Т.НоваяКолонка("Ст");
        Т.НоваяКолонка("Аморт");
        Т.НоваяКолонка("Ост");
        Т.НоваяКолонка("Счет");
        Т.НоваяКолонка("Суб1");
        Т.НоваяКолонка("Суб2");
        Т.НоваяКолонка("Суб3");
        Т.НоваяКолонка("АмГр");
        Т.НоваяКолонка("Сост");
       
       
        Ит.ВыбратьСубконто(ВидыСубконто.ОсновныеСредства);
        Пока Ит.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = 1 Цикл
                Т.НоваяСтрока();
                Т.Код = Ит.Субконто().Код;
                Т.Наименование = Ит.Субконто().Наименование;
                Т.Группа = Ит.Субконто().Группа;
                Т.Подразделение = Ит.Субконто().Подразделение.Получить(Дата1);
                Т.ДатаВ = Ит.Субконто().ДатаВводаВЭксплуатацию;
                Т.МОЛ = Ит.Субконто().МОЛ.Получить(Дата1);
                Т.ПСт = Ит.Субконто().ПервоначальнаяСтоимость.Получить(Дата1);
                Т.Срок = Ит.Субконто().СрокПолезногоИспользования.Получить(Дата1);
               
                Т.Ст = 0;
                Т.Аморт = 0;
                Если Ит.ПолучитьСчет(1,"01.1") = 1 Тогда
                        Т.Ст = Ит.СКД();
                КонецЕсли;
                Если Ит.ПолучитьСчет(1,"02.1") = 1 Тогда
                        Т.Аморт = Ит.СКК();
                КонецЕсли;
               
                Т.Ост = Т.Ст - Т.Аморт;
               
                Если ПустоеЗначение(Ит.Субконто().СчетЗатрат.Получить(Дата1)) = 1 Тогда
                        Т.Счет = "---";
                Иначе     
                        Т.Счет = Ит.Субконто().СчетЗатрат.Получить(Дата1);
                КонецЕсли;
               
                Если (Т.Счет = СчетПоКоду("20")) или (Т.Счет = СчетПоКоду("25")) Тогда
                        Т.Суб1 = Ит.Субконто().Субконто1.Получить(Дата1);
                        Т.Суб2 = Ит.Субконто().Субконто2.Получить(Дата1);
                        Т.Суб3 = Ит.Субконто().Субконто3.Получить(Дата1);
                ИначеЕсли  Т.Счет = СчетПоКоду("23") Тогда
                        Т.Суб1 = Ит.Субконто().Субконто2.Получить(Дата1);
                        Т.Суб2 = Ит.Субконто().Субконто1.Получить(Дата1);
                        Т.Суб3 = Ит.Субконто().Субконто3.Получить(Дата1);
                ИначеЕсли  Т.Счет = СчетПоКоду("26") Тогда
                        Т.Суб1 = "---";
                        Т.Суб2 = Ит.Субконто().Субконто2.Получить(Дата1);
                        Т.Суб3 = Ит.Субконто().Субконто1.Получить(Дата1);
                ИначеЕсли  Т.Счет = СчетПоКоду("79.2") Тогда
                        Т.Суб1 = "---";
                        Т.Суб2 = "---";
                        Т.Суб3 = Ит.Субконто().Субконто1.Получить(Дата1);
                Иначе
                        Т.Суб1 = "---";
                        Т.Суб2 = "---";
                        Т.Суб3 = "---";
                КонецЕсли;
               
                Т.АмГр = Ит.Субконто().АмортизационнаяГруппа;
                Т.Сост = Ит.Субконто().Состояние.Получить(Дата1);
               
        КонецЦикла;
       
       
        Т.ВыбратьСтроки();
        Пока Т.ПолучитьСтроку() = 1 Цикл
                Таб.ВывестиСекцию("Строка");
        КонецЦикла;
       
        Таб.ВывестиСекцию("Итого");
        Таб.ТолькоПросмотр(1);
        Таб.Опции(0,0,4,2);
        Таб.Показать("Все реквизиты ОС");
КонецПроцедуры


Процедура ПриОткрытии()
        Дата1 = КонМесяца(РабочаяДата());
КонецПроцедуры
На скринах это правильный результат и он всех устраивал. Только всё это показывается с начала ведения учёта до конкретной(задаваемой в форме) даты. А нужно только за конкретный период.

* скр1-ст.jpg (396.24 Кб - загружено 1108 раз.)
* скр2-ст.jpg (316.03 Кб - загружено 1144 раз.)
* скр3-ст.jpg (357.1 Кб - загружено 1131 раз.)
Записан
Radistka
Помогающий

ru
Offline Offline
Пол: Женский

« Ответ #14 : 30-04-2013 03:44 » 

Честно говоря не совсем понимаю, в чём вопрос, но давайте рассмотрим базовый пример из ЖК:

Код: (1C v8)
БИ=СоздатьОбъект(«БухгалтерскиеИтоги»);  //Создаем объект БухгалтерскиеИтоги
БИ.ИспользоватьСубконто(«Номенклатура»); //Задаём Субконто
БИ.ВыполнитьЗапрос(Дата1,Дата241.1»);    //Выполняем Запрос по итогам за период с Дата1 по Дата2
БИ.ВыбратьСчета();                                          //Указываем первую группировку
Пока БИ.ПолучитьСчет()=1 Цикл                      //Открываем цикл по этой группировке
     // выводим итоги по счету                        
     БИ.ВыбратьСубконто(1);                             //Указываем что вторая группировка будет по первому субконто счета
     Пока БИ.ПолучитьСубконто()=1 Цикл
           // выводим итоги по субконто
           Сообщить(«Остаток на начало по счету » + БИ.Счет.Код + « товара »
                          + БИ.Субконто(1)+Строка(БИ.СНД(3)) + «ед.»);
     КонецЦикла;
КонецЦикла;

Немного теории с Мисты(click to show)
В пункте меню «Управление бухгалтерскими итогами» в системе «1С:Предприятие» устанавливается последний рассчитанный период. В режиме работы с основными итогами осуществляется доступ только к итогам по рассчитанный месяц включительно.

Функции работы с итогами:

ПериодД(<ДатаНач>,<ДатаКон>)  – установка периода итогов
СНД(<Cчет>,<ТипСуммы>,<Валюта>,<Cубконто1>,…) – сальдо начальное дебетовое;
СНК() – сальдо начальное кредитовое;
СКД() – сальдо конечное дебетовое;
СКК() – сальдо конечное кредитовое;
ДО() – дебетовый оборот по счету за период;
КО() – кредитовый оборот по счету за период;

Параметры: <Cчет> – счет, <ТипСуммы> = 1 – сумма, 2 – валютная сумма, 3 – количество, <Валюта> – значение типа “Справочник.Валюты”,  <Субконто1> – значение первого субконто счета, <Субконто2> – значение второго субконто счета и т.д.

ОБ(<СчетДеб>,<СчетКред>,<ТипСуммы>,<Валюта>) – обороты между счетами;

Для получения остатков и оборотов по счетам, имеющим субсчета, используются аналогичные функции: СНДР(), СКДР(), СКДР(), СККР().

Выполнение запроса:

Перед выполнением запроса устанавливаются различные фильтры:

ВключатьСубсчета() – устанавливать режим отбора по субсчетам.
ИспользоватьСубконто(<ВидСубконто>,<Значение>,<ТипФильтра>,<ПоГруппам>) – устанавливать режим отбора итогов в разрезе субконто. Параметр <ВидСубконто> задается выражением типа “ВидСубконто” или строкой, содержащей имя идентификатора вида субконто. Параметр <Значение> задает конкретное значение субконто. Если <ТипФильтра>=1, тогда итоги будут разворачиваться по этому виду субконто. Если <ТипФильтра>=2, тогда итоги будут отбираться по значению субконто. Если <ТипФильтра>=3, тогда это субконто вообще не будет учитываться. Функцию ИспользоватьСубконто() можно выполнять несколько раз для задания в запросе нескольких видов субконто. Обращение к субконто производится по порядковому номеру (порядок определяется последовательностью команд «ИспользоватьСубконто()»).
ИспользоватьКорСубконто(<ВидСубконто>,<Значение>,<ТипФильтра>,<ПоГруппам>) – устанавливать режим отбора итогов по корреспондирующим счетам  в разрезе субконто.

Затем  выполняется сам запрос функцией ВыполнитьЗапрос( <ДатаНач>,<ДатаКон>,<ФильтрПоСчетам>,<ФильтрПоКорСчетам>, <Валюта>,<ТипИтогов>,<Периодичность>,<ТипСуммы>), которая возвращает 1, если запрос выполнился успешно.

Параметр <ТипИтогов> принимает следующие значения: 1 – остатки и обороты по счетам, 2 – обороты между счетами, 3 – и то и другое.

Параметр <Периодичность> может принимать следующие значения:

1 («Период») – промежуточные итоги не рассчитываются;

2 («Операция») – промежуточные итоги рассчитываются по операциям;

3 («Проводка») – по проводкам;

4 («День») – по дням;

5 («Неделя») – по неделям;

6 («Декада») – по декадам;

7 («Месяц») – по месяцам;

8 («Квартал») – по кварталам;

9 («Год») – по годам;

 Обращение к результатам запроса

Для перебора группировок используются следующие функции:

ВыбратьСчета(), ПолучитьСчет();
ВыбратьКорСчета(), ПолучитьКорСчет();
ВыбратьВалюты(), ПолучитьВалюту();
ВыбратьПериоды(), ПолучитьПериод();
ВыбратьСубконто(), ПолучитьСубконто();
ВыбратьКорСубконто(), ПолучитьКорСубконто();

Функции получения остатков и оборотов такие же, как и при работе с основными итогами.
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #15 : 30-04-2013 07:48 » 

Radistka, вот и я не совсем понимаю в чем вопрос, потому и прошу результат, что должно быть.

Clight,
Что значит "за конкретный период" ? Введенные в этом периоде (только те, что позже даты начала или те, что не списались до даты начала)? движения за этот период? или еще что-то, что я не знаю?

Как сохранить: В результате отчета: Файл - Сохранить как - Таблица Excel (*.xls)

* sc-20130430104705.png (89.67 Кб - загружено 5520 раз.)
Записан
Radistka
Помогающий

ru
Offline Offline
Пол: Женский

« Ответ #16 : 30-04-2013 08:25 » 

Clight,
Что значит "за конкретный период" ? Введенные в этом периоде (только те, что позже даты начала или те, что не списались до даты начала)? движения за этот период? или еще что-то, что я не знаю?

а, ну тут могу попробовать проявить зачатки телепатии:
необходимо выбрать основные средства по которым были движения за указанный период. (так написано было в первом сообщении)

по сути необходимо взять ДО и КО, объединить и свернуть по Основному средству. а потом уже вывести полученную таблицу в отчет.

мне непонятно вот что:
  • вам точно нет необходимости в данном отчёте в тех Основных средствах, которые были приняты к учёту на дату начала периода и по которым за период не было движений?
  • есть ли необходимость в отчёте видеть те Основные средства, которые были выведены из эксплуатации на конец указанного периода?

Kivals, у меня 7.7 сейчас нет под рукой, а пользовалась давно последний раз, у ДО и КО можно группировку по субконто использовать?
« Последнее редактирование: 30-04-2013 08:33 от Radistka » Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #17 : 30-04-2013 08:47 » 

Radistka, телепатия - это хорошо Ага Но мне, например, не понятно, что считать "движимыми ОС": у которых менялись реквизиты (а именно чтение истории периодических реквизитов предлагали автору на другом форуме, упомянутом в посте #7) или по которым были движения по счетам (именно этот вариант и я предлагал, и ты).
Да и автору будет полезно научиться формулировать задачу: правильно сформулированный вопрос - минимум 50% ответа.

Что касается ДО/КО: то это методы, применимые к группировке БИ:
Код: (1C v8)
БИ.ВыбратьСубконто();
Пока БИ.ПолучитьСубконто() = 1 Цикл
    Об = БИ.ДО() - БИ.КО(); // Обороты по субконто в целом
    БИ.ВыбратьСчета();
    Пока БИ.ПолучитьСчет() = 1 Цикл
        Об = БИ.ДО() - БИ.КО(); // Обороты по конкретному счету субконто
        // Далее можно еще по валютам разворачивать ;)
Записан
Radistka
Помогающий

ru
Offline Offline
Пол: Женский

« Ответ #18 : 30-04-2013 09:11 » 

Что касается ДО/КО: то это методы, применимые к группировке БИ:
а, ок, а то меня Миста в заблуждение ввела. тогда всё норм )
не застала ссылку на другой форум, изменение периодических реквизитов это другая кухня, про неё я ничего вроде не вижу в коде, который выкладывал топикстартер.

UPD нашла тот форум, почитала.
« Последнее редактирование: 30-04-2013 09:20 от Radistka » Записан
Clight
Интересующийся

ru
Offline Offline

« Ответ #19 : 06-05-2013 00:09 » 

Извиняюсь, что ввёл в зублуждение. Движимое - имеется ввиду по реквизиту. То есть добавление реквизита в форму "добавление нового ОС". Это уже отдельно делается, и там надо таблицу видоизменять, а именно добавить ещё одно колонку "Движимое". Это вторая(и конечная задача), которую я смогу сам реализовать, если вы мне поможете реализовать правильный вывод субконто.
За конкретный период - это период с Дата1 по Дата2" включительно. За этот период должно выводиться список основных средств, которые были добавлены с помощью формы.
Radistka, у меня проблема с выводом данных. Я так понимаю, много методов, как можно получить эти субконто, но мне нужно, чтобы выводило в каждой секции. Или я чего то не понимаю. Я уже запутался, как это всё вместе связывается.
Вообще поставлена была такая задача: "Вывести ОС и только движимое(типа здания не включать) с 01.01.2013 по "любую дату"" или только с первой даты по текущюю. Я взяв за основу внешнюю обработку "ОС все реквизиты" пытаюсь её переделать. Прилагаю две таблицы екселя, одна из которых выводит данные на основе старого кода, вторая - что получается на новом коде.

* Старый_код.xls (529 Кб - загружено 971 раз.)
* Новый_код.xls (861.5 Кб - загружено 973 раз.)
Записан
Radistka
Помогающий

ru
Offline Offline
Пол: Женский

« Ответ #20 : 06-05-2013 05:13 » 

Извиняюсь, что ввёл в зублуждение. Движимое - имеется ввиду по реквизиту.
Реквизит это какой то показатель. например рост и цвет глаз. тот факт что звет глаз у тебя голубой - это значение реквизита. рост - это периодический рквизит, так как сейчас он у тебя 185, год назад 183 а 5 лет назад 180. если у твоего документа есть реквизиты "текущий склад", "новый склад" и "номенклатура", то ты можешь организовать движение этой номенклатуры между складами. при этом у тебя будет два субконто "склад" и "номенклатура". с одного склада ты вычтешь, на другой прибавишь.
что такое движение по реквизиту -  я хз.

За конкретный период - это период с Дата1 по Дата2" включительно. За этот период должно выводиться список основных средств, которые были добавлены с помощью формы.
какой ткой формы? основные средства можно купить, ввести в эксплуатацию, сменить материально ответственное лицо, вывести из эксплуатации и списать/продать. всё это движения. что из них тебе надо? основное средство за выбранный тобой период может не иметь движений, но быть введено в эксплуатацию. или просто его купили и бросили на склад, вводить в эксплуатацию не потребовалось.

Radistka, у меня проблема с выводом данных. Я так понимаю, много методов, как можно получить эти субконто, но мне нужно, чтобы выводило в каждой секции. Или я чего то не понимаю. Я уже запутался, как это всё вместе связывается.
методов не много. методов один- два. но что именно вы хотите получить? и что за секции вы имеете ввиду? вы разбирали те примеры  комментированного кода, которые сбрасывали вам в комментариях на этом форуме? пробовали писать? отладчиком умеете пользоваться? Создайте новый отчёт, введите туда код, попробуйте посмотреть, что там отбирается, заодно разберётесь что с чем и как связано.

Вообще поставлена была такая задача: "Вывести ОС и только движимое(типа здания не включать) с 01.01.2013 по "любую дату""
вот тут появляется ещё один вариант вашей задачи, третий уже: возможно вам необходимо по какому то реквизиту отобрать недвижимость от всех остальных основных средств и вывести спсиок основных средств с условием на группу. тогда вам необходимо разобраться где содержатся данные о группе основных средств и перед выводом строки проверять основное средство на условие.

Виды основных средств и расшифровка классификации
  • Здания (корпуса цехов, складские помещения, производственные лаборатории и т. п.);
  • Сооружения (инженерно-строительные объекты, создающие условия для осуществления процесса производства: эстакады, автомобильные дороги, туннели);
  • Внутрихозяйственные дороги;
  • Передаточные устройства (электросети, теплосети, газовые сети);
  • Машины и оборудование, в том числе:
    • Силовые машины и оборудование (генераторы, электродвигатели, паровые машины, турбины и т. п.).
    • Рабочие машины и оборудование (металлорежущие станки, прессы, электропечи и т. п.).
    • Измерительные и регулирующие приборы и устройства, лабораторное оборудование.
    • Вычислительная техника.
    • Автоматические машины, оборудование и линии (станки-автоматы, автоматические поточные линии).
    • Прочие машины и оборудование.

  • Транспортные средства (вагоны, автомобили, кары, тележки);
  • Инструмент (режущий, давящий, приспособления для крепления, монтажа), кроме специального инструмента;
  • Производственный инвентарь и принадлежности (стеллажи, рабочие столы и т. п.);
  • Хозяйственный инвентарь;
  • Рабочий, продуктивный и племенной скот;
  • Многолетние насаждения;
  • Прочие основные средства (сюда входят библиотечные фонды, музейные ценности).

 Классификация ОС http://mvf.klerk.ru/spr/spr74.htm
« Последнее редактирование: 06-05-2013 05:31 от Radistka » Записан
Clight
Интересующийся

ru
Offline Offline

« Ответ #21 : 06-05-2013 05:35 » 

Блин, опять неточно выразился >_< Реквизит "Движимое". Я его встроил в форму "Добавление нового ОС" с помощью которой ОС заноситься в базу. В этой форме можно помимо прочего, выбрать Движимое ОС или нет(значение булево). Обычно недвижимое - это здание, конечно же.
"но что именно вы хотите получить?" - мне нужен отчёт. На скринах вроде видно, что получается + ознакомься, пожалуйста, с таблицами, которые я прикрепил в прошлом сообщении, там как раз видно, что получается.
Записан
Radistka
Помогающий

ru
Offline Offline
Пол: Женский

« Ответ #22 : 06-05-2013 05:56 » 

Ещё раз повторю вопрос, который уже я раза три переформулировала и Kivals раз двадцать:
какие из основных средств за период тебе нужны?
Цитата
какой ткой формы? основные средства можно купить, ввести в эксплуатацию, сменить материально ответственное лицо, вывести из эксплуатации и списать/продать. всё это движения. что из них тебе надо? основное средство за выбранный тобой период может не иметь движений, но быть введено в эксплуатацию. или просто его купили и бросили на склад, вводить в эксплуатацию не потребовалось.

пример:

остатки ОС на 01.01.2001
ос3 в эксплуатации
ос4 в эксплуатации
ос5 в эксплуатации
ос6 в эксплуатации
ос7 на складе(не в эксплуатации!)
ос9 на складе(не в эксплуатации!)

с 01.01.2001 по 03.01.2001 были движения по ОС:

ОС1 - куплено.
ОС2 - Куплено
ОС3 - выведено из эксплуатации
ОС2 - введено в эксплуатацию
ос4 - выведено из эксплуатации
ос3 - продано
ос1 - списано(брак)
ос2 - смена МОЛ
ос2 - вывод из эксплуатации
ос5 смена МОЛ
ос2 возврат поставщику(брак)
ос6 выведено из эксплуатации
ос6 - списано(конец срока годности)
ос7 введено в эксплуатацию
ос8  куплено

вот какие из них должны быть в твоём отчёте, за период с 01.01.2001 по 03.01.2001, если все они не являются строениями/зданиями/землёй/заборами/т.д
Записан
Clight
Интересующийся

ru
Offline Offline

« Ответ #23 : 06-05-2013 06:01 » 

Ещё раз повторю вопрос, который уже я раза три переформулировала и Kivals раз двадцать:
какие из основных средств за период тебе нужны?
Цитата
какой ткой формы? основные средства можно купить, ввести в эксплуатацию, сменить материально ответственное лицо, вывести из эксплуатации и списать/продать. всё это движения. что из них тебе надо? основное средство за выбранный тобой период может не иметь движений, но быть введено в эксплуатацию. или просто его купили и бросили на склад, вводить в эксплуатацию не потребовалось.

пример:

остатки ОС на 01.01.2001
ос3 в эксплуатации
ос4 в эксплуатации
ос5 в эксплуатации
ос6 в эксплуатации
ос7 на складе(не в эксплуатации!)
ос9 на складе(не в эксплуатации!)

с 01.01.2001 по 03.01.2001 были движения по ОС:

ОС1 - куплено.
ОС2 - Куплено
ОС3 - выведено из эксплуатации
ОС2 - введено в эксплуатацию
ос4 - выведено из эксплуатации
ос3 - продано
ос1 - списано(брак)
ос2 - смена МОЛ
ос2 - вывод из эксплуатации
ос5 смена МОЛ
ос2 возврат поставщику(брак)
ос6 выведено из эксплуатации
ос6 - списано(конец срока годности)
ос7 введено в эксплуатацию
ос8  куплено

вот какие из них должны быть в твоём отчёте, за период с 01.01.2001 по 03.01.2001, если все они не являются строениями/зданиями/землёй/заборами/т.д
Все, но только движимые.
Записан
Radistka
Помогающий

ru
Offline Offline
Пол: Женский

« Ответ #24 : 06-05-2013 06:02 » 

ой, там есть колонка "Состояние", судя по ней, тебе нужны всё таки все. тогда расскажи про форму
Цитата
Я его встроил в форму "Добавление нового ОС" с помощью которой ОС заноситься в базу.
эта форма - карточка основного средства, всмысле элемент справочника, или всё таки документ?
Записан
Clight
Интересующийся

ru
Offline Offline

« Ответ #25 : 06-05-2013 06:15 » 

ой, там есть колонка "Состояние", судя по ней, тебе нужны всё таки все. тогда расскажи про форму
Цитата
Я его встроил в форму "Добавление нового ОС" с помощью которой ОС заноситься в базу.
эта форма - карточка основного средства, всмысле элемент справочника, или всё таки документ?

Точно, карточка ОС(забыл название). Это внешняя(или внутренняя) обработка, как я понимаю. Я её уже редактировал, как писал выше, и встраивал в форму возможность выбора Движимого(Да, Нет). Идея заключалась в том, чтобы бухгалтер потом вручную забил с 01.01.2013 все Движимые ОС, посредством формы, и уже в отчёте они бы указывались.
Записан
Radistka
Помогающий

ru
Offline Offline
Пол: Женский

« Ответ #26 : 06-05-2013 06:32 » 

Цитата
вы разбирали те примеры  комментированного кода, которые сбрасывали вам в комментариях на этом форуме? пробовали писать? отладчиком умеете пользоваться? Создайте новый отчёт, введите туда код, попробуйте посмотреть, что там отбирается, заодно разберётесь что с чем и как связано.

я имела ввиду то, что мы обсуждали с Kivals  по поводу ДО и КО. разберитесь на новом чистом отчёте, с помощью отладчика, что вам дают эти методы и какие данные из них можно получить, поразворачивайте группировки БухгалтерскихИтогов, перечитайте ту теорию которая в синтаксическом помошнике. по сути вам нужно сейчас просто развернуть по группировкам запрос и поставить внутрь условие, что если это ОС не является недвижимостью, то вы его выводите вместе со всеми данными, иначе переходите к следующему в выборке.

offtop: вот Kivals прийдёт - удивится, что же оказалось "движимым ОС".. Отлично
« Последнее редактирование: 06-05-2013 06:52 от Radistka » Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #27 : 06-05-2013 15:36 » 

Radistka, таки да, удивился Жжешь

Clight, добавь скриншот формы карточки ОС и скриншот описания реквизитов ОС из конфигуратора, как у меня здесь

* sc-20130506183455.png (8.86 Кб - загружено 1069 раз.)
* sc-20130506183313.png (6.76 Кб - загружено 1033 раз.)
* sc-20130506183534.png (9.03 Кб - загружено 1119 раз.)
Записан
Clight
Интересующийся

ru
Offline Offline

« Ответ #28 : 07-05-2013 03:17 » 

Вот скриншоты. Сделал один дополнительный скрин со списком ОС. Эту форму я не редактировал и там нет выбора Движимое(да, нет). Забыл бэкап сделать, когда с базой экспериментировал. Там в принципе делов то на 5 минут.

Radistka, я ошибся насчёт обработки. Форма является частью справочника.

* ОС.jpg (285.67 Кб - загружено 1037 раз.)
* реквизиты.jpg (119.92 Кб - загружено 973 раз.)
* форма1.jpg (84.59 Кб - загружено 1039 раз.)
* форма2.jpg (51.69 Кб - загружено 1042 раз.)
* форма3.jpg (63.13 Кб - загружено 977 раз.)
* форма4.jpg (37.73 Кб - загружено 979 раз.)
Записан
Radistka
Помогающий

ru
Offline Offline
Пол: Женский

« Ответ #29 : 07-05-2013 03:47 » 

Вот скриншоты. Сделал один дополнительный скрин со списком ОС. Эту форму я не редактировал и там нет выбора Движимое(да, нет). Забыл бэкап сделать, когда с базой экспериментировал. Там в принципе делов то на 5 минут.


не вижу реквизита, определяющего является ли объект недвижимостью(не спешите добавлять, если его тут нет, скорее всего вам предложат сейчас его добавить в другом месте, или не добавлять вовсе!). Думаю что Kivals просил у вас скрины ради него.. а можно мне скриншот списка Видов(групп) основных средств. Желательно бы развернуть этот список прям из формы ОС(у вас скриншот "Форма1". нажать на разворот списка там, где "транспортные средства", и вот всё что выдаст сделать скрин). и уточните у своих бухов, может ли быть в одной такой группе ОС и движимые и недвижимые ОС?(у меня самой с бухучётом туго, я тут хз)
Записан
Страниц: [1] 2  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines