Консультация № 65844
06.12.2006, 20:31
0.00 руб.
0 3 3
Здравствуйте! Снова с Вам за помощью. После выполнения процедуры Заполнить() заполнятся ТЗ, которая состоит из, например, 3-х колонок, строки заполняются вразнобой. Т.е., например,
Аренда Налоги Зарплата
1200,00
1000,00
1300,00 300,00
а надо бы построчно.
Надеюсь вопрос понятен. Помогите пожалуйста, а то по-всякому пробовала, и в итоге посылаю как писала изначально.
И второй вопросик: можно ли из таблицы значений, нажав на Сумму, перейти для просмотра в документ из которого эта сумма взята?


Приложение:
Процедура Заполнить()ТЗ1.УдалитьСтроки();Док = СоздатьОбЪект("Документ.РасходныйОрдер");// Выбирам документы за период.Док.ВыбратьДокументы(ДатаНачала,ДатаКонца);//Проходим по каждому документу выбираем строки и заполняем ‘ТаблицуЗначений‘. Пока Док.ПолучитьДокумент()=1 Цикл Если Док.Выбран()=1 Тогда ТЗ1.НоваяСтрока();// Заполняем ТЗ.Если Док.Субконто1=Перечисление.СтатьиИздержек.Аренда Тогда ТЗ1.Аренда=Док.Сумма; ИначеЕсли Док.Субконто1=Перечисление.СтатьиИздержек.ОплатаТруда Тогда ТЗ1.Зарплата=Док.Сумма; ИначеЕсли Док.Субконто1=Перечисление.СтатьиИздержек.Отчисления Тогда ТЗ1.Налоги=Док.Сумма;КонецЕсли; КонецЕсли;КонецЦикла;Если ТЗ1.КоличествоСтрок()=0 ТогдаПредупреждение("За данный период нет расходов!",10);КонецЕсли;КонецПроцедуры

Обсуждение

Неизвестный
07.12.2006, 06:03
общий
это ответ
Здравствуйте, Darina!

1. можно добавить в ТЗ колонку "Документ" и использовать метод Свернуть("Документ","Аренда, Зарплата, Налоги") тогда для каждого документа будет одна строка в ТЗ.

2. Т.к. в ТЗ есть ссылкана документ, то для перехода на него делаем кнопку и пишем, в процедуре нажатия анализируем текущюу строку ТЗ и выбираем из колонки Документ ссылку и открываем методом ОткрытьФорму существующего документа

Приложение:
Процедура Заполнить()ТЗ1.УдалитьСтроки();Док = СоздатьОбЪект("Документ.РасходныйОрдер");// Выбирам документы за период.Док.ВыбратьДокументы(ДатаНачала,ДатаКонца);//Проходим по каждому документу выбираем строки и заполняем ‘ТаблицуЗначений‘. Пока Док.ПолучитьДокумент()=1 Цикл Если Док.Выбран()=1 Тогда ТЗ1.НоваяСтрока(); ТЗ1.Документ=Док;// Заполняем ТЗ.Если Док.Субконто1=Перечисление.СтатьиИздержек.Аренда Тогда ТЗ1.Аренда=Док.Сумма; ТЗ1.Зарплата=0; ТЗ1.Налоги=0;ИначеЕсли Док.Субконто1=Перечисление.СтатьиИздержек.ОплатаТруда Тогда ТЗ1.Зарплата=Док.Сумма; ТЗ1.Аренда=0; ТЗ1.Налоги=0; ИначеЕсли Док.Субконто1=Перечисление.СтатьиИздержек.Отчисления Тогда ТЗ1.Налоги=Док.Сумма; ТЗ1.Зарплата=0; ТЗ1.Аренда=0;КонецЕсли; КонецЕсли;КонецЦикла;Если ТЗ1.КоличествоСтрок()=0 ТогдаПредупреждение("За данный период нет расходов!",10);КонецЕсли;КонецПроцедуры
Неизвестный
07.12.2006, 07:01
общий
это ответ
Здравствуйте, Darina!
А как вы хотите построчно???
Ведь у вас может идти подряд несколько документов с одинаковыми значениями, т.е. например Аренда может идти несколько раз. Если я правильно понял ВАм ндо чтоб было примерно так:
Аренда/ Налоги/ Зарплата
1000/2000/3000
2000/4000/2000
и.т.д.
тут можете попробовать при каждом новом значении искать последнюю заполненную нужную графу и вставлять туда ваше значение, что то типа как в приложении:
в коде могут быть ошибки,и надо добавить обработчик вставки новой строки, но принцып, я думаю, понятен
А насчет второго вопроса, то пользуйтесь предопределенной процедурой ОбработкаЯчейкиТаблицы().


Приложение:
Если Док.Субконто1=Перечисление.СтатьиИздержек.Оплататруда Тогда ТЗ1.выбратьстроки(); пока тз1.получитьстроку()=1 циклесли пустоезначение(тз1.Зарплата)=1 тогдатз1.зарплата=док.сумма;прервать;//цикл прерывайте обязательноконецесли;конеццикла;
Неизвестный
07.12.2006, 08:01
общий
это ответ
Здравствуйте, Darina!
Ну думаю, что надо как то вот так...
Процедура Заполнить()
ТЗ1.УдалитьСтроки();
Док = СоздатьОбЪект("Документ.РасходныйОрдер");
// Выбирам документы за период.
Док.ВыбратьДокументы(ДатаНачала,ДатаКонца);
//Проходим по каждому документу
Пока Док.ПолучитьДокумент() = 1 Цикл
Если Док.Выбран() = 1 Тогда
Док.ВыбратьСтроки();
ТЗ1.НоваяСтрока();
СуммаАренда = 0;
СуммаЗарплата = 0;
СуммаНалоги = 0;
// А вот сдесь выбираем строки
Пока Док.ПолучитьСтроку() = 1 Цикл
// Распихаем суммы по видам
Если Док.Субконто1 = Перечисление.СтатьиИздержек.Аренда Тогда
СуммаАренда = Док.Сумма;
ИначеЕсли Док.Субконто1 = Перечисление.СтатьиИздержек.ОплатаТруда Тогда
СуммаЗарплата = Док.Сумма;
ИначеЕсли Док.Субконто1 = Перечисление.СтатьиИздержек.Отчисления Тогда
СуммаНалоги = Док.Сумма;
КонецЕсли;
КонецЦикла;
// И соберем в строку таблицы
ТЗ1.Аренда = СуммаАренда;
ТЗ1.Зарплата = СуммаЗарплата;
ТЗ1.Налоги = СуммаЗарплата;
КонецЕсли;
КонецЦикла;
Если ТЗ1.КоличествоСтрок()=0 Тогда
Предупреждение("За данный период нет расходов!",10);
КонецЕсли;
КонецПроцедуры
Форма ответа