|
420 | 420 | ТекстИсключения = СтрСоединить(МассивТекстИсключения, Символы.ПС);
|
421 | 421 |
|
422 | 422 | ВызватьИсключение ТекстИсключения;
|
423 |
| - КонецПопытки |
| 423 | + КонецПопытки; |
424 | 424 | КонецПроцедуры
|
425 | 425 |
|
426 | 426 | Функция РазличияТаблиц(Знач ПроверяемоеЗначение, Знач ОжидаемоеЗначение, Знач СравнитьТолькоСтруктуру = Ложь)
|
427 | 427 |
|
428 | 428 | Различия = ПустаяТаблицаРазличийТаблиц();
|
429 | 429 |
|
430 |
| - Если Не ТипЗнч(ОжидаемоеЗначение) = Тип("ТаблицаЗначений") Тогда |
431 |
| - Различие = РазличиеТаблиц("ОЖИДАЕМОЕ значение", "Тип значения", "ТаблицаЗначений", ТипЗнч(ОжидаемоеЗначение)); |
432 |
| - ЗаполнитьЗначенияСвойств(Различия.Добавить(), Различие); |
433 |
| - КонецЕсли; |
434 |
| - Если Не ТипЗнч(ПроверяемоеЗначение) = Тип("ТаблицаЗначений") Тогда |
435 |
| - Различие = РазличиеТаблиц("ПРОВЕРЯЕМОЕ значение", "Тип значения", "ТаблицаЗначений", ТипЗнч(ПроверяемоеЗначение)); |
| 430 | + Для Каждого Различие Из РазличияТиповТаблиц(ПроверяемоеЗначение, ОжидаемоеЗначение) Цикл |
436 | 431 | ЗаполнитьЗначенияСвойств(Различия.Добавить(), Различие);
|
437 |
| - КонецЕсли; |
| 432 | + КонецЦикла; |
438 | 433 |
|
439 | 434 | Если Различия.Количество() > 0 Тогда
|
440 | 435 | Возврат Различия;
|
441 | 436 | КонецЕсли;
|
442 | 437 |
|
443 |
| - Если Не ОжидаемоеЗначение.Колонки.Количество() = ПроверяемоеЗначение.Колонки.Количество() Тогда |
444 |
| - Различие = РазличиеТаблиц("ПРОВЕРЯЕМОЕ значение", "Количество КОЛОНОК", ОжидаемоеЗначение.Колонки.Количество(), ПроверяемоеЗначение.Колонки.Количество()); |
| 438 | + Для Каждого Различие Из РазличияКолонокТаблиц(ПроверяемоеЗначение, ОжидаемоеЗначение) Цикл |
445 | 439 | ЗаполнитьЗначенияСвойств(Различия.Добавить(), Различие);
|
446 |
| - КонецЕсли; |
447 |
| - |
448 |
| - Если ПараметрыСравненияТаблиц.УчитыватьИменаКолонок Тогда |
449 |
| - Для Кол = 0 По ОжидаемоеЗначение.Колонки.Количество() - 1 Цикл |
450 |
| - КолонкаОжидания = ОжидаемоеЗначение.Колонки[Кол]; |
451 |
| - КолонкаПроверяемого = ?(ПараметрыСравненияТаблиц.УчитыватьПорядокКолонок, |
452 |
| - ПроверяемоеЗначение.Колонки[Кол], |
453 |
| - ПроверяемоеЗначение.Колонки.Найти(КолонкаОжидания.Имя)); |
454 |
| - Если КолонкаПроверяемого = Неопределено Или Не КолонкаОжидания.Имя = КолонкаПроверяемого.Имя Тогда |
455 |
| - Различие = РазличиеТаблиц("ПРОВЕРЯЕМОЕ значение", "Колонки", |
456 |
| - СтрШаблон("колонку ""%1""", КолонкаОжидания.Имя), |
457 |
| - ?(КолонкаПроверяемого = Неопределено, |
458 |
| - "<ОТСУТСТВУЕТ>", |
459 |
| - СтрШаблон("колонку ""%1""", КолонкаПроверяемого.Имя))); |
460 |
| - ЗаполнитьЗначенияСвойств(Различия.Добавить(), Различие); |
461 |
| - КонецЕсли; |
462 |
| - КонецЦикла; |
463 |
| - |
464 |
| - Для Кол = 0 По ПроверяемоеЗначение.Колонки.Количество() - 1 Цикл |
465 |
| - КолонкаПроверяемого = ПроверяемоеЗначение.Колонки[Кол]; |
466 |
| - КолонкаОжидания = ?(ПараметрыСравненияТаблиц.УчитыватьПорядокКолонок, |
467 |
| - ОжидаемоеЗначение.Колонки[Кол], |
468 |
| - ОжидаемоеЗначение.Колонки.Найти(КолонкаПроверяемого.Имя)); |
469 |
| - Если КолонкаОжидания = Неопределено Или Не КолонкаОжидания.Имя = КолонкаПроверяемого.Имя Тогда |
470 |
| - Различие = РазличиеТаблиц("ОЖИДАЕМОЕ значение", "Колонки", |
471 |
| - ?(КолонкаОжидания = Неопределено, |
472 |
| - "<ОТСУТСТВУЕТ>", |
473 |
| - СтрШаблон("колонку ""%1""", КолонкаОжидания.Имя)), |
474 |
| - СтрШаблон("колонку ""%1""", КолонкаПроверяемого.Имя)); |
475 |
| - ЗаполнитьЗначенияСвойств(Различия.Добавить(), Различие); |
476 |
| - КонецЕсли; |
477 |
| - КонецЦикла; |
478 |
| - КонецЕсли; |
| 440 | + КонецЦикла; |
479 | 441 |
|
480 | 442 | Если СравнитьТолькоСтруктуру Тогда
|
481 | 443 | Возврат Различия;
|
482 | 444 | КонецЕсли;
|
483 | 445 |
|
484 |
| - Если Не ОжидаемоеЗначение.Количество() = ПроверяемоеЗначение.Количество() Тогда |
485 |
| - Различие = РазличиеТаблиц("ПРОВЕРЯЕМОЕ значение", "Количество СТРОК", ОжидаемоеЗначение.Количество(), ПроверяемоеЗначение.Количество()); |
| 446 | + Для Каждого Различие Из РазличияСтрокТаблиц(ПроверяемоеЗначение, ОжидаемоеЗначение) Цикл |
486 | 447 | ЗаполнитьЗначенияСвойств(Различия.Добавить(), Различие);
|
487 |
| - КонецЕсли; |
488 |
| - |
489 |
| - Таб1 = ПроверяемоеЗначение.Скопировать(); |
490 |
| - Таб2 = ОжидаемоеЗначение.Скопировать(); |
491 |
| - |
492 |
| - Если Не ПараметрыСравненияТаблиц.УчитыватьПорядокСтрок Тогда |
493 |
| - Таб1 = ОтсортироватьТаблицуПоВсемКолонкам(Таб1); |
494 |
| - Таб2 = ОтсортироватьТаблицуПоВсемКолонкам(Таб2); |
495 |
| - КонецЕсли; |
496 |
| - |
497 |
| - Для Стр = 0 По Таб1.Количество() - 1 Цикл |
498 |
| - Для Кол = 0 По Таб1.Колонки.Количество() - 1 Цикл |
499 |
| - Результат = Таб1[Стр][Кол]; |
500 |
| - Если ПараметрыСравненияТаблиц.УчитыватьИменаКолонок |
501 |
| - И Не ПараметрыСравненияТаблиц.УчитыватьПорядокКолонок |
502 |
| - Тогда |
503 |
| - КолонкаТаб1 = Таб1.Колонки[Кол]; |
504 |
| - КолонкаТаб2 = Таб2.Колонки.Найти(КолонкаТаб1.Имя); |
505 |
| - Ожидание = Таб2[Стр][КолонкаТаб2]; |
506 |
| - Иначе |
507 |
| - Ожидание = Таб2[Стр][Кол]; |
508 |
| - КонецЕсли; |
509 |
| - Если Не Ожидание = Результат Тогда |
510 |
| - Различие = РазличиеТаблиц(Стр, Кол, Ожидание, Результат); |
511 |
| - ЗаполнитьЗначенияСвойств(Различия.Добавить(), Различие); |
512 |
| - КонецЕсли; |
513 |
| - КонецЦикла; |
514 | 448 | КонецЦикла;
|
515 | 449 |
|
516 | 450 | Возврат Различия;
|
|
538 | 472 | Возврат Различие;
|
539 | 473 | КонецФункции
|
540 | 474 |
|
| 475 | +Функция РазличияТиповТаблиц(Знач Таб1, Знач Таб2) |
| 476 | + |
| 477 | + Различия = ПустаяТаблицаРазличийТаблиц(); |
| 478 | + |
| 479 | + Если Не ТипЗнч(Таб1) = Тип("ТаблицаЗначений") Тогда |
| 480 | + Различие = РазличиеТаблиц("ПРОВЕРЯЕМОЕ значение", |
| 481 | + "Тип значения", |
| 482 | + "ТаблицаЗначений", |
| 483 | + ТипЗнч(Таб1)); |
| 484 | + ЗаполнитьЗначенияСвойств(Различия.Добавить(), Различие); |
| 485 | + КонецЕсли; |
| 486 | + Если Не ТипЗнч(Таб2) = Тип("ТаблицаЗначений") Тогда |
| 487 | + Различие = РазличиеТаблиц("ОЖИДАЕМОЕ значение", |
| 488 | + "Тип значения", |
| 489 | + "ТаблицаЗначений", |
| 490 | + ТипЗнч(Таб2)); |
| 491 | + ЗаполнитьЗначенияСвойств(Различия.Добавить(), Различие); |
| 492 | + КонецЕсли; |
| 493 | + |
| 494 | + Возврат Различия; |
| 495 | +КонецФункции |
| 496 | + |
| 497 | +Функция РазличияКолонокТаблиц(Знач Таб1, Знач Таб2) |
| 498 | + |
| 499 | + Различия = ПустаяТаблицаРазличийТаблиц(); |
| 500 | + |
| 501 | + Если Не Таб1.Колонки.Количество() = Таб2.Колонки.Количество() Тогда |
| 502 | + Различие = РазличиеТаблиц("ПРОВЕРЯЕМОЕ значение", |
| 503 | + "Количество КОЛОНОК", |
| 504 | + Таб2.Колонки.Количество(), |
| 505 | + Таб1.Колонки.Количество()); |
| 506 | + ЗаполнитьЗначенияСвойств(Различия.Добавить(), Различие); |
| 507 | + КонецЕсли; |
| 508 | + |
| 509 | + Если Не ПараметрыСравненияТаблиц.УчитыватьИменаКолонок Тогда |
| 510 | + Возврат Различия; |
| 511 | + КонецЕсли; |
| 512 | + |
| 513 | + Для Кол = 0 По Таб1.Колонки.Количество() - 1 Цикл |
| 514 | + Колонки = КолонкиТаблицПоИндексу(Таб1, Таб2, Кол); |
| 515 | + Если Колонки[2] = Неопределено Или Не Колонки[1].Имя = Колонки[2].Имя Тогда |
| 516 | + Ожидание = ?(Колонки[2] = Неопределено, "<ОТСУТСТВУЕТ>", СтрШаблон("колонку ""%1""", Колонки[2].Имя)); |
| 517 | + Результат = СтрШаблон("колонку ""%1""", Колонки[1].Имя); |
| 518 | + Различие = РазличиеТаблиц("ПРОВЕРЯЕМОЕ значение", "КОЛОНКИ", Ожидание, Результат); |
| 519 | + ЗаполнитьЗначенияСвойств(Различия.Добавить(), Различие); |
| 520 | + КонецЕсли; |
| 521 | + КонецЦикла; |
| 522 | + |
| 523 | + Возврат Различия; |
| 524 | +КонецФункции |
| 525 | + |
| 526 | +Функция КолонкиТаблицПоИндексу(Знач Таб1, Знач Таб2, Знач ИндексКолонки) |
| 527 | + |
| 528 | + КолонкаТаб1 = Таб1.Колонки[ИндексКолонки]; |
| 529 | + Если ПоискКолонкиПоИмени() Тогда |
| 530 | + КолонкаТаб2 = Таб2.Колонки.Найти(КолонкаТаб1.Имя); |
| 531 | + Иначе |
| 532 | + КолонкаТаб2 = ?(ИндексКолонки < Таб2.Колонки.Количество(), Таб2.Колонки[ИндексКолонки], Неопределено); |
| 533 | + КонецЕсли; |
| 534 | + |
| 535 | + Колонки = Новый Массив; |
| 536 | + Колонки.Добавить("Для нумерации с 1"); |
| 537 | + Колонки.Добавить(КолонкаТаб1); |
| 538 | + Колонки.Добавить(КолонкаТаб2); |
| 539 | + |
| 540 | + Возврат Колонки; |
| 541 | +КонецФункции |
| 542 | + |
| 543 | +Функция ПоискКолонкиПоИмени() |
| 544 | + Возврат ПараметрыСравненияТаблиц.УчитыватьИменаКолонок И Не ПараметрыСравненияТаблиц.УчитыватьПорядокКолонок; |
| 545 | +КонецФункции |
| 546 | + |
| 547 | +Функция РазличияСтрокТаблиц(Знач ПроверяемоеЗначение, Знач ОжидаемоеЗначение) |
| 548 | + |
| 549 | + Различия = ПустаяТаблицаРазличийТаблиц(); |
| 550 | + |
| 551 | + Если Не ПроверяемоеЗначение.Количество() = ОжидаемоеЗначение.Количество() Тогда |
| 552 | + Различие = РазличиеТаблиц("ПРОВЕРЯЕМОЕ значение", |
| 553 | + "Количество СТРОК", |
| 554 | + ОжидаемоеЗначение.Количество(), |
| 555 | + ПроверяемоеЗначение.Количество()); |
| 556 | + ЗаполнитьЗначенияСвойств(Различия.Добавить(), Различие); |
| 557 | + КонецЕсли; |
| 558 | + |
| 559 | + Если Различия.Количество() > 0 Тогда |
| 560 | + Возврат Различия; |
| 561 | + КонецЕсли; |
| 562 | + |
| 563 | + Если Не ПараметрыСравненияТаблиц.УчитыватьПорядокСтрок Тогда |
| 564 | + Таб1 = ПроверяемоеЗначение.Скопировать(); |
| 565 | + Таб2 = ОжидаемоеЗначение.Скопировать(); |
| 566 | + Таб1 = ОтсортироватьТаблицуПоВсемКолонкам(Таб1); |
| 567 | + Таб2 = ОтсортироватьТаблицуПоВсемКолонкам(Таб2); |
| 568 | + Иначе |
| 569 | + Таб1 = ПроверяемоеЗначение; |
| 570 | + Таб2 = ОжидаемоеЗначение; |
| 571 | + КонецЕсли; |
| 572 | + |
| 573 | + Для Стр = 0 По Таб1.Количество() - 1 Цикл |
| 574 | + Для Кол = 0 По Таб1.Колонки.Количество() - 1 Цикл |
| 575 | + Результат = Таб1[Стр][Кол]; |
| 576 | + Колонки = КолонкиТаблицПоИндексу(Таб1, Таб2, Кол); |
| 577 | + Ожидание = ?(Колонки[2] = Неопределено, "<НЕТ КОЛОНКИ>", Таб2[Стр][Колонки[2]]); |
| 578 | + Если Не Ожидание = Результат Тогда |
| 579 | + Различие = РазличиеТаблиц(Стр, Кол, Ожидание, Результат); |
| 580 | + ЗаполнитьЗначенияСвойств(Различия.Добавить(), Различие); |
| 581 | + КонецЕсли; |
| 582 | + КонецЦикла; |
| 583 | + КонецЦикла; |
| 584 | + |
| 585 | + Возврат Различия; |
| 586 | +КонецФункции |
| 587 | + |
541 | 588 | Функция ОтсортироватьТаблицуПоВсемКолонкам(Знач ТЗ)
|
542 | 589 |
|
543 | 590 | ИменаКолонок = СтрСоединить(ИменаКолонок(ТЗ), ",");
|
|
568 | 615 | Возврат "Ожидали, что проверяемое значение (" + ПроверяемоеЗначение + ")" + ?(ФлагОтрицанияДляСообщения, " НЕ ", " ") + Ожидание + ФорматДСО(ДопСообщениеОшибки);
|
569 | 616 | КонецФункции
|
570 | 617 |
|
571 |
| -// Процедура ЕстьПодстрока(Знач Строка, Знач ПроверяемаяСтрока) |
572 |
| -// Если СтрЧислоСтрок(ПроверяемаяСтрока) = 1 Тогда |
573 |
| -// ЭтотОбъект.Что(Строка, "Проверяем одиночную строку").Содержит(ПроверяемаяСтрока); |
574 |
| -// Иначе |
575 |
| -// ПроверитьЧтоМногострочнаяСтрокаСодержитПодстрокуБезУчетаНачальныхКонечныхПробеловВПодстроках(Строка, ПроверяемаяСтрока); |
576 |
| -// КонецЕсли; |
577 |
| -// КонецПроцедуры |
578 |
| - |
579 | 618 | Процедура ПроверитьЧтоМногострочнаяСтрокаСодержитПодстрокуБезУчетаНачальныхКонечныхПробеловВПодстроках(Знач Строка, Знач Подстрока, ДопСообщениеОшибки = "")
|
580 | 619 | СообщениеОшибки = "";
|
581 | 620 | Нашли = МногострочнаяСтрокаСодержитПодстрокуБезУчетаНачальныхКонечныхПробеловВПодстроках(Строка, Подстрока, СообщениеОшибки);
|
|
0 commit comments