В этой статье разберем два способа, как можно заполнить таблицу значений 1С по колонкам. Поясним, что значит заполнить таблицу по колонкам. «Заполнить по колонкам» означает, что сначала заполним какими-то значениями первую колонку, потом вторую и т.д. В первом способе реализуем простое заполнение, а во втором заполним «красиво». Суть второго способа взята из книги «Конкретная математика. Математические основы информатики» авторов Грэхем, Кнут и Паташник. Статья больше теоретическая, но поможет понять как работать с таблицами значений, если вы в начале своего пути освоения программирования в 1С.
Мы будем заполнять таблицу значений из пяти колонок, которую сделаем в качестве реквизита формы обработки.
Наша задача заполнить все колонки по порядку. На форме создан реквизит КоличествоЯчеек – именно столько ячеек у таблицы должно быть заполнено. Мы сначала заполняем одну колонку, потом вторую и так далее до пятой.
В первом способе, сразу определим количество строк таблицы, которые будут заполнены, и у каждой колонки будем заполнять это количество строк поэтапно, пока не кончится количество заданных ячеек. Получится такой результат:
Этот способ реализован следующим образом:
&НаКлиенте
Процедура ЗаполнитьОбычно(Команда)
Таблица.Очистить();
КоличестовКолонок = 5;
КоличествоСтрок = ?(Цел(КоличествоЯчеек / КоличестовКолонок) = КоличествоЯчеек / КоличестовКолонок,
КоличествоЯчеек / КоличестовКолонок,
Цел(КоличествоЯчеек / КоличестовКолонок) + 1);
Для н = 1 по КоличествоСтрок Цикл
НовСтр = Таблица.Добавить();
КонецЦикла;
яч = 1;
Пока яч <= КоличествоЯчеек Цикл
Для к = 1 по КоличестовКолонок Цикл
Для с = 0 по КоличествоСтрок — 1 Цикл
Таблица[с]["Колонка" + к] = яч;
яч = яч + 1;
Если яч > КоличествоЯчеек Тогда
Прервать;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
Здесь, мы определяем количество строк, которые будут в таблице, деля количество ячеек, которые нужно заполнить, на количество колонок. Если деление целое, то это и будет нужное количество строк, в противном же случае берем целое количество от результата деления и увеличиваем результат деления на 1.
Дальше, мы в цикле Пока по порядку, начиная с 1 перечисляем все ячейки, которые нужно заполнить, и уже внутри цикла по ячейкам делаем два вложенных цикла по таблице: в первом цикле обходим колонки таблицы, а во втором обходим строки таблицы, и поэтапно заполняем .
Во втором способе, который сделан на основе алгоритма из книги «Конкретная математика. Математические основы информатики» авторов Грэхем, Кнут и Паташник (гл. 3.4, стр. 115), мы изначально создадим пустые строки у таблицы значений (этого в каноническом алгоритме не было, просто особенность программирования в 1С), а потом для каждой колонки будем определять, сколько цифр в ней должно быть, т.е. сколько строк таблицы значений мы заполним цифрами. В результате, у нас получится более красивое заполнение таблицы.
У этого алгоритма следующая реализация:
&НаКлиенте
Процедура ЗаполнитьКрасиво(Команда)
Таблица.Очистить();
КоличестовКолонок = 5;
КоличествоСтрок = ?(Цел(КоличествоЯчеек / КоличестовКолонок) = КоличествоЯчеек / КоличестовКолонок,
КоличествоЯчеек / КоличестовКолонок,
Цел(КоличествоЯчеек / КоличестовКолонок) + 1);
//создаем пустые строки
Для н = 1 по КоличествоСтрок Цикл
НовСтр = Таблица.Добавить();
КонецЦикла;
яч = 1;
ЯчейкиЗаполнения = КоличествоЯчеек;
КолонкиЗаполнения = КоличестовКолонок;
Пока яч <= КоличествоЯчеек Цикл
Для к = 1 по КоличестовКолонок Цикл
//определяем количество строк, которые заполним
КоличествоСтрок = ?(Цел(ЯчейкиЗаполнения / КолонкиЗаполнения) = ЯчейкиЗаполнения / КолонкиЗаполнения,
ЯчейкиЗаполнения / КолонкиЗаполнения,
Цел(ЯчейкиЗаполнения / КолонкиЗаполнения) + 1);
Заполненные = 0;
Для с = 0 по КоличествоСтрок — 1 Цикл
Таблица[с]["Колонка" + к] = яч;
яч = яч + 1;
Заполненные = Заполненные + 1;
Если яч > КоличествоЯчеек Тогда
Прервать;
КонецЕсли;
КонецЦикла;
ЯчейкиЗаполнения = ЯчейкиЗаполнения — Заполненные;
КолонкиЗаполнения = КолонкиЗаполнения — 1;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
В этой реализации, мы также определяем общее количество строк, которое должно быть в таблице значений, и также делаем три вложенных цикла: в первом цикле перечисляем все ячейки по порядку, во втором цикле обходим колонки, а в третьем заполняем по строкам ячейки таблицы. Но, уже в цикле по колонкам мы каждый раз в начале цикла определяем то количество строк, которое должно быть заполнено, для этого мы уже в конце цикла по колонкам каждый раз считаем, сколько у нас ячеек осталось заполнить после обхода колонки, и сколько колонок тоже осталось заполнить. Количество строк, которые будут заполны у колонки мы определяем, получая целое количество от оставшегося количества ячеек, деленное от оставшегося количества колонок. Если деление ровное, т.е. без остатка это и будет нужное количество строк, в противном случае увеличиваем результат деления на 1.
Более подробно и основательно начальные вопросы программирования в 1С есть вы можете изучить в
Книга «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»
Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника.
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Вступайте в мои группы:
Вконтакте: https://vk.com/1c_prosto
Фейсбуке: https://www.facebook.com/groups/922972144448119/
ОК: http://ok.ru/group/52970839015518
Твиттер: https://twitter.com/signum2009