| 
			| 
					
						| 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". нажать на разворот списка там, где "транспортные средства", и вот всё что выдаст сделать скрин). и уточните у своих бухов, может ли быть в одной такой группе ОС и движимые и недвижимые ОС?(у меня самой с бухучётом туго, я тут хз) |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	|  |