Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как лучше организовать объединение двух списков относительно даты
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
leo10k10
Подскажите пожалуйста как лутше организовать объединение двух списков относительно дати?????
Суть токова "Список_1" имеет поля "ДатаСп_1" и "Значение_1", а "Список_2" свои поля "ДатаСп_2" и "Значение_2" в результате объединения должен выйти "СписокРезультат" с полями "Дата", "Значение_1","Значение_2" при этом всем список надо упорядочить по дате возростания тоесть для ниже приведенных случаях должно получится:

СЛУЧАЙ №1
Список_1 Список_2 СписокРезультат
ДатаСп_1 | Значение_1 | ДатаСп_2 | Значение_2 | | Дата | Значение_1 | Значение_2 |
01.01. | З.1.1 | 02.01. | З.2.1 | | 01.01. | З.1.1 | |
01.01. | З.1.2 | 04.01. | З.2.2 | ==> | 01.01. | З.1.2 | |
| 02.01. | | З.2.1 |
| 02.01. | | З.2.2 |


СЛУЧАЙ №2
Список_1 Список_2 СписокРезультат
ДатаСп_1 | Значение_1 | ДатаСп_2 | Значение_2 | | Дата | Значение_1 | Значение_2 |
01.01. | З.1.1 | 02.01. | З.2.1 | | 01.01. | З.1.1 | |
04.01. | З.1.2 | 04.01. | З.2.2 | ==> | 02.01. | | З.2.1 |
| 04.01. | З.1.2 | |
| 04.01. | | З.2.2 |

Можно допустить что в списке "Список_1" дата всегда будет начальной.
Хочу также заметить что если во втором случае результат будет таковым :

СписокРезультат
| Дата | Значение_1 | Значение_2 |
| 01.01. | З.1.1 | |
==> | 02.01. | | З.2.1 |
| 04.01. | | З.2.2 |
| 04.01. | З.1.2 | |
то это не будит считатся ошибкой.
Буду благодарен за уделенное мне время.
sava1
Списки в ТЗ, потом (свернуть) отсортировать.
leo10k10
Цитата(sava1 @ 29.03.17, 11:06) необходимо зарегистрироваться для просмотра ссылки
Списки в ТЗ, потом (свернуть) отсортировать.

сори но я вас не понял можете черкануть пару строчек кода чтобы было понятней


leo10k10 @ Сегодня, 11:12 необходимо зарегистрироваться для просмотра ссылки ,

Я так понимаю нада зделать цикл по строкам Списка_1, потом вложенный цикл по Списку_2 с заполнением колонок значения, а потом какимто методом упорядочить все это по дате но токо начинаю писать получаэтся бред
.
sava1
Цитата(leo10k10 @ 29.03.17, 10:22) необходимо зарегистрироваться для просмотра ссылки
можете черкануть пару строчек кода

К, сожалению, не черкану. Последние лет 10 пользовался ИндексированнойТаблицей - стандартную не помню совсем.
leo10k10
sava1 @ Сегодня, 11:38 необходимо зарегистрироваться для просмотра ссылки ,
Ну вот пытаюсь реализовать ниче не выходит подскажите шо не так

Список_1 = СоздатьОбъект("ТаблицаЗначений");
    Список_1.НоваяКолонка("ДатаСп_1", "Дата");
    Список_1.НоваяКолонка ("Значение_1", "Строка");
    Список_2 = СоздатьОбъект("ТаблицаЗначений");
    Список_2.НоваяКолонка("ДатаСп_2", "Дата");
    Список_2.НоваяКолонка ("Значение_2", "Строка");
    
    Список_1.НоваяСтрока(1);
    Список_1.ДатаСп_1 = "01.01.2017";
    Список_1.Значение_1 = "З.1.1";
    Список_1.НоваяСтрока(2);
    Список_1.ДатаСп_1 = "01.01.2017";
    Список_1.Значение_1 = "З.1.2";
    НомСп_1 = 2;
    
    Для Н = 1 По НомСп_1 Цикл
           Список_1.ПолучитьСтрокуПоНомеру(Н);
    Сообщить(Шаблон("[Список_1.ДатаСп_1] Х [Список_1.Значение_1]"));
    КонецЦикла;
    
    Список_2.НоваяСтрока(1);
    Список_2.ДатаСп_2 = "02.01.2017";
    Список_2.Значение_2 = "З.2.1";
    Список_2.НоваяСтрока(2);
    Список_2.ДатаСп_2 = "03.01.2017";
    Список_2.Значение_2 = "З.2.2";
    НомСп_2 = 2;
    
    Для Н = 1 По НомСп_2 Цикл
           Список_2.ПолучитьСтрокуПоНомеру(Н);
    Сообщить(Шаблон("[Список_2.ДатаСп_2] Х [Список_2.Значение_2]"));
    КонецЦикла;
    //-------------ЧТО ЗДЕСЬ НЕ ТАК ---------------
    СписокРезультат = СоздатьОбъект("ТаблицаЗначений");
    СписокРезультат.НоваяКолонка("Дата", "Дата");
    СписокРезультат.НоваяКолонка ("Значение_1", "Строка");
    СписокРезультат.НоваяКолонка ("Значение_2", "Строка");
    СписокРезультат.Заполнить(Список_1, 1, 2, "Дата, Значение_1");
    СписокРезультат.Заполнить(Список_2, 3, 4, "Дата, Значение_2");
    
    Для Н = 1 По 4 Цикл
           СписокРезультат.ПолучитьСтрокуПоНомеру(Н);
    Сообщить(Шаблон("[СписокРезультат.Дата] Х [СписокРезультат.Значение_1] Х [СписокРезультат.Значение_2]"));
    КонецЦикла;
sava1
После этого
Цитата(leo10k10 @ 29.03.17, 12:18) необходимо зарегистрироваться для просмотра ссылки
СписокРезультат.Заполнить(Список_1, 1, 2, "Дата, Значение_1"); СписокРезультат.Заполнить(Список_2, 3, 4, "Дата, Значение_2");


напишите
 СписокРезультат.ВыбратьСтроку();


и посмотрите, что в тз
Nuzhny
leo10k10 @ Сегодня, 13:18 необходимо зарегистрироваться для просмотра ссылки ,

Список_1.ВыбратьСтроки(); 
Пока Список_1.ПолучитьСтроку()=1 Цикл
    СписокРезультат.НоваяСтрока();
    СписокРезультат.Дата=Список_1.ДатаСп_1;
    СписокРезультат.Значение_1=Список_1.Значение_1;
    СписокРезультат.Значение_2="";    
КонецЦикла;

Список_2.ВыбратьСтроки();
Пока Список_2.ПолучитьСтроку()=1 Цикл
    СписокРезультат.НоваяСтрока();
    СписокРезультат.Дата=Список_2.ДатаСп_2;
    СписокРезультат.Значение_2=Список_2.Значение_2;
    СписокРезультат.Значение_1="";    
КонецЦикла;
leo10k10
Nuzhny @ Сегодня, 16:23 необходимо зарегистрироваться для просмотра ссылки ,
Большое спосибо Ваш код прекрасно работает, а с использованием метода сортировки
СписокРезультат.Сортировать("+Дата");
я окончатеньно добился нужного результата.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.