8.х Таблица значений: индексация

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем MyNameNoName, 19 июл 2013.

  1. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.990
    Симпатии:
    399
    Баллы:
    104
    Конечно не мое дело. Но Вас абсолютно не смущает структура вашего регистра?
  2. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    может реально будет лучше взять тот пакет, результат отсортировать по вашей номенклатуре (ну в общем упорядочить перед выводом), затем в цикле обойти ситуацию с повторениями. Думаю условие быстрее всяко отработает, чем последовательное выполнение в цикле 12 запросов подряд

    2ТС: представьте структуру вашего регистра в студию
  3. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Все спасибо, так и сделаю. Теперь немного вроде стал понимать.

    Да, смущает, буду исправлять)))
  4. nickpugachev
    Offline

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

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    она его не может смущать - это типовой регистр УПП :) - и там реально толпа ресурсов и одно измерение. вот только пользоваться им для запросов каких-то нужных данных вне проведения документа - я бы не стал...
  5. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.990
    Симпатии:
    399
    Баллы:
    104
    Это еще и типовой регистр. Тогда даже не знаю что сказать. Мужайтесь :D
  6. nickpugachev
    Offline

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

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    ну вот я бы предложил ТС вернуться к этому вопросу и показать не код, выполняющийся хреново, а показать задачу, под которую написан этот код.
  7. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Немножко друговй вопрос. Как проверить две строки на равенство по одному значению? Следующий код не работает:
    Код:
    Для Каждого Элемент ИЗ Таблица Цикл
    Если Элемент.ЗаказНоменклатураКод = (Элемент.ЗаказНоменклатураКод + 1) Тогда    
    //код
    КонецЕсли;
    КонецЦикла;
    
    Что я не правильно написал?

    Нужно номер строки вводить, так как в принципе понятно что сравнение не корректно, а как сравнивать не могу понять.
  8. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    чисто теоретически вот это условие всегда будет ложь

    подставьте конкретное значение и увидите работу своего условия: Если 1 = 1+1 тогда... как вы думаете, сработает условие когда либо?
  9. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.990
    Симпатии:
    399
    Баллы:
    104
    Вы послушайте опытных людей. Опишите всю задачу целиком...
  10. nickpugachev
    Offline

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

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    для этого надо цикл другой использовать

    Код:
    Для Сч = 0 По Таблица.Количество()-2 Цикл
    Если Таблица[Сч].ЗаказНоменклатураКод = Таблица[Сч+1].ЗаказНоменклатураКод Тогда   
    //код
    КонецЕсли;
    КонецЦикла;
    этот цикл пройдет по строкам таблицы с первой (0) до предпоследней (Количество()-2) и сравнит значения в колонке со следующей строкой
  11. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Все, понял, создал переменную до цикла...
    Задача следующая:
    нужен аналог отчету Анализ обеспеченности заказов на производство, только чтобы считалось все корректно по аналогам, а не так как там.
    Вы меня наставили на путь, думаю разберусь.
  12. nickpugachev
    Offline

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

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    ну тогда вам дополнительно - не используйте коды номенклатуры для связей, кроме случаев, когда именно такая связь нужна - код - не уникальный идентификатор. используйте ссылки.
  13. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Не могу удалить строку
    Код:
    Таблица[Сч + 1].Строки.Удалить();
    
  14. nickpugachev
    Offline

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

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    сначала соберите все строки, которые собираетесь удалить, в отдельный массив, а потом удаляйте
    Таблица.Удалить(Строка)
  15. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Нужно скопировать две таблицы в одну. Условно говоря одна таблица имеет столбцы:
    Наименование
    Артикул
    Код
    Количество
    ДопПоле
    А вторая таблица:
    Наименование
    Артикул
    Количество
    Для копирования строк из второй таблицы в первую мне предварительно нужно будет добавить те столбцы которых нет в таблицы или они автоматически создадутся и заполнятся пустыми/нулевыми значениями?
  16. nickpugachev
    Offline

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

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    просто используйте ЗаполнитьЗначенияСвойств(СтрокаТаблицы1, СтрокаТаблицы2) - тогда в строке таблицы 1 заполнятся только те колонки, которые есть в строке таблицы 2, а остальные останутся со значениями по умолчанию
  17. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Код:
    Для Сч = 0 По Таблица2.Количество()-1 Цикл
    ЗаполнитьЗначениеСвойств(Таблица.Строки.Добавить(), Таблица2[Сч]);
    КонецЦикла;
    
    {Форма.ФормаОтчета.Форма(120)}: Поле объекта не обнаружено (Строки)
    Таблица.Строки.Добавить(Сч);
  18. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.990
    Симпатии:
    399
    Баллы:
    104
    Учитесь пользоваться синтакс-помощником.
  19. nickpugachev
    Offline

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

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    Таблица.Добавить()

    реквизит Строки есть у дерева значений, а не у таблицы значений
  20. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Просьба еще один раз помочь.
    Как лучше сравнить две таблицы значений и добавить только те строки из 2-ой таблицы в первую которых нет в первой таблицы.
    Вопрос как отобрать эти строки.

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