Функции работы с Таблицей значений(объединить, сравнить, соединить)

04.07.08

Разработка - Математика и алгоритмы

Часто встречаются задачи по работе с двумя ТЗ.
В файлике приведены 3 функции для:  Объединения, соединения и сравнения двух ТЗ по ключевому полю..  
м.б. кому-нибудь пригодится

Скачать файлы

Наименование Файл Версия Размер
-
.1215136295 6,84Kb
1060
.1215136295 6,84Kb 1060 Скачать

См. также

Валидация JSON через XDTO (включая массивы)

WEB-интеграция Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

28.08.2023    8841    YA_418728146    6    

141

Печать непроведенных документов для УТ, КА, ERP. Настройка печати по пользователям, документам и печатным формам

Пакетная печать Печатные формы Адаптация типовых решений Универсальные функции Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.

2 стартмани

22.08.2023    2077    21    progmaster    7    

3

Расширение: Быстрые отборы через буфер [Alt+C] Копировать список, [Alt+V] Вставить список, [Ctrl+C] Копировать из файлов

Инструментарий разработчика Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

Копирует в буфер значения из списков, из ячеек отчетов, таблиц, настроек списков, других отборов и вставляет в выбранную настройку отбора. Работает с Объект не найден. Работает как в одной так и между разными базами 1С. Использует комбинации [Alt+C] Копировать список, [Alt+V] Вставить список. Также для копирования данных используется стандартная [Ctrl+C] (например из открытого xls, mxl, doc и т.п. файла скопировать список наименований)

1 стартмани

13.10.2022    16150    133    sapervodichka    112    

129

Система контроля ведения учета [БСП]

Универсальные функции Механизмы типовых конфигураций БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В данном материале рассмотрим типовой алгоритм подсистемы контроля учета БСП в конфигурациях на примерах.

18.07.2022    7243    quazare    8    

109

Хитрости СКД. Часть 3

СКД Универсальные функции Платформа 1С v8.3 Система компоновки данных Конфигурации 1cv8 Бесплатно (free)

Столкнулся с тем, что мне приходится писать гору отчетов. Во многих приходится использовать повторяющиеся приемы. Решил написать шпаргалку, которая, надеюсь пригодится не только мне. В этой статье: Объединение ячеек в отчете только на определенном уровне иерархии, Постобработка итогов в табличном документе, Скрытие колонок в зависимости от количества месяцев в периоде.

28.05.2022    9298    milkers    11    

94

Модули общего назначения - готовые полезные функции и процедуры конфигураций на БСП

Универсальные функции БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В данной статье я рассматриваю несколько полезных "классических" функций и процедур для работы с данными, которые уже встроены в БСП и готовы к использованию.

25.04.2022    14988    quazare    11    

138

Несколько простых приемов для удобной работы в конфигураторе

Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Простая и удобная среда разработки 1С:Предприятия позволяет практически любому человеку начать работать под капотом 1С - в конфигураторе. Время идет, новички становятся программистами, специалистами, а об удобных приемах работы узнают годами, по ходу своего карьерного пути. А здорово было бы, если бы все знали удобные приемы в начале своего пути? Эти несколько приемов будут полезны новичкам, так как они затрагивают ту область работы, с которой приходится сталкиваться в начале карьеры.

12.11.2021    17471    acces969    95    

