Имя: Пароль:
1C
1С v8
Вытащить данные из одной таблицы в другую.
,
0 NikOtsutstvuet
 
01.02.22
13:36
Доброго времени суток, уважаемые форумчане) Столкнулся с задачей, но из-за совсем начальных навыков не знаю как её выполнить. Суть:
Есть две таблицы, Первая содержит номенклатуру товара, имя товара, количество и ГУИД, вторая только Номенклатуру поставщика и ГУИД. Надо сделать так, что б при нажатии "расчитать" в первой таблице заполнялся ГУИД из второй таблицы, если Номенклатура в Таблице1=Номенклатуре поставщика из Таблицы2, ну и естественно, надо что б ГУИД в первой таблице не проставлялся рандомно по строкам, а проставлялся относительно номенклатуры. Надеюсь вы меня поняли, и жду ваших советов и наставлений)
1 Amra
 
01.02.22
13:38
Чтото студентов набежало последнее время
2 NikOtsutstvuet
 
01.02.22
13:40
Развиваемся) Но совсем студенты наверное даже не знают слово Форум)))
3 acht
 
01.02.22
13:44
(0) > жду ваших советов и наставлений
Можно начать с https://uc1.1c.ru/course/osnovy-programmirovaniya-v-sisteme-1c-predpriyatie-8-3/
4 NikOtsutstvuet
 
01.02.22
13:46
Надо просто хотя бы направление, куда копать, какими операторами воспользоваться в данной задаче, дальше думаю разберусь)
5 acht
 
01.02.22
13:47
(4) > какими операторами воспользоваться в данной задаче
Тогда лучше https://uc1.1c.ru/course/osnovy-programmirovaniya-v-1s/
6 Ёпрст
 
01.02.22
13:48
(4)
Либо цикл по первой и поиск во второй, либо запросом, через left join
7 FIXXXL
 
01.02.22
13:49
(4) цикл Для Каждого по одной таблице и НайтиСтроки во второй таблице
цикл Для Каждого в найденных строках и присвоение ГУИДА

вариант с запросом лениво расписывать :)
8 NikOtsutstvuet
 
01.02.22
13:53
(6) (7) Спасибо, сейчас буду пробовать
9 NikOtsutstvuet
 
01.02.22
18:13
(7) Извиняюсь, но не могли бы вы поподробнее расписать метод, сижу, туплю, ничего не выходит(
10 rphosts
 
01.02.22
18:17
(0) запросом, разумеется
11 Базис
 
naïve
01.02.22
18:18
(9) Покажи код-то, расскажи что конкретно не получается.
12 azernot
 
01.02.22
18:25
А я вот не понимаю, что значит "надо что б ГУИД в первой таблице не проставлялся рандомно по строкам, а проставлялся относительно номенклатуры". И непонятно, что делать если во второй таблице несколько строк с одной номенклатурой и разными ГУИДами, допустима ли такая ситуация.

Втупую, без всяких проверок и защит от неожиданностей, это выглядит так:

Для Каждого СтрокаТаблицы1 Из Таблица1.Строки Цикл
СтрокаТаблицы2 = Таблица2.Найти(СтрокаТаблицы1.Номенклатура, "Номенклатура");
СтрокаТаблицы1.ГУИД = СТрокаТаблицы2.ГУИД;
13 NikOtsutstvuet
 
01.02.22
18:28
(11) РассчитатьНаСервереМатрицу() Экспорт
    
    
    
    Для Каждого СтрокаТЗ Из ЗаказПоставщику.Товары Цикл
        
        ЗаполнитьЗначенияСвойств(Таблица.Добавить(), СтрокаТЗ);
        
    КонецЦикла;

    

    Для Каждого СтрокаТЗ Из Таблица Цикл

    ПараметрыОтбора = Новый Структура;
    ПараметрыОтбора.Вставить("НоменклатураПоставщика",ТаблицаМатрица);
    Таблица = ТаблицаМатрица.Вставить(ПараметрыОтбора);
    
    КонецЦикла;

По итогу ругается на несоотвествие типов параметр 1, да и вообще мне кажется данный код не приведёт к искомому результату. Начал постигать 1с недавно, не кидайте тапками, все когда-то такими были)))
14 azernot
 
01.02.22
18:38
Давай начнём с самого очевидного.

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

МассивСтрокМатрицы - это МАССИВ строк, в которых встречается нужная номенклатура