Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 07:17

Проверка существования/заполнения колонки табличного документа?

Автор |R|U|D|E|N, 05 апр 2011, 13:37

0 Пользователей и 1 гость просматривают эту тему.

|R|U|D|E|N

Добрый день.

У меня есть документ. В этом документе есть табличная часть. В этой табличной части есть колонка Тип "Число". Это число мне необходимо проводить по регистрам. Так вот когда у меня эта калонка заполненна то все ок. А когда табличная часть вообще пустая(не созданна не одна строка, ну и колонка соответственно)то при проведении вылазит "Значение не является значением объектного типа".

Я хочу чтоб, в случае если не одна строка  в тобличной части не созданна то в регистр заносился "0". А если созданна, то соответственно то что там указанно.

Вот один из пробуемых вариантов:

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


Подскажите пож. как должно быть т.к не выходит у меня...

cska-fanat-kz

Если ТЧ пустая то в цикл Для Каждого мы не попадаем.

Заключите цикл в условие Если ВыполненныеРаботы.Количество()>0 Тогда

и в Иначе напишите

Движение = Движения.ПрибыльСВнутреннихРабот.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Сотрудник = Подрядчикисполнителя;
Движение.СтоимостьРабот = 0;
Движение.СтоимостьМатериалов = 0;
Движение.Контрагент = Заказчик;


Пока копировал Ваш код заметил...
Так у вас 2 ТЧ? Про какую тогда идет речь?
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

|R|U|D|E|N

Все мужчины! Принцип понял. Все получилось :D

Вот мой код:

Движения.ПрибыльСВнутреннихРабот.Записывать = Истина;
   Для Каждого ТекСтрокаВыполненныеРаботы Из ВыполненныеРаботы Цикл
      // регистр ПрибыльСВнутреннихРабот Приход
      Движение = Движения.ПрибыльСВнутреннихРабот.Добавить();
      Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
      Движение.Период = Дата;
      Движение.Сотрудник = Подрядчикисполнителя;
      Движение.СтоимостьРабот = ТекСтрокаВыполненныеРаботы.Стоимость;
      //Вот Та строчка которая мне и была нужна!
      Если ИспользованныеМатериалы.Количество() > 0 Тогда
         Движение.СтоимостьМатериалов = ТекСтрокаИспользованныеМатериалы.Сумма;
      Иначе
         Движение.СтоимостьМатериалов = 0;
      КонецЕсли;
      Движение.Контрагент = Заказчик;
   КонецЦикла;

Спасибо Вам за реакцию. Практически как в живую у специалиста спросил :ooifh:

cska-fanat-kz

Вот это подозрительно

ТекСтрокаИспользованныеМатериалы.Сумма;

нигде не заметил где бы ТекСтрокаИспользованныеМатериалы что нибудь присваивалось...

Например ТекСтрокаВыполненныеРаботы - это счетчик цикла...

Скорее уж как sergejK74 написал...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

|R|U|D|E|N

Я сам это заметил, только недавно) после того как хорошенько протестировал данный вариант...
действительно странно, но это работает...решил не трогать, т.к у меня пока есть более острые косяки)

cska-fanat-kz

"действительно странно, но это работает...решил не трогать"

"- Солнце утром встает?
- Да
- Проверял?
- Да
- Несколько раз проверял?
- Да
- Тогда НИЧЕГО НЕ ТРОГАЙ!!"
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск