Имя: Пароль:
1C
1С v8
Внешняя обработка
0 example221
 
27.12.19
14:55
Доброго времени суток,написал обработку,она вродебы работает заказы шерстит но не выполняет свою функцию по изменению коэффициента
Помогите пожалуйста
Процедура КнопкаВыполнитьНажатие(Кнопка)
     //Защита картера ДВС с/у
    Работа = Новый СписокЗначений;         
    Работа.Добавить(Справочники.Автоработы.НайтиПоКоду("ЦБ00021506"));
    //Номер.Добавить("0,200");
        
    Запрос = Новый Запрос;
    Запрос.Текст =
                  "ВЫБРАТЬ
                  |    ЗаказНарядРаботы.Ссылка КАК Ссылка,
                  |    ЗаказНарядРаботы.Работа КАК ВидРаботы,
                  |    ЗаказНарядРаботы.Коэффициент КАК Коэффициент
                  |ИЗ
                  |    Документ.ЗаказНаряд.Работы КАК ЗаказНарядРаботы
                  |ГДЕ
                  |    ЗаказНарядРаботы.Работа В(&Работа)";
    
    Запрос.УстановитьПараметр("Работа", Работа);
    
    Результат = Запрос.Выполнить();
    
    Выборка = Результат.Выбрать();
    
    Пока Выборка.Следующий() Цикл
        Объект = Выборка.Ссылка.ПолучитьОбъект();
        Если Выборка.Коэффициент = "0,200" Тогда
            Объект.Коэффициент = "1,200";
        КонецЕсли;
        Попытка
            Объект.Записать();
            Сообщить(Выборка.Ссылка)
        Исключение
            Сообщить("НормЧасы " + Выборка.Ссылка + " не изменены.");
        КонецПопытки;
    КонецЦикла;    
КонецПроцедуры
1 Волшебник
 
модератор
27.12.19
14:56
Объект.Коэффициент = 1.2;
2 Kigo_Kigo
 
27.12.19
14:56
А где получитьОбъект?
3 Kigo_Kigo
 
27.12.19
14:57
А вижу, ссори
4 example221
 
27.12.19
14:57
(1) Не понял,что тут не так?
5 Волшебник
 
модератор
27.12.19
14:58
(4) Несоответствие типов.

сравните
Объект.Коэффициент = "1,200";

и
Объект.Коэффициент = 1.2;
6 RomanYS
 
27.12.19
14:58
(0) Читаешь ты реквизит ТЧ, а пишешь в реквизит шапки
7 Kigo_Kigo
 
27.12.19
14:58
(4) Несовпадение типов, вы в число суете строку, а она, так бывает, не преобразуется
8 dezss
 
27.12.19
14:58
(6) +1)
9 example221
 
27.12.19
14:59
(5) (6) А ип**ть щас проверю спасибо.
10 example221
 
27.12.19
15:00
{ВнешняяОбработка.ЗНВН.Форма.Форма.Форма(28,26)}: Неопознанный оператор
            Объект.Коэффициент = 1<<?>>,200; (Проверка: Толстый клиент (обычное приложение))
{ВнешняяОбработка.ЗНВН.Форма.Форма.Форма(29,3)}: Ожидается ключевое слово 'КонецЦикла' ('EndDo')
        <<?>>КонецЕсли; (Проверка: Толстый клиент (обычное приложение))
{ВнешняяОбработка.ЗНВН.Форма.Форма.Форма(36,2)}: Ожидается ключевое слово 'КонецПроцедуры' ('EndProcedure')
    <<?>>КонецЦикла;     (Проверка: Толстый клиент (обычное приложение))


выдал такую ошибку
11 example221
 
27.12.19
15:00
сорри
тупой
точка
12 Волшебник
 
модератор
27.12.19
15:00
(6) И это тоже.
13 Kigo_Kigo
 
27.12.19
15:01
(10) разделитель точка!
14 example221
 
27.12.19
15:01
(12) неа не помогло,теперь вообще обработка не каких действий не делает
15 example221
 
27.12.19
15:02
Делал подобное и оно работало как надо а щас не получается уже тильт полный

Процедура КнопкаВыполнитьНажатие(Кнопка)
    
    Номер = Новый СписокЗначений;
    Номер.Добавить("000000395");
    Номер.Добавить("000000398");    
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    КассоваяСмена.Ссылка,
        |    КассоваяСмена.Номер
        |ИЗ
        |    Документ.КассоваяСмена КАК КассоваяСмена
        |ГДЕ
        |    КассоваяСмена.Номер В(&Номер)";
    
    Запрос.УстановитьПараметр("Номер", Номер);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Объект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
        Объект.Статус = Перечисления.СтатусыКассовойСмены.Закрыта;
        Если ВыборкаДетальныеЗаписи.Номер = "000000395" Тогда
            Объект.Номер = "48";
        ИначеЕсли ВыборкаДетальныеЗаписи.Номер = "000000398" Тогда
            Объект.Номер = "258";
        КонецЕсли;
        Попытка
            Объект.Записать();
        Исключение
            Сообщить("Документ " + ВыборкаДетальныеЗаписи.Ссылка + " не записался.");
        КонецПопытки;
    КонецЦикла;

КонецПроцедуры
16 Волшебник
 
модератор
27.12.19
15:03
(14) Вам надо перестать тупить и сделать правильно.
17 RomanYS
 
27.12.19
15:03
(14) код покажи
18 example221
 
27.12.19
15:03
(6) Так всм,в шапку пишу?
19 dezss
 
27.12.19
15:03
(15) Ты, блин, что вообще делаешь?
Тебе после получения объекта надо найти нужные строки и там поменять свой коэффициент.
20 example221
 
27.12.19
15:03
(17)
Процедура КнопкаВыполнитьНажатие(Кнопка)
     //Защита картера ДВС с/у
    Работа = Новый СписокЗначений;         
    Работа.Добавить(Справочники.Автоработы.НайтиПоКоду("ЦБ00021506"));
    //Номер.Добавить("0,200");
        
    Запрос = Новый Запрос;
    Запрос.Текст =
                  "ВЫБРАТЬ
                  |    ЗаказНарядРаботы.Ссылка КАК Ссылка,
                  |    ЗаказНарядРаботы.Работа КАК ВидРаботы,
                  |    ЗаказНарядРаботы.Коэффициент КАК Коэффициент
                  |ИЗ
                  |    Документ.ЗаказНаряд.Работы КАК ЗаказНарядРаботы
                  |ГДЕ
                  |    ЗаказНарядРаботы.Работа В(&Работа)";
    
    Запрос.УстановитьПараметр("Работа", Работа);
    
    Результат = Запрос.Выполнить();
    
    Выборка = Результат.Выбрать();
    
    Пока Выборка.Следующий() Цикл
        Объект = Выборка.Ссылка.ПолучитьОбъект();
        Если Выборка.Коэффициент = "0,200" Тогда
            Объект.Коэффициент = 1.200;
        КонецЕсли;
        Попытка
            Объект.Записать();
            Сообщить(Выборка.Ссылка)
        Исключение
            Сообщить("НормЧасы " + Выборка.Ссылка + " не изменены.");
        КонецПопытки;
    КонецЦикла;    
КонецПроцедуры
21 dezss
 
27.12.19
15:04
(18) А коэффициент для сравнения берешь из таб части.
22 example221
 
27.12.19
15:04
(19) Да выбирает колонку там работа мне надо поминять в нескольких документах с помощью обработки этот коэф
23 example221
 
27.12.19
15:05
(21) беру тот копированием который дал мне запрос
24 RomanYS
 
27.12.19
15:05
(20)  
Если Выборка.Коэффициент = "0,200" Тогда//всегда ЛОЖЬ!
25 dezss
 
27.12.19
15:06
(23) который ты попросил у запроса)))
Лучше покажи структуру своего объекта и тип реквизита "Коэффициент".
26 RomanYS
 
27.12.19
15:07
(22) (23) ппц.
(16) абсолютно в точку
27 Волшебник
 
модератор
27.12.19
15:07
(24) Здесь может сработать неявное преобразование типов и результат может быть правильный. Но разумеется лучше на него не надеяться.
28 example221
 
27.12.19
15:09
(25) тип резкезита сек
29 example221
 
27.12.19
15:09
(25) Число
30 example221
 
27.12.19
15:09
Точность до 3
31 Kigo_Kigo
 
27.12.19
15:10
(27) а может и нет, вс равно сравнивать число со строкой не коррректно
Если Выборка.Коэффициент = 0.2 Тогда
32 example221
 
27.12.19
15:13
Ну люди ,пожалуйста обьясните,я  2 недели только копаюсь.
33 dezss
 
27.12.19
15:15
(32) тебе в (31) написали.
34 RomanYS
 
27.12.19
15:21
(27) НЕ может! При присваивании может (и срабатывает), а при сравнении преобразования типов не будет. Переменные разных типов не могут быть равны.
35 Волшебник
 
модератор
27.12.19
15:27
(34) Под Новый год всё возможно. ;)
36 RomanYS
 
27.12.19
15:28
(35) Принято)
37 example221
 
27.12.19
15:47
(31) он при таком действие ожидает кл слово тогда
38 example221
 
27.12.19
15:47
Опять туплю
все пробую
39 example221
 
27.12.19
15:48
Нет реакции при нажатии кнопки выполнить
40 example221
 
27.12.19
15:48
И через т Остановки тоже не видно действий
41 pechkin
 
27.12.19
15:50
юзай такую
42 pechkin
 
27.12.19
15:50
43 example221
 
27.12.19
16:30
{ВнешняяОбработка.ЗНВН.Форма.Форма.Форма(28)}: Поле объекта не обнаружено (Коэффициент)
            Объект.Коэффициент = 1.200;
начала появлятся такая ошибка
44 RomanYS
 
27.12.19
16:31
(43) прочитай (6)