Имя: Пароль:
1C
1C 7.7
v7: Оператор "Или" так работает, а так нет, где что не так, чудеса в решете?
,
0 Kigo_Kigo
 
09.07.18
14:28
Если (КодОперации <> "11") Тогда
            //ИЛИ (КодОперации <> "56")  Тогда
            Продолжить;
        КонецЕсли;
Так работает
        

Если (КодОперации <> "11") ИЛИ (КодОперации <> "56") Тогда
            Продолжить;
        КонецЕсли;
Так нет, не на Строка "11", не на строка "56" все равно вываливает в продолжить, я туплю ?
1 Вафель
 
09.07.18
14:29
второе условие всегда истина
2 Смотрящий
 
09.07.18
14:30
КодОперации - строка ?
3 Kigo_Kigo
 
09.07.18
14:31
(2) Да
        Поз = Найти(СтрокаИзФайла,";");
        КодОперации = Лев(СтрокаИзФайла,Поз - 1);
        СтрокаИзФайла = Сред(СтрокаИзФайла,Поз+1);
        Поз = Найти(СтрокаИзФайла,";");
4 exwill
 
09.07.18
14:31
(0) Ты = косо нарисовал.
5 Duke1C
 
09.07.18
14:33
(0) Естественно отработает:) "11"<>"56", а "56"<>"11"
6 uno-group
 
09.07.18
14:33
Все правильно работает. Код операции по любому не равен или 1 или 2 условию.
7 uno-group
 
09.07.18
14:34
если (КодОперации=11)или(кодоперации=56) тогда
Иначе
Продолжить;
КонецЕСли
8 uno-group
 
09.07.18
14:35
или вместо "или" используй "И"
9 Duke1C
 
09.07.18
14:35
(5) Просто там надо И вместо ИЛИ
10 Ненавижу 1С
 
гуру
09.07.18
14:35
(КодОперации <> "11") ИЛИ (КодОперации <> "56")
равносильно выражению:
(НЕ КодОперации="11") ИЛИ (НЕ КодОперации="56")
равносильно выражению:
НЕ(КодОперации="11" И КодОперации="56")
выражение в скобках у последнего всегда ложно
его отрицание всегда истинно
11 Kigo_Kigo
 
09.07.18
14:39
(7) Виснет в бесконечном цикле
12 Cthulhu
 
09.07.18
14:41
чудеса - в голове.
как написано - так и работает.

(11): только если нет перебора выборки (изменения контекста проверки условия) в условии цикла и нарвался на первый не 11 и не 56.
13 Kigo_Kigo
 
09.07.18
14:41
(9) ТОже виснет в бесконечном цикле
14 Масянька
 
09.07.18
14:43
(11) У нас мат. логику вела Виноградова... Такая с..а...
До сих пор ненавижу...
Дизъюнкция (твое ИЛИ) - https://ru.wikipedia.org/wiki/Дизъюнкция (справа картинка).
15 Kigo_Kigo
 
09.07.18
14:43
(12) нет, есть файл выгрузки продаж, его 1 раз перебираю, смысла перевыборки нет, ничего в нем не модифицирую
16 Fish
 
09.07.18
14:45
(0) Никаких чудес, всё верно отрабатывает. Ты написал условие, которое всегда будет равно истине.
17 uno-group
 
09.07.18
14:47
весь текс в студию
18 Масянька
 
09.07.18
14:49
+ (16) Операция не может быть равна и 11, и 56 - абсолютно верно.
Попробовать надо "равно": то есть если равно 11 или 56 - исключение.
Хотя - фиг его знает, чего там у тебя...
19 Вафель
 
09.07.18
14:49
Это русский язык с нами злую шутку играет.
особенно на этом часто попадаются менеджеры
20 Fish
 
09.07.18
14:51
(19) А причём тут русский язык? Элементарная булева логика.
21 FIXXXL
 
09.07.18
14:52
как вариант: делаешь массив исключений и пишешь
Если МассивИ.Найти(ТекЗначение)=Неопределено Тогда


или как там синтаксис в 7.7 ….
22 Lama12
 
09.07.18
15:00
(0) Я так понимаю ожидаемый результат должен быть как от следующей функции
НЕ ((КодОперации = "11") ИЛИ (КодОперации = "56"))
23 Salimbek
 
