Clight
Интересующийся
Offline
|
|
« : 17-04-2013 21:43 » |
|
1C Предприятие 7.7 (7.70.027), Бухгалтерский учёт, редакция 4.5 Доброго времени суток. Только начинаю программировать в 7.7 Пытаюсь подправить отчёт "ОС все реквизиты". В диалоге формы указывается дата и формируется отчёт с указанием ОС на эту дату. Встал вопрос, формировать отчёт не на дату, а за период + указывать в отчёте только движимые ОС. С "только движимые" проблем вроде нет, примерно знаю как сделать, а вот с периодом как-то застопорился. Ит.ВыбратьСубконто(ВидыСубконто.ОсновныеСредства); Пока Ит.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = 1 Цикл Т.НоваяСтрока(); Т.Подразделение = Ит.Субконто().Подразделение.Получить.(Дата1) "Дата1" вводится в форме. Я подредактировал форму и сделал, чтобы можно было указать две даты "С "ДатаНач" по "ДатаКон"". Думал передать эти два значения в Подразделение.Получить, но пишет ошибку - "много параметров передаётся".
|
|
|
Записан
|
|
|
|
Kivals
|
|
« Ответ #1 : 18-04-2013 14:16 » |
|
Clight, напиши код, начиная со строки Ит = ...
|
|
|
Записан
|
|
|
|
Clight
Интересующийся
Offline
|
|
« Ответ #2 : 18-04-2013 21:19 » |
|
Процедура Сформировать() Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Таблица"); Таб.ВывестиСекцию("Шапка"); Ит = СоздатьОбъект("БухгалтерскиеИтоги"); Ит.ИспользоватьСубконто(ВидыСубконто.ОсновныеСредства); Т = СоздатьОбъект("ТаблицаЗначений"); Т.НоваяКолонка("Код"); Т.НоваяКолонка("Наименование"); Т.НоваяКолонка("Группа"); Т.НоваяКолонка("Подразделение"); Т.НоваяКолонка("ДатаВ"); Т.НоваяКолонка("МОЛ"); Т.НоваяКолонка("ПСт"); Т.НоваяКолонка("Срок"); Т.НоваяКолонка("Ст"); Т.НоваяКолонка("Аморт"); Т.НоваяКолонка("Ост"); Т.НоваяКолонка("Счет"); Т.НоваяКолонка("Суб1"); Т.НоваяКолонка("Суб2"); Т.НоваяКолонка("Суб3"); Т.НоваяКолонка("АмГр"); Т.НоваяКолонка("Сост");
Ит.ВыбратьСубконто(ВидыСубконто.ОсновныеСредства); Пока Ит.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = 1 Цикл Т.НоваяСтрока(); Т.Код = Ит.Субконто().Код; Т.Наименование = Ит.Субконто().Наименование; Т.Группа = Ит.Субконто().Группа; Т.Подразделение = Ит.Субконто().Подразделение.Получить.(Дата1); Т.ДатаВ = Ит.Субконто().ДатаВводаВЭксплуатацию; Т.МОЛ = Ит.Субконто().МОЛ.Получить(Дата1); Т.ПСт = Ит.Субконто().ПервоначальнаяСтоимость.Получить(Дата1); Т.Срок = Ит.Субконто().СрокПолезногоИспользования.Получить(Дата1);
|
|
|
Записан
|
|
|
|
Kivals
|
|
« Ответ #3 : 19-04-2013 05:58 » |
|
Не похоже на код из типовой (у меня нет бух. для России - проверить не могу). Кто изначально писал этот отчет? 1. Для лучшего понимания (и ускорения алгоритма) делают так: Пока Ит.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = 1 Цикл Т.НоваяСтрока(); ОС = Ит.Субконто(); Т.Код = ОС.Код; Т.Наименование = ОС.Наименование; // ... т.е. все в приведенном тобой примере кода - это обращение к реквизитам элемента справочника. И использование Получить() - это метод периодического реквизита (читай про периодические реквизиты в синтакс-помощнике). 2. Я нигде в коде не вижу обращения к движениям (итогам): идет просто выбор субконто. ИМХО это ничем не отличается от перебора справочника ОС (хотя могу и ошибаться - никогда не использовал БИ в таком режиме).
|
|
|
Записан
|
|
|
|
Clight
Интересующийся
Offline
|
|
« Ответ #4 : 21-04-2013 21:54 » |
|
Не похоже на код из типовой (у меня нет бух. для России - проверить не могу). Кто изначально писал этот отчет? 1. Для лучшего понимания (и ускорения алгоритма) делают так: Пока Ит.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = 1 Цикл Т.НоваяСтрока(); ОС = Ит.Субконто(); Т.Код = ОС.Код; Т.Наименование = ОС.Наименование; // ... т.е. все в приведенном тобой примере кода - это обращение к реквизитам элемента справочника. И использование Получить() - это метод периодического реквизита (читай про периодические реквизиты в синтакс-помощнике). 2. Я нигде в коде не вижу обращения к движениям (итогам): идет просто выбор субконто. ИМХО это ничем не отличается от перебора справочника ОС (хотя могу и ошибаться - никогда не использовал БИ в таком режиме). Да, это код не из типовой конфы, писал его программист до меня(связи с ним нет). Это внешняя обработка, которая находится в доп. возможностях. В общем суть идеи этого кода состоит в том, чтобы выбрать все нужные субконто на конкретную дату(а мне нужно за конкретный период) и включить их в отчёт. Это главная задача. Извиняюсь за сумбур, надо было скопировать весь код, просто не хотел сразу всё наваливать. В общем вот: Процедура Сформировать() Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Таблица"); Таб.ВывестиСекцию("Шапка"); Ит = СоздатьОбъект("БухгалтерскиеИтоги"); Ит.ИспользоватьСубконто(ВидыСубконто.ОсновныеСредства); Если Ит.ВыполнитьЗапрос(Дата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
|
|
« Ответ #5 : 22-04-2013 08:26 » |
|
Ты пропустил в предыдущей цитате саму важную строку: Ит.ВыполнитьЗапрос(Дата1,Дата1,"01.1,02.1") Именно здесь и задаются границы выборки. А значения получаются следующими функциями: На конец заданного периода: СКД()/СКК() На начало заданного периода: СНД()/СНК() Обороты за период: ДО()/КО() Про все функции (включая ВыполнитьЗапрос) читать внимательно синтакс-помощник
|
|
|
Записан
|
|
|
|
Clight
Интересующийся
Offline
|
|
« Ответ #6 : 22-04-2013 21:24 » |
|
Ты пропустил в предыдущей цитате саму важную строку: Ит.ВыполнитьЗапрос(Дата1,Дата1,"01.1,02.1") Именно здесь и задаются границы выборки. А значения получаются следующими функциями: На конец заданного периода: СКД()/СКК() На начало заданного периода: СНД()/СНК() Обороты за период: ДО()/КО() Про все функции (включая ВыполнитьЗапрос) читать внимательно синтакс-помощник Опыта работы с запросами(по крайней мере в семерке) у меня нет. Пытаюсь писать по аналогии с тем, что есть. Свою логику писать пока не умею. Мне посоветовали создать периодический объект и работать с ним. Дали в пример кусок кода с реализацией "подразделения", по аналогии с ним написал и для всех субконто. Вот что получилось: Процедура Сформировать() Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Таблица"); Таб.ВывестиСекцию("Шапка"); Ит = СоздатьОбъект("БухгалтерскиеИтоги"); Ит.ИспользоватьСубконто(ВидыСубконто.ОсновныеСредства); Пер = СоздатьОбъект("Периодический"); //Если Дата(Дата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
Интересующийся
Offline
|
|
« Ответ #7 : 22-04-2013 21:26 » |
|
Вот, мне здесь ещё помогают - http://*****.ru/index.php?topic=28239 Там я выложил скрины таблицы и саму обработку.
|
|
« Последнее редактирование: 23-04-2013 08:39 от Kivals »
|
Записан
|
|
|
|
Kivals
|
|
« Ответ #8 : 23-04-2013 08:45 » |
|
Ссылки на другие форумы здесь не нужны: кому понадобится - найдет поиском, благо гугл работает. Если хочешь чтобы помогли здесь - размещай здесь информацию, прислушивайся к советам и пробуй их применять - решать задачу за тебя никто не будет.
Я не вижу что ты разобрался с тем, что я рекомендовал почитать. А также (с твоей ссылки) понял что тебе там дают советы на другую тему, т.е. либо я, либо там (а может и в обоих местах) задачу поняли неверно. Так что размести, пожалуйста, скриншоты таблиц "что было" (до твоих изменений) и "что ты хочешь получить" (нарисуй в Excel)
|
|
|
Записан
|
|
|
|
Clight
Интересующийся
Offline
|
|
« Ответ #9 : 24-04-2013 06:13 » |
|
А что делать, если я не понимаю и у меня нет опыта программирования? Мне совсем не достаточно, просто почитать синтаксис и всё понять в одну минуту. Синкаксис для меня как набор японских иероглифов. Когда мне показывают пример - я начинаю догонять, что хотели мне сказать, а просто на словах - так всё и остаётся. Не зря говорят, что программированию лучше учиться на примерах, причём лёгких вначале.
|
|
|
Записан
|
|
|
|
Kivals
|
|
« Ответ #10 : 24-04-2013 08:50 » |
|
Вариант 1 (если хочешь научиться программированию): Читать, пробовать, показывать получившийся код и после попытки уточнять в чем же ошибка (что не получается). Да, только лишь почитать, чтобы понять часто не достаточно; а вот попробовать применить полученные от чтения знания - это и есть обучение. А описанная тобой методика "напишите, а я подправлю под себя (не разбираясь в деталях)" - это не обучение на примерах. ИМХО программированию нужно учиться с алгоритмов.
Вариант 2 (если не хочешь учиться): Найти кого-то, что сделает (возможно - не бесплатно). Этот вариант - не сюда
Добавлено через 5 часов, 53 минуты и 2 секунды: P.S. Кстати в синтакс-помощнике в конце описание часто приводится типовой пример использования - он более полезен, т.к. показывает зачем конкрентно нужен метод/реквизит.
|
|
« Последнее редактирование: 24-04-2013 14:43 от Kivals »
|
Записан
|
|
|
|
Clight
Интересующийся
Offline
|
|
« Ответ #11 : 29-04-2013 05:58 » |
|
Вот последний код, который у меня написан: Процедура Сформировать() Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Таблица"); Таб.ВывестиСекцию("Шапка"); Ит = СоздатьОбъект("БухгалтерскиеИтоги"); Ит.ИспользоватьСубконто(ВидыСубконто.ОсновныеСредства); Пер = СоздатьОбъект("Периодический"); //Если Дата(Дата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'; КонецПроцедуры Никак не могу понять, как правильно организовать вывод всех субконто. Для периодических субконто написал вроде правильно, а для первых трёх не знаю как написать: Т.Код = ОС.Код; Т.Наименование = ОС.Наименование; Т.Группа = ОС.Группа; Может быть их тоже как-то в цикл взять? По отдельности или вместе вывести. Вроде по отдельности надо, чтобы брало каждое субконто за период. Также прилагаю скрины таблицы на выходе и скрин таблицы в шаблоне. И саму обработку(на всякий случай).
|
|
|
Записан
|
|
|
|
Kivals
|
|
« Ответ #12 : 29-04-2013 06:23 » |
|
Хорошо, что что-то пытаешься сделать, но плохо - что бездумно.
Итак вопрос, без которого дальше двигаться не имеет смысла: где сравнение (2 таблицы в Excel) что было до тебя и что ты хочешь получить на выходе?
|
|
|
Записан
|
|
|
|
Clight
Интересующийся
Offline
|
|
« Ответ #13 : 29-04-2013 21:33 » |
|
Хорошо, что что-то пытаешься сделать, но плохо - что бездумно.
Итак вопрос, без которого дальше двигаться не имеет смысла: где сравнение (2 таблицы в Excel) что было до тебя и что ты хочешь получить на выходе?
Дело в том, что не понятно, что в итоге получится. Должно формировать отчёт с ОС за конкретный период времени - это и должно получится. Я не очень понял, как можно сделать две таблицы в ексель, что было до меня и что должно быть? Я могу только скрины сделать того, что было до меня и что в итоге выводит через новый код(3 скрина в прошлом сообщении). Сейчас сделаю скрины, что выводило в старом коде. Вот полностью сам старый код: Процедура Сформировать() Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Таблица"); Таб.ВывестиСекцию("Шапка"); Ит = СоздатьОбъект("БухгалтерскиеИтоги"); Ит.ИспользоватьСубконто(ВидыСубконто.ОсновныеСредства); Если Дата(Дата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 = КонМесяца(РабочаяДата()); КонецПроцедуры На скринах это правильный результат и он всех устраивал. Только всё это показывается с начала ведения учёта до конкретной(задаваемой в форме) даты. А нужно только за конкретный период.
|
|
|
Записан
|
|
|
|
Radistka
|
|
« Ответ #14 : 30-04-2013 03:44 » |
|
Честно говоря не совсем понимаю, в чём вопрос, но давайте рассмотрим базовый пример из ЖК: БИ=СоздатьОбъект(«БухгалтерскиеИтоги»); //Создаем объект БухгалтерскиеИтоги БИ.ИспользоватьСубконто(«Номенклатура»); //Задаём Субконто БИ.ВыполнитьЗапрос(Дата1,Дата2,«41.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
|
|
« Ответ #15 : 30-04-2013 07:48 » |
|
Radistka, вот и я не совсем понимаю в чем вопрос, потому и прошу результат, что должно быть. Clight, Что значит "за конкретный период" ? Введенные в этом периоде (только те, что позже даты начала или те, что не списались до даты начала)? движения за этот период? или еще что-то, что я не знаю? Как сохранить: В результате отчета: Файл - Сохранить как - Таблица Excel (*.xls)
|
|
|
Записан
|
|
|
|
Radistka
|
|
« Ответ #16 : 30-04-2013 08:25 » |
|
Clight, Что значит "за конкретный период" ? Введенные в этом периоде (только те, что позже даты начала или те, что не списались до даты начала)? движения за этот период? или еще что-то, что я не знаю?
а, ну тут могу попробовать проявить зачатки телепатии: необходимо выбрать основные средства по которым были движения за указанный период. (так написано было в первом сообщении) по сути необходимо взять ДО и КО, объединить и свернуть по Основному средству. а потом уже вывести полученную таблицу в отчет. мне непонятно вот что: - вам точно нет необходимости в данном отчёте в тех Основных средствах, которые были приняты к учёту на дату начала периода и по которым за период не было движений?
- есть ли необходимость в отчёте видеть те Основные средства, которые были выведены из эксплуатации на конец указанного периода?
Kivals, у меня 7.7 сейчас нет под рукой, а пользовалась давно последний раз, у ДО и КО можно группировку по субконто использовать?
|
|
« Последнее редактирование: 30-04-2013 08:33 от Radistka »
|
Записан
|
|
|
|
Kivals
|
|
« Ответ #17 : 30-04-2013 08:47 » |
|
Radistka, телепатия - это хорошо Но мне, например, не понятно, что считать "движимыми ОС": у которых менялись реквизиты (а именно чтение истории периодических реквизитов предлагали автору на другом форуме, упомянутом в посте #7) или по которым были движения по счетам (именно этот вариант и я предлагал, и ты). Да и автору будет полезно научиться формулировать задачу: правильно сформулированный вопрос - минимум 50% ответа. Что касается ДО/КО: то это методы, применимые к группировке БИ: БИ.ВыбратьСубконто(); Пока БИ.ПолучитьСубконто() = 1 Цикл Об = БИ.ДО() - БИ.КО(); // Обороты по субконто в целом БИ.ВыбратьСчета(); Пока БИ.ПолучитьСчет() = 1 Цикл Об = БИ.ДО() - БИ.КО(); // Обороты по конкретному счету субконто // Далее можно еще по валютам разворачивать ;)
|
|
|
Записан
|
|
|
|
Radistka
|
|
« Ответ #18 : 30-04-2013 09:11 » |
|
Что касается ДО/КО: то это методы, применимые к группировке БИ:
а, ок, а то меня Миста в заблуждение ввела. тогда всё норм ) не застала ссылку на другой форум, изменение периодических реквизитов это другая кухня, про неё я ничего вроде не вижу в коде, который выкладывал топикстартер. UPD нашла тот форум, почитала.
|
|
« Последнее редактирование: 30-04-2013 09:20 от Radistka »
|
Записан
|
|
|
|
Clight
Интересующийся
Offline
|
|
« Ответ #19 : 06-05-2013 00:09 » |
|
Извиняюсь, что ввёл в зублуждение. Движимое - имеется ввиду по реквизиту. То есть добавление реквизита в форму "добавление нового ОС". Это уже отдельно делается, и там надо таблицу видоизменять, а именно добавить ещё одно колонку "Движимое". Это вторая(и конечная задача), которую я смогу сам реализовать, если вы мне поможете реализовать правильный вывод субконто. За конкретный период - это период с Дата1 по Дата2" включительно. За этот период должно выводиться список основных средств, которые были добавлены с помощью формы. Radistka, у меня проблема с выводом данных. Я так понимаю, много методов, как можно получить эти субконто, но мне нужно, чтобы выводило в каждой секции. Или я чего то не понимаю. Я уже запутался, как это всё вместе связывается. Вообще поставлена была такая задача: "Вывести ОС и только движимое(типа здания не включать) с 01.01.2013 по "любую дату"" или только с первой даты по текущюю. Я взяв за основу внешнюю обработку "ОС все реквизиты" пытаюсь её переделать. Прилагаю две таблицы екселя, одна из которых выводит данные на основе старого кода, вторая - что получается на новом коде.
|
|
|
Записан
|
|
|
|
Radistka
|
|
« Ответ #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
Интересующийся
Offline
|
|
« Ответ #21 : 06-05-2013 05:35 » |
|
Блин, опять неточно выразился >_< Реквизит "Движимое". Я его встроил в форму "Добавление нового ОС" с помощью которой ОС заноситься в базу. В этой форме можно помимо прочего, выбрать Движимое ОС или нет(значение булево). Обычно недвижимое - это здание, конечно же. "но что именно вы хотите получить?" - мне нужен отчёт. На скринах вроде видно, что получается + ознакомься, пожалуйста, с таблицами, которые я прикрепил в прошлом сообщении, там как раз видно, что получается.
|
|
|
Записан
|
|
|
|
Radistka
|
|
« Ответ #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
Интересующийся
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
|
|
« Ответ #24 : 06-05-2013 06:02 » |
|
ой, там есть колонка "Состояние", судя по ней, тебе нужны всё таки все. тогда расскажи про форму Я его встроил в форму "Добавление нового ОС" с помощью которой ОС заноситься в базу. эта форма - карточка основного средства, всмысле элемент справочника, или всё таки документ?
|
|
|
Записан
|
|
|
|
Clight
Интересующийся
Offline
|
|
« Ответ #25 : 06-05-2013 06:15 » |
|
ой, там есть колонка "Состояние", судя по ней, тебе нужны всё таки все. тогда расскажи про форму Я его встроил в форму "Добавление нового ОС" с помощью которой ОС заноситься в базу. эта форма - карточка основного средства, всмысле элемент справочника, или всё таки документ? Точно, карточка ОС(забыл название). Это внешняя(или внутренняя) обработка, как я понимаю. Я её уже редактировал, как писал выше, и встраивал в форму возможность выбора Движимого(Да, Нет). Идея заключалась в том, чтобы бухгалтер потом вручную забил с 01.01.2013 все Движимые ОС, посредством формы, и уже в отчёте они бы указывались.
|
|
|
Записан
|
|
|
|
Radistka
|
|
« Ответ #26 : 06-05-2013 06:32 » |
|
вы разбирали те примеры комментированного кода, которые сбрасывали вам в комментариях на этом форуме? пробовали писать? отладчиком умеете пользоваться? Создайте новый отчёт, введите туда код, попробуйте посмотреть, что там отбирается, заодно разберётесь что с чем и как связано. я имела ввиду то, что мы обсуждали с Kivals по поводу ДО и КО. разберитесь на новом чистом отчёте, с помощью отладчика, что вам дают эти методы и какие данные из них можно получить, поразворачивайте группировки БухгалтерскихИтогов, перечитайте ту теорию которая в синтаксическом помошнике. по сути вам нужно сейчас просто развернуть по группировкам запрос и поставить внутрь условие, что если это ОС не является недвижимостью, то вы его выводите вместе со всеми данными, иначе переходите к следующему в выборке. offtop: вот Kivals прийдёт - удивится, что же оказалось "движимым ОС"..
|
|
« Последнее редактирование: 06-05-2013 06:52 от Radistka »
|
Записан
|
|
|
|
Kivals
|
|
« Ответ #27 : 06-05-2013 15:36 » |
|
Radistka, таки да, удивился Clight, добавь скриншот формы карточки ОС и скриншот описания реквизитов ОС из конфигуратора, как у меня здесь
|
|
|
Записан
|
|
|
|
Clight
Интересующийся
Offline
|
|
« Ответ #28 : 07-05-2013 03:17 » |
|
Вот скриншоты. Сделал один дополнительный скрин со списком ОС. Эту форму я не редактировал и там нет выбора Движимое(да, нет). Забыл бэкап сделать, когда с базой экспериментировал. Там в принципе делов то на 5 минут.
Radistka, я ошибся насчёт обработки. Форма является частью справочника.
|
|
|
Записан
|
|
|
|
Radistka
|
|
« Ответ #29 : 07-05-2013 03:47 » |
|
Вот скриншоты. Сделал один дополнительный скрин со списком ОС. Эту форму я не редактировал и там нет выбора Движимое(да, нет). Забыл бэкап сделать, когда с базой экспериментировал. Там в принципе делов то на 5 минут.
не вижу реквизита, определяющего является ли объект недвижимостью(не спешите добавлять, если его тут нет, скорее всего вам предложат сейчас его добавить в другом месте, или не добавлять вовсе!). Думаю что Kivals просил у вас скрины ради него.. а можно мне скриншот списка Видов(групп) основных средств. Желательно бы развернуть этот список прям из формы ОС(у вас скриншот "Форма1". нажать на разворот списка там, где "транспортные средства", и вот всё что выдаст сделать скрин). и уточните у своих бухов, может ли быть в одной такой группе ОС и движимые и недвижимые ОС?(у меня самой с бухучётом туго, я тут хз)
|
|
|
Записан
|
|
|
|
|