Как выгрузить колонку таблицы значений в массив в 1с

Обновлено: 02.07.2024

Форум

Создание таблицы значений
Таблица значений - это двумерный массив в 1С, который предназначен для хранения и обработки промежуточных данных, возникающих в процессе работы программы. Таблица значений часто применяется при программировании на 1С, потому что имеет множество полезных возможностей и работает очень быстро. Таблица значений создается в памяти и не сохраняется в базе данных, т.е. это временный набор данных.

ТабЗнач.НоваяКолонка("Номер");
ТабЗнач.НоваяКолонка("Сотрудник");
ТабЗнач.НоваяКолонка("Должность");
ТабЗнач.НоваяКолонка("Оклад");

//можно указать тип данных каждой колонки
//если тип данных колонки не указан, то можно хранить данные любого типа
Синтаксис: НоваяКолонка(<Идентификатор>, <Тип>, <Длина>, <Точность>, <Заголовок>, <Ширина>, <Формат>, <Положение>)

ТабЗнач.НоваяКолонка("Номер","Число",10,0);
ТабЗнач.НоваяКолонка("Сотрудник","Справочник.Сотрудники");
ТабЗнач.НоваяКолонка("Должность","Справочник.Должности");
ТабЗнач.НоваяКолонка("Оклад","Число",10,2);

Добавление строк в таблицу значений

ТабЗнач.НоваяСтрока();
ТабЗнач.Номер = 1;
ТабЗнач.Сотрудник = "Иванов Иван Иванович"; //следите за типом колонки!
ТабЗнач.Должность = "Программист";
ТабЗнач.Оклад = 20000;

ТабЗнач.НоваяСтрока();
ТабЗнач.Номер = 2;
ТабЗнач.Сотрудник = "Петров Петр Петрович";
ТабЗнач.Должность = "Бухгалтер";
ТабЗнач.Оклад = 10000;

//обычно строки добавляются в цикле
СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
СпрСотр.ВыбратьЭлементы();
Пока СпрСотр.ПолучитьЭлемент()=1 Цикл
. ТабЗнач.НоваяСтрока();
. ТабЗнач.Номер = СпрСотр.Код;
. ТабЗнач.Сотрудник = СпрСотр.ТекущийЭлемент(); //следите за типом колонки!
. ТабЗнач.Должность = СпрСотр.Должность;
. ТабЗнач.Оклад = СпрСотр.Оклад;
КонецЦикла;

Перебор строк таблицы значений

ТабЗнач.ВыбратьСтроки();
Пока ТабЗнач.ПолучитьСтроку()=1 Цикл
. Сообщить(ТабЗнач.Сотрудник);
КонецЦикла;

2-й способ.

Для НомерСтроки = 1 По ТабЗнач.КоличествоСтрок() Цикл
. ТабЗнач.ПолучитьСтрокуПоНомеру(НомерСтроки);
. Сообщить(ТабЗнач.Сотрудник);
КонецЦикла;

Сортировка таблицы значений

//сортировать по должности по возрастанию
ТабЗнач.Сортировать("Должность+");

//сортировать по должности по возрастанию, а внутри должности по убыванию оклада
ТабЗнач.Сортировать("Должность+,Оклад-");

Поиск в таблице значений

Синтаксис: НайтиЗначение(<Знач>,<Строка>,<Колонка>)
Возвращает число: 0 - значение не найдено; 1 - значение найдено
Если указан параметр <Строка>, то поиск производится только по заданной строке
Если указан параметр <Колонка>, то поиск производится только по заданной колонке

номстр = 0;
Если ТабЗнач.НайтиЗначение (10000, номстр, "Оклад") = 1 Тогда
. ТабЗнач.ПолучитьСтрокуПоНомеру(номстр);
. Сообщить(ТабЗнач.Сотрудник);
КонецЕсли;

Итоги и группировка таблицы значений

//получить итог по колонке можно методом Итог
ВсеОклады = ТабЗнач.Итог("Оклад")

//часто требуется группировать строки и подсчитывать итоги по группам,
//в этом случае применяется метод Свернуть

//проссумировать оклады по каждой должности
ТабЗнач.Свернуть("Должность","Оклад");

//Можно группировать и суммировать сразу по нескольким колонкам
ТабЗнач.Свернуть("Категория, Должность","Оклад,Налог");

Удаление строк и колонок из таблицы значений

ТабЗнач.Очистить(); //очистить таблицу значений и удалить колонки

ТабЗнач.УдалитьСтроки(); //удаляет все строки (колонки сохраняются)

ТабЗнач.УдалитьСтроку(); //удаляет текущую строку
ТабЗнач.УдалитьСтроку(3); //удаляет 3-ю строку

ТабЗнач.УдалитьКолонку("Оклад"); //удаляет колонку Оклад
ТабЗнач.УдалитьКолонку(2); //удаляет 2-ю колонку

ВНИМАНИЕ
Часто требуется удалить строки, удовлетворяющие определенному условию.
Так как при удалении строки из таблицы значений следующая строка становится текущей,
то указанная ниже программа может удалить НЕ ВСЕ необходимые строки.

//ЭТА ПРОГРАММА НЕПРАВИЛЬНАЯ .
ТабЗнач.ВыбратьСтроки();
Пока ТабЗнач.ПолучитьСтроку()=1 Цикл
. Если <условие> Тогда
. ТабЗнач.УдалитьСтроку(); //следующая строка стала текущей,
. КонецЕсли;
КонецЦикла;

В этом случае я рекомендую использовать следующий прием:

ТабЗнач.ВыбратьСтроки();
Пока ТабЗнач.ПолучитьСтроку()=1 Цикл

начало:
. Если <условие> Тогда
. ТабЗнач.УдалитьСтроку(); //следующая строка стала текущей
. Если ТабЗнач.НомерСтроки<>0 Тогда
. Перейти

начало;
. КонецЕсли;
. КонецЕсли;
КонецЦикла;

А вот еще один правильный алгоритм, предложенный Wlad:

ТабЗнач.выбратьстроки();
Пока ТабЗнач.ПолучитьСтроку()=1 Цикл
. Пока (<условие>) и (ТабЗнач.НомерСтроки<>0) Цикл
. ТабЗнач.УдалитьСтроку(); //следующая строка стала текущей
. КонецЦикла;
КонецЦикла;

Таблица значений как элемент диалога
Таблица значений может использоваться в экранных формах как элемент диалога с пользователем.

//установить курсор на указанную колонку или можно узнать, где находится курсор
ТабЗнач.ТекущаяКолонка(НоваяКолонка,ТекКолонка);

//установить курсор на указанную строку или можно узнать, где находится курсор.
ТекСтрока = ТабЗнач.ТекущаяСтрока(НовСтрока);

ТабЗнач.ВидимостьКолонки("Оклад",0); //скрыть колонку Оклад
ТабЗнач.ВидимостьКолонки("Должность, Сотрудник",1); //показать колонки Должность и Сотрудник
ТабЗнач.ВидимостьКолонки("Оклад",1,1); //показать колонку Оклад в 1-й позиции

//можно зафиксировать верхние строки и левые колонки для удобства прокрутки таблицы значений в диалоге
ТабЗнач.Фиксировать(КолСтрок,КолКолонок);

Методы УстановитьЗначение и ПолучитьЗначение
Эти методы позволяют обращаться к данным в таблице значений для чтения и записи.
Они могут пригодиться в особых случаях при написании универсальных программ (мастеры отчетов и т.д.).

Синтаксис: УстановитьЗначение(<Строка>,<Колонка>,<Знач>)
Синтаксис: ПолучитьЗначение(<Строка>,<Колонка>)

ТабЗнач.НоваяСтрока();
ТабЗнач.УстановитьЗначение(1,"Номер",100);
ТабЗнач.УстановитьЗначение(1,"Сотрудник","Иванов Иван Иванович");
ТабЗнач.УстановитьЗначение(1,3,10000); //обращение к 1-й строке и 3-й колонке ("Оклад")

Номер = ТабЗнач.ПолучитьЗначение(1,"Номер");
ФИО = ТабЗнач.ПолучитьЗначение(1,"Сотрудник");
Оклад = ТабЗнач.ПолучитьЗначение(1,3); //обращение к 1-й строке и 3-й колонке "Оклад"

Выгрузка таблицы значений

//выгрузить 10 сотрудников с наибольшими окладами в новую таблицу значений
ТабЗнач.Сортировать("Оклад-");
ТабЗнач.Выгрузить(НоваяТабЗнач,1,10,"Сотрудник,Оклад");


Пересечения строк и колонок образуют ячейки, в которых содержатся значения. Тип значения определяется типом значения колонки.

Таблица значений является полностью динамическим объектом, т.е. Вы можете манипулировать не только строками таблицы, добавляя и удаляя их, но и колонками.

Создание таблицы значений

Как и большинство объектов встроенного языка, новая таблица значений может быть создана с помощью оператора Новый :

Колонки таблицы значений

Прежде чем начать работу с таблицей значений, необходимо создать структуру колонок. Каждая колонка характеризуется следующими свойствами:

Доступ к колонкам производится через свойство Колонки объекта ТаблицаЗначений . Для добавления новой колонки используется метод Добавить():

Для того, чтобы определить наличие колонки с нужным именем используется метод Найти():

Перебор колонок выполняется следующим образом:

Для удаления колонки используется метод Удалить():

Свойства колонки таблицы значений

Имя Тип Описание
Имя Строка символьный идентификатор колонки, по которому к ней можно обращаться из кода
Заголовок Строка строковое представление колонки на форме
ТипЗначения ОписаниеТипов свойство органичивает пространство доступных значений, которые можно указать в данной колонке
Ширина Число ширина колонки на форме (выражается в количестве символов)

Методы коллекции колонок таблицы значений

Вставить() Вставляет новую колонку в указанную позицию коллекции
Добавить() Добавляет новую колонку в конец коллекции
Количество() Возвращает количество колонок в коллекции
Найти() Ищет колонку в коллекции по имени
Очистить() Удаляет все колонки из коллекции
Сдвинуть() Сдвигает колонку влево или вправо
Удалить() Удаляет колонку из коллекции

Строки таблицы значений

С колонками разобрались. Давайте теперь разберемся со строками. Строки таблицы значений можно программно добавлять и удалять, перемещать и сортировать, а также выполнять операции поиска и отбора.

Добавление и удаление строк

Для добавления новой строки используется метод Добавить() объекта ТаблицаЗначений . Метод возвращает объект СтрокаТаблицыЗначений , с которым доступны дальнейшие манипуляции:

И только теперь мы можем заполнить строку данными. Для этого обращаемся к ячейкам строки, указывая идентификаторы колонок через точку:

Обратите внимание, что каждая СтрокаТаблицыЗначений ссылается на таблицу значений с помощью метода Владелец():

Для удаления строки используется метод Удалить() объекта ТаблицаЗначений . Строку можно удалить либо передав методу непосредственно строку, либо ее индекс:

Перебор строк таблицы значений

Для перебора строк удобнее всего использовать оператор цикла Для Каждого . В редких случаях оправдано применение цикла Для :

Поиск строк

Все методы таблицы значений:

Вставить() Вставляет строку на указанное место
ВыбратьСтроку() Позволяет интерактивно выбрать строку в диалоговом окне
ВыгрузитьКолонку() Выгружает значения ячеек указанной колонки в массив значений
Добавить() Добавлет новую строку в таблицу значений
ЗагрузитьКолонку() Загружает значения в ячейки указанной колонки из массива
ЗаполнитьЗначения() Заполняет ячейки указанных колонок определенным значением
Индекс() Возвращает индекс строки таблицы значений
Итог() Возвращает просуммированный итог по колонке таблицы значений
Количество() Возвращает количество строк в таблице значений
Найти() Выполняет поиск строки по значению
НайтиСтроки() Выполняет поиск строк по указанным параметрам
Очистить() Очищает строки таблицы значений
Получить() Возвращает строку по ее индексу
Свернуть() Выполняет сжатие строк и колонок таблицы значений
Сдвинуть() Сдвигает строку вверх или вниз по таблице
Скопировать() Создает новую таблицу значений копированием текущей
СкопироватьКолонки() Создает новую пустую таблицу значений путем копирования колонок текущей таблицы
Сортировать() Выполняет сортировку строк таблицы значений по указанным колонкам
Удалить() Удаляет строку таблицы значений

Иерархию свойств и типов значений, связанных с таблицей значений, схематически можно представить в виде дерева:

Всем привет. Может быть для большинства это покажется банально, но я для себя недавно открыл новую функцию преобразования таблицы значений в массив структур без перебора коллекции колонок для каждой строки строки таблицы. Вот как выглядит стандартное решение, которое в большинстве случаев есть в интернете и на самом Инфостарте:

А вот более аккуратное и красивое решение этой задачи:

Преимущество очевидно. И хотя это решение присутствует в типовых конфигурациях, я мало где видел что бы его использовали вне разработки типовых решений.

Всем удачи. Может, кому пригодится.

Специальные предложения

Electronic Software Distribution

Интеграция 1С с системой Меркурий

Алкогольная декларация

Готовые переносы данных

54-ФЗ

Управление проектом на Инфостарте

Траектория обучения 1С-разработчика

Определённые преимущества и даже быстродействие таки есть. (1)откуда быстродействие? 1С сама себя подхлестывать стала? На доли секунды увеличите производительность если уберете условие НужнаЗапятая:
(2)это если только "секунды" измеряются во вращениях электрона вокруг протона )) getnight; maksa2005; BigB; Evg-Lylyk; PowerBoy; oleganatolievich; GG_Dots; + 7 – Ответить Да, как вариант собрать колонки таблицы значений в массив и через "СтрСоединить" закинуть их в строку. + Открытие века. Просто прям без комментариев. интересно, теперь каждый новичок, открывший для себя нечто офигительное, что на самом деле сто лет как общеизвестно и относится к базовым навыкам, будет теперь радостно постить на ИС? Типа личный дневничок? Так, что ли? Вообще не понимаю, куда смотрят модераторы и какова ценность подобных, кхм, "публикаций". ktb; ojiojiowka; AlexO; SerVer1C; BigB; ershuevD; wowik; oleganatolievich; + 8 – 4 Ответить

(5)Скажи спасибо что я не сделал обработку за 1 стартмани, которую ты бы купил. На инфостарте сидят не только такие гуру 1с - как ты. Иначе бы от силы здесь было бы только 100 человек, среди которых ты бы и писал такие обработки.

Эта информация не несет никакой коммерческой цели - и если это пропустили модераторы, значит все соответствует правилам. А ты просто очередной нытик, который всем не доволен.

Давай на инфостарте оставим только супер разработки, и я уверен что посещаемость его в разу понизится, что не выгодно владельцам сайта. Как раз такие посты и несут большую часть трафика на сайт.

likov2001; lsnr; user717534; user785225; Santa1; KoC_one; Flok; ДимокШ; jaroslav.h; Anchoret; Ivanov_OM; pavlov_dv; 1serger; json; + 14 – 1 Ответить (7) Давай тогда так. Инфостарт, по крайней мере когда я сюда пришёл, позиционировался как сообщество профессионалов. Которые делают серьёзные вещи и публикуют их. А не как песочница для начинающих ламеров и нубов, уронивших планку настолько ниже плинтуса, что 1С-ников за программистов не считают. Ты - именно такой "пионэр". Это не публикация, а детский восторг, что баночка с пюре открывается, если крышечку покрутить. И если ты не заметил, то моя претензия касалась позиционирования ИС в наше время, когда в погоне за "трафиком на сайт" сюда пришли те, для кого "Сообщить("Привет, мир");" уже открытие. А ты перешёл на личности. Следовательно, ты не просто начинающий ламер, а ещё и хамло. Klainor; FatPanzer; ktb; ojiojiowka; AlexO; maksa2005; Anchoret; SerVer1C; BigB; ershuevD; wowik; oleganatolievich; + 12 – 4 Ответить

(8)Согласен - я нахамил тебе лично, сказав что ты "нытик"! Может быть я не прав. Именно так и делают, те, кто ноет что инфстарт уже не тот, а раньше было и лучше и т.д. Может это и так - но ныть об этом не стоит. Ничего от этого не изменится.

Но ты не далеко от меня ушел - если судишь о моих достижениях в 1с, только по одному посту. Это тоже говорит о недалеком твоем разуме.

Ну ладно, в любом случае не хотел тебя задеть. Хорошего дня!

(10) Принято. А насчёт "судишь" - каков наезд, такова ответка.

Достижения? Ну давай тогда, расскажи мне об особенностях работы "ЗаполнитьЗначенияСвойств", т.к. их дофига.

(12) Ну ты просто по одному моему посту решил, что я "ламер". Ладно то что я хам - это ты сделал правильный вывод. Теперь пытаешься мериться знаниями по особенностями процедур и функций? Я думал мы закрыли эту тему.

Это ни к чему не приведет, как минимум к хорошему.

(20) ну я сам тот ещё хам, не спорю, но. Я не "меряюсь", я предлагаю привнести полезность в эту, мягко говоря, не очень содержательную публикацию.

(21) Если честно я думал о том, что бы не включать комментарии при оформлении этой статьи - ну отхватила бы статья пару сотен минусов и все. Но комментарии оказывается крутая штука).

"Особенности - ЗаполнитьЗначенияСвойств" - уверен если сделать такую публикацию, то найдется так же пул людей, которые напишут что это очередной бред из БСП и будут предлогать внести полезность в неё).

(25) ну вот не надо про "бред из БСП", там в комментарии, процитированном коллегой из БСП, даже оговорено, чего НЕ стоит пихать в ЗаполнитьЗначенияСвойств. А вообще штука это неоднозначная, и многие юзают её, не вполне понимая подводные камни. Если бы у меня было время, написал бы. Как я тогда проспорил и вынужден был написать про баян-баянистый, про таблицу значений))) (28) перестань комментарии свои "содержительные" писать и сможешь собрать время на статью по ЗаполнитьЗначенияСвойств. Как ты задолбал своим поносом. Вот же наглая самоуверенная сущность.

ахахаха!
модуль ОбщегоНазначения в ERP:

даже названия переменных те же.

e-9; fixin; ktb; Xershi; ojiojiowka; Albert_2008; BigB; ershuevD; wowik; 1serger; Yashazz; + 11 – Ответить (9) Что не так? я же написал, что функция из типовых конфигураций? Код 1с вызывает у тебя смех? (11) тебе (. ) больше постить нечего, кроме как куска типовых? это и вызывает смех. (11) плюс еще посмотри как красиво код написан?
Зачем было уродовать его заменой названий переменных?

Код 1С-центральной. а равно и Раруса, уже давно вызывает истерический смех. Они собственные стандарты даже близко не соблюдают.

А что касается публикации, то - не сочтите за наезд, но ещё в 20-лохматом году это было методической рекомендацией разработчикам, лежавшей на сайте ИТС. Так что как бы не припахали плагиат, часом)

(14) С чего все решили, что я выложил это как свою разработку).
Нигде об этом не сказано. В интернете везде лежит типовое решение через перебор колонок для каждой строки. Я решил выложить решение немного оптимальнее, которое нашел у себя в типовой конфигурации. Я уверен что наличие этого решения на этом сайта - увеличит грамотность интернет-населения по 1с.

Давайте, я изменю название функции и переменные, плюс поменяю местами их. Так всем будет лучше?:)

(16) Да с того, что это принцип публикации на ИС)))

не, ну если с позавчера разрешено постить куски кода типовых конфиг, или материалы ИТС, наплевав на авторские права 1С, то чур я первый, мне есть что выложить)

(17)Материалы с ИТС давно постят. Особенно по внедрению БСП. (18) ничего плохого в этом не вижу. За счет этого инфостарт и набирает популярность! И в выдаче в поисковиках их вес увеличивается. Для сайта одни плюсы!

(17) Да я тебе даже плюсану - если смогу это использовать в своих решениях.

Когда программисту нужно что-то сделать, то 90 процентов никогда не полезут смотреть ни типовые решения в конфигурациях, ни в БСП, ни в справку. Они идут в яндекс - и там первая ссылка это никогда не сайт итс с идеальным решением, а куча сайтов и форумов, в том числе которых инфостарт. И даже на нем, не всегда эстетичные решения предоставлены.

Кстати, все другие способы преобразовать таблицу в массив, не связанные с тупым циклом, оказались более времязатратными. В своё время делал xml-сериализацию с обработкой текста (и регулярками, и просто "СтрЗаменить", и через xslt), и увы, всё это думает дольше, иногда в разы дольше, нежели простой перебор по строкам. Печаль) (15) xslt преобразования используются в типовых. прикольная тема.
кстати, как-то замерял скорость сериализации через значениевстрокувнутр, json, xml.
по скорости получилось
значениевстрокувнутр < json (несильный отрыв) < xml (отрыв почти в 1,5 раза) (19) Да, да. Тоже играл с этим. Ничего хорошего не вышло. Обратная десериализация жрёт очень много времени. В своё время делал xml-сериализацию с обработкой текста обработка текста в 1С вообще ниже 0. Т.е. ты еще и должен остаешься. (15) Если гнаться за быстродействием, то выгрузка ТЗ в Структуру массивов будет явно быстрее и меньше по объему. Автор зарабатывает на комментариях ;) плюс ему в копилку)
(91) наиболее близкое к идеалу решение
П.С. вроде как кто-то из местных выяснил, что цикл, расположенный в одну строку, на больших объёмах даёт некоторое преимущество
(22) Это из тех дремучих времён, когда СтрСоединить ещё не было. БСП не всю актуализируют. А некоторые из неё выдирают, даже не подумав, и копипастят) (24) Зря ты ввязался в эту тему с нравоучениями.
Каждый должен открыть свою Америку сам.
Все-таки ИС для тех, кого больше.

(37) да тоскливо стало просто.
Понимаешь, мы открывали свою америку сами, и не постили каждую открытую ерундовину на публичные ресурсы. Да и ресурсов таких было в разы меньше - Т1С, ИтЛанд, Миста, Кубань. Хотя на Мисте можно было задать совершенно ламерский вопрос и среди 10 наездов был один конструктивный ответ. А теперь всё превратилось в песочницу. Где можно вот так взять и запостить на уровне, далеком даже от девтрейна. И все будут радоваться.

(47) Это называется время. Мой дед говорил - вот раньше все познавали без ваших интернетов. Теперь вы говорите - вот раньше все познавали без всяких ерундовых постов и т.д. Через время я скажу - эх, грустно стало - вот раньше не было такого, что вставил флэшку в голову и все закачалось, все познавалось на форумах и т.д.

Эх, было же время. просто не надо об этом говорить везде, где тебе не нравится что-то, особенно если ничего не можешь изменить.

Кстати странно - я тут нашел очень много постов похожего содержания. Почему-то там не твоих недовольных комментов. Упустил что ли?

Эх, а еще молодежь пошла дерзкая, эх вот бы назад в "Т1С, ИтЛанд, Миста, Кубань. ". Эх, эх, эх.

Кстати странно - я тут нашел очень много постов похожего содержания. Почему-то там не твоих недовольных комментов. Упустил что ли?

Недовольные были всегда. Но не я.
Я -то считаю, что ИС на 95% - народный сайт , т.е непрофессиональный. Это его предназначение и стесняться тут нечего. Я недавно выступал на Митапе. И до меня дошло , что Доржи Цыденов , организуя региональные конференции ( митапы) , "идёт к нам , в народ". Превосходное стратегическое решение .
Конференции ИС относятся к конференциям 1С также , как народные , самодеятельные театры относятся к профессиональным.

(57) Это было адресовано "моему другу" в посте повыше, ошибся веткой) (57) Я где-то что-то упустил. В своё время в декларации ИС было написано русским по белому: "сайт профессиональных разработчиков". И когда я в лохматом году пытался опубликовать нечто, содержавшее цитаты из СП и методичек, модераторы просто это не пропустили. Вообще. И фрагменты кода из типовой порезали.
Видимо, такая избирательная "народность", ага. (77)
:) Конечно, упустил.
:) Там русским по-белому , а я тебе черным по -русскому пишу. (22) Согласен, СтрСоединить в на порядок быстрее работает (26)не "на порядок", а в силу того, что СтрСоединить - сразу типизированные аргументы, а в обычной строке - 1С сначала их "разбирает" по типам.
Но в итоге все жутко тормозное хоть так хоть эдак.
Обработайте строчку в миллион символов, или около того (если 1С позволит запихать - в чем я сильно сомневаюсь).
Я вот наелся обработки текста в 1С достаточно, она с обычными то нетекстовыми данными работает через пень вокруг земного шара. (70) Я тебе больше скажу, 1С и с двоичными до странного медленно работает. Казалось бы - два буфера слить, ан думает прям как над "Войной и миром". (22)
Прошу прощения, а как получить массив Колонок из Таблица значений? Циклическое добавление название колонки в массив, а мотом передать его в функцию? Чем цикл создание строки сразу будет медленней создания нового массива?

А теперь по-серьёзке давайте. 1С, между прочим, имеет к ресурсу ИС некоторое отношение, поэтому беспредельничать не стоит. И модераторам тоже хорошо бы это помнить.

Есть такая вещь в модулях 1С, процитирую:

И там есть моменты, касающиеся указания авторства, каковых я тут в явном виде не наблюдаю.

Не говоря уже о том, что публикация на ИС может приносить прибыль, и юридически всё это может трактоваться как попытка извлечения прибыли засчёт чужой интеллектуальной собственности.

