По просьбе Расчетчика в документе "Отражение зарплаты в бухучете" сделал две доработки:
1. Свёртку результатов стандартного заполнения (кнопка "Заполнить") по нужным колонкам: Сотрудник, Подразделение в первых трёх табличках доки.
2. При перезаполнении данного документа сделал вывод отчётов по изменившимся данным заполнения. Порядок действий: если док заполнен, то при нажатии кнопки "Заполнить" перед самим заполнением делаю сохранение в отдельные хранилища текущих данных табличек, затем работает стандартное заполнение и в конце сравниваю сохранённые таблички с табличками заполненными по новому. Благодаря этим отчётам Расчетчик видит, что изменилось после "допиливания" итоговой месячной ЗП перед отражением в Бухучете. Обычно делается это при закрытии месяца и времени у Расчетчика бывает очень мало для анализа изменений обычными способами.
Сделал для ЗиКГУ 3.1.14.265
Можно без скачивания за стартмани сделать данную доработку в расширении. Модуль вставил и два скрина из конфигуратора для добавления объектов в расширение: в расширенную форму доки добавить 4-е реквизита и добавить макет.
// перед ЗАПОЛНЕНИЕМ сохраняю текущие таблички в Хранилище
&НаСервере
Процедура таблички_сохраняю_в_хранилище()
// 1-ая табла
пред_тз = Объект.НачисленнаяЗарплатаИВзносы.выгрузить();
адрес_хранилища = Новый УникальныйИдентификатор;
Адрес_вр_х_1 = ПоместитьВоВременноеХранилище(пред_тз, адрес_хранилища);
// 2-ая табла
пред_НачНДФЛ = Объект.НачисленныйНДФЛ.выгрузить();
адрес_хранилища = Новый УникальныйИдентификатор;
Адрес_вр_х_2 = ПоместитьВоВременноеХранилище(пред_НачНДФЛ, адрес_хранилища);
// 3-ья табла
пред_УдЗП = Объект.УдержаннаяЗарплата.выгрузить();
адрес_хранилища = Новый УникальныйИдентификатор;
Адрес_вр_х_3 = ПоместитьВоВременноеХранилище(пред_УдЗП, адрес_хранилища);
// 4-ая табла
пред_отп = Объект.ВыплатаОтпусковЗаСчетРезерва.выгрузить();
адрес_хранилища = Новый УникальныйИдентификатор;
Адрес_вр_х_4 = ПоместитьВоВременноеХранилище(пред_отп, адрес_хранилища);
КонецПроцедуры
&НаКлиенте
&Перед("Заполнить")
Процедура Р_Перед_Заполнить(Команда)
Если Объект.НачисленнаяЗарплатаИВзносы.Количество() > 0
Или Объект.НачисленныйНДФЛ.Количество() > 0
Или Объект.УдержаннаяЗарплата.Количество() > 0
Или Объект.ВыплатаОтпусковЗаСчетРезерва.Количество() > 0 Тогда
// при ПЕРЕзаполнении нужно сравнить с предыдущим результатом. Для этого ЗАПОЛНяемые таблички сохраняю в хранилище
таблички_сохраняю_в_хранилище();
КонецЕсли;
КонецПроцедуры
// СВОРАЧИВАЮ таблички - отбрасываю детализацию по ФИО и Подразделениям
&НаСервере
&Перед("ЗаполнитьНаСервереЗавершение")
Процедура Р_Перед_ЗаполнитьНаСервереЗавершение(АдресРезультата)
СтруктураДанных = ПолучитьИзВременногоХранилища(АдресРезультата);
Если ТипЗнч(СтруктураДанных) <> Тип("Структура") Тогда
Возврат;
КонецЕсли;
РезультатОтраженияЗарплатыДляБухучета = Неопределено;
Если СтруктураДанных.Свойство("РезультатОтраженияЗарплатыДляБухучета", РезультатОтраженияЗарплатыДляБухучета) Тогда
// свёртка ТРЁХ ТАБЛИЦ по ФЛ
// перед свёрткой сохранение в файл на сервере
путь_сохран = "D:\BANKI\Т_Начисл_ЗП_";
дока_ключ = СтрЗаменить("_"+Год(Объект.ПериодРегистрации)+"_"+Месяц(Объект.ПериодРегистрации)+"_"+Объект.ИсточникФинансовогоОбеспечения
+"_"+День(ТекущаяДата())+"_"+Час(ТекущаяДата())+"_"+Минута(ТекущаяДата())+"_"+Секунда(ТекущаяДата()), " ", "_");
содержание_файла = "__без_свёртки.mxl";
Попытка
ил_разные_инструменты.ЗаписатьТЗВMXL(путь_сохран+дока_ключ+содержание_файла, РезультатОтраженияЗарплатыДляБухучета.НачисленнаяЗарплатаИВзносы);
Исключение
КонецПопытки;
// 1_а - подготовка списка колонок 1-ой ТАБЛЫ
все_колонки_в_строке = "";
все_колонки_в_строке_СУММЫ = "";
Для каждого тек_стр из РезультатОтраженияЗарплатыДляБухучета.НачисленнаяЗарплатаИВзносы.колонки Цикл
Если (тек_стр.ТипЗначения.КвалификаторыЧисла.Разрядность > 0)
и
(тек_стр.ТипЗначения.КвалификаторыЧисла.РазрядностьДробнойЧасти > 0) Тогда
// это число
все_колонки_в_строке_СУММЫ = все_колонки_в_строке_СУММЫ+", "+тек_стр.Имя;
Иначе
все_колонки_в_строке = все_колонки_в_строке+", "+тек_стр.Имя;
КонецЕсли;
КонецЦикла;
все_колонки_в_строке = СтрЗаменить(все_колонки_в_строке, ", ФизическоеЛицоНаименование", "");
все_колонки_в_строке = СтрЗаменить(все_колонки_в_строке, ", ФизическоеЛицо", "");
все_колонки_в_строке = СтрЗаменить(все_колонки_в_строке, ", ПодразделениеНаименование", "");
все_колонки_в_строке = СтрЗаменить(все_колонки_в_строке, ", Подразделение", "");
// лишнюю запятую в начале убираю - " ,"
все_колонки_в_строке = Сред(все_колонки_в_строке, 3);
все_колонки_в_строке_СУММЫ = Сред(все_колонки_в_строке_СУММЫ, 3);
// перед основной свёрткой - промежуточная для ФАЙЛА ПО фл
тз_по_фл = РезультатОтраженияЗарплатыДляБухучета.НачисленнаяЗарплатаИВзносы.скопировать();
тз_по_фл.Свернуть("ФизическоеЛицо", все_колонки_в_строке_СУММЫ);
содержание_файла = "__по_ФЛ.mxl";
Попытка
ил_разные_инструменты.ЗаписатьТЗВMXL(путь_сохран+дока_ключ+содержание_файла, тз_по_фл);
Исключение
КонецПопытки;
// 1_б свёртка
РезультатОтраженияЗарплатыДляБухучета.НачисленнаяЗарплатаИВзносы.Свернуть(все_колонки_в_строке, все_колонки_в_строке_СУММЫ);
// 2_а - подготовка списка колонок 2-ой ТАБЛЫ
все_колонки_в_строке = "";
Для каждого тек_стр из РезультатОтраженияЗарплатыДляБухучета.НачисленныйНДФЛ.колонки Цикл
все_колонки_в_строке = все_колонки_в_строке+", "+тек_стр.Имя;
КонецЦикла;
все_колонки_в_строке = СтрЗаменить(все_колонки_в_строке, ", ФизическоеЛицоНаименование", "");
все_колонки_в_строке = СтрЗаменить(все_колонки_в_строке, ", ФизическоеЛицо", "");
все_колонки_в_строке = СтрЗаменить(все_колонки_в_строке, ", Сумма", "");
// лишнюю запятую в начале убираю - " ,"
все_колонки_в_строке = Сред(все_колонки_в_строке, 3);
// 2_б свёртка
РезультатОтраженияЗарплатыДляБухучета.НачисленныйНДФЛ.Свернуть(все_колонки_в_строке, "Сумма");
// 3_а - подготовка списка колонок 3-ей ТАБЛЫ
все_колонки_в_строке = "";
Для каждого тек_стр из РезультатОтраженияЗарплатыДляБухучета.УдержаннаяЗарплата.колонки Цикл
все_колонки_в_строке = все_колонки_в_строке+", "+тек_стр.Имя;
КонецЦикла;
все_колонки_в_строке = СтрЗаменить(все_колонки_в_строке, ", ФизическоеЛицоНаименование", "");
все_колонки_в_строке = СтрЗаменить(все_колонки_в_строке, ", ПодразделениеНаименование", "");
все_колонки_в_строке = СтрЗаменить(все_колонки_в_строке, ", ФизическоеЛицо", "");
все_колонки_в_строке = СтрЗаменить(все_колонки_в_строке, ", Подразделение", "");
все_колонки_в_строке = СтрЗаменить(все_колонки_в_строке, ", Сумма", "");
// лишнюю запятую в начале убираю - " ,"
все_колонки_в_строке = Сред(все_колонки_в_строке, 3);
// 3_б свёртка
РезультатОтраженияЗарплатыДляБухучета.УдержаннаяЗарплата.Свернуть(все_колонки_в_строке, "Сумма");
ВыплатаОтпусковЗаСчетРезерва = Неопределено;
Если РезультатОтраженияЗарплатыДляБухучета.Свойство("ВыплатаОтпусковЗаСчетРезерва", ВыплатаОтпусковЗаСчетРезерва) Тогда
// пока отменил свёртку- 4-ой таблы
//// Свёртка 4-ой таблицы
//// 4_а - подготовка списка колонок 4-ой ТАБЛЫ
//сообщ = Новый СообщениеПользователю;
//сообщ.Текст = "Неотлаженная свёртка ""ВыплатаОтпусковЗаСчетРезерва"". В случае ошибки обратитесь к программисту.";
//сообщ.Сообщить();
//
//все_колонки_в_строке = "";
//Для каждого тек_стр из ВыплатаОтпусковЗаСчетРезерва.колонки Цикл
// все_колонки_в_строке = все_колонки_в_строке+", "+тек_стр.Имя;
//КонецЦикла;
//все_колонки_в_строке = СтрЗаменить(все_колонки_в_строке, ", ФизическоеЛицоНаименование", "");
//все_колонки_в_строке = СтрЗаменить(все_колонки_в_строке, ", ФизическоеЛицо", "");
//все_колонки_в_строке = СтрЗаменить(все_колонки_в_строке, ", Сумма", "");
//// лишнюю запятую в начале убираю - " ,"
//все_колонки_в_строке = Сред(все_колонки_в_строке, 3);
//// 4_б свёртка
//ВыплатаОтпусковЗаСчетРезерва.Свернуть(все_колонки_в_строке, "Сумма");
//
//// обратно в структуру
//РезультатОтраженияЗарплатыДляБухучета.Вставить("ВыплатаОтпусковЗаСчетРезерва", ВыплатаОтпусковЗаСчетРезерва);
КонецЕсли;
// обратно в структуру - все таблы с 4-ой
СтруктураДанных.Свойство("РезультатОтраженияЗарплатыДляБухучета", РезультатОтраженияЗарплатыДляБухучета);
КонецЕсли;
КонецПроцедуры
// в конце ЗАПОЛНЕНИЯ - вывожу сравнение предыдущего и текущего заполнения
&НаСервере
Процедура вывод_ТЗ_в_табл_док_универс(ТабДок, тз_инфа, заголов_текст, кол_ключ)
//тз_инфа = Новый ТаблицаЗначений;
ОбъектДока = РеквизитФормыВЗначение("Объект");
Макет = ОбъектДока.ПолучитьМакет("Макет_разница_для_расширения");
ТабДок.НачатьАвтогруппировкуКолонок();
обл_Загол = Макет.ПолучитьОбласть("Заголовок");
обл_Загол.параметры.заголовок_т = заголов_текст;
ТабДок.вывести(обл_Загол, 1, "Заголовок", Ложь);
// шапка таблицы - имена колонок
//Секция = ТабДок.ПолучитьОбласть("R3C1");
//Секция.Область("R1C1").Текст = тз_инфа.Колонки.Получить(0).Имя;
шапка_колонка = Макет.ПолучитьОбласть("шапка_тз|колонка_тз");
шапка_колонка.параметры.имя_колонки = тз_инфа.Колонки.Получить(0).Имя;
ТабДок.Вывести(шапка_колонка, 2, "Группа 1", Ложь);
// цикл по колонкам ключа
Для счёт_к = 2 по кол_ключ Цикл
шапка_колонка = Макет.ПолучитьОбласть("шапка_тз|колонка_тз");
шапка_колонка.параметры.имя_колонки = тз_инфа.Колонки.Получить(счёт_к - 1).Имя;
//шапка_колонка.Область().ГоризонтальноеПоложение = ГоризонтальноеПоложение.Право;
ТабДок.Присоединить(шапка_колонка, 3, "Группа 2", Истина);
КонецЦикла;
// цикл по остальным колонкам
Для счёт_к = (кол_ключ+1) по тз_инфа.колонки.Количество() Цикл
шапка_колонка = Макет.ПолучитьОбласть("шапка_тз|колонка_тз");
шапка_колонка.параметры.имя_колонки = тз_инфа.Колонки.Получить(счёт_к - 1).Имя;
ТабДок.Присоединить(шапка_колонка, 3, "Группа 3", Истина);
КонецЦикла;
// цикл по строкам
Для каждого тек_стр из тз_инфа Цикл
строка_колонка = Макет.ПолучитьОбласть("строка_тз|колонка_тз");
строка_колонка.параметры.значение_колонки = тек_стр.Получить(0);
ТабДок.Вывести(строка_колонка, 2, "Группа 1", Ложь);
// цикл по колонкам ключа
Для счёт_к = 2 по кол_ключ Цикл
строка_колонка = Макет.ПолучитьОбласть("строка_тз|колонка_тз");
строка_колонка.параметры.значение_колонки = тек_стр.Получить(счёт_к - 1);
ТабДок.Присоединить(строка_колонка, 3, "Группа 2", Истина);
КонецЦикла;
// цикл по остальным колонкам
Для счёт_к = (кол_ключ+1) по тз_инфа.колонки.Количество() Цикл
строка_колонка = Макет.ПолучитьОбласть("строка_тз|колонка_тз");
строка_колонка.параметры.значение_колонки = тек_стр.Получить(счёт_к - 1);
ТабДок.Присоединить(строка_колонка, 3, "Группа 3", Истина);
КонецЦикла;
КонецЦикла;
КонецПроцедуры
Функция сравнение_двух_табл(ТабДок_разница, Адрес_вр_х, имя_таблы_объекта, кол_колонок_ключа, колонок_на_удаление_вначале, колонок_на_удаление_вконце)
//пред_тз = Новый ТаблицаЗначений;
//нов_тз = Новый ТаблицаЗначений;
пред_тз = ПолучитьИзВременногоХранилища(Адрес_вр_х);
Если (имя_таблы_объекта = "НачисленнаяЗарплатаИВзносы") Тогда
нов_тз = объект.НачисленнаяЗарплатаИВзносы.выгрузить();
ИначеЕсли (имя_таблы_объекта = "НачисленныйНДФЛ") Тогда
нов_тз = объект.НачисленныйНДФЛ.выгрузить();
ИначеЕсли (имя_таблы_объекта = "УдержаннаяЗарплата") Тогда
нов_тз = объект.УдержаннаяЗарплата.выгрузить();
ИначеЕсли (имя_таблы_объекта = "ВыплатаОтпусковЗаСчетРезерва") Тогда
нов_тз = объект.ВыплатаОтпусковЗаСчетРезерва.выгрузить();
КонецЕсли;
равных_строк_полностью = 0;
// сравниваю две таблички: сохранённый предыдущий результат и копия нового результата
// Равные строки удаляю. Остальные выведу в отчётах.
// подготовка ключей строк
Для счёт_удал = 1 по колонок_на_удаление_вначале Цикл
пред_тз.колонки.Удалить(0);
КонецЦикла;
Для счёт_удал = 1 по колонок_на_удаление_вконце Цикл
пред_тз.колонки.Удалить(пред_тз.колонки.количество()-1);
КонецЦикла;
пред_тз.колонки.добавить("ключ");
Для каждого тек_стр из пред_тз Цикл
//тек_стр.ключ = ""+тек_стр.ВидОперации+" ... "+тек_стр.СтатьяФинансирования+" ... "+тек_стр.СтатьяРасходов+" ... "+тек_стр.СпособОтраженияЗарплатыВБухучете+" ... "+тек_стр.ВидНачисленияОплатыТрудаДляНУ+" ... "+тек_стр.ПериодПринятияРасходов;
тек_стр.ключ = "";
Для счёт_кол_кл = 1 по кол_колонок_ключа Цикл
тек_стр.ключ = тек_стр.ключ + тек_стр.Получить(счёт_кол_кл - 1) + " ... ";
КонецЦикла;
КонецЦикла;
// подготовка ключей строк
Для счёт_удал = 1 по колонок_на_удаление_вначале Цикл
нов_тз.колонки.Удалить(0);
КонецЦикла;
Для счёт_удал = 1 по колонок_на_удаление_вконце Цикл
нов_тз.колонки.Удалить(нов_тз.колонки.количество()-1);
КонецЦикла;
нов_тз.колонки.добавить("ключ");
Для каждого тек_стр из нов_тз Цикл
//тек_стр.ключ = ""+тек_стр.ВидОперации+" ... "+тек_стр.СтатьяФинансирования+" ... "+тек_стр.СтатьяРасходов+" ... "+тек_стр.СпособОтраженияЗарплатыВБухучете+" ... "+тек_стр.ВидНачисленияОплатыТрудаДляНУ+" ... "+тек_стр.ПериодПринятияРасходов;
тек_стр.ключ = "";
Для счёт_кол_кл = 1 по кол_колонок_ключа Цикл
тек_стр.ключ = тек_стр.ключ + тек_стр.Получить(счёт_кол_кл - 1) + " ... ";
КонецЦикла;
КонецЦикла;
// подготовка таблицы для результатов сравнения - строк с равным ключом и НЕ раными суммами
не_равн_сумм = Новый ТаблицаЗначений;
Для номер_колонки = 1 по кол_колонок_ключа Цикл
не_равн_сумм.Колонки.Добавить(пред_тз.Колонки.Получить(номер_колонки - 1).Имя);
КонецЦикла;
не_равн_сумм.Колонки.Добавить("Имя_суммовой_колонки");
не_равн_сумм.Колонки.Добавить("первая_сумма");
не_равн_сумм.Колонки.Добавить("вторая_сумма");
счёт_п = 0;
Пока счёт_п < пред_тз.количество() Цикл
тек_пред = пред_тз.Получить(счёт_п);
найд_нов = нов_тз.Найти(тек_пред.ключ, "ключ");
Если (найд_нов <> Неопределено) Тогда
// ключи равные
// проверка остальных колонок
есть_различие = Ложь;
// Первые - ключевые колонки пропускаю. Сравниваю с 11-ой: 9 ключевых и НомерСтроки
Для номер_колонки = (кол_колонок_ключа + 1) по (пред_тз.Колонки.Количество() - 1 - колонок_на_удаление_вконце) Цикл // без последних двух колонок: "ключ" и "ИсходныйНомерСтроки"
Если (тек_пред.Получить(номер_колонки - 1)) <> (найд_нов.Получить(номер_колонки - 1)) Тогда
есть_различие = Истина;
// добавляю в отчёт "строки не равные по суммам"
нов_различ = не_равн_сумм.Добавить();
// копирую ключ
Для номер2_колонки = 1 по кол_колонок_ключа Цикл
нов_различ.Установить(номер2_колонки-1, тек_пред.Получить(номер2_колонки-1));
КонецЦикла;
нов_различ.Имя_суммовой_колонки = пред_тз.Колонки.Получить(номер_колонки).Имя;
нов_различ.первая_сумма = тек_пред.Получить(номер_колонки - 1);
нов_различ.вторая_сумма = найд_нов.Получить(номер_колонки - 1);
КонецЕсли;
КонецЦикла;
// в этой ветке строки удаляю всегда
// удаление строк в обоих таблицах
нов_тз.Удалить(найд_нов);
пред_тз.Удалить(счёт_п);
Если (есть_различие = Ложь) Тогда
равных_строк_полностью = равных_строк_полностью + 1;
КонецЕсли;
Иначе
// строку оставляю для отчёта "строки не равные по ключам"
// поэтому просто сдвиг счётчиков
счёт_п = счёт_п + 1;
КонецЕсли;
КонецЦикла;
разных_по_ключу_в_пред = пред_тз.количество();
разных_по_ключу_в_новом = нов_тз.количество();
разных_по_суммам = не_равн_сумм.Количество();
// итоги сравнения
есть_вывод = Ложь;
Если (разных_по_ключу_в_пред > 0) Тогда
есть_вывод = истина;
пред_тз.колонки.Удалить(пред_тз.колонки.количество()-1);
вывод_ТЗ_в_табл_док_универс(ТабДок_разница, пред_тз, "строки из ПРЕДыдущего заполнения НЕ РАВНЫЕ по ключевым колонкам (первые "+кол_колонок_ключа+" колонок)", кол_колонок_ключа);
КонецЕсли;
Если (разных_по_ключу_в_новом > 0) Тогда
есть_вывод = истина;
нов_тз.колонки.Удалить(нов_тз.колонки.количество()-1);
вывод_ТЗ_в_табл_док_универс(ТабДок_разница, нов_тз, "строки из НОВОГО заполнения НЕ РАВНЫЕ по ключевым колонкам (первые "+кол_колонок_ключа+" колонок)", кол_колонок_ключа);
КонецЕсли;
Если (разных_по_суммам > 0) Тогда
есть_вывод = истина;
вывод_ТЗ_в_табл_док_универс(ТабДок_разница, не_равн_сумм, "строки равные по ключу, но разные по сумме", кол_колонок_ключа);
КонецЕсли;
Возврат есть_вывод;
КонецФункции
&НаКлиенте
&После("ЗаполнитьЗавершение")
Процедура Р_После_ЗаполнитьЗавершение(Результат, ДополнительныеПараметры)
//Если ЗаданиеВыполненоВДлительнойОперации Тогда
Если Объект.НачисленнаяЗарплатаИВзносы.Количество() > 0
Или Объект.НачисленныйНДФЛ.Количество() > 0
Или Объект.УдержаннаяЗарплата.Количество() > 0
Или Объект.ВыплатаОтпусковЗаСчетРезерва.Количество() > 0 Тогда
// если таблицы не пустые, значит заполнение в длительной операции завершено
// вывожу отчёт об изменениях при перезаполнении документа
// 1-ая табла
Если ЭтоАдресВременногоХранилища(Адрес_вр_х_1) Тогда
ТабДок_разница = Новый ТабличныйДокумент;
//кол_колонок_ключа = 7;
//колонок_на_удаление_вначале = 3;
//колонок_на_удаление_вконце = 1;
Если сравнение_двух_табл(ТабДок_разница, Адрес_вр_х_1, "НачисленнаяЗарплатаИВзносы", 7, 3, 1) Тогда
ТабДок_разница.Показать("по табл ""НачисленнаяЗарплатаИВзносы"" - отличия в ПРЕДЫДУЩем и ТЕКУЩЕМ заполнении");
КонецЕсли;
КонецЕсли;
// 2-ая табла
Если ЭтоАдресВременногоХранилища(Адрес_вр_х_2) Тогда
ТабДок_разница = Новый ТабличныйДокумент;
//кол_колонок_ключа = 3;
//колонок_на_удаление_вначале = 2;
//колонок_на_удаление_вконце = 1;
Если сравнение_двух_табл(ТабДок_разница, Адрес_вр_х_2, "НачисленныйНДФЛ", 3, 2, 1) Тогда
ТабДок_разница.Показать("по табл ""НачисленныйНДФЛ"" - отличия в ПРЕДЫДУЩем и ТЕКУЩЕМ заполнении");
КонецЕсли;
КонецЕсли;
// 3-ья табла
Если ЭтоАдресВременногоХранилища(Адрес_вр_х_3) Тогда
ТабДок_разница = Новый ТабличныйДокумент;
//кол_колонок_ключа = 4;
//колонок_на_удаление_вначале = 3;
//колонок_на_удаление_вконце = 1;
Если сравнение_двух_табл(ТабДок_разница, Адрес_вр_х_3, "УдержаннаяЗарплата", 4, 3, 1) Тогда
ТабДок_разница.Показать("по табл ""УдержаннаяЗарплата"" - отличия в ПРЕДЫДУЩем и ТЕКУЩЕМ заполнении");
КонецЕсли;
КонецЕсли;
// 4-ая табла
Если ЭтоАдресВременногоХранилища(Адрес_вр_х_4) Тогда
ТабДок_разница = Новый ТабличныйДокумент;
//кол_колонок_ключа = 2;
//колонок_на_удаление_вначале = 1;
//колонок_на_удаление_вконце = 1;
Если сравнение_двух_табл(ТабДок_разница, Адрес_вр_х_4, "ВыплатаОтпусковЗаСчетРезерва", 2, 1, 1) Тогда
ТабДок_разница.Показать("по табл ""ВыплатаОтпусковЗаСчетРезерва"" - отличия в ПРЕДЫДУЩем и ТЕКУЩЕМ заполнении");
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры