Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблема с условием "Если Тогда"
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
Genda
Всем доброго вечера! Стоит задача перенести стажи из зик 7.7 в збу 8.2. Стажи из 7ки выгружаю в файл дбф. Проблема заключается в выгрузке стажей за выслугу лет, т.к. они указываются при вводе документа "ввод начисления сотрудника" за надбавку за выслугу лет. Часть кода:
ВыборкаИзСпр=СоздатьОбъект("Справочник.Сотрудники"); 
ВыборкаД=СоздатьОбъект("Документ.НачисленияУдержанияСотрудника");
ВыборкаИзСпр.ВыбратьЭлементы();
    
Пока ВыборкаИзСпр.ПолучитьЭлемент()=1 Цикл
      Если(ВыборкаИзСпр.ЭтоГруппа()<>1)и(ВыборкаИзСпр.ПометкаУдаления()<>1) тогда
        ФайлВыгрузки1.Добавить();
        ФайлВыгрузки1.FIO=ВыборкаИзСпр.Наименование;
        ФайлВыгрузки1.OST=ВыборкаИзСпр.СтажОбщий;
        ФайлВыгрузки1.NS=ВыборкаИзСпр.СтажНепрерывный;
        ФайлВыгрузки1.BS=ВыборкаИзСпр.СтажСтраховой;
        ФайлВыгрузки1.Записать();
        
            ВыборкаД.ВыбратьДокументы();
        Пока ВыборкаД.ПолучитьДокумент()=1 Цикл  
            Если (СокрЛП(ВыборкаД.Сотрудник.Наименование)=СокрЛП(ВыборкаИзСпр.Наименование)) Тогда
                Если (ВыборкаД.Расчет=ВидРасчета.НадбавкаЗаВыслугуЛет) Тогда
                    ФайлВыгрузки1.DNL=ВыборкаД.ДатаДок;
                    ФайлВыгрузки1.SNL=ВыборкаД.Стаж;
                    ФайлВыгрузки1.Записать();
                КонецЕсли;
            КонецЕсли;
        КонецЦикла;
             КонецЕсли;
КонецЦикла;


В данном коде в выборке документов не отрабатывает условие для выбора вида расчета:
Если (ВыборкаД.Расчет=ВидРасчета.НадбавкаЗаВыслугуЛет) Тогда


В отладчике смотрела, даже при визуально одинаковых ВыборкаД.Расчет и ВидРасчета.НадбавкаЗаВыслугуЛет внутрь условия не заходит. Подскажите, пожалуйста в чем может быть проблема? заранее, спасибо

П.С. программист-начинающий
igmig65
Я так понимаю разговор о ЗиК? хотя уже сомневаюсь..
Во первых некорректно сравнивать сотрудника по Наименованию. Нужно сравнивать текущее значение спр.сотрудники с текущим значением реквизита Сотрудник документа.
Какая ошибка? лог покажите..Если спотыкается на этой строке, проверьте тип значения реквизита ВыборкаД.Расчет, может это справочник, а не ВидРасчета?
Genda
Цитата(igmig65 @ 08.11.12, 20:51) необходимо зарегистрироваться для просмотра ссылки
Я так понимаю разговор о ЗиК? хотя уже сомневаюсь..
Во первых некорректно сравнивать сотрудника по Наименованию. Нужно сравнивать текущее значение спр.сотрудники с текущим значением реквизита Сотрудник документа.
Какая ошибка? лог покажите..Если спотыкается на этой строке, проверьте тип значения реквизита ВыборкаД.Расчет, может это справочник, а не ВидРасчета?


То, что конфигурация-зик, я указала в самом начале;) Ошибки нет. Проблема в том,что данные по стажу выслуги лет не попадают в файл выгрузки дбф. Не заходит почему то внутрь условия. А почему я вообще не могу понять? собственно в этом и вопрос. У реквизита дока "Расчет" стоит тип Неопределенный, в комментарии написано - "Вид расчета или перечисление типы пособий". Но при выполнении обработки, если смотреть отладчиком, то реквизит ВыборкаД.Расчет принимает тип ВидРачета, и даже значения всех атрибутов совпадают с видом расчета НадбавкаЗаВыслугуЛет.
alex040269
Цитата(Genda @ 08.11.12, 16:30) необходимо зарегистрироваться для просмотра ссылки
даже при визуально одинаковых ВыборкаД.Расчет и ВидРасчета.НадбавкаЗаВыслугуЛет внутрь

Визуально одинаковые не всегда одинаковые.
Визуально одинаковые - это одинаковое преобразование в строку. Нужно обращать внимание на тип значения - ТипЗначенияСтр
ТипЗначенияСтр - Справочник, то нужно смотреть на метод Вид().
где-то так
Genda
Цитата(alex040269 @ 08.11.12, 21:05) необходимо зарегистрироваться для просмотра ссылки
Визуально одинаковые не всегда одинаковые.
Визуально одинаковые - это одинаковое преобразование в строку. Нужно обращать внимание на тип значения - ТипЗначенияСтр
ТипЗначенияСтр - Справочник, то нужно смотреть на метод Вид().
где-то так


Проверила. Функция ТипЗначенияСтр(ВыборкаД.Расчет) возвращает значение "ВидРасчета". Вообще не понимаю, почему он не приравнивает их...
igmig65
конфигурация всеравно доработана
Цитата
У реквизита дока "Расчет" стоит тип Неопределенный, в комментарии написано - "Вид расчета или перечисление типы пособий"

попробуйте сначала сравнить на тип значения, потом уже на конкретный вид расчета.
Странно, вообще пособие, любое, в зик - это уже ВидРасчета, глобальный объект, ну а тип пособия, это уже признак, свойство, зачем такие мудреные изменения было в доке делать. ВидРасчета и Перечисление в 1С совершенно разные объекты, служат совсем для разных целей.

Да и еще, сотрудник в документе реквизит шапки?
Genda
Цитата(igmig65 @ 08.11.12, 21:48) необходимо зарегистрироваться для просмотра ссылки
конфигурация всеравно доработана

попробуйте сначала сравнить на тип значения, потом уже на конкретный вид расчета.
Странно, вообще пособие, любое, в зик - это уже ВидРасчета, глобальный объект, ну а тип пособия, это уже признак, свойство, зачем такие мудреные изменения было в доке делать. ВидРасчета и Перечисление в 1С совершенно разные объекты, служат совсем для разных целей.

Да и еще, сотрудник в документе реквизит шапки?


Насчет изменений в доке- не в курсе,т.к. если делались,то до меня. Сотрудник является реквизитом шапки
igmig65
Цитата
попробуйте сначала сравнить на тип значения, потом уже на конкретный вид расчета.

Тоесть
Если ТипЗначенияСтр(ВыборкаД.Расчет) = "ВидРасчета" Тогда
Если (ВыборкаД.Расчет=ВидРасчета.НадбавкаЗаВыслугуЛет) Тогда
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.