09.07.18
15:02
(21) Там совсем по-другому )))
(13) Когда виснет в бесконечном цикле, то ставь внутри точку брейкпойнта, потом включай замер, запускай свой код, потом, через некоторое время ставь брейкпойнт обратно. Как код остановится, смотри замер и по каким веткам цикл ходит, и почему он не останавливается. А то вдруг ты там счетчик все время в начало сбрасываешь, вот оно и не завершается никогда.
24 Cthulhu
 
09.07.18
15:03
(15): не "нет" а "да". неплохо бы внимательнее читать на что отвечаешь (к тому же возражая).
если ты "файл выгрузки продаж, его 1 раз перебираешь" - и оператор перебора не в операторе условия цикла, а после вложенного в цикл оператора проверки условия - то на первом же "Продолжить" у тебя этот оператор "перебора" прекрасно обходится, ничего ты не перебираешь а получаешь бесконечный цикл. "перевыборки"и "не модифицирую" тут ни при чем совершенно.
и - см.первый абзац (12) еще раз
25 Duke1C
 
09.07.18
15:06
(13) И так:
Если (КодОперации <> "11") И (КодОперации <> "56") Тогда
     Продолжить;
КонецЕсли;

И так:
Если (КодОперации="11") ИЛИ (КодОперации="56") Тогда
Иначе
     Продолжить;
КонецЕсли;

Должно работать
26 Kigo_Kigo
 
09.07.18
15:08
(22) Виснет в бесконечном цикле
(25) тоже виснет в бесконечном цикле
27 Kigo_Kigo
 
09.07.18
15:09
код полностью
Функция СформироватьМПАЙ(ТаблРеквизитов, ОписаниеРезультата, Сообщение = "")
    
    Рез = 1;
    
    
    СпрЕдиницы = СоздатьОбъект("Справочник.Единицы");
    СпрТовары  = СоздатьОбъект("Справочник.Номенклатура");
    
    ТаблРеквизитов    = СоздатьОбъект("ТаблицаЗначений");
    ТаблРеквизитов.НоваяКолонка("Товар");
    ТаблРеквизитов.НоваяКолонка("Количество");
    ТаблРеквизитов.НоваяКолонка("Единица");
    ТаблРеквизитов.НоваяКолонка("Цена");
    ТаблРеквизитов.НоваяКолонка("Сумма");
    ТаблРеквизитов.НоваяКолонка("ВидОплаты","Перечисление.ВидыОплаты");
    ТаблРеквизитов.НоваяКолонка("Скидка","Справочник.Скидки");
    
    
    
    Для А = 4 по ФайлЗагрузки.КоличествоСтрок() Цикл
        Состояние("Загрузили :" + А + " Строк");
        СтрокаИзФайла = ФайлЗагрузки.ПолучитьСтроку(А);
        СтрокаИзФайла = СокрЛП(СтрокаИзФайла);
        //СтрокаИзФайла = СтрЗаменить(СтрокаИзФайла,",",".");
        Если ПустаяСтрока(СокрЛП(СтрокаИзФайла)) = 1 Тогда
            Продолжить;
        КонецЕсли;
        Поз = 0;
        Поз = Найти(СтрокаИзФайла,";");
        НомерСтрокиОперации = Лев(СтрокаИзФайла,Поз - 1);
        СтрокаИзФайла = Сред(СтрокаИзФайла,Поз+1);
        Поз = Найти(СтрокаИзФайла,";");
        
        Поз = Найти(СтрокаИзФайла,";");
        ДатаОперации = Лев(СтрокаИзФайла,Поз - 1);
        СтрокаИзФайла = Сред(СтрокаИзФайла,Поз+1);
        Поз = Найти(СтрокаИзФайла,";");
        Если Дата(ДатаОперации) <> ВыбДата Тогда
            Продолжить;
        КонецЕсли;
        
        Поз = Найти(СтрокаИзФайла,";");
        ВремяОперации = Лев(СтрокаИзФайла,Поз - 1);
        СтрокаИзФайла = Сред(СтрокаИзФайла,Поз+1);
        Поз = Найти(СтрокаИзФайла,";");
        
        Поз = Найти(СтрокаИзФайла,";");
        КодОперации = Лев(СтрокаИзФайла,Поз - 1);
        СтрокаИзФайла = Сред(СтрокаИзФайла,Поз+1);
        Поз = Найти(СтрокаИзФайла,";");
        // 11 продажа,100 - открытие смены,55 фиксация продажи,56 отмена
        //ПродолжитьЦикл = 0;
        //Если (КодОперации <> "56")  Тогда
        //    
        //    Если (КодОперации <> "11") тогда// и (КодОперации <> "56")  Тогда
        //        ПродолжитьЦикл = 1;
        //        //Продолжить;
        //    КонецЕсли;
        //КонецЕсли;
        //Если (КодОперации <> "11") тогда// и (КодОперации <> "56")  Тогда
        //    
        //    Если (КодОперации <> "56")  Тогда
        //        ПродолжитьЦикл = 1;
        //        
        //    КонецЕсли;
        //КонецЕсли;
        //Если ПродолжитьЦикл = 1 Тогда  
        //    Продолжить;
        //КонецЕсли;
        Если НЕ ((КодОперации = "11") ИЛИ (КодОперации = "56")) Тогда  
            Продолжить;
        КонецЕсли;
        
        Поз = Найти(СтрокаИзФайла,";");
        КакаятоЕдиница = Лев(СтрокаИзФайла,Поз - 1);
        СтрокаИзФайла = Сред(СтрокаИзФайла,Поз+1);
        Поз = Найти(СтрокаИзФайла,";");
        
        
        Поз = Найти(СтрокаИзФайла,";");
        НомерЧека = Лев(СтрокаИзФайла,Поз - 1);
        СтрокаИзФайла = Сред(СтрокаИзФайла,Поз+1);
        Поз = Найти(СтрокаИзФайла,";");
                
        Поз = Найти(СтрокаИзФайла,";");
        ПарольКассира = Лев(СтрокаИзФайла,Поз - 1);
        СтрокаИзФайла = Сред(СтрокаИзФайла,Поз+1);
        Поз = Найти(СтрокаИзФайла,";");
        
        Поз = Найти(СтрокаИзФайла,";");
        КодТовара = Лев(СтрокаИзФайла,Поз - 1);
        СтрокаИзФайла = Сред(СтрокаИзФайла,Поз+1);
        Поз = Найти(СтрокаИзФайла,";");
        
        Поз = Найти(СтрокаИзФайла,";");
        ЧтотоНепонятно = Лев(СтрокаИзФайла,Поз - 1);
        СтрокаИзФайла = Сред(СтрокаИзФайла,Поз+1);
        Поз = Найти(СтрокаИзФайла,";");
        
        Поз = Найти(СтрокаИзФайла,";");
        з_Цена = Число(Лев(СтрокаИзФайла,Поз - 1));
        СтрокаИзФайла = Сред(СтрокаИзФайла,Поз+1);
        Поз = Найти(СтрокаИзФайла,";");
                
        Поз = Найти(СтрокаИзФайла,";");
        з_Количество = Число(Лев(СтрокаИзФайла,Поз - 1));
        СтрокаИзФайла = Сред(СтрокаИзФайла,Поз+1);
        Поз = Найти(СтрокаИзФайла,";");
        
        Поз = Найти(СтрокаИзФайла,";");
        з_Сумма = Число(Лев(СтрокаИзФайла,Поз - 1));
        СтрокаИзФайла = Сред(СтрокаИзФайла,Поз+1);
        Поз = Найти(СтрокаИзФайла,";");  
        Если КодОперации = "11"  Тогда
            СчетчикЦикла = 0;
            Код=КодТовара;
            Для СчетчикЦикла = СтрДлина(Код) по Метаданные.Справочник("Номенклатура").ДлинаКода-1 Цикл
                Код="0"+Код;
            КонецЦикла;
            Если СпрТовары.НайтиПоКоду(Код, 0) = 0 Тогда                        
                Сообщить("Товар со кодом " + Код + " не найден!");
            Иначе
                ТаблРеквизитов.НоваяСтрока();
                ТаблРеквизитов.Товар        = СпрТовары.ТекущийЭлемент();
                ТаблРеквизитов.Единица        = СпрТовары.БазоваяЕдиница;
                ТаблРеквизитов.Количество    = з_Количество;
                ТаблРеквизитов.Сумма        = з_Сумма;
                //                        ТаблРеквизитов.Цена            = ДанныеИзККМ.Цена;
                ТаблРеквизитов.Цена            = ?(з_Количество<=1,з_Сумма,з_Сумма/з_Количество);
            КонецЕсли;
        Иначе //здесь надо отменить продажу и определить сколько строк сторнировали
            Если з_Сумма < 0 Тогда
                ТаблРеквизитов.ПолучитьСтрокуПоНомеру(ТаблРеквизитов.КоличествоСтрок());
                з_Сумма = з_Сумма * (-1);
                Если з_Сумма = ТаблРеквизитов.Сумма Тогда
                    ТаблРеквизитов.УдалитьСтроку();
                Иначе
                    Для А=1 По 50 Цикл
                        ТаблРеквизитов.ПолучитьСтрокуПоНомеру(ТаблРеквизитов.КоличествоСтрок());
                        Если з_Сумма <> ТаблРеквизитов.Сумма Тогда
                            з_Сумма = з_Сумма - ТаблРеквизитов.Сумма;
                            ТаблРеквизитов.УдалитьСтроку();
                        ИначеЕсли з_Сумма = ТаблРеквизитов.Сумма Тогда
                            ТаблРеквизитов.УдалитьСтроку();
                            Прервать;
                            
                        КонецЕсли;
                        Если з_Сумма <= 0 Тогда
                            //?(з_Сумма < 0,Сообщить("что то пошло не так в строке " + Строка(ТаблРеквизитов.КоличествоСтрок()));
                            Прервать;
                        КонецЕсли;
                        
                    КонецЦикла;
                    
                КонецЕсли;
            КонецЕсли;
            
        КонецЕсли;
        
        
        
        
        
    КонецЦикла;
    Если ТаблРеквизитов.КоличествоСтрок() = 0 Тогда
        ОписаниеРезультата    = "За кассовую смену не продано ни одного товара с выбранного склада.";
        Рез    = 0;
    Иначе
        Рез    = 1;
    КонецЕсли;
    Возврат Рез;
    
    
    
    
КонецФункции
28 Cthulhu
 
09.07.18
15:10
(26): что просил - то и получаешь.
(хинт: между "Иначе" и "Продолжить" должен быть код выборки следующей порции данных из файла)))
29 Kigo_Kigo
 
09.07.18
15:10
Файл выгрузки
#
1
1
913;14.06.18;09:29:11;11;1;253;30;5849;1;147.00;1.000;147.00;
914;14.06.18;09:29:11;175;1;253;30;3;0;0.00;3.000;0.00;
915;14.06.18;09:29:11;11;1;253;30;4511;1;172.00;1.000;172.00;
916;14.06.18;09:29:11;175;1;253;30;3;0;0.00;3.000;0.00;
917;14.06.18;09:29:11;56;1;253;30;;0;35.00;1.000;-319.00;
918;14.06.18;09:29:36;11;1;253;30;5849;1;147.00;1.000;147.00;
919;14.06.18;09:29:36;175;1;253;30;3;0;147.00;3.000;0.00;
920;14.06.18;09:29:36;40;1;253;30;;0;0.00;1.000;147.00;
921;14.06.18;09:29:36;55;1;253;30;;0;35.00;8.000;147.00;
5770;07.07.18;10:19:52;100;1;1258;30;54;1;0.00;1.000;0.00;
5771;07.07.18;10:19:57;11;1;1259;30;2037;1;115.00;2.000;230.00;
5772;07.07.18;10:19:57;175;1;1259;30;3;0;230.00;3.000;0.00;
5773;07.07.18;10:19:57;40;1;1259;30;;0;0.00;1.000;230.00;
5774;07.07.18;10:19:57;55;1;1259;30;;0;54.00;8.000;230.00;
5775;07.07.18;13:27:13;11;1;1260;30;2664;1;109.00;1.000;109.00;
5776;07.07.18;13:27:13;175;1;1260;30;3;0;109.00;3.000;0.00;
5777;07.07.18;13:27:13;40;1;1260;30;;0;0.00;1.000;109.00;
5778;07.07.18;13:27:13;55;1;1260;30;;0;54.00;8.000;109.00;
5779;07.07.18;13:27:20;11;1;1261;30;5996;2;106.00;1.000;106.00;
5780;07.07.18;13:27:20;175;1;1261;30;3;0;106.00;3.000;0.00;
5781;07.07.18;13:27:20;40;1;1261;30;;0;0.00;1.000;106.00;
5782;07.07.18;13:27:20;55;1;1261;30;;0;54.00;4.000;106.00;
5783;07.07.18;13:28:12;11;1;1262;30;1584;1;19.00;2.000;38.00;
5784;07.07.18;13:28:12;175;1;1262;30;3;0;38.00;3.000;0.00;
30 Kigo_Kigo
 
09.07.18
15:12
(28) Что я просил?
Я просил если код не равен 11 ИЛИ код не равен 56 , тогда перейти на следующую строку выборки, не так? не логично?, что вы мне тут пытаетесь доказать?
31 Kigo_Kigo
 
09.07.18
15:14
я 19 лет занимаюсь программированием и являюсь серт спецом, все всегда работало как надо, а тут бред какой то
32 Morkhe
 
09.07.18
15:16
(27) В основном цикле и во вложенном одна и та же переменная-итератор используется
33 Morkhe
 
09.07.18
15:17
(31) Никогда такого не было, и вот опять :)
34 Ненавижу 1С
 
гуру
09.07.18
15:18
(31) жалуешься или хвастаешься?
35 Cthulhu
 
09.07.18
15:19
(30): 1) просили просто тупо перейти на следующую строку - т.к. сформулированное Вами "условие" ВСЕГДА ИСТИННО ВНЕ ЗАВИСИМОСТИ ОТ ЗНАЧЕНИЯ КОДА.
2) крайне нелогично.
36 Cthulhu
 
09.07.18
15:19
(34): судя по ходу обсуждения.... хм....
37 Kigo_Kigo
 
09.07.18
15:19
(35) Напишите как логично? или так и будем воздух сотрясать?
38 Флориан
 
09.07.18
15:29
(30) а так:
Если (КодОперации <> "11") Тогда
     Продолжить;
КонецЕсли;

Если (КодОперации <> "56") Тогда
     Продолжить;
КонецЕсли;
39 Kigo_Kigo
 
09.07.18
15:31
(38) Так работать не буде, когда код операции будет = 11 цикл вылетит на 56 и наоборот
40 Cthulhu
 
09.07.18
15:33
(37): заплатите тогда по ценнику.
ВНИМАНИЕ, ОШИБКА!
Вы во внутреннем цикле (Для А=1 По 50 Цикл) - УБИВАЕТЕ (НЕКОРРЕКТНО ИЗМЕНЯЕТЕ) ПЕРЕМЕННУЮ ВНЕШНЕГО ЦИКЛА (Для А = 4 по ФайлЗагрузки.КоличествоСтрок() Цикл)
в результате ЭТОГО (а не вашего оператора проверки) получаете БЕСКОНЕЧНЫЙ ЦИКЛ.
=======
и ЭТО - В ДОПОЛНЕНИЕ к тому, что ВАШЕ УСЛОВИЕ НАПИСАНО НЕКОРРЕКТНО И ВСЕГДА БУДЕТ ИСТИННО (и будет улетать на "продолжить")
-------
блин, 19 лет программирования и (оооо!!!!) сер.ти.фи.кат! мамуегоналево
41 НеБорис Нуралиев
 
09.07.18
15:33
(32) + 1
42 uno-group
 
09.07.18
15:33
Сп=СоздатьОбъект("СписокЗначений");
ТекСтрока=СтрЗаменить(ТекСтрока,";",""",""");
Сп.ИзСтрокиСРазделителями(ТекСтрока);
И потом юзать Сп.ПолучитьЗначение(1); с и т.д.
Вместо постояного поиска и обрезания за 19 лет так и не научился.
43 uno-group
 
09.07.18
15:34
Условие        Если КодОперации = "11"  Тогда
            СчетчикЦикла = 0;
            Код=КодТовара;
            Для СчетчикЦикла = СтрДлина(Код) по Метаданные.Справочник("Номенклатура").ДлинаКода-1 Цикл
                Код="0"+Код;
            КонецЦикла;
            Если СпрТовары.НайтиПоКоду(Код, 0) = 0 Тогда                        
                Сообщить("Товар со кодом " + Код + " не найден!");
            Иначе
                ТаблРеквизитов.НоваяСтрока();
                ТаблРеквизитов.Товар        = СпрТовары.ТекущийЭлемент();
                ТаблРеквизитов.Единица        = СпрТовары.БазоваяЕдиница;
                ТаблРеквизитов.Количество    = з_Количество;
                ТаблРеквизитов.Сумма        = з_Сумма;
                //                        ТаблРеквизитов.Цена            = ДанныеИзККМ.Цена;

                ТаблРеквизитов.Цена            = ?(з_Количество<=1,з_Сумма,з_Сумма/з_Количество);
            КонецЕсли;
никогда не выполниться так как ты его обрезал по услдовию в сабже
44 Salimbek
 
09.07.18
15:34
(40) +1
45 Kigo_Kigo
 
09.07.18
15:42
(40)
(32) Спасибо, я понял свою ошибку
46 Cthulhu
 
09.07.18
15:43
прим.: а вообще... пытаться возврат - если он не копейка-в-копейку относится к последней продаже (в последней строке таблицы продаж)... тупо рассовывать на первые попавшиеся (с 1-й строки таблицы продаж по 50-ю) - причем рассовывать даже не проверяя на непревышение суммы отменяемой продажи ("Если з_Сумма <> ТаблРеквизитов.Сумма Тогда" вместо более логичного "Если з_Сумма >= ТаблРеквизитов.Сумма Тогда")... это очень сертифицировано ящитаю...
47 Kigo_Kigo
 
09.07.18
15:44
(46) Все работает как надо
48 Kigo_Kigo
 
09.07.18
15:48
+ там сумма, либо равна(отменили одну позицию) либо нет, отменили чек с несколькими позициями, признаков отмены не передаеться, только можем судить по отрицательном итоге чека, а в машинке все четко, и никаких но там быть не может
49 Масянька
 
09.07.18
15:50
(31) " а тут бред какой то" - всё, что касается дебильнутых касс (я не могу назвать по-другому!) - БРЕД...
50 Cthulhu
 
09.07.18
15:50
(47): извините, но вы, похоже, просто не знаете "как надо".
элементарная логика подсказывает, что более правильным будет проверять код проданного товара для отмены (если он указан в отмене) - или (если код товара для отмены не указан) не от 1-й по 50-ю строку продаж, а наоборот - с конца таблицы продаж начиная и к началу. и проверяя на непревышение суммы удаляемой строки над остатком суммы отмены продажи...
а если там хронология не строгая и сумма отмены обезличено-итоговая (без кода товара) - так и вообще получается довольно непростая комбинаторная задача "рюкзака".
хотя - ну куда это я несертифицированный лезу учить.. малчумалчу.
51 Duke1C
 
09.07.18
20:42
+50
Ну в свете (31) код из (27) это ... я промолчу на ночь глядя
(42) правильно начал подсказывать, только СписокЗначений тут нафик не нужен:

Для А = 4 по ФайлЗагрузки.КоличествоСтрок() Цикл
        Состояние("Загрузили :" + А + " Строк");
        СтрокаИзФайла = СокрЛП(ФайлЗагрузки.ПолучитьСтроку(А));
        Если ПустаяСтрока(СокрЛП(СтрокаИзФайла)) = 1 Тогда
            Продолжить;
        КонецЕсли;
        СтрокаИзФайла = СтрЗаменить(СтрокаИзФайла,";",РазделительСтрок);
        НомерСтрокиОперации=СтрПолучитьСтроку(СтрокаИзФайла,1);
        ДатаОперации=СтрПолучитьСтроку(СтрокаИзФайла,2);

Ну и так далее
52 Kigo_Kigo
 
09.07.18
22:09
(50) (51) Свои кода комментируйте, гении кода мля, свои я сам как нить, я просил найти ошибку мне ее нашли, вопросы?
кто как реализует впорос десятиый, работает не трож
53 PR
 
09.07.18
23:38
(52) У меня вопрос
Ты в школе-то учился?
54 Kigo_Kigo
 
10.07.18
10:54
(53) нет
55 Duke1C
 
10.07.18
20:55
(52) Ну, как бы, ничего личного... И слюной брызгать не надо
Просто вы, батенька, в своей портянке копипастного кода заблудились, вот сразу ошибку и не заметили.

И если бы сразу его "вывалили", то глядишь и постов было бы меньше. Принцип - "работает, не трожь" - это конечно святое, и если он для одноразового употребления, то, как говорится - и так сойдёт, но на нормальные "указания" (подсказки) надо реагировать всё же попроще, опять же ИМХО.

Еще раз повторюсь, я не стреляю в пианиста - пусть играет как умеет, просто хотелось дать действенный совет, и судя по моим постам, так оно и было