148
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. kitt 323 04.07.08 09:19 Сейчас в теме
Конечно пригодиться, спс
2. JohnyDeath 301 04.07.08 09:26 Сейчас в теме
Посмотрите и погоняйте ИндексированнуюТаблицу. http://www.1cpp.ru/docum/icpp/html/IndexedTable.html
Теперь там есть даже:
ВнутреннееСоединение / InnerJoin
ЛевоеСоединение / LeftJoin
ПравоеСоединение / RightJoin
ПолноеСоединение / FullJoin
;)
Vitek; n; vip; +3 Ответить
4. Sergey K 65 04.07.08 12:20 Сейчас в теме
(2)
а "ИндексированнаяТаблица" не для 1с7.7?
как создать "ИндексированнаяТаблица"? - по Вашей ссылке только описание ее возможностей..
5. JohnyDeath 301 04.07.08 13:58 Сейчас в теме
(4) Да, извиняюсь, это только для 7.7
6. Abadonna 3958 04.07.08 14:01 Сейчас в теме
(2) Жень, да забудь ты про эту семерку со всеми к ней доделками: один фиг - это тюнигованные Жигули.
Как Жигули ни тюнингуй, все равно получишь... 7.7
7. vip 04.07.08 14:12 Сейчас в теме
(6) Давай, давай забывай.
А меня 7.7 поит, кормит, с девками ложит.
И до-о-о-лго еще будет.
И тебя тоже, любитель прогресса ;))
3. German 413 04.07.08 09:37 Сейчас в теме
а временные таблицы?.. конечно не очень производительно ...но все же
8. Abadonna 3958 04.07.08 14:39 Сейчас в теме
Меня, Андрей, кормит работодатель, и мне что ... подтаскивать, что.... оттаскивать... мне ваще 1С противна.... но раз платят.
Збянтэжаны Саўка; +1 Ответить
9. Abadonna 3958 04.07.08 14:42 Сейчас в теме
Есть, конечно, и в бухгалтерии ничего себе так термины:
про водку, акт с Веркой ;)
Збянтэжаны Саўка; German; Romanius; +3 Ответить
10. newreactive 09.07.08 09:39 Сейчас в теме
11. Збянтэжаны Саўка 245 17.04.09 17:41 Сейчас в теме
Спасибо, я пока учусь на Ваших примерах профи
Сорри, за маленькие замечания новичка если они не в тему:
(мои дополнения отмечены комментами: //aga)

В ф-ии СоединениеДвухТЗПоПолю:

Функция СоединениеДвухТЗПоПолю(ТЗПриемник, ТЗИсточник,
СтрПоляПриемника,
СтрПоляИсточника,
стрПолеСоединенияП,
стрПолеСоединенияИ = Неопределено) Экспорт

Если стрПолеСоединенияИ=Неопределено Тогда
стрПолеСоединенияИ = стрПолеСоединенияП;
КонецЕсли;

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

Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ
| вТабПриемник." + стрПоляПриемника + "
|ПОМЕСТИТЬ вТабПриемник
|ИЗ &ТЗПриемник КАК вТабПриемник
|;
|//__________________________________________________________­___________


// таблица-источник
|ВЫБРАТЬ
| вТабИсточник." + стрПолеСоединенияИ + ",
| " + СтрПоляИсточника + "
|ПОМЕСТИТЬ вТабИсточник
|ИЗ &ТЗИсточник КАК вТабИсточник
|;
|//__________________________________________________________­___________

// объединяем две таблицы
|ВЫБРАТЬ
| вТабПриемник.*,
| " + СтрПоляИсточника + "
|ИЗ
| вТабПриемник КАК вТабПриемник
| ЛЕВОЕ СОЕДИНЕНИЕ вТабИсточник КАК вТабИсточник
| ПО вТабПриемник." + стрПолеСоединенияП + " = вТабИсточник." + стрПолеСоединенияИ + "
|УПОРЯДОЧИТЬ ПО
//|" + СтрПолеИсточника; //aga- ошибочка надо стрполЯисточника
|вТабПриемник." + стрПоляПриемника; // aga+. Имхо приемник главнее, так что по нему важнее сортировать, но в общем случае все же это излишне, т.к. в полученном ТЗ потом можно отсортировать выборочно и как угодно, без лишних полей из этого списка в запросе.

Запрос.УстановитьПараметр("ТЗПриемник", ТЗПриемник);
Запрос.УстановитьПараметр("ТЗИсточник", ТЗИсточник);
ТЗРез = Запрос.Выполнить().Выгрузить();

Для каждого ПустаяКолонка Из МассивПустыхКолонок Цикл
ТЗРез.Колонки.Добавить(ПустаяКолонка);
ТЗРез.ЗаполнитьЗначения(NULL,ПустаяКолонка);
КонецЦикла;

Возврат ТЗРез;
КонецФункции //СоединениеДвухТЗПоПолю

Кстати, интересная ситуация, попробовал было эту ф-ию применить два раза к одной исходной ТЗ, ибо одним запросом все поля заполнить невозможно, но увы что-то не так как ожидается работает, глюк пока не знаю где искать у меня в коде или в платформе, будет время посижу, а счас его нет к сож., потому решил свою задачу простым перебором в лоб сравнивая две ТЗ в цикле построчно без использования этой ф-ии (т.е. без запросов). Но проблема заинтересовала своей странностью на ровном месте.
12. Збянтэжаны Саўка 245 17.04.09 17:45 Сейчас в теме
пардон а как укоротить свой пост?
13. spryn 13.10.11 23:28 Сейчас в теме
Отлично, пригодилось
14. GrafB 10 22.10.11 19:54 Сейчас в теме
aga aga помести свой код в (CODE][/CODE) //вместо круглых квадратные скобки
Оставьте свое сообщение