Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Как лучше организовать объединение двух списков относительно даты          
leo10k10 Подменю пользователя
сообщение 29.03.17, 9:57
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 42
Спасибо сказали: 0 раз
Рейтинг: 0

Подскажите пожалуйста как лутше организовать объединение двух списков относительно дати?????
Суть токова "Список_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 Подменю пользователя
сообщение 29.03.17, 10:06
Сообщение #2

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

Списки в ТЗ, потом (свернуть) отсортировать.

leo10k10 Подменю пользователя
сообщение 29.03.17, 10:22
Сообщение #3

Общительный
**
Группа: Пользователи
Сообщений: 42
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(sava1 @ 29.03.17, 11:06) *
Списки в ТЗ, потом (свернуть) отсортировать.

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


leo10k10 @ Сегодня, 11:12 * ,

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

sava1 Подменю пользователя
сообщение 29.03.17, 10:38
Сообщение #4

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

Цитата(leo10k10 @ 29.03.17, 10:22) *
можете черкануть пару строчек кода

К, сожалению, не черкану. Последние лет 10 пользовался ИндексированнойТаблицей - стандартную не помню совсем.

leo10k10 Подменю пользователя
сообщение 29.03.17, 12:18
Сообщение #5

Общительный
**
Группа: Пользователи
Сообщений: 42
Спасибо сказали: 0 раз
Рейтинг: 0

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 Подменю пользователя
сообщение 29.03.17, 12:47
Сообщение #6

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

После этого
Цитата(leo10k10 @ 29.03.17, 12:18) *
СписокРезультат.Заполнить(Список_1, 1, 2, "Дата, Значение_1"); СписокРезультат.Заполнить(Список_2, 3, 4, "Дата, Значение_2");


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


и посмотрите, что в тз

Nuzhny Подменю пользователя
сообщение 29.03.17, 15:23
Сообщение #7

Молчаливый
*
Группа: Пользователи
Сообщений: 1
Спасибо сказали: 1 раз
Рейтинг: 0

leo10k10 @ Сегодня, 13:18 * ,

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

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


Сообщение отредактировал Vofka - 29.03.17, 16:58

Спасибо сказали: leo10k10,

leo10k10 Подменю пользователя
сообщение 29.03.17, 22:16
Сообщение #8

Общительный
**
Группа: Пользователи
Сообщений: 42
Спасибо сказали: 0 раз
Рейтинг: 0

Nuzhny @ Сегодня, 16:23 * ,
Большое спосибо Ваш код прекрасно работает, а с использованием метода сортировки
СписокРезультат.Сортировать("+Дата");
я окончатеньно добился нужного результата.

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 29.03.24, 3:12
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!