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


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

Обсуждение

Неизвестный
06.12.2006, 21:11
общий
это ответ
Здравствуйте, Darina!

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

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


Приложение:
Если Док.Субконто1=Перечисление.СтатьиИздержек.Оплататруда Тогда ТЗ1.выбратьстроки(); пока тз1.получитьстроку()=1 циклесли пустоезначение(тз1.Зарплата)=1 тогдатз1.зарплата=док.сумма;прервать;//цикл прерывайте обязательноконецесли;конеццикла;
Неизвестный
08.12.2006, 10:05
общий
По второму вопросу возьмите какой-нибудь отчет для образца, например, КарточкаСчета или ОборотноСальдоваяВедомость, и посмотрите, как там устроена Расшифровка (при показе таблицы указан режим "Только просмотр" и при нажатии открывается документ или другой отчет). А первый вопрос все-таки непонятен. Почему Вам не подходит вариант добавить колонку "Документ", заполнять ее при формировании значений таблицы, а после заполнения выполнить Свернуть... , как советовали Вам прошлый раз? Все-таки нужен понятный пример желаемого результата. Можно в мини-форум (по ссылке из письма Вам о получении вопроса)
Неизвестный
08.12.2006, 11:29
общий
это ответ
Здравствуйте, Darina!

Судя по всему, в Вашей таблице должно быть еще одно измерение. Т.е. Вы делаете выборку кассовых ордеров и собираете данные об аренде, зарплате и налогах, и при этом должны их привязать к объекту, к которому они относятся (то ли сотруднику, то ли еще к чему, в общем к аналитике). В моем Приложении программный код, в котором для каждого сотрудника сводятся все расходы (т.е. для каждого сотрудника своя строка в таблице значений).

Второй вопрос -- на форме документа у таблицы значений в свойствах есть параметр "Формула". Укажите там имя процедуры и в процедуре опишите вызов документа (есть методы для определения текущей колонки и текущей строки). Вам, конечно, также понадобится иметь ссылку на этот документ (привязка к сумме), это уже реализовать сложнее с точки зрения алгоритма, но нет ничего невозможного ;)

Приложение:
Процедура Заполнить() ТЗ1.УдалитьСтроки(); Док = СоздатьОбЪект("Документ.РасходныйОрдер"); // Выбирам документы за период. Док.ВыбратьДокументы(ДатаНачала,ДатаКонца); //Проходим по каждому документу выбираем строки и заполняем ‘ТаблицуЗначений‘. Пока Док.ПолучитьДокумент()=1 Цикл Если Док.Выбран()=1 Тогда ТЗ1.НоваяСтрока(); // Elric { ТЗ1.Сотрудник=Док.Сотрудник; // Elric } // Заполняем ТЗ. Если Док.Субконто1=Перечисление.СтатьиИздержек.Аренда Тогда ТЗ1.Аренда=Док.Сумма; ИначеЕсли Док.Субконто1=Перечисление.СтатьиИздержек.ОплатаТруда Тогда ТЗ1.Зарплата=Док.Сумма; ИначеЕсли Док.Субконто1=Перечисление.СтатьиИздержек.Отчисления Тогда ТЗ1.Налоги=Док.Сумма; КонецЕсли; КонецЕсли; КонецЦикла; // Elric { ТЗ1.Свернуть("Сотрудник","Аренда,Зарплата,Налоги"); // Elric } Если ТЗ1.КоличествоСтрок()=0 Тогда Предупреждение("За данный период нет расходов!",10); КонецЕсли;КонецПроцедуры
Неизвестный
08.12.2006, 17:38
общий
Ответ BuhCIA : Я хочу зайти в документ из заполненной таблицы значений, а не из печатной формы.Переделю вопрос:У меня заполняется примерно так (и понято, что алгоритм составлен неправильно):Аренда | Налоги |Зарплата100,00 | |________|_______ |________ |200,00 | | |300,00а я хочу чтобы не было пустых ячеек.Если никто не ответит, то придется разбивать ТЗ на несколько, и там уже проблем не будет.
Неизвестный
08.12.2006, 17:40
общий
Ну вот опять таблица сбилась. 200,00 во втором столбы должна быть, а 300,00 в третьем.
Неизвестный
08.12.2006, 17:41
общий
Ну вот опять таблица сбилась. 200,00 во втором столбце должна быть, а 300,00 в третьем.
Неизвестный
10.12.2006, 17:42
общий
После заполнения таблицы значений используйте метод СвернутьЕсли аналитика (по Сотрудникам или еще по чему) не нужна, т.е. нужно оставить просто суммы, то строка кода будет выглядеть так:ТЗ1.Свернуть("","Аренда,Зарплата,Налоги");
Форма ответа