Синхронизация системного Времени по запросу Реализовано для защиты от "умных" пользователей, которые делают то что не нужно делать (
ручное изменение даты и времени). В рабочей конфигурации используется при синхронизации времени в ЭККА (кассовый аппарат) при закрытии рабочей смены.
Код 1C v 8.х Процедура КнопкаВыполнитьНажатие(Кнопка)
ЭлементыФормы.ТекВремя.Заголовок = ТекущаяДата();
Батник = Новый ТекстовыйДокумент;
Батник.ДобавитьСтроку("echo off");
Батник.ДобавитьСтроку("w32tm /config /syncfromflags:manual /manualpeerlist:ntp.time.in.ua");
Батник.ДобавитьСтроку("w32tm /config /update");
Батник.ДобавитьСтроку("w32tm /resync > c:\res_set_time.txt");
Батник.Записать("c:\settime.bat",КодировкаТекста.OEM);
WshShell = Новый COMОбъект("WScript.Shell");
//WshExec = WshShell.Exec("c:\settime.bat");
СтрокаЗапуска = "c:\settime.bat";
WshShell.Run(СтрокаЗапуска,0,Истина);
Результат = Новый ТекстовыйДокумент;
Попытка
Результат.Прочитать("c:\res_set_time.txt",КодировкаТекста.OEM);
Исключение
Сообщить("Ошибка открытия файла!");
Возврат;
КонецПопытки;
Рез = Результат.ПолучитьСтроку(2);
Сообщить(?(Найти(Рез,"успешно") > 0,"ОК!","Не удалось"));
Попытка
УдалитьФайлы("c:\settime.bat");
УдалитьФайлы("c:\res_set_time.txt");
Исключение
КонецПопытки;
ЭлементыФормы.ТекВремя.Заголовок = ТекущаяДата();
КонецПроцедуры
Категория:
Работа с Датами (Временем) Выбрать все движения регистра по документу Код 1C v 7.x
Процедура Взаиморасчеты(ВыбКлиент, ДатаНачало, ДатаКонец)
// Создание Таблицы для выходного отчета
Заг = "Неизвестно.";
Таб = СоздатьОбъект("Таблица");
Клн = СоздатьОбъект("Справочник.Клиенты");
Клн.ИспользоватьДату(ДатаКонец);
Док = СоздатьОбъект("Документ");
Рег = СоздатьОбъект("Регистр.Взаиморасчеты");
Рег1 = СоздатьОбъект("Регистр.Взаиморасчеты");
Рег.ВременныйРасчет();
РассчитатьРегистрыНа(ДатаКонец);
Если ВыбКлиент.Выбран() = 0 Тогда
//Без условий
Заг = "По всем клиентам.";
ИначеЕсли ВыбКлиент.ЭтоГруппа() = 1 Тогда
Клн.ВключатьПодчиненные(ВыбКлиент);
Клн.ИспользоватьРодителя(ВыбКлиент);
Заг = "По клиентам группы " + ВыбКлиент.Наименование;
Иначе
Предупреждение("Выберите группу клиентов!");
Возврат;
КонецЕсли;
Таб.ВывестиСекцию("Отчет");
Клн.ВыбратьЭлементы();
Пока Клн.ПолучитьЭлемент() > 0 Цикл
Если Клн.ЭтоГруппа() = 1 Тогда
Таб.ВывестиСекцию("Группа");
Иначе
Рег.Клиент = Клн.ТекущийЭлемент();
Рег.ОстаткиПолучить();
Баз_сум = Рег.СуммаБазовая;
Вал_сум = Рег.СуммаВалютная;
Таб.ВывестиСекцию("Клиент");
// цикл по всем документам
Док.ВыбратьДокументы(ДатаНачало, ДатаКонец);
Пока Док.ПолучитьДокумент() > 0 Цикл
// отфильтруем документы
Если (Док.Вид() = "Перемещение") ИЛИ (Док.Вид() = "Счет") ИЛИ
(Док.Вид() = "Списание") ИЛИ
(Док.Вид() = "РучноеИзмОстатка") Тогда
// Эти Документы не изменяют Взаиморасчеты
Продолжить;
КонецЕсли;
// выберем все движения регистра по документу
Рег1.ВыбратьДвиженияДокумента(Док.ТекущийДокумент());
Пока Рег1.ПолучитьДвижение() > 0 Цикл
Если Строка(Рег1.Клиент.Код) <> Строка(Клн.Код) Тогда
// не тот клиент
Продолжить;
КонецЕсли;
Дв_Баз_Сум = Рег1.СуммаБазовая;
Дв_Вал_Сум = Рег1.СуммаВалютная;
Если Рег1.Приход = 1 Тогда
Таб.ВывестиСекцию("Приход");
Иначе
Таб.ВывестиСекцию("Расход");
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЕсли;
КонецЦикла;
//Вызов выходного отчета в окно просмотра и редактирования.
Таб.ТолькоПросмотр(1);
Таб.Опции(0, 0, 4, 0);
Таб.Показать("Взаиморасчеты с клиентами", "");
ВыбКлиент = 0;
КонецПроцедуры
Категория:
Регистры