Имя: Пароль:
1C
1C 7.7
v7: Работа с таблицами 2
0 Slypower
 
23.04.15
17:48
Не хотелось плодить темы, но ранее открытая что-то не разрешена для редактирования.
Работа с таблицей

В общем то, что не мог сделать, сделал. Другой вопрос.
По итогу формируется таблица на выходе. Есть несколько колонок.
Формируются они не по колонкам, а построчно.
В Последней, так называемой, "Счет" выводятся 1 и 0. Как посчитать количество "1"? Их можно сложить, но как тогда получить этот итог?
Вопрос в том, как работать с данной колонки?
1 Garykom
 
гуру
23.04.15
17:50
...наймите специалиста©
2 Slypower
 
23.04.15
17:53
(1) как это я сразу не догадался... Учителя в школе так же отвечали, когда было не понятно?

Если была возможность нанять, то здесь бы ничего никто не писал
3 Ёпрст
 
23.04.15
17:54
(0) в коде при выводе таблицы посчитать - самое простое
4 mehfk
 
23.04.15
17:55
(2) Ты не в школе
5 zenik
 
23.04.15
17:56
Таблица.Итог("Счет")
6 Wirtuozzz
 
23.04.15
17:57
(5) ну зачем? теперь неинтересно станет ветку читать =)
7 Slypower
 
23.04.15
18:00
(3) таблица формируется в зависимости от количества документов за период. Если просто в коде считать сумму, то он суммирует все 1 относящиеся в данному типу дока. Есть и второй тип.
Колонка "Счет" формируется следом за колонками подходящий к выборке доков. Соответсвенно, несколько колонок "Счет". Нужно считать сумму для каждой.
Было перепробованно Таблица.Итог("Счет")и всего такого.
Суть в том, что таблица формируется запросом не в колонку, а затем вторая и т.д., а в строчку. Нашел строчку в однов доке, сравнил со вторым, вывел, если не 0, тогда в колонку "Счет" ставим "1". И так далее.
Снизу добавляем отдельную секцию, подитоживаем. И там уже нужно прикрепить секции к подходящим колонкам доков.
Вот как обратиться к колонке?
8 silent person
 
23.04.15
18:03
ты хочешь читать данные из таблицы отчета ? это изврат, меняй принцип построения отчета.

ЗЫ к ячейке таблицы можно обратится так же как и в Excel по адресу или по номеру строки и номеру колонки
Область(<?>)
Синтаксис:
Область(<R1>,<C1>,<R2>,<C2>)
Назначение:
Возвращает значение типа ''ОбластьТаблицы'' области выходной таблицы или таблицы в режиме ввода данных.
9 Garykom
 
гуру
23.04.15
18:10
ТС открой для себя запросы... они даже в 77 были
10 Garykom
 
гуру
23.04.15
18:11
И не надо в 1С работать как в Ёкселе...
11 Ёпрст
 
23.04.15
18:28
(7) и ? Сложность то в чем ?
12 Ёпрст
 
23.04.15
18:31
Если одна колонка, тупо счетчик:

Сумма=0;
Цикл
   Сумма= Сумма+Неччто;
  //вывод таблицы
КонецЦикла;

Ежели несколько, то возможны варианты, самый примитивный - пихать в ТЗ. Потом свёртка тз и фильтрация (или поиск) по нужному показателю при выводе. Усё
13 Slypower
 
24.04.15
09:56
(12) вот об этом я и думал. Не могу запихнуть в ТЗ. Каким методом это сделать, чтобы данные с таблицы запихнуть? Или нужно записывать коде формирования стобца "Счет"?
14 Ёпрст
 
24.04.15
10:42
(13) проще - в коде формирования (или сразу всё иметь с запроса)
Хочешь извращений и замедлить чутка скорость - ну бегай через Область() Таблицы .. имей текст ячеек, считай. Выводи итоги
15 Slypower
 
24.04.15
16:27
как создать запрос из данных из ячеек таблицы?
16 Ёпрст
 
24.04.15
16:39
(15) надо проблему с головы решать, а не с хвоста.

Изначально, данные откуда взялись для отчета ?
Вот там и надо переделать
17 Gantosha
 
24.04.15
16:39
я вот лично не понимаю , что хочет автор. Но задача видимо достойная.

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

Запрос создать можно только написав его текст в конфигураторе.
18 Garykom
 
гуру
24.04.15
16:53
(17) эээ? давным-давно в 7.7 делали динамически формируемый текст запроса в зависимости от галочек-полей на форме настроек отчета...

вот данные брать запрос могет в 7.7 только из базы никаких "временных таблиц" да

и то с этим извращаются с 1С++
19 Slypower
 
24.04.15
16:54
Данные берутся из запросов, из двух запросов. Запрашиваем документ с товарами в данном документе А. Затем находим 2 разных документа Б и С агента. Сравниваем наименование товара из А в Б и С, строим отчет:
А        Б    С
Товар1   1    1
Товар2   0    1
Товар3   1    
Товар4   2    4
и т.д.
Где пусто - значит товара нет.
Все в количествах. Строится из двух ТЗ. Первая ТЗ  документы Б и С, вторая ТЗ из документа А.
Как уже писал, строится не столбами, а построчно: нашли товар в доке А сравнили с доком Б вывели кол-во, сравнили с доком С, вывели кол-во. Следующий товар из дока А и т.д.
Так вот, задача посчитать ненулевые товары в Б (сумму вывести снизу) и ненулевые из  сравнения Б и С (Сумму вывести снизу).
Вроде все работает, но... например в С есть пустые строчки, он их считает как строка и не учитывает при подсчете,  хотя при выводе доп колонки Д (там цифры сравнения, если >0 =1, иначе =0) то показывает как 1, но не считает за цифру

Так задача не сложная, а по факту бьюсь о ней уже довольно таки долго
20 Slypower
 
24.04.15
16:58
Данные, а именно какие доки брать идут из Таблицы Значений.  Для нее данные идут из запросов по каждому из 3-х доков
21 Garykom
 
гуру
24.04.15
17:04
Тока не говорите что ABC-анализ ваяем...
22 Slypower
 
24.04.15
17:06
(21) это какой-то отчет? Наш отчет был написан программистом ранее, его переделываю
23 Garykom
 
гуру
24.04.15
17:07
(22) мне тут дом строители построили ранее... так я его переделываю - подвал себе хочу со стоянкой и бассейн на крышу...
24 Slypower
 
24.04.15
17:09
(23) Это лучшее сравнение, что я слышал))))
25 Slypower
 
25.04.15
11:32
Нечет ли логику данные строки?

ТЗ=СоздатьОбъект("ТаблицаЗначений");
ТЗ.НоваяКолонка("Счет");
ТЗ.Заполнить(н);
СуммаН=ТЗ.Итог("Счет");


где н - это 1 или 0
26 Дмитрий
 
25.04.15
12:13
Сделай сводную таблицу с колонками
"Товар", "КоличествоА", "КоличествоБ", "КоличествоС".

добавь в таблицу данные из нужных документов, только при этом присваивай значения всем колонкам, т.е. для документа А код будет
Товар = Товар
КоличествоА = Количество
КоличествоБ=0
КоличествоС=0

и т.д.

Подом сделай Свернуть("Товар", "КоличествоА, КоличествоБ, КоличествоС") - и будет тебе счастье
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший