Имя: Пароль:
1C
1C 7.7
v7: Выводит поле несмотря на отсутствие значения или наоборот
0 progaoff
 
04.07.17
15:10
Если Спр.Цена.Получить(ТекущаяДата()) = 0   Тогда  
                            ПечНаименование = "   Цена";                        ПечЗамечание = "Не указана цена."                
Если Заголовок = 0 Тогда
                                Заголовок = 1;
                                ДоговорСО = СпрДоговоры.ТекущийЭлемент();
                                Таб.ВывестиСекцию("Группировка");
КонецЕсли;
                            Таб.ВывестиСекцию("Строка");
КонецЕсли;    
Выводит "Не указана цена" не смотря на метод получить, возвращает 0 выводит, возвращает 1 тоже выводит, куда копать?
1 linoblack
 
04.07.17
15:12
с прошлого раза остается. "иначе" то нет
2 Масянька
 
04.07.17
15:12
(0) Копать от "Заголовок" до "ПечНаименование" вглубь на "ПечЗамечание".
3 aka AMIGO
 
04.07.17
15:15
Может, я не прав, но Спр.Цены для каждой цены есть вид этой цены: Закупочная, розничная и пр.
Что-то в коде я не вижу, цена какого вида выбирается.

И еще - конфигурацию укажи
4 aka AMIGO
 
04.07.17
15:16
Отладка поможет и спасет
5 progaoff
 
04.07.17
15:17
(3) Бухгалтерский учет 4.5
Но этот журнал - написан кем то.
6 aka AMIGO
 
04.07.17
15:19
(5) Понятно.
Запусти отладчик, поставь точку останова на первую строку твоего кода, щелкай, и выводи переменные в табло
7 progaoff
 
04.07.17
15:19
Если Спр.Цена.Получить(ТекущаяДата()) = 0   Тогда  
                            ПечНаименование = "   Цена";
                            ПечЗамечание = "Не указана цена.";                    Если Заголовок = 0 Тогда
                                Заголовок = 1;
                                ДоговорСО = СпрДоговоры.ТекущийЭлемент();
                                Таб.ВывестиСекцию("Группировка");
                            КонецЕсли;
                            Таб.ВывестиСекцию("Строка");
КонецЕсли;                            
                            
ИначеЕсли (Строка(Спр.Механик.Получить(ТекущаяДата())) = "") И (Спр.ПометкаУдаления() = 0) И (Спр.НаОбслуживании.Получить(ТекущаяДата()) = 1) Тогда    
                        ПечНаименование = "   Цена";
ПечЗамечание = "Не указана цена.";
Если Заголовок = 0 Тогда
                            Заголовок = 1;
                            ДоговорСО = СпрДоговоры.ТекущийЭлемент();
                            Таб.ВывестиСекцию("Группировка");
КонецЕсли;
                        Таб.ВывестиСекцию("Строка");
КонецЕсли;
8 progaoff
 
04.07.17
15:20
Вот еще кусок от того же участка похоже
9 aka AMIGO
 
04.07.17
15:22
+6 Насчет ВидЦены - я перестарался, нет его в твоей конфе, кмк.
10 progaoff
 
04.07.17
15:23
(6) есть значение, выводить не должно
11 Масянька
 
04.07.17
15:24
Да, елки-метелки...
Что есть "Заголовок"?!
12 progaoff
 
04.07.17
15:25
(11) 1
13 HawkEye
 
04.07.17
15:25
(0) перед первым Если поставь
ПечНаименование = "";
ПечЗамечание = "";
14 aka AMIGO
 
04.07.17
15:25
(11) чтобы не выводилась секция "Группировка"
15 progaoff
 
04.07.17
15:28
(13) неа
16 HawkEye
 
04.07.17
15:34
(15) что неа?
тебя переменные не учили очищать что-ли?

корявый код - коряво работает, вопрос то в чем?
17 progaoff
 
04.07.17
15:35
(16) учили
18 aka AMIGO
 
04.07.17
15:36
(17) Таки поставь, как предложено (13)
19 progaoff
 
04.07.17
15:38
(18) Сделал
20 progaoff
 
04.07.17
15:38
(19) Результат тот же
21 HawkEye
 
04.07.17
15:38
(17) смотрим (7)...

если - тогда
если - тогда
конецесли
конецесли

иначеесли - ???? откуда тут иначе?
22 aka AMIGO
 
04.07.17
15:41
(21) Значит, выше по коду есть "Если", просто не всё ТС скопировал

(20) в отладчике в табло посмотри, что выдает Спр.Цена.Получить(ТекущаяДата())
23 progaoff
 
04.07.17
15:42
(22) 1
24 HawkEye
 
04.07.17
15:42
(22) т.е. предлагаешь угадать код, а потом найти в нем ошибку?
25 aka AMIGO
 
04.07.17
15:42
(21) А вообще код написан крайне неряшливо.. Да ладно-б работал, еще и не работает :)
26 AliAksA
 
04.07.17
15:42
ммм ... а где же в коде: "Заголовок = 0;" очень бы хотелось знать ...
27 progaoff
 
04.07.17
15:43
Пока Спр.ПолучитьЭлемент() = 1 Цикл
                    Попытка
                        Заголовок = 0;
                        Если (Спр.Сотрудник.Получить(ТекущаяДата()).ОтветственныйМенеджер.Наименование = РежимПечати) И (Спр.ПометкаУдаления() = 0) И (Спр.НаОбслуживании.Получить(ТекущаяДата()) = 1) Тогда
                        
                        ПечОбъект = "Договор ТО №" + СокрЛП(СпрДоговоры.НомерДоговора) + " (" + СпрДоговоры.Контрагент.Наименование + "), модель " + Спр.Модель.Наименование + " (№" + СокрЛП(Спр.СерийныйНомер.ЗаводскойНомер) + ")";                    
        
                        Если (Спр.Телефон1 = "8(   )   -  -  ") И (Спр.Телефон2 = "8(   )   -  -  ") И (Спр.Телефон3 = "8(   )   -  -  ") И (Спр.Телефон4 = "8(   )   -  -  ") Тогда
                            ПечНаименование = "   Телефоны";
                            ПечЗамечание = "Не указан телефон.";
                            Если Заголовок = 0 Тогда
                                Заголовок = 1;
                                ДоговорСО = СпрДоговоры.ТекущийЭлемент();
                                Таб.ВывестиСекцию("Группировка");
                            КонецЕсли;
                            Таб.ВывестиСекцию("Строка");
                        КонецЕсли;
                        Если (Спр.ДатаЗаменыЭКЛЗ.Получить(ТекущаяДата()) < ТекущаяДата()) ИЛИ (ПустоеЗначение(Спр.ДатаЗаменыЭКЛЗ.Получить(ТекущаяДата())) = 1) Тогда
                            ПечНаименование = "   ЭКЛЗ";
                            Если ПустоеЗначение(Спр.ДатаЗаменыЭКЛЗ.Получить(ТекущаяДата())) = 1 Тогда
                                ПечЗамечание = "Дата блокировки ЭКЛЗ не указана.";                            
                            ИначеЕсли Спр.ДатаЗаменыЭКЛЗ.Получить(ТекущаяДата()) < ТекущаяДата() Тогда                        
                                ПечЗамечание = "Просрочена дата замены ЭКЛЗ.";                        
                            КонецЕсли;    
                            Если Заголовок = 0 Тогда
                                Заголовок = 1;
                                ДоговорСО = СпрДоговоры.ТекущийЭлемент();
                                Таб.ВывестиСекцию("Группировка");
                            КонецЕсли;                        
                            Таб.ВывестиСекцию("Строка");
                        КонецЕсли;
                        Если ПустоеЗначение(Спр.МестоУстановки.АдресФакт) = 1 Тогда    
                             ПечНаименование = "   Адрес эксплуатации";
                            ПечЗамечание = "Не указан адрес места эксплуатации.";
                            Если Заголовок = 0 Тогда
                                Заголовок = 1;
                                ДоговорСО = СпрДоговоры.ТекущийЭлемент();
                                Таб.ВывестиСекцию("Группировка");
                            КонецЕсли;                        
                            Таб.ВывестиСекцию("Строка");
                        КонецЕсли;
                        Если ПустоеЗначение(Спр.МестоУстановки.Метро) = 1 Тогда    
                             ПечНаименование = "   Метро";
                            ПечЗамечание = "Не указана станция метро места эксплуатации.";
                            Если Заголовок = 0 Тогда
                                Заголовок = 1;
                                ДоговорСО = СпрДоговоры.ТекущийЭлемент();
                                Таб.ВывестиСекцию("Группировка");
                            КонецЕсли;                        
                            Таб.ВывестиСекцию("Строка");
                        КонецЕсли;    
                        Если ПустоеЗначение(Спр.ИФНС) = 1 Тогда    
                             ПечНаименование = "   ИФНС";
                            ПечЗамечание = "Не указан ИФНС.";
                            Если Заголовок = 0 Тогда
                                Заголовок = 1;
                                ДоговорСО = СпрДоговоры.ТекущийЭлемент();
                                Таб.ВывестиСекцию("Группировка");
                            КонецЕсли;                        
                            Таб.ВывестиСекцию("Строка");
                        ИначеЕсли ПустоеЗначение(Спр.ИФНС.Адрес) = 1 Тогда    
                             ПечНаименование = "   ИФНС";
                            ПечЗамечание = "Не указан адрес ИФНС.";
                            Если Заголовок = 0 Тогда
                                Заголовок = 1;
                                ДоговорСО = СпрДоговоры.ТекущийЭлемент();
                                Таб.ВывестиСекцию("Группировка");
                            КонецЕсли;                        
                            Таб.ВывестиСекцию("Строка");
                        КонецЕсли;

                        Если Спр.Цена.Получить(ТекущаяДата()) = 0   Тогда  
                            ПечНаименование = "   Цена";
                            ПечЗамечание = "Не указана цена.";
                            Если Заголовок = 0 Тогда
                                Заголовок = 1;
                                ДоговорСО = СпрДоговоры.ТекущийЭлемент();
                                Таб.ВывестиСекцию("Группировка");
                            КонецЕсли;
                            Таб.ВывестиСекцию("Строка");
                        КонецЕсли;                            
                            
                    ИначеЕсли (Строка(Спр.Механик.Получить(ТекущаяДата())) = "") И (Спр.ПометкаУдаления() = 0) И (Спр.НаОбслуживании.Получить(ТекущаяДата()) = 1) Тогда    
                        ПечНаименование = "   Цена";
                        ПечЗамечание = "Не указана цена.";
                        Если Заголовок = 0 Тогда
                            Заголовок = 1;
                            ДоговорСО = СпрДоговоры.ТекущийЭлемент();
                            Таб.ВывестиСекцию("Группировка");
                        КонецЕсли;
                        Таб.ВывестиСекцию("Строка");
                    
                    КонецЕсли;
                    Исключение
                    КонецПопытки;
                КонецЦикла;
            КонецЕсли;
        КонецЦикла;
28 progaoff
 
04.07.17
15:43
(24) Пардонте
29 aka AMIGO
 
04.07.17
15:44
(23) т.е. Цена=1рубль?
30 progaoff
 
04.07.17
15:47
(29) Метод получить возвращает 1
31 progaoff
 
04.07.17
15:47
Значит что выводить не надо.
32 progaoff
 
04.07.17
15:48
Если же вернул 0 Выводит цена не установлена
33 progaoff
 
04.07.17
15:49
Ну по крайне мере тут так написано)
34 HawkEye
 
04.07.17
15:53
(27) продолжаем нашу интересную переписку....
пока - один раз

конеццикла - два раза...



зы. попытка - исключение - это сильно....
35 progaoff
 
04.07.17
15:56
(34) с пустым Попытка это еще не понятно на фиг оно надо)
36 progaoff
 
04.07.17
15:57
Цикла два
37 AliAksA
 
04.07.17
15:59
(0) у тебя прога попадает в эту ветку:

ИначеЕсли (Строка(Спр.Механик.Получить(ТекущаяДата())) = "") И (Спр.ПометкаУдаления() = 0) И (Спр.НаОбслуживании.Получить(ТекущаяДата()) = 1) Тогда    
                            ПечНаименование = "   Цена";
                            ПечЗамечание = "Не указана цена.";
                            Если Заголовок = 0 Тогда
                                Заголовок = 1;
                                ДоговорСО = СпрДоговоры.ТекущийЭлемент();
                                Таб.ВывестиСекцию("Группировка");
                            КонецЕсли;
                            Таб.ВывестиСекцию("Строка");
                            
                        КонецЕсли;

а здесь "Не указана цена" всегда выводится, т.е. условие:

Если (Спр.Сотрудник.Получить(ТекущаяДата()).ОтветственныйМенеджер.Наименование = РежимПечати) И (Спр.ПометкаУдаления() = 0) И (Спр.НаОбслуживании.Получить(ТекущаяДата()) = 1) Тогда

не выполняется ...
38 HawkEye
 
04.07.17
16:01
(36) я про программные сейчас....
39 aka AMIGO
 
04.07.17
16:02
(27) Это не весь код, опять сверху нехватает: Цикл и Если..

(30) Да? Читаю СП:
Получить(<?>)
GetValue(<?>)
Синтаксис:
Получить(<Дата>)
Назначение:
Возвращает значение периодической константы на заданную дату.
40 aka AMIGO
 
04.07.17
16:03
+39 Так что предполагаю, что ты не смотрел в отладчик.
41 progaoff
 
04.07.17
16:04
(39) Читал про 1 и 0 в СП было
42 HawkEye
 
04.07.17
16:04
(39) цена = 1 )
43 HawkEye
 
04.07.17
16:05
(41) не трынди... никогда не было у Получить() для периодических 1 и 0...
44 aka AMIGO
 
04.07.17
16:06
(41)
45 progaoff
 
04.07.17
16:07
(44) Увидел, чет не туда я полез
46 AliAksA
 
04.07.17
16:09
РЕБЯТА, ВЫ О ЧЕМ ?!

у него всего скорее условие: "Спр.Сотрудник.Получить(ТекущаяДата()).ОтветственныйМенеджер.Наименование = РежимПечати" никогда не выполняется
47 progaoff
 
04.07.17
16:13
(40) Смотрю, значение в цене есть, а выводит все равно
48 HawkEye
 
04.07.17
16:14
(46) с чего ты взял?
49 progaoff
 
04.07.17
16:14
(48) Отладчик
50 aka AMIGO
 
04.07.17
16:16
(48) Вроде прав AliAksA .. Менеджер.Наименование = РежимПечати - вообще непонятная конструкция.. Да еще и через 4 точки
51 AliAksA
 
04.07.17
16:17
(47,48)

(0) НЕ ТОРМОЗИ !!! перед "Попытка" вставь:

Сообщить("" + Спр.Сотрудник.Получить(ТекущаяДата()).ОтветственныйМенеджер.Наименование + " = " + РежимПечати);

и результат из окна сообщений в студию !!!
52 HawkEye
 
04.07.17
16:18
(49) (48) было не тебе....

(47) Спр.Цена.Получить(ТекущаяДата()) у тебя возвращает что-то не равное 0?
53 aka AMIGO
 
04.07.17
16:19
Топтание на одном месте.. Ладно, не буду я мешать..
54 progaoff
 
04.07.17
16:19
(52) ДА
55 HawkEye
 
04.07.17
16:19
(50) что в ней не понятного?
реквизит Сотрудник - периодический - элемент справочника
РежимПечати  - переменная в которой хранится наименование ответственного менеджера
56 progaoff
 
04.07.17
16:20
(51) Менеджер  =  Менеджер (ФИО)
57 HawkEye
 
04.07.17
16:20
(54) значит
"    ПечНаименование = "   Цена";
            ПечЗамечание = "Не указана цена.";
            Если Заголовок = 0 Тогда
                Заголовок = 1;
                ДоговорСО = СпрДоговоры.ТекущийЭлемент();
                Таб.ВывестиСекцию("Группировка");
            КонецЕсли;
            Таб.ВывестиСекцию("Строка");"

не выполнилось )))
58 progaoff
 
04.07.17
16:22
(57) там же = 0? а в переменной не 0
59 AliAksA
 
04.07.17
16:27
(58) оцепи якорь, сделай (51) и всем станет все ясно)))
60 progaoff
 
04.07.17
16:29
(59) я же сделал список высыпал фио менеджера = фио менеджера
61 progaoff
 
04.07.17
16:36
(60) только они не всегда одинаковые идет там к примерк Катя = Катя потом идет Леша = Катя
62 AliAksA
 
04.07.17
16:39
(61) ну а теперь почитай внимательно (37) и сделай выводы
и чего ты от такого кода хочешь ... ну допиливай код после:

ИначеЕсли (Строка(Спр.Механик.Получить(ТекущаяДата())) = "") И (Спр.ПометкаУдаления() = 0) И (Спр.НаОбслуживании.Получить(ТекущаяДата()) = 1) Тогда
63 AliAksA
 
04.07.17
16:41
лан, поиздевались, хватит ужо)))

(61) скопируй отсюда и замени у себя - и будет тебе счастье:

ИначеЕсли (Строка(Спр.Механик.Получить(ТекущаяДата())) = "") И (Спр.ПометкаУдаления() = 0) И (Спр.НаОбслуживании.Получить(ТекущаяДата()) = 1) Тогда
                            
                            Если Спр.Цена.Получить(ТекущаяДата()) = 0   Тогда  
                                ПечНаименование = "   Цена";
                                ПечЗамечание = "Не указана цена.";
                                Если Заголовок = 0 Тогда
                                    Заголовок = 1;
                                    ДоговорСО = СпрДоговоры.ТекущийЭлемент();
                                    Таб.ВывестиСекцию("Группировка");
                                КонецЕсли;
                                Таб.ВывестиСекцию("Строка");
                            КонецЕсли;
                            
                        КонецЕсли;
64 progaoff
 
04.07.17
16:46
(63) тоже самое(
65 progaoff
 
04.07.17
16:46
Если Спр.Цена.Получить(ТекущаяДата()) = 0   Тогда  
                            ПечНаименование = "   Цена";
                            ПечЗамечание = "Не указана цена.";
                            Если Заголовок = 0 Тогда
                                Заголовок = 1;
                                ДоговорСО = СпрДоговоры.ТекущийЭлемент();
                                Таб.ВывестиСекцию("Группировка");
                            КонецЕсли;
                            Таб.ВывестиСекцию("Строка");
                        КонецЕсли;                            
                            
                ИначеЕсли (Строка(Спр.Механик.Получить(ТекущаяДата())) = "") И (Спр.ПометкаУдаления() = 0) И (Спр.НаОбслуживании.Получить(ТекущаяДата()) = 1) Тогда
                            
                            Если Спр.Цена.Получить(ТекущаяДата()) = 0   Тогда  
                                ПечНаименование = "   Цена";
                                ПечЗамечание = "Не указана цена.";
                                Если Заголовок = 0 Тогда
                                    Заголовок = 1;
                                    ДоговорСО = СпрДоговоры.ТекущийЭлемент();
                                    Таб.ВывестиСекцию("Группировка");
                                КонецЕсли;
                                Таб.ВывестиСекцию("Строка");
                            КонецЕсли;
                            
                      
                    КонецЕсли;
                    Исключение
                    КонецПопытки;
                КонецЦикла;
66 AliAksA
 
04.07.17
16:52
(65) а вот так ещё сделай (и дай результат):

ИначеЕсли (Строка(Спр.Механик.Получить(ТекущаяДата())) = "") И (Спр.ПометкаУдаления() = 0) И (Спр.НаОбслуживании.Получить(ТекущаяДата()) = 1) Тогда
                   сообщить(  "" + спр.ТекущийЭлемент() + " - " + Спр.Цена.Получить(ТекущаяДата()));      
                            Если Спр.Цена.Получить(ТекущаяДата()) = 0   Тогда
67 progaoff
 
04.07.17
16:57
(66) Тоже самое. Сообщить вообще не выдал ничего
68 progaoff
 
04.07.17
16:59
Если Спр.Цена.Получить(ТекущаяДата()) = 0   Тогда  
                            ПечНаименование = "   Цена";
                            ПечЗамечание = "Не указана цена.";
                            Если Заголовок = 0 Тогда
                                Заголовок = 1;
                                ДоговорСО = СпрДоговоры.ТекущийЭлемент();
                                Таб.ВывестиСекцию("Группировка");
                            КонецЕсли;
                            Таб.ВывестиСекцию("Строка");
                        КонецЕсли;                            
                            
            ИначеЕсли (Строка(Спр.Механик.Получить(ТекущаяДата())) = "") И (Спр.ПометкаУдаления() = 0) И (Спр.НаОбслуживании.Получить(ТекущаяДата()) = 1) Тогда
                   сообщить(  "" + спр.ТекущийЭлемент() + " - " + Спр.Цена.Получить(ТекущаяДата()));      
                            Если Спр.Цена.Получить(ТекущаяДата()) = 0   Тогда
                                ПечНаименование = "   Цена";
                                ПечЗамечание = "Не указана цена.";
                                Если Заголовок = 0 Тогда
                                    Заголовок = 1;
                                    ДоговорСО = СпрДоговоры.ТекущийЭлемент();
                                    Таб.ВывестиСекцию("Группировка");
                                КонецЕсли;
                                Таб.ВывестиСекцию("Строка");
                            КонецЕсли;
                            
                      
                    КонецЕсли;
                    Исключение
                    КонецПопытки;
                КонецЦикла;
            КонецЕсли;
        КонецЦикла;
69 AliAksA
 
04.07.17
17:11
(67) О_О ну хз, попробуй ещё так:

ИначеЕсли (СокрЛП(Спр.Механик.Получить(ТекущаяДата())) = "") И (Спр.ПометкаУдаления() = 0) И (Спр.НаОбслуживании.Получить(ТекущаяДата()) = 1) Тогда
                   сообщить(  "" + спр.ТекущийЭлемент() + " - " + Спр.Цена.Получить(ТекущаяДата()));      
                            Если Спр.Цена.Получить(ТекущаяДата()) = 0   Тогда  

и протести перед "Попытка":

сообщить(  "" + Спр.Механик.Получить(ТекущаяДата()));
70 progaoff
 
04.07.17
17:20
сообщить(  "" + Спр.Механик.Получить(ТекущаяДата())); Матерится на метод агрегатного объекта не найден
71 AliAksA
 
04.07.17
17:26
(70) ну наконец-то)))
убирай попытку и проверяй адекватность кода - на наличие полей в справочниках
и замени "спр" на что-нить уникальное, допустим "спрТовары" - возможна накладка переменных
72 progaoff
 
04.07.17
17:27
поле агрегатного объекта не найдено (Механик)
73 AliAksA
 
04.07.17
17:32
(72) ну потому что его нет в справочнике ...
замени:

ИначеЕсли (Спр.ПометкаУдаления() = 0) И (Спр.НаОбслуживании.Получить(ТекущаяДата()) = 1) Тогда
                   сообщить(  "" + спр.ТекущийЭлемент() + " - " + Спр.Цена.Получить(ТекущаяДата()));      
                            Если Спр.Цена.Получить(ТекущаяДата()) = 0   Тогда

если не взлетит - тогда до завтра)
74 progaoff
 
04.07.17
17:32
(71) так поля все в этом долбаном одном справочники
75 progaoff
 
04.07.17
17:33
(73) Попытку грохать?
76 AliAksA
 
04.07.17
17:34
(75) естественно, и отлаживай код без неё
77 progaoff
 
04.07.17
17:38
(76) Как то странно, то элемент на котором я смотрел пример - исчез, появилось другое теперь
78 progaoff
 
04.07.17
17:39
(77) Сообщить отработал
79 AliAksA
 
04.07.17
17:40
(77) ммм ... а что курил?
80 progaoff
 
04.07.17
17:40
(79) пока ничего)
81 AliAksA
 
04.07.17
17:40
(78) результат давай
82 progaoff
 
04.07.17
17:40
сообщить который выдал?
83 AliAksA
 
04.07.17
17:41
(82) да да да
84 AliAksA
 
04.07.17
17:42
ПЯТНИЧНО, ОДНАКО)))
85 progaoff
 
04.07.17
17:43
(83) кучу элементов с ценой и 0
Тра ла ла - 0
Бла бла бла - 500
и в таком стиле
86 progaoff
 
04.07.17
17:45
Меркурий - 115К - 550
YARUS-M2100K - 1000
87 AliAksA
 
04.07.17
17:47
Теперь замени на ниже и результат сообщений кусок скопипасти сюда:

ИначеЕсли (Спр.ПометкаУдаления() = 0) И (Спр.НаОбслуживании.Получить(ТекущаяДата()) = 1) Тогда
        Если Спр.Цена.Получить(ТекущаяДата()) = 0 Тогда  
            Сообщить(  "" + спр.ТекущийЭлемент() + " - " + Спр.Цена.Получить(ТекущаяДата()));
88 AliAksA
 
04.07.17
17:48
+(87) и по идее получишь перечень с нулевой ценой, по которым она будет выводить, а остальные - пропустит
89 progaoff
 
04.07.17
17:56
(88)ДА!!!!
90 AliAksA
 
04.07.17
17:56
А ещё попробуй так:

Пока Спр.ПолучитьЭлемент() = 1 Цикл
        Менеджер = Спр.Сотрудник.Получить(ТекущаяДата()).ОтветственныйМенеджер.Наименование;
        Сообщить("=" + Менеджер + "=" + РежимПечати + + "==" + ТипЗначенияСтр(Менеджер)
        + "|" + СтрДлина(Менеджер) + ТипЗначенияСтр(РежимПечати) + "|" + СтрДлина(РежимПечати));

это поможет тебе проанализировать сравниваемые данные
91 progaoff
 
04.07.17
17:58
(90) Куда? после блока если?
92 AliAksA
 
04.07.17
18:02
(91) После "Пока Спр.ПолучитьЭлемент() = 1 Цикл"
93 progaoff
 
04.07.17
18:06
(91) (92) Ошибка в выражении
Менеджер = Спр.Сотрудник.Получить(ТекущаяДата()).ОтветственныйМенеджер.Наименование;
        Сообщить("=" + Менеджер + "=" + РежимПечати + + "==" + ТипЗначенияСтр(Менеджер)
        + "|" + СтрДлина(Менеджер) + ТипЗначенияСтр(РежимПечати) + "|" + СтрДлина(РежимПечати));
94 AliAksA
 
04.07.17
18:11
(93) переделывай на так:

Пока Спр.ПолучитьЭлемент() = 1 Цикл
        Если Спр.ПометкаУдаления() = 0 Тогда
            Если Спр.НаОбслуживании.Получить(ТекущаяДата()) = 1 Тогда
                
                Заголовок = 0;
                ПечОбъект = "Договор ТО №" + СокрЛП(СпрДоговоры.НомерДоговора) + " (" + СпрДоговоры.Контрагент.Наименование + "), модель " + Спр.Модель.Наименование + " (№" + СокрЛП(Спр.СерийныйНомер.ЗаводскойНомер) + ")";                    
                
                Если (Спр.Телефон1 = "8(   )   -  -  ") И (Спр.Телефон2 = "8(   )   -  -  ") И (Спр.Телефон3 = "8(   )   -  -  ") И (Спр.Телефон4 = "8(   )   -  -  ") Тогда
                    ПечНаименование = "   Телефоны";
                    ПечЗамечание = "Не указан телефон.";
                    Если Заголовок = 0 Тогда
                        Заголовок = 1;
                        ДоговорСО = СпрДоговоры.ТекущийЭлемент();
                        Таб.ВывестиСекцию("Группировка");
                    КонецЕсли;
                    Таб.ВывестиСекцию("Строка");
                КонецЕсли;

а иначе если - можно удалить
95 AliAksA
 
04.07.17
18:12
стоп!!! вот так сообщение сделай:

Менеджер = Спр.Сотрудник.Получить(ТекущаяДата()).ОтветственныйМенеджер.Наименование;
        Сообщить("=" + Менеджер + "=" + РежимПечати + "==" + ТипЗначенияСтр(Менеджер)
        + "|" + СтрДлина(Менеджер) + "=" + ТипЗначенияСтр(РежимПечати) + "|" + СтрДлина(РежимПечати));
96 AliAksA
 
04.07.17
18:17
(0) лан, извини, пора идти, но твой код будет красивше, если переделаешь на такой:

Перем Спр, Заголовок;
    
//***********************************************    
Процедура ВыводСекций()
    
    ПечНаименование = "   Телефоны";
    ПечЗамечание = "Не указан телефон.";
    Если Заголовок = 0 Тогда
        Заголовок = 1;
        ДоговорСО = СпрДоговоры.ТекущийЭлемент();
        Таб.ВывестиСекцию("Группировка");
    КонецЕсли;
    Таб.ВывестиСекцию("Строка");
    
КонецПроцедуры // ВыводСекций()
//***********************************************


    ....
    
    Пока Спр.ПолучитьЭлемент() = 1 Цикл
        Если Спр.ПометкаУдаления() = 0 Тогда
            Если Спр.НаОбслуживании.Получить(ТекущаяДата()) = 1 Тогда
                
                Заголовок = 0;
                ПечОбъект = "Договор ТО №" + СокрЛП(СпрДоговоры.НомерДоговора) + " (" + СпрДоговоры.Контрагент.Наименование + "), модель " + Спр.Модель.Наименование + " (№" + СокрЛП(Спр.СерийныйНомер.ЗаводскойНомер) + ")";                    
                
                Если (Спр.Телефон1 = "8(   )   -  -  ") И (Спр.Телефон2 = "8(   )   -  -  ") И (Спр.Телефон3 = "8(   )   -  -  ") И (Спр.Телефон4 = "8(   )   -  -  ") Тогда
                    ПечНаименование = "   Телефоны";
                    ПечЗамечание = "Не указан телефон.";
                    ВыводСекций();
                КонецЕсли;
                
                Если (Спр.ДатаЗаменыЭКЛЗ.Получить(ТекущаяДата()) < ТекущаяДата()) ИЛИ (ПустоеЗначение(Спр.ДатаЗаменыЭКЛЗ.Получить(ТекущаяДата())) = 1) Тогда
                    ПечНаименование = "   ЭКЛЗ";
                    Если ПустоеЗначение(Спр.ДатаЗаменыЭКЛЗ.Получить(ТекущаяДата())) = 1 Тогда
                        ПечЗамечание = "Дата блокировки ЭКЛЗ не указана.";                            
                    ИначеЕсли Спр.ДатаЗаменыЭКЛЗ.Получить(ТекущаяДата()) < ТекущаяДата() Тогда                        
                        ПечЗамечание = "Просрочена дата замены ЭКЛЗ.";                        
                    КонецЕсли;    
                    ВыводСекций();
                КонецЕсли;
                
                Если ПустоеЗначение(Спр.МестоУстановки.АдресФакт) = 1 Тогда    
                    ПечНаименование = "   Адрес эксплуатации";
                    ПечЗамечание = "Не указан адрес места эксплуатации.";
                    ВыводСекций();
                КонецЕсли;
                
                // и так далее ...
            
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;
97 progaoff
 
04.07.17
18:21
(94) (96) Спасибо
98 progaoff
 
04.07.17
18:50
Пока Спр.ПолучитьЭлемент() = 1 Цикл
        Менеджер = Спр.Сотрудник.Получить(ТекущаяДата()).ОтветственныйМенеджер.Наименование;
        Сообщить("=" + Менеджер + "=" + РежимПечати + "==" + ТипЗначенияСтр(Менеджер)
        + "|" + СтрДлина(Менеджер) + "=" + ТипЗначенияСтр(РежимПечати) + "|" + СтрДлина(РежимПечати));
        Если Спр.ПометкаУдаления() = 0 Тогда
            Если Спр.НаОбслуживании.Получить(ТекущаяДата()) = 1 Тогда
                
                Заголовок = 0;
                ПечОбъект = "Договор ТО №" + СокрЛП(СпрДоговоры.НомерДоговора) + " (" + СпрДоговоры.Контрагент.Наименование + "), модель " + Спр.Модель.Наименование + " (№" + СокрЛП(Спр.СерийныйНомер.ЗаводскойНомер) + ")";                    
                
                Если (Спр.Телефон1 = "8(   )   -  -  ") И (Спр.Телефон2 = "8(   )   -  -  ") И (Спр.Телефон3 = "8(   )   -  -  ") И (Спр.Телефон4 = "8(   )   -  -  ") Тогда
                    ПечНаименование = "   Телефоны";
                    ПечЗамечание = "Не указан телефон.";
                    Если Заголовок = 0 Тогда
                        Заголовок = 1;
                        ДоговорСО = СпрДоговоры.ТекущийЭлемент();
                        Таб.ВывестиСекцию("Группировка");
                    КонецЕсли;
                    Таб.ВывестиСекцию("Строка");
                КонецЕсли;

                        Если (Спр.ДатаЗаменыЭКЛЗ.Получить(ТекущаяДата()) < ТекущаяДата()) ИЛИ (ПустоеЗначение(Спр.ДатаЗаменыЭКЛЗ.Получить(ТекущаяДата())) = 1) Тогда
                            ПечНаименование = "   ЭКЛЗ";
                            Если ПустоеЗначение(Спр.ДатаЗаменыЭКЛЗ.Получить(ТекущаяДата())) = 1 Тогда
                                ПечЗамечание = "Дата блокировки ЭКЛЗ не указана.";                            
                            ИначеЕсли Спр.ДатаЗаменыЭКЛЗ.Получить(ТекущаяДата()) < ТекущаяДата() Тогда                        
                                ПечЗамечание = "Просрочена дата замены ЭКЛЗ.";                        
                            КонецЕсли;    
                            Если Заголовок = 0 Тогда
                                Заголовок = 1;
                                ДоговорСО = СпрДоговоры.ТекущийЭлемент();
                                Таб.ВывестиСекцию("Группировка");
                            КонецЕсли;                        
                            Таб.ВывестиСекцию("Строка");
                        КонецЕсли;
                        Если ПустоеЗначение(Спр.МестоУстановки.АдресФакт) = 1 Тогда    
                             ПечНаименование = "   Адрес эксплуатации";
                            ПечЗамечание = "Не указан адрес места эксплуатации.";
                            Если Заголовок = 0 Тогда
                                Заголовок = 1;
                                ДоговорСО = СпрДоговоры.ТекущийЭлемент();
                                Таб.ВывестиСекцию("Группировка");
                            КонецЕсли;                        
                            Таб.ВывестиСекцию("Строка");
                        КонецЕсли;
                        Если ПустоеЗначение(Спр.МестоУстановки.Метро) = 1 Тогда    
                             ПечНаименование = "   Метро";
                            ПечЗамечание = "Не указана станция метро места эксплуатации.";
                            Если Заголовок = 0 Тогда
                                Заголовок = 1;
                                ДоговорСО = СпрДоговоры.ТекущийЭлемент();
                                Таб.ВывестиСекцию("Группировка");
                            КонецЕсли;                        
                            Таб.ВывестиСекцию("Строка");
                        КонецЕсли;    
                        Если ПустоеЗначение(Спр.ИФНС) = 1 Тогда    
                             ПечНаименование = "   ИФНС";
                            ПечЗамечание = "Не указан ИФНС.";
                            Если Заголовок = 0 Тогда
                                Заголовок = 1;
                                ДоговорСО = СпрДоговоры.ТекущийЭлемент();
                                Таб.ВывестиСекцию("Группировка");
                            КонецЕсли;                        
                            Таб.ВывестиСекцию("Строка");
                        ИначеЕсли ПустоеЗначение(Спр.ИФНС.Адрес) = 1 Тогда    
                             ПечНаименование = "   ИФНС";
                            ПечЗамечание = "Не указан адрес ИФНС.";
                            Если Заголовок = 0 Тогда
                                Заголовок = 1;
                                ДоговорСО = СпрДоговоры.ТекущийЭлемент();
                                Таб.ВывестиСекцию("Группировка");
                            КонецЕсли;                        
                            Таб.ВывестиСекцию("Строка");
                        КонецЕсли;

                        Если Спр.Цена.Получить(ТекущаяДата()) = 0   Тогда  
                            ПечНаименование = "   Цена";
                            ПечЗамечание = "Не указана цена.";
                            Если Заголовок = 0 Тогда
                                Заголовок = 1;
                                ДоговорСО = СпрДоговоры.ТекущийЭлемент();
                                Таб.ВывестиСекцию("Группировка");
                            КонецЕсли;
                            Таб.ВывестиСекцию("Строка");
                        КонецЕсли;                            
                            
          ИначеЕсли (Спр.ПометкаУдаления() = 0) И (Спр.НаОбслуживании.Получить(ТекущаяДата()) = 1) Тогда
                        
                            Если Спр.Цена.Получить(ТекущаяДата()) = 0   Тогда
    
                                ПечЗамечание = "Не указана цена.";
                                Если Заголовок = 0 Тогда
                                    Заголовок = 1;
                                    ДоговорСО = СпрДоговоры.ТекущийЭлемент();
                                    Таб.ВывестиСекцию("Группировка");
                                КонецЕсли;
                                Таб.ВывестиСекцию("Строка");
                            КонецЕсли;             
                        КонецЕсли;    
                
                КонецЕсли;
            КонецЦикла;
        КонецЕсли;    
        
        КонецЦикла;
99 progaoff
 
04.07.17
18:51
Все равно выводит записи в которых есть цена
100 Ёпрст
 
04.07.17
19:38
(98) всё не читал, заместо Получить(текущаяДата)
пользуй лучше
спр.ИспользоватьДату(ТекущаяДата) и не надо Получить тогда, просто обращяйся к периодике через точку, всё равно её за одну дату имеешь
101 HawkEye
 
04.07.17
21:44
(99) ты же умеешь пользоваться отладчиком, что мешает найти причину вывода секции?
102 progaoff
 
05.07.17
11:56
(101) Нет причины, в отладчике показывает что цена есть
103 HawkEye
 
05.07.17
11:59
(102) причина есть всегда, ищи лучше...
104 progaoff
 
05.07.17
14:48
Процедура ОтборПоСписку()
Если ЗначениеОтбораФирмы.Выбран() > 0 Тогда    
УстановитьОтбор("БП_ВидДокумента_Фирма","СЧ"+ЗначениеОтбораФирмы.Код);
Инача
   УстановитьОтбор("БП_ВидДокумента", "СЧ");
КонецПроцедуры;
Это отбор
ПриОткрытии()
Если ТипЗначенияСтр(Форма.Параметры) = "Документ" Тогда
   глАктивизироватьДокумент(Контекст, Форма.Параметр);
КонецЕсли;
Если НазваниеИнтерфейса() = "АдминистраторКрым" Тогда
   Форма.ВсеФирмы.Видимость(0);
   Форма.ЗначенияОтбораФирмы.Доступность(0);
КонецЕсли;
ЗначениеОтбораФирмы = гл.Пользователь.ОсновнаяФирма;
ОтборПоСписку();
КонецПроцедуры;
Это процедура при открытии.
Это все в форме списка Журнала "Счета".
При открытии или установки фильтра по незвестной причине теряется часть документов. не отображаются.
105 Ёпрст
 
05.07.17
14:54
(104) переиндексируй базу, это, для начала
106 progaoff
 
05.07.17
15:07
(105) А конструкция то нормальная?
107 progaoff
 
05.07.17
16:03
(106) что поменять можно?
108 HawkEye
 
05.07.17
16:41
(104) не отображаются - потому что отбор наложен... что не так?
109 progaoff
 
05.07.17
16:49
(108) поясни плиз)
110 HawkEye
 
05.07.17
17:00
(109) что именно пояснить?

ты пишешь "не отображаются часть документов"... при этом в коде накладываешь на журнал Отбор...

разве концепция отбора не в том, чтобы не отображать часть документов?
111 progaoff
 
05.07.17
17:20
(110) сам отбор криво работает часть доков не выводит в журнал по параметрам подходящих для вывода
112 HawkEye
 
05.07.17
17:24
(111) отбор и все остальные механизмы работает ровно так как им написали....
113 пипец
 
05.07.17
17:29
если где то к этому справочнику был применен использоватьдату  - получить работать не будет
114 progaoff
 
06.07.17
17:10
Такой вопрос, возможно ли разделить кассовую книгу по организациям? Все та же 7.7
115 progaoff
 
06.07.17
17:11
В запросе я добавил выбор организаций, но остаток на конец дня показывает общий.