(27) Тоже не прочь услышать мнение модераторов по данному вопросу.

(27) Правильно тебе написал автор, что ты нытик.
Ты можешь спорить или возмущаться, но это только только доказывает данный факт, нравится тебе это или нет.

Если сомневаешься, то можешь перечитать свои комментарии и посчитать процент нытья в них.
А потом сделать вывод.

Даже докопаться не можешь нормально.

Почитай что ты написал.
Attribution 4.0 International (CC BY 4.0)

Прочитай внимательно лицензию, прежде чем предъявлять претензии модераторам или кому-либо еще.

(34)Вы по вашей ссылке всю страницу то прочитайте, а не только первый абзац.

При обязательном соблюдении следующих условий:

«Attribution» («Атрибуция») — Вы должны обеспечить соответствующее указание авторства, предоставить ссылку на лицензию, и обозначить изменения, если таковые были сделаны. Вы можете это делать любым разумным способом, но не таким, который подразумевал бы, что лицензиар одобряет вас или ваш способ использования произведения.

(35) Ссылка на авторство предоставлена, ссылка на лицензию - нет.
Но ты для начала поди докажи, что данный код имеет отношение к той лицензии, которую предоставил этот "умник".

Просто попытка докопаться на ровном месте.

Там кстати есть еще замечание, дочитай до конца лицензию.

(36) Замечание читал, но что считать общественным достоянием я хз)) или если такое использование вами материала разрешено согласно применимому исключению или ограничению авторских прав Корпорация Creative Commons ("Creative Commons") не является юридической фирмой, не оказывает юридических услуг или консультаций. Распространение публичных лицензий Creative Commons не порождает отношений, аналогичных отношениям между юристом и клиентом, или каких-либо иных отношений. Creative Commons предоставляет доступ к своим лицензиям и всей сопутствующей информации на основе принципа "как есть". Creative Commons не предоставляет каких-либо гарантий в отношении лицензий, любого материала, предоставляемого на условиях таких лицензий, или любой сопутствующей информации.

То есть получается, что в данном случае

Вы не обязаны действовать согласно условиям лицензии (34) Думаешь, не читал?)) Я не зря про упоминание авторства сказал. Вы должны обеспечить соответствующее указание авторства, предоставить ссылку на лицензию, и обозначить изменения, если таковые были сделаны. Вы можете это делать любым разумным способом, но не таким, который подразумевал бы, что лицензиар одобряет вас или ваш способ использования произведения

Теперь внимательно читай в публикации

Это ссылка на авторство и лицензию.
Да она не прямая, косвенная.
Но в лицензии сказано, что можно ссылаться любым разумным образом.

То есть упомянутая тобой лицензия не нарушается.
Лицензиар может потребовать явного указания, но ты не лицензиар, а просто нытик, который ищет до чего докопаться.

Так что лучшим для тебя решением было не пытаться раздуть из мухи слона.
Тем более, что в вопросе ты не разбираешься.

Я не докапываюсь. Я просто не хочу, чтобы с ИС произошло то, что давеча имело место с nginx. Там тоже долгое время всем было благодушно пофигу.

(42) Инфостарт - это не то место, где сидит душевная компания разработчиков и за чашкой чая обсуждает свои супер разработки, до которым начинающим программистам расти и расти. В первую очередь - это серьезный проект, на котором люди зарабатывают деньги. Посещаемость данного ресурса и его стоимость (лично мое мнение) сильно зависит от таких вот простых публикаций, которым по твоему мнению здесь не место. Но владельцы сайта, в том числе и модераторы, считают иначе.

И Если ты видишь вектор развития этого ресурса в другом направлении - то самое время связаться с владельцами сайта и рассказать им свои идеи. Может после этого они заблокируют сотни "бесполезных" публикаций и гуру 1с достанут свои чашечки для чая, и все будет как в старые добрые времена.

Чем тебе ОбщегоНазначения.ТаблицаЗначенийВМассив(ТаблицаЗначений) не угодила? (44) Название не понравилось. Решил с вот таким вот название здесь выложить.
Спасибо за конструктив. Хорошего дня.

Достаточно часто приходилось с сервера на клиент передавать данные из таблицы значений, но в голову не приходило гуглить, как это делать: однозначно в виде массива структур. Сначала писал сам, потом перешел на БСПшную функцию. Но чтобы в цикле по строкам каждый раз обходить циклом список колонок ТЗ. я хз, кому это могло в голову прийти.

З.Ы. ждем следующих статей)))
1) Как получить значения нескольких реквизитов объекта
2) Как сравнить Структуры с учетом вложенности

(50) ну у нас же импортозамещение идет, 1С становится все популярнее и растет число жаждущих получить вакансию 1Сника. И в этом направлении, и в традиционных языках программирования есть общая тенденция: народ жаждет уже готовое решение. И зачастую игнорируют готовые библиотеки. В данном конкретном случае вероятно кто-то где-то этот алгоритм нашел или на коленке написал, а радостный народ тут же растиражировал, не задумываясь: ну работает и ладно) (53) Да кто ж енту справку читает-то, по нонешним временам) Всем разжуй да в рот положи)

(53) Многое что есть на этом прекрасном сайте. Но это не говорит о том, что это нельзя выкладывать здесь. Или это какое-то негласное правило, о котором я не знаю?

Ну ладно согласен - твое мнение - это здесь не нужно , мое мнение - это здесь нужно . Каждый останется при своем мнении. Но итог один - эта публикация будет здесь, и возможно будет в выдаче поисковиков в топе. :) И на данной момент - плюсов больше, чем минусов)

(55) К вопросу о количестве плюсов, минусов, поощрении тупизма и прочая.

Одна гетера сказала Аристотелю: "вот ты годами учишь мальчишек, но стоит мне поманить их пальцем, и они побегут за мной, забыв тебя". Он ответил: "так ведь тебе проще - я веду их вверх, а ты вниз".


// Поиск строки в Таблице значений - найдём строчку с яблоком и покажем его цвет
СтрокаПоиска = ТЗ . Найти ( "Помидор" );
Если СтрокаПоиска <> Неопределено Тогда
Сообщить ( СтрокаПоиска . Цвет ); // Красный
КонецЕсли;

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

// Добавляем ещё один красный овощь Перец, Вариант №1
Стр = ТЗ . Добавить ();
Стр . Овощь = "Перец" ;
Стр . Цвет = "Красный" ;
Стр . Вкус = "Сладкий" ;
Стр . ВесОвоща = 120 ;
// Добавляем ещё один красный овощь Перец, Вариант №2
Стр = ТЗ . Добавить ();
Стр [ "Овощь" ] = "Перец" ;
Стр [ "Цвет" ] = "Красный" ;
Стр [ "Вкус" ] = "Сладкий" ;
Стр [ "ВесОвоща" ] = 120 ;

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

// Сдвигаем первую строку Таблицы Значений на одну позицию вперёд
ТЗ . Сдвинуть ( 0 , 1 );

// Возвращаем обратно строку Таблицы Значений
ТЗ . Сдвинуть ( 1 , - 1 );

// Скопировать (выгрузить) табличную часть документа/справочника/. в Таблицу Значений
ТЗ = ТабличнаяЧастьN . Выгрузить ();

// Создаем полную копию Таблицы Значений
КопияТЗ = ТЗ . Скопировать ();

// Создаем копию таблицы значений по нужным колонкам - будет только две колонки Овощь и Цвет
КопияТЗ = ТЗ . СкопироватьКолонки ( "Овощь, Цвет" );

// Создаем полную копию Таблицы Значений по отбору
Отбор = Новый Структура ;
Отбор . Вставить ( "Овощь" , "Помидор" );

// Таблица Значений будет содержать только строчку с помидором
КопияТЗ = ТЗ . Скопировать ( Отбор );

// Таблица Значений будет содержать цвет и вес помидора
КопияТЗ = ТЗ . Скопировать ( Отбор , "Цвет, ВесОвоща" );

// Сворачиваем Таблицу значений по колонке "Вкус", просуммируем по весу
ТЗ . Свернуть ( "Вкус" , "ВесОвоща" );

// Отсортируем Таблицу Значений по колонке
ТЗ . Сортировать ( "ВесОвоща Возр" );

// Отсортируем Таблицу Значений по нескольким колонкам
ТЗ . Сортировать ( "ВесОвоща Возр, Вкус Убыв" );

// Удаляем строку из Таблицы Значений (по индексу или по значению)
ТЗ . Удалить ( 0 );

// Очистим (удалим) все строки из Таблицы Значений
ТЗ . Очистить ();

Читайте также: