• Что не так в коде (1С)?

    @Dementor
    программист, архитектор, аналитик
    Что не правильно?
    1) ПустаяСтрока() - функция для проверки строковой переменной на наличие значимых символов (пробелы, табуляции и прочие разделители игнорируются) - явно не преднозначено для проверки суммы итогового стажа, который будет преобразовываться к строке "0" и функция всегда будет давать результат Ложь. Если итоговый стаж - это не дни итогового стажа, а дата увольнения (с названиями вам еще работать и работать - сами себя путаете), то дата преобразовывается тоже к строковому литералу, который выдаст аналогичную Ложь. Потому содержимое внутри условия никогда не будет выполнено!

    2) Обращения вида "Объект." ссылаются на реквизиты вашего документа, а не на реквизиты строк табличной части! Вам нужно сперва узнать значение текущей строки табличной части (под курсором) и дальше работать уже с этой строкой.

    3) Что вы там пытались присвоить в двоичном формате непонятно, но явно не в тему.

    4) Предположим, что вы своими ноликами-единичками хотели обнулить дату. Тогда согласно вашей формуле вы к пустой дате добавляете сумму количество секунд от даты приема с количества секунд от даты увольнения - это где-то 4036 год получится.

    UPD. Дополнено после переписки в комментариях
    1) Что должно быть в Итого? По идее количество месяцев! Тип "Строка" тут ни к чему - количество это всегда тип "Число".
    2) На поле табличной части вам нужно добавить обработчик события ПриИзменении с примерно следующим содержимым:
    &НаКлиенте
    Процедура СтажРаботыПриИзменении(Элемент)
    	
    	РедактируемаяСтрока = Элементы.СтажРаботы.ТекущиеДанные;
    	
    	// строку могли удалить и в таблице ничего нет
    	Если РедактируемаяСтрока = Неопределено Тогда
    		Возврат;
    	КонецЕсли; 
    	
    	// обязательно делаем проверку данных!
    	Если РедактируемаяСтрока.ДатаПриема >= РедактируемаяСтрока.ДатаУвольнения Тогда
    		РедактируемаяСтрока.Итог = 0;
    		Возврат;
    	КонецЕсли; 
    	
    	// в зависимости от требуемого значения делаем расчет
    	// еще важен способ округления - к меньшему целому или к большему
    	ОтработаноСекунд = РедактируемаяСтрока.ДатаУвольнения - РедактируемаяСтрока.ДатаПриема;
    	ОтработаноЧасов = ОтработаноСекунд / 60;
    	ОтработаноДней = ОтработаноСекунд / 86400;
    	
    	// если нужно значение месяцев или лет, то используем сдвиги в цикле
    	ОкруглятьКБольшему = Истина;  // 1 день сверху дасть дополнительный 1 месяц или 1 год
    	
    	ОтработаноМесяцев = ?(ОкруглятьКБольшему, 0, -1);
    	СкользящийМесяц = РедактируемаяСтрока.ДатаПриема;
    	Пока СкользящийМесяц < РедактируемаяСтрока.ДатаУвольнения Цикл
    		ОтработаноМесяцев = ОтработаноМесяцев + 1;
    		СкользящийМесяц = ДобавитьМесяц(СкользящийМесяц, 1);
    	КонецЦикла;
    	
    	ОтработаноЛет = ?(ОкруглятьКБольшему, 0, -1);
    	СкользящийГод = РедактируемаяСтрока.ДатаПриема;
    	Пока СкользящийГод < РедактируемаяСтрока.ДатаУвольнения Цикл
    		ОтработаноЛет = ОтработаноЛет + 1;
    		СкользящийГод = ДобавитьМесяц(СкользящийГод, 12);
    	КонецЦикла;
    	
    	// выводим значение на форму
    	РедактируемаяСтрока.Итог = ОтработаноМесяцев;
    	
    КонецПроцедуры


    Но я не умерен в том, что вам нужен реквизит стажа. Возможно было бы достаточно "виртуального реквизита" (добавленого в табличную часть на форме) действительно с типом Строки, куда при открытии и изменении выводить расчетные данные в виде "10 лет, 4 мес, 17 дней".
    Ответ написан