Имя: Пароль:
1C
1C 7.7
v7: Вывод суммы
0 msk-07
 
09.08.13
20:43
Подскажите, в документе выводится общая сумма по всем позициям выбранной номенклатуры. А мне нужно сделать, что если одна из сумм номенклатуры равна нулю, то сумма общая сумма тогда тоже должна равняться нулю....

может кто подскажет, в какой момент и где делать такую проверку?
1 Мария Елена
 
09.08.13
20:45
давай думать

1. помидор 100р
2. огурец 200р
3. яйцо 0р


чему равна сумма документа ?
2 msk-07
 
09.08.13
20:47
300, а мне нужно чтобы было 0

Поэтому и обратился, используется стандартная функция глФРМ(Итог"Сумма")..а мне нужно чтобы пробегал по строкам и выводил значение в ноль..
3 Мария Елена
 
09.08.13
20:52
(2) поиск по строкам
если есть нуль -- возврат нульЮ иначе ... иначе
4 msk-07
 
09.08.13
20:54
А где это? примерно?
5 Мария Елена
 
09.08.13
21:02
найти значение ?
6 msk-07
 
09.08.13
21:03
Это отдельно функцию писать?
7 msk-07
 
09.08.13
21:04
Простите, наверное немного для Вас странные вопросы

мне просто мне не понятно как это в документе реализовать в каком месте
8 Мария Елена
 
09.08.13
21:14
перебрать и проверить программно
9 msk-07
 
09.08.13
21:14
Спасибо.

Не буду напрягать, но все равно не понял..
10 oslokot
 
09.08.13
21:25
(0) в тот момент, в который выводится итоговая сумма. Наверняка у тя на форме Функция: Итог("Сумма"). Замени ее на свою, например ПолучитьИтогСумма(). В ней пиши твои условия и возврат значения 0 или итог суммы по документу
11 jarett
 
09.08.13
21:34
К Денису Че срочно! Итоги в шапку складывать )))))))))))))
12 msk-07
 
09.08.13
21:47
Я бы с удовольствием на хорошие курсы по программированию походил
13 msk-07
 
09.08.13
21:51
Функция ПроверкаСтрок(Ст)    
Ст=0;
ТаблицаПодбора = СоздатьОбъект("ТаблицаЗначений");    
ТаблицаПодбора.НоваяКолонка("Количество", "Число");
ТаблицаПодбора.НоваяКолонка("Сумма");  
ТаблицаПодбора.НоваяСтрока();
ТаблицаПодбора.Количество = Количество;
ТаблицаПодбора.СуммаНП      = Сумма;
                    ТаблицаПодбора.ВыбратьСтроки();
                    Пока    ТаблицаПодбора.ПолучитьСтроку()=1 Цикл
Если Количество > Сумма Тогда
     Ст=0;
КонецЕсли ;    
    КонецЦикла
    
КонецФункции
14 msk-07
 
09.08.13
21:52
написал....но не работает
15 msk-07
 
09.08.13
22:01
Помогите пожалуйста разобраться...может я не так строки перебираю ?
16 Zhuravlik
 
09.08.13
22:09
тз = СоздатьОбъект("ТаблицаЗначений");
ВыгрузитьТабличнуюЧасть(тз);
Если тз.НайтиЗначение(0, 0, "Сумма") = 1 ТОгда
Возврат 0;
Иначе
Возврат Итог("Сумма");
КонецЕсли;
17 Zhuravlik
 
09.08.13
22:12
(12) http://курсы-по-1с.рф/free/ - бесплатные курсы -> Нулевой блок (~6 часов) - отпадет много лишних вопросов. Но это по 8.
18 Zhuravlik
 
09.08.13
22:16
(13) Не возвращает ничего функция. Да и тормозить будет, если по формуле все время строки перебирать.
Если такая проверка всегда нужна будет (т.е. не на пару дней для отладки там), я б вообще заморочился, в ПриОткрытии() - выгружаем таб. часть в тз, в ПриОкончанииРедактированияСтроки() проверяю сумму, это чтобы по формуле не дергать метод ВыгрузитьТабличнуюЧасть() - тоже может притормаживать.
19 Zhuravlik
 
09.08.13
22:20
+ А даже проще повесить формулу на ячейку "Сумма", и в этой формуле проверять, равна ли вбитая сумма 0. Если да, то установить заголовок текстовому контролу 0, иначе - Итог("Сумма"). Только тогда с самого контрола убрать функцию, и делать проверку из (16) в ПриОТкрытии()
20 msk-07
 
09.08.13
22:38
Я все сделал как в (16) Вы написали..но почему-то выдает значение 0, хотя сумма вбила :(...Я наверное безнадежен
21 msk-07
 
09.08.13
22:38
Может я не ту таблицу значений выгружаю?
22 msk-07
 
09.08.13
22:53
спасибо!!!!! Все работает. Очень благодарен за помощь!
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.