8.х Найти строку в табличной части документа

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Sonya, 9 июн 2015.

  1. TopicStarter Overlay
    Sonya
    Offline

    Sonya Опытный в 1С

    Регистрация:
    16 окт 2008
    Сообщения:
    75
    Симпатии:
    0
    Баллы:
    26
    СтруктураДляПоиска = Новый Структура("Начисление",ПланыВидовРасчета.Начисления.Найм);
    МассивСтрок = Объект.Начисления.НайтиСтроки("СтруктураДляПоиска");
    Для в = 1 по МассивСтрок.Количество() - 1 Цикл
    ...
    КонецЦикла;

    Переменная не определена (ПланыВидовРасчета)
    СтруктураДляПоиска = Новый Структура("Начисление",<<?>>ПланыВидовРасчета.Начисления.Найм); (Проверка: Тонкий клиент)
  2. Thelearning
    Offline

    Thelearning Профессионал в 1С Команда форума

    Регистрация:
    9 сен 2010
    Сообщения:
    701
    Симпатии:
    72
    Баллы:
    54
    На клиенте нельзя так обращаться к данным. Используйте функцию "ПредопределенноеЗначение" или обрабатывайте на сервере.
  3. TopicStarter Overlay
    Sonya
    Offline

    Sonya Опытный в 1С

    Регистрация:
    16 окт 2008
    Сообщения:
    75
    Симпатии:
    0
    Баллы:
    26
    Та, а поподробнее можно объяснить как это сделать?
  4. Yuriy_Alexandrovich
    Offline

    Yuriy_Alexandrovich Профессионал в 1С Команда форума

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    есть ключик у функций и процедур - "&НаСервере" в данном случае можно и без контекста.
    Sonya нравится это.
  5. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    А зачем Вам тут кавычки
    МассивСтрок = Объект.Начисления.НайтиСтроки("СтруктураДляПоиска");

    Просто
    МассивСтрок = Объект.Начисления.НайтиСтроки(СтруктураДляПоиска);
    Sonya нравится это.
  6. Thelearning
    Offline

    Thelearning Профессионал в 1С Команда форума

    Регистрация:
    9 сен 2010
    Сообщения:
    701
    Симпатии:
    72
    Баллы:
    54
    Та все равно раньше ругается на строку. Я кстати на кавычки внимания не обратил ))))
    --- Объединение сообщений, 9 июн 2015 ---
    Все обращения к базе данных с клиента недоступны, поэтому как писали выше использовать директиву "&НаСервере" или функция "ПредопределенноеЗначение("ПланыВидовРасчета.Начисления.Найм")". Про эту функцию в СП подробно написано.
  7. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    Ну Вы просто вместо
    СтруктураДляПоиска = Новый Структура("Начисление",ПланыВидовРасчета.Начисления.Найм);
    напишите
    СтруктураДляПоиска = Новый Структура("Начисление",ПредопределенноеЗначение("ПланыВидовРасчета.Начисления.Найм"));
    --- Объединение сообщений, 9 июн 2015 ---
    Ну ну просто я посомтрел что Вы выше уже ему ответили. я просто сразу на следующий вопрос ответил :)
    Sonya нравится это.
  8. TopicStarter Overlay
    Sonya
    Offline

    Sonya Опытный в 1С

    Регистрация:
    16 окт 2008
    Сообщения:
    75
    Симпатии:
    0
    Баллы:
    26
    А как в массив и цикл этот написать чтобы вычислялись значения? Они так вычислялись но надо по найденной строке в ТЧ документа тоько чтобы считались.

    СтрокаТаблицы = Элементы.Начисления.ТекущиеДанные;
    КонстантаЭлВо=Число(22.5);
    СтрокаТаблицы.Льгота = (СтрокаТаблицы.КоличествоЭлВо/СтрокаТаблицы.Прописанных)/2;
    Если СтрокаТаблицы.Льгота > КонстантаЭлВо Тогда
    СтрокаТаблицы.Льгота = КонстантаЭлВо
    КонецЕсли;
    СтрокаТаблицы.Результат = СтрокаТаблицы.Льгота*СтрокаТаблицы.СтоимостьЭлВо;
  9. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    чет я не совсем понял следующий вопрос
  10. TopicStarter Overlay
    Sonya
    Offline

    Sonya Опытный в 1С

    Регистрация:
    16 окт 2008
    Сообщения:
    75
    Симпатии:
    0
    Баллы:
    26
    Если нашли строку найм, то считаем а+б, если нашли в ТЧ документы отопление, то счтитаем ф+б+б.
    Как то так. Вот я нашла все строки с наймом и теперь в массиве должна задать формулу для расчета строк.
  11. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    Ну вот вы получили строки
    МассивСтрок = Объект.Начисления.НайтиСтроки("СтруктураДляПоиска");

    В чем проблема потом их перебрать циклом

    Код:
    Для каждого стр из МассивСтрок Цикл
    
    стр.с=стр.а+стр.б;
    Если стр.Льгота Тогда
    
    Конецесли;
    
    КонецЦикла;
    что то вроде этого

Поделиться этой страницей