Загрузка данных в 1С из FoxPro Deggy пишет:
Так сейчас так веду импорт из FoxPro-шных таблиц в восьмерку. Вот например заполнение справочника стран:
Код 1C v 8.х НачатьТранзакцию();
стрПодключения = "Driver={Microsoft Visual FoxPro Driver};
|SourceType=DBF;SourceDB=\\192.168.***.***\server\baza\;
|Exclusive=No; Collate=Machine;NULL =NO;DELETED=YES;BACKGROUNDFETCH=NO;";
Connect = Новый COMОбъект("ADODB.Connection");
попытка
Connect.Open(стрПодключения);
исключение
сообщить(ОписаниеОшибки());
Отказ=Истина;
Возврат;
КонецПопытки;
RS = Новый COMОбъект("ADODB.RecordSet");
RS.Open("Select * from country where !deleted()",Connect);
пока RS.EOF()=0 цикл
Если Число(RS.Fields("cntry_code").Value)>0 тогда
РезультатПоиска = Справочники.КлассификаторСтранМира.НайтиПоКоду(Число(RS.Fields("cntry_code").Value));
Если РезультатПоиска.Пустая() Тогда
НоваяСтрана = Справочники.КлассификаторСтранМира.СоздатьЭлемент();
НоваяСтрана.Код =Число(RS.Fields("cntry_code").Value);
НоваяСтрана.Наименование = СокрЛП(RS.Fields("cntry_name").Value);
НоваяСтрана.Записать();
Иначе
НайденнаяСтрана=РезультатПоиска.ПолучитьОбъект();
НайденнаяСтрана.Наименование=СокрЛП(RS.Fields("cntry_name").Value);
НайденнаяСтрана.Записать();
Сообщить("Страна с кодом "+ СокрЛП(RS.Fields("cntry_code").Value)+ "уже существует");
конецесли;
КонецЕсли;
сообщить("-------------------");
Сообщить(СокрЛП(RS.Fields("cntry_code").Value)+" " + СокрЛП(RS.Fields("cntry_name").Value));
RS.MoveNext();
КонецЦикла;
RS.Close();
Connect.Close();
ЗафиксироватьТранзакцию();
Категория:
Конвертация данных, Обмен, Перенос Чем отличается значение типа Неопределено и значение типа Null ? Значение типа Неопределено используется прежде всего как значение по умолчанию (незаданное значение) для полей с составным типом. Например, если есть реквизит, который имеет составной тип, включающий СправочникСсылка.Товары и СправочникСсылка.Материалы , то значением реквизита по умолчанию будет Неопределено. Так же это значение используется и в других случаях для обозначения неуказанного значения.
Значение типа Null используется при работе с таблицами прикладных объектов. Оно обозначает отсутствие значения поля в выборке. Прежде всего оно используется в результатах запросов выполняющих левое или правое соединение. Поля невыбранных записей таблиц участвующих в таких соединениях будут иметь значение Null . Кроме того, значение типа Null будет иметь, например, реквизит иерархического справочника для элементов-групп, если в метаданных указано, что этот реквизит используется только для элементов не являющихся группами.
Категория:
Встроенные Функции Создать, заменить, записать файл в Хранилище Значения Код 1C v 8.х Функция СоздатьФайлВХранилище(ЛокПолноеИмяФайла,ЛокНаименованиеЭлемента)Экспорт
Попытка
ЛокХранилище = Новый ХранилищеЗначения(Новый ДвоичныеДанные(ЛокПолноеИмяФайла));
Исключение
Возврат Null ;
КонецПопытки;
ЛокСправочникХЗН = Справочники.ХранилищеДополнительнойИнформации.СоздатьЭлемент();
ЛокСправочникХЗН.Наименование = ЛокНаименованиеЭлемента;
ЛокСправочникХЗН.Хранилище = ЛокХранилище;
Попытка
ЛокСправочникХЗН.Записать();
Возврат ЛокСправочникХЗН;
Исключение
Возврат Null ;
КонецПопытки;
КонецФункции
Функция ЗаменаФайлаВХранилище(ЛокПолноеИмяФайла,ЛокНаименованиеЭлемента) Экспорт
Попытка
ЛокХранилище = Новый ХранилищеЗначения(Новый ДвоичныеДанные(ЛокПолноеИмяФайла));
Исключение
Возврат Null ;
КонецПопытки;
ЛокСправочникХЗНСсылка = Справочники.ХранилищеДополнительнойИнформации.НайтиПоНаименованию(ЛокНаименованиеЭлемента);
Если ЛокСправочникХЗНСсылка.Пустая() Тогда
Возврат Null ;
КонецЕсли;
ЛокСправочникХЗН = ЛокСправочникХЗНСсылка.ПолучитьОбъект();
ЛокСправочникХЗН.Хранилище = ЛокХранилище;
Попытка
ЛокСправочникХЗН.Записать();
Возврат ЛокСправочникХЗН;
Исключение
Возврат Null ;
КонецПопытки;
КонецФункции
Функция ЗаписатьФайлИзХранилища(ЛокПолноеИмяФайла,ЛокНаименованиеЭлемента) Экспорт
Попытка
ЛокСпр = Справочники.ХранилищеДополнительнойИнформации.НайтиПоНаименованию(ЛокНаименованиеЭлемента);
ЛокСпр.Хранилище.Получить().Записать(ЛокПолноеИмяФайла);
Возврат Истина;
Исключение
Возврат Ложь;
КонецПопытки;
КонецФункции
Функция СоздатьВременныйФайлИзХранилища(ЛокНаименованиеЭлемента,ЛокРасширение)
ЛокПолноеИмяФайла = КаталогВременныхФайлов()+ПолучитьИмяВременногоФайла(ЛокРасширение);
Если ЗаписатьФайлИзХранилища(ЛокПолноеИмяФайла,ЛокНаименованиеЭлемента) Тогда
Возврат ЛокПолноеИмяФайла;
Иначе
Возврат Null ;
КонецЕсли;
КонецФункции
Категория:
Работа с Хранилищем Значений Загрузка данных из MS Excel через объект ADODB Данный метод обладает гораздо большей производительностью и простотой, чем банальный объектный метод через COM соединение.
Все что потребуется это создание 2 объектов
* ADODB.Connection
* ADODB. Recordset
Код 1C v 8.х // Выполняет загрузку из файла Excel
// Параметры
// ПутьКФайлу - <Строка> - путь к файлу xls
// Автор: ---%%%Gmix 16.03.2006 12:38:48
// Возвращаемое значение:
// <Булево> – Истина загрузка произошла
// - Ложь загрузки не было
Функция ВыполнитьЗагрузку(ПутьКФайлу) Экспорт
Файл=Новый Файл(ПутьКФайлу);
Если Файл.Существует() Тогда
Стр_Файл=Файл.ПолноеИмя;
// Отрезаем слеш если он есть в конце пути
Стр_Путь=Файл.Путь;
Если Прав(Стр_Путь,1)="\" Тогда
Стр_Путь=Лев(Стр_Путь,СтрДлина(Стр_Путь)-1);
КонецЕсли;
// Строка корнекта
Стр_Конект = "Driver={Microsoft Excel Driver (*.xls)};
|DriverId=790;
|Dbq="+Стр_Файл+";
|DefaultDir="+Стр_Путь+";";
Об_Конект = Новый COMОбъект("ADODB.Connection");
Попытка
Об_Конект.Open(Стр_Конект);
Исключение
Сообщить ("Не возможно подключится к Microsoft Excel Driver!!!
|Возможно файл ["+Стр_Файл+"] открыт другим пользователем.");
Возврат Ложь;
КонецПопытки;
// формируем запрос
// Здесь есть нюанс первая строка данных всегда будет являться заголовком
// если она пустая то имена клонок формируются следующим образом F<Номер колонки>
Стр_SQL = "S_elect
| F1 as Артикул,
| F2 as Наименование,
| F3 as ПолноеНаименование
| FROM [A1:AZ100000]
| WHERE ((F1 Is Not Null ) AND (F1 <>''))";
Об_РекордСет = Новый COMОбъект("ADODB.Recordset");
Попытка
Об_РекордСет=Об_Конект.Execute(Стр_SQL);
Исключение
Сообщить("Не удадлось выполнить запрос к файлу Excel
|"+ ОписаниеОшибки(),СтатусСообщения.Важное);
Возврат Ложь;
КонецПопытки;
Пока НЕ Об_РекордСет.EOF Цикл
// Получаем данные из Об_РекордСет
// ...
Сообщить("");
Для каждого ОБ_Поле Из Об_РекордСет.Fields Цикл
// Пример вывода информации Сообщить(ОБ_Поле.Name,Об_РекордСет.Fields(ОБ_Поле.Name).value);
КонецЦикла;
// ...
Об_РекордСет.MoveNext();
КонецЦикла;
Об_Конект.Close(); // Закрываем конект
Об_Конект=Неопределено;
Об_РекордСет=Неопределено;
Возврат Истина;
Иначе
Сообщить("Файл "+ПутьКФайлу+" не найден!");
Возврат Ложь;
КонецЕсли;
КонецФункции
Категория:
Работа с Microsoft Office и OpenOffice Отчет Список работавших... с использованием СКД ( Обширный пример ) Нужен Отчет, в котором было бы видно, кто и из какой организации к нам пришел?
Эти данные хранятся в Табличной части "Трудовая деятельность" справочника "ФизическиеЛица", еще нужно вывести в отчет текущую Должность и Подразделение(Выводить ПолноеНаименование, т.е со всеми родителями) работника из регистра сведений "Работники орагнизации" и получить из документа "ПриемНаРаботуВОрганизацию" Дату приема и номер документа.
1. Создаем новый отчет, открываем СКД и добавляем набор данных Запрос. Согласно нашим требованиям формируем запрос:
Код 1C v 8.х ВЫБРАТЬ
ФизическиеЛицаТрудоваяДеятельность.Ссылка,
ФизическиеЛицаТрудоваяДеятельность.НомерСтроки,
ФизическиеЛицаТрудоваяДеятельность.Организация,
ФизическиеЛицаТрудоваяДеятельность.ДатаНачала,
ФизическиеЛицаТрудоваяДеятельность.ДатаОкончания,
ФизическиеЛицаТрудоваяДеятельность.Должность КАК ДолжностьТруд,
ПриемНаРаботуВОрганизациюРаботникиОрганизации.Ссылка.Номер,
ПриемНаРаботуВОрганизациюРаботникиОрганизации.Ссылка.Дата,
РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации,
РаботникиОрганизацийСрезПоследних.Должность КАК Должность,
РаботникиОрганизацийСрезПоследних.Сотрудник.Код,
ПриемНаРаботуВОрганизациюРаботникиОрганизации.ДатаПриема,
РаботникиОрганизацийСрезПоследних.Организация КАК ОрганизацияГлавная,
ВЫБОР
КОГДА РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации.Родитель.Наименование ЕСТЬ NULL
ТОГДА РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации.Наименование
КОГДА РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации.Родитель.Родитель.Наименование ЕСТЬ NULL
ТОГДА РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации.Родитель.Наименование + " / " + РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации.Наименование
ИНАЧЕ РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации.Родитель.Родитель.Наименование + " / " + РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации.Родитель.Наименование + " / " + РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации.Наименование
КОНЕЦ КАК ПолныйКод
ИЗ
Справочник.ФизическиеЛица.ТрудоваяДеятельность КАК ФизическиеЛицаТрудоваяДеятельность
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций.СрезПоследних КАК РаботникиОрганизацийСрезПоследних
ПО ФизическиеЛицаТрудоваяДеятельность.Ссылка = РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо.Ссылка
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПриемНаРаботуВОрганизацию.РаботникиОрганизации КАК ПриемНаРаботуВОрганизациюРаботникиОрганизации
ПО ФизическиеЛицаТрудоваяДеятельность.Ссылка = ПриемНаРаботуВОрганизациюРаботникиОрганизации.ФизЛицо.Ссылка
2. Переходим в закладку Настройки, Заполняем Выбранные поля Добавляем к отчету пустую группировку:
3. В итоге должно получиться:
4. Сохраняем и проверяем отчет, уже что-то формируется
:
5. Теперь сделаем отчет красивым. Добавим отбор по организации на форме, и создадим макет вывода. Создадим основную форму отчета, кроме существующих Элементов панели и Табличного документа "Результат" добавим на форму "ТабличноеПоле" и установим Данные: "КомпоновщикНастроек.Настройки.Отбор"
6. Откроем СКД, закладку Макеты. В табличном поле Нарисуем макет, в левом верхнем поле Добавим макет Группировки "ЗаголовокОтчета:Заголовок" и "СтрокаОтчета:Заголовок". В нижнем левом поле опишем Параметры макета, для "СтрокаОтчета:Заголовок":
7. На закладке Настройки, добавим группировки "ОрганизацияГлавная" и входящая в нее "Детальные записи". Щелкнув правой клавишей мыши на каждой группировке и выбрав из меню пункт "Установить имя..." установим именя областей созданного макета. Заполним Выбранные поля:
8. Внизу на закладке "Отбор" установим:
9. Сохраним отчет и проверим его работу, все ок
Автор:
Евгений Мигачев Категория:
Схема Компоновки Данных Битая ссылка, <Объект не найден>, Уникальный Идентификатор, GUID Когда кто-то удаляет данные из базы без проверки ссылок на эти объекты, то везде где этот объект использовался появляется сообщение вида: <Объект не найден> (84:bf5600145e3710ab11dda4c605dbe824) .
В данной статье я опишу пример быстрого восстановления данных.
Для пользователя:
Скачиваете эту обработку восстановления объектов по GUID :
Для 1С 8.1:
здесь или
Скачивать файлы может только зарегистрированный пользователь!
Для 1С 8.2:
Скачивать файлы может только зарегистрированный пользователь!
!!! Новая Версия!!! 8.2 и 8.3 -
Скачивать файлы может только зарегистрированный пользователь! Подробное описание:
Объект не найден в 1С или про Битые ссылки 1С
и открываете ее в программе:
1. Копируем фразу <Объект не найден... и вставляем в поле Объект не найден, жмем на кнопку GUID -> и получаем 05dbe824-a4c6-11dd-bf56-00145e3710ab
2. Если Вы знаете что удалили, то можете сразу нажать кнопку Создать Объект Из GUID - Пункт 4.
3. Если Вы не знаете что удалили, тогда вам нужно поднять архивную копию базы, открыть там обработку и вставить полученный GUID в поле GUID.
далее нажать Ссылку -> и в правом поле отобразится необходимый Вам объект(в моем случае Попов Роман Владимирович).
Открыв его, узнаем что это справочник Сотрудники и всю содержащуюся в справочнике информацию. Возвращаемся в базу, где необходимо восстановить объект и жмем кнопку Создать Объект Из GUID
4. Из открывшегося списка выбираем Справочник Сотрудники, в открывшейся форме заполняем все поля данными из архивной базы и жмем OK. Все, данный объект восстановлен.
Для быстрого поиска всех <Объект не найден> используйте
Поиск в базе битых ссылок - "объект не найден"
Для программиста:
Для получения уникального идентификатора объекта, используйте код вида:
Код 1C v 8.х ГУИДССЫЛКИ = СсылкаНаОбъект. УникальныйИдентификатор( ) ;
Для того чтобы преобразовать <Объект не найден> (84:bf5600145e3710ab11dda4c605dbe824) в УникальныйИдентификатор (GUID)
Код 1C v 8.х
ГУИДУдОбъктаСтр = СтрЗаменить( ГУИДУдОбъкта, "<Объект не найден> (" , "" ) ;
ГУИДУдОбъктаСтр = СтрЗаменить( ГУИДУдОбъктаСтр, ")" , "" ) ;
ГУИДУдОбъктаСтр = СтрЗаменить( ГУИДУдОбъктаСтр, "0x" , "" ) ;
ГУИДУдОбъктаСтр = Сред( ГУИДУдОбъктаСтр, Найти( ГУИДУдОбъктаСтр, ":" ) + 1 , СтрДлина( ГУИДУдОбъктаСтр) ) ;
ГУИД = Сред( ГУИДУдОбъктаСтр, 25 , 8 ) + "-" + Сред( ГУИДУдОбъктаСтр, 21 , 4 ) + "-" + Сред( ГУИДУдОбъктаСтр, 17 , 4 ) + "-" + Сред( ГУИДУдОбъктаСтр, 1 , 4 ) + "-" + Сред( ГУИДУдОбъктаСтр, 5 , 12 ) ;
Для получения ссылки по уникальному идентификатору, используйте код:
Код 1C v 8.х
УникальныйИдентификатор = Новый УникальныйИдентификатор( ГУИД)
Если ПолучитьСсылкуНоМенеджеруОбъекта( Справочники, УникальныйИдентификатор) Тогда
ИначеЕсли ПолучитьСсылкуНоМенеджеруОбъекта( Документы, УникальныйИдентификатор) Тогда
ИначеЕсли ПолучитьСсылкуНоМенеджеруОбъекта( ПланыВидовХарактеристик, УникальныйИдентификатор) Тогда
ИначеЕсли ПолучитьСсылкуНоМенеджеруОбъекта( ПланыСчетов, УникальныйИдентификатор) Тогда
ИначеЕсли ПолучитьСсылкуНоМенеджеруОбъекта( ПланыОбмена, УникальныйИдентификатор) Тогда
ИначеЕсли ПолучитьСсылкуНоМенеджеруОбъекта( БизнесПроцессы, УникальныйИдентификатор) Тогда
ИначеЕсли ПолучитьСсылкуНоМенеджеруОбъекта( Задачи, УникальныйИдентификатор) Тогда
КонецЕсли ;
Функция ПолучитьСсылкуНоМенеджеруОбъекта(ОбъектыМенеджер,УникальныйИдентификатор)
Для Каждого Менеджер Из ОбъектыМенеджер Цикл
СсылкаНаОбъектГуид = Менеджер. ПолучитьСсылку( УникальныйИдентификатор) ;
Если СсылкаНаОбъектГуид. ПолучитьОбъект( ) < > Неопределено Тогда
Возврат Истина ;
КонецЕсли ;
КонецЦикла ;
Возврат Ложь ;
КонецФункции
Создать объект документ или справочник и установить ему свой Уникальный идентификатор
Код 1C v 8.х // ТекGUID = 05dbe824-a4c6-11dd-bf56-00145e3710ab
Попытка
УникальныйИд = Новый УникальныйИдентификатор(ТекGUID);
Исключение
Возврат;
КонецПопытки;
КартинкаСпр=БиблиотекаКартинок.Справочник;
КартинкаДок=БиблиотекаКартинок.Документ;
СписокВыбора = Новый СписокЗначений;
СписокВыбора.Добавить(null ,"СПРАВОЧНИКИ");
Для каждого ЭлементМетаданных Из Метаданные.Справочники Цикл
Структурка=Новый Структура;
Структурка.Вставить("Имя",ЭлементМетаданных.Имя);
Структурка.Вставить("Тип",1);
СписокВыбора.Добавить(Структурка,ЭлементМетаданных.Синоним,,КартинкаСпр);
КонецЦикла;
СписокВыбора.Добавить(null ,"ДОКУМЕНТЫ");
Для каждого ЭлементМетаданных Из Метаданные.Документы Цикл
Структурка=Новый Структура;
Структурка.Вставить("Имя",ЭлементМетаданных.Имя);
Структурка.Вставить("Тип",2);
СписокВыбора.Добавить(Структурка,ЭлементМетаданных.Синоним,,КартинкаДок);
КонецЦикла;
Результат=СписокВыбора.ВыбратьЭлемент("Выберите тип ссылки");
Если Результат=Неопределено Тогда
Возврат;
КонецЕсли;
Структурка=Результат.Значение;
Если Структурка=null Тогда
Возврат;
КонецЕсли;
НовыйОбъект=Неопределено;
Если Структурка.Тип=1 Тогда
Объект=Справочники[Структурка.Имя].СоздатьЭлемент();
Объект.ОбменДанными.Загрузка=Истина;
Объект.УстановитьСсылкуНового(Справочники[Структурка.Имя].ПолучитьСсылку(УникальныйИд));
Иначе
Объект=Документы[Структурка.Имя].СоздатьДокумент();
Объект.ОбменДанными.Загрузка=Истина;
Объект.УстановитьСсылкуНового(Документы[Структурка.Имя].ПолучитьСсылку(УникальныйИд));
КонецЕсли;
Форма=Объект.ПолучитьФорму();
Форма.Открыть();
Для 1С 7.7 смотрите:
Технология восстановления удаленных объектов или элементов в 1С 7.7
еще можно получить ИдентификаторДокумента при OLE доступе:
Код 1C v 7.x Если Док_Источник. ВыбратьДокументы( ВыбНачПериода, ВыбКонПериода) = 1 Тогда
Пока Док_Источник. ПолучитьДокумент( ) = 1 Цикл
Объект = БазаОле. ЗначениеВстрокуВнутр( Док_Источник. ТекущийДокумент( ) ) ;
ИдентификаторДокумента = СокрЛП( ПолучитьИД( Объект) ) ;
КонецЦикла ;
Еще посмотрите метод:
ЗначениеВСтрокуВнутр(<?>);
Синтаксис:
ЗначениеВСтрокуВнутр(<Объект>)
Назначение:
Преобразование значения объекта агрегатного типа в строковое системное представление.
Возвращает: представление значения объекта в строковом системном виде.
Параметры:
<Объект> - значение объекта агрегатного типа данных которое нужно преобразовать.
Подробнее см. в документации, глава ''Системные процедуры и функции''
Категория:
1С Общие вопросы - Обычные формы Пример подключения к базе 1С 7.7 из 1С 8.0-8.1 Код 1C v 8.х // Переменная База - строка содержащая путь к базе 1С 7.7
// Возвращает переменную содержащую в себе COM-объект 1С 7.7
Функция ПодключитьсяКOLE(База)
Попытка
v7 = Новый COMObject("V1CEnterprise.Application");
Исключение
Сообщить(ОписаниеОшибки());
Возврат Null ;
КонецПопытки;
Попытка
Открыта = v7.Initialize(v7.RMTrade, "/D""" + База+ """ /M ", "NO_SPLASH_SHOW");
Исключение
Сообщить(ОписаниеОшибки());
Возврат Null ;
КонецПопытки;
Если Не Открыта Тогда
Сообщить(ОписаниеОшибки());
Возврат Null ;
КонецЕсли;
Возврат v7;
КонецФункции
Экземпляр COM-объекта 1С 7.7 уничтожается (по завершению работы с ним) следующим образом:
Код 1C v 8.х v7 = "" ;
Категория:
COM-объекты, WMI, WSH Функция проверяет орфографию переданного текста с помощью средств MS Word Код 1C v 8.х // Проверка орфоргафии переданного текста с помощью средств MS Word
// Параметры
// <Текст> – <Строка> – проверяемый текст
// <ДеревоЗначений> – <ДеревоЗначений> – возвращает дерево замен
// Возвращаемое значение:
// <Булево> – Истина, если текст не содержит ошибок
Функция ПроверитьОрфографию(Текст, ДеревоЗначений = Null ) Экспорт
Попытка
Ворд = Новый COMОбъект("Word.Application"); //Создаем объект MS Word
Исключение
Предупреждение("Microsoft Word не установлен!",,"Ошибка!");
Возврат Ложь;
КонецПопытки;
ТекстБезОшибок = Ворд.CheckSpelling(Текст); //проверяем нашу строку на ошибки
Если ТекстБезОшибок Тогда // Нет ошибок
Возврат Истина;
Иначе // Обнаружены ошибки, будем проверять по словам
Если ДеревоЗначений <> Null Тогда
Ворд_Активен = Ворд.Visible; //Запомним, был ли Word активен
ВремДок = Ворд.Documents.Add(); //Добавляем к открытым документам
МояОбласть = ВремДок.Range(0, 0); //Получаем пустую область в начале документа
МояОбласть.I_nsertBefore(Текст); //Добавляем в эту область нашу строку
ЧислоСлов = МояОбласть.Words.Count; //Подсчитываем число слов в области
ДеревоЗначений = Новый ДеревоЗначений; //сюда будем записывать слова и варианты их замен
МассивТипов = Новый Массив;
МассивТипов.Добавить(Тип("Строка"));
ОписаниеТипов = Новый ОписаниеТипов(МассивТипов);
ДеревоЗначений.Колонки.Добавить("Слово", ОписаниеТипов, "Слово/Замена",);
wdSpellword=0; //константа Word, указывающая на то, что при при вызове проверки орфографии возвращается множество замен
wdDoNotSaveChanges=0; //константа Word, указывающая на то, что при закрытии не надо сохранять изменения в закрываемом документе
Для НомерСлова = 1 По ЧислоСлов Цикл
ОбработкаПрерыванияПользователя();
ПровОбласть = МояОбласть.Words(НомерСлова); //выбираем очередное слово
ПровСлово = СокрЛП(ПровОбласть.Text);
СловоБезОшибок = Ворд.CheckSpelling(ПровСлово); //проверяем наше слово на ошибки
Если НЕ СловоБезОшибок Тогда //получаем варианты замен (их может и не быть!)
Если ДеревоЗначений.Строки.Найти(ПровСлово, "Слово") = Неопределено Тогда
НоваяСтрока = ДеревоЗначений.Строки.Добавить();
НоваяСтрока.Слово = ПровСлово;
Замены = ПровОбласть.GetSpellingSuggestions( ,1, ,wdSpellword); //проверяем орфографию, укзав, что возвращать надо множество замен
ЧислоЗамен = Замены.Count; //получаем число возможных замен
Если ЧислоЗамен > 0 Тогда //заносим варианты замен в таблицу значений
Для НомерЗамены = 1 По ЧислоЗамен Цикл
СловоЗамены = СокрЛП(Замены.Item(НомерЗамены).Name);
НоваяПодСтрока = НоваяСтрока.Строки.Добавить();
НоваяПодСтрока.Слово = СловоЗамены;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
ВремДок.Close(wdDoNotSaveChanges,,);
Если Не Ворд_Активен Тогда
Ворд.Quit();
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецЕсли;
КонецФункции
Пример использования:
Код 1C v 8.х
Перем ДеревоЗначений;
Состояние( "Идет проверка орфографии. Пожалуйста ждите..." ) ;
Текст = ЭлементыФормы. ПолеТекстовогоДокумента. ПолучитьТекст( ) ;
Если ПроверитьОрфографию( Текст, ДеревоЗначений) Тогда
Предупреждение( "Текст ошибок не содержит!!!" , 5 , "OK" ) ;
Иначе
Если ДеревоЗначений. Строки. Количество( ) > 0 Тогда
ФормаВыбора = ЭтотОбъект. ПолучитьФорму( "ФормаВыбора" ) ;
Для каждого СтрокаДЗ Из ДеревоЗначений. Строки Цикл
Строка = ФормаВыбора. ДеревоЗначений. Строки. Добавить( ) ;
Строка. Слово = СтрокаДЗ. Слово;
Для каждого ПодСтрокаДЗ Из СтрокаДЗ. Строки Цикл
ПодСтрока = Строка. Строки. Добавить( ) ;
ПодСтрока. Слово = ПодСтрокаДЗ. Слово;
КонецЦикла ;
КонецЦикла ;
Если ФормаВыбора. ОткрытьМодально( ) = "OK" Тогда
Для каждого СтрокаДЗ Из ФормаВыбора. ДеревоЗначений. Строки Цикл
Для каждого ПодСтрокаДЗ Из СтрокаДЗ. Строки Цикл
Если ПодСтрокаДЗ. Пометка Тогда
Текст = СтрЗаменить( Текст, ПодСтрокаДЗ. Родитель. Слово, ПодСтрокаДЗ. Слово) ;
КонецЕсли ;
КонецЦикла ;
КонецЦикла ;
ЭлементыФормы. ПолеТекстовогоДокумента. УстановитьТекст( Текст) ;
КонецЕсли ;
Иначе
Предупреждение( "В тексте найдены ошибки, но вариантов автозамены не нашлось!!!" , 5 , "Ошибка" ) ;
КонецЕсли ;
КонецЕсли ;
Категория:
Работа с Microsoft Office и OpenOffice Скрипт запуска 1С:Предприятия от имени Администратора или Пользователя Данные пример для 7.7, для 8-ых версий указать путь к 1Сv8.exe
Код VBS
Dim WshShell, ObjFSO
Set WshShell = CreateObject("WScript.Shell")
set objFSO = CreateObject("Scripting.FileSystemObject")
appl="C:\1Cv7\BINOP\1CV7s.exe"
users="DomenKompanii\emigachev"
Set objWMIService = GetObject _
("winmgmts:\\.\root\cimv2:Win32_Process")
errReturn = objWMIService.Create _
("cmd.exe /K ""title RUNAS_AUTO & runas.exe /user:" & users & " """ & appl & """""", Null , Null , intProcessID)
wscript.Sleep(1000)
wshShell.AppActivate "RUNAS_AUTO"
function WriteWord()
WshShell.SendKeys "P@ssw0rd"
end function
wscript.Sleep(1000)
wshShell.SendKeys "{ENTER}"
или так:
Код VBS
Set WshShell = CreateObject ("Wscript.Shell" )
Set WshEnv = WshShell.Environment("PRocess" )
WshShell.Run "runas.exe /user:DomenKompanii\emigachev C:\WD\1Cv7\BINOP\1CV7s.exe"
Wscript.Sleep 800
WshShell.AppActivate WshEnv("SystemRoot" ) & "\system32\runas.exe"
Wscript.Sleep 200
WshShell.SendKeys "P@ssw0rd"
Wscript.Sleep 500
Категория:
Администрирование Экспорт печатных форм и любых данных из 1С в BMP, JPEG, PCX, PDF, PNG и TIFF. Оптимальным решением является установка
Bullzip PDF Printer . После установки в системе появляется виртуальный принтер, с помощью которого можно "печатать" в файл pdf из любого приложения. Программа бесплатная, работает в терминале и имеет поддержку русского языка.
После установки, можно печатать напрямую используя код:
Код 1C v 8.х
Процедура СоздатьФайлПДФ(Таб, ИмяФайла)
Попытка
ПДФПринтер = Новый ComObject( «Bullzip. PDFPrinterSettings») ;
ПДФПринтер. SetValue( «output», ИмяФайла) ;
ПДФПринтер. SetValue( «ShowSaveAS», «never») ;
ПДФПринтер. SetValue( «ShowProgress», «no») ;
ПДФПринтер. SetValue( «ShowProgressFinished», «no») ;
ПДФПринтер. SetValue( «ShowSettings», «never») ;
ПДФПринтер. SetValue( «ShowPDF», «no») ;
ПДФПринтер. SetValue( «ConfirmOverwrite», »no») ;
ПДФПринтер. WriteSettings( ) ;
Таб. Автомасштаб = Истина ;
Таб. ИмяПринтера = «Bullzip PDF Printer»; Таб. Напечатать( Истина ) ;
PDFФайл = Новый Файл( ИмяФайла) ;
Пока НЕ PDFФайл. Существует( ) Цикл
ОбработкаПрерыванияПользователя( ) ;
КонецЦикла ;
Исключение
Сообщить( ОписаниеОшибки( ) ) ;
Сообщить( «Скорее всего необходимо установить или переустановить «»Bullzip PDF Printer») ;
КонецПопытки ;
Таб. ИмяПринтера = ПолучитьПринтерПоУмолчанию( ) ;
КонецПроцедуры
Здесь функция
ПолучитьПринтерПоУмолчанию() нужна для того чтобы вернуть печатной форме принтер по умолчанию, т.к. если напечатать без предварительного просмотра то печать пойдет на виртуальный PDF принтер BullzipPDFPrinter.
Код 1C v 8.х //получаем принтер по умолчанию
Функция ПолучитьПринтерПоУмолчанию()
Скрипт = Новый ComObject(«MSScriptControl.ScriptControl»);
Скрипт.Language = «vbscript»;
Скрипт.AddCode(»
|Function GetDefaultPrinter()
|GetDefaultPrinter=vbNull String
|Set objWMIService=GetObject(«»winmgmts:»" _
|& «»{impersonationLevel=impersonate}!\\.\root\cimv2″»)
|Set colInstalledPrinters=objWMIService.ExecQuery _
|(«»S_elect * from Win32_Printer»")
|For Each objPrinter in colInstalledPrinters
|If objPrinter.Attributes and 4 Then
|GetDefaultPrinter=objPrinter.Name
|Exit For
|End If
|Next
|End Function»);
Возврат СокрЛП(Скрипт.run(«GetDefaultPrinter»));
КонецФункции
Печать в PDF используя bioPDF Категория:
Администрирование Получение списка зарегистрированных на текущем компьютере баз 1С Предприятие 1Cv7 Код 1C v 7.x // Процедура получает из реестра список зарегистрированных ИБ 7.7
Процедура ПолучитьСписокИБ()
Попытка
ScrptCtrl=Новый COMObject("MSScriptControl.ScriptControl");
ScrptCtrl.Language="vbscript";
ScrptCtrl.AddCode("
|Function Get1CV77Titles()
| const HKEY_CURRENT_USER = &H80000001
| Set oReg=GetObject(""winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv"")
| strKeyPath = ""Software\1C\1Cv7\7.7\Titles""
| oReg.EnumValues HKEY_CURRENT_USER, strKeyPath, arrValues
| strInfo=vbNull String
| Get1CV77Titles = strInfo
| On Error Resume Next
| For i = LBound(arrValues) To UBound(arrValues)
| call oReg.GetStringValue(HKEY_CURRENT_USER,strKeyPath,arrValues(i),Value)
| strInfo=strInfo & arrValues(i) & vbTab & Value & vbCrLf
| Next
| Get1CV77Titles = strInfo
|End Function
|");
Текст=СокрЛП(ScrptCtrl.Run("Get1CV77Titles"));
Исключение
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;
ТаблицаПути.Очистить();
Если НЕ ЗначениеЗаполнено(Текст) Тогда
Возврат;
КонецЕсли;
Для Ном=1 По СтрЧислоСтрок(Текст) Цикл
СтрБазы=СтрПолучитьСтроку(Текст,Ном);
Разд=Найти(СтрБазы,Символы.Таб);
Путь=Лев(СтрБазы,Разд-1);
Название=Прав(СтрБазы,СтрДлина(СтрБазы)-Разд);
НоваяСтрока = ТаблицаПути.Добавить();
НоваяСтрока.Имя = Название;
НоваяСтрока.Путь = Путь;
КонецЦикла;
ТаблицаПути.Сортировать("Имя");
КонецПроцедуры //ПолучитьСписокИБ
Функция возвращает список значений содержащий список баз установленных на данном компьютаре. В котором в качестве значения указывается путь до базы, а в представлении название базы, так как она отображается в окне выбора баз при запуске 1С. Если баз не обнаруженно то возвращает строку "Error"
Код 1C v 7.x
функция сзПолучитьСписокБаз()
попытка
олеСкрипт = создатьобъект( "MSScriptControl.ScriptControl" ) ;
олеСкрипт. Language = "VBScript" ;
стрКод =
"function strGetListBase()
| const RootKey = &H80000001
| set Reg = GetObject("" winmgmts:{impersonationLevel=impersonate}!\\."" &_
| "" \root\default:StdRegProv"" )
| PathKey = "" Software\1C\1Cv7\7.7\Titles""
| Reg.EnumValues RootKey, PathKey, Arr
| Answer = "" {"" "" СписокЗначений"" "" ,{""
| for x = LBound(Arr) to UBound(Arr)
| call Reg.GetStringValue(RootKey, PathKey, Arr(x), Value)
| Answer = Answer & "" {{"" "" Строка"" "" ,"" "" "" &_
| Arr(x) & "" "" "" },"" "" "" & replace(Value, "" "" "" "" , "" "" "" "" "" "" ) &_
| "" "" "" ,"" "" 0"" "" }""
| if x <> UBound(Arr) then Answer = Answer & "" ,""
| next
| Answer = Answer & "" }}""
| strGetListBase = Answer
|end function" ;
олеСкрипт. AddCode( стрКод) ;
Ответ = значениеизстроки( олеСкрипт. Run( "strGetListBase" ) ) ;
Ответ. СортироватьПоПредставлению( ) ;
исключение
Ответ = "Error" ;
конецпопытки ;
возврат Ответ;
конецфункции
Еще примеры! Получение списка баз 1С 7.7 из реестра Категория:
Полезные, Универсальные Функции Функция выполняет пропорциональное распределение суммы в соответствии с заданными коэффициентами Код 1C v 8.х
// Функция выполняет пропорциональное распределение суммы в соответствии с заданными коэффициентами распределения
//
// Параметры:
// ИсхСумма - распределяемая сумма
// МассивКоэф - массив коэффициентов распределения
// Точность - точность округления при распределении. Необязателен.
//
// Возврат:
// МассивСумм - массив размерностью равный массиву коэффициентов, содержит
// суммы в соответствии с весом коэффициента (из массива коэффициентов)
// В случае если распределить не удалось (сумма = 0, кол-во коэф. = 0,
// или суммарный вес коэф. = 0), тогда возвращается значение Неопределено
//
Функция РаспределитьПропорционально(Знач ИсхСумма, МассивКоэф, Знач Точность = 2) Экспорт
Если МассивКоэф.Количество() = 0 Или ИсхСумма = 0 Или ИсхСумма = Null Тогда
Возврат Неопределено;
КонецЕсли;
ИндексМакс = 0;
МаксЗнач = 0;
РаспрСумма = 0;
СуммаКоэф = 0;
Для К = 0 По МассивКоэф.Количество() - 1 Цикл
МодульЧисла = ?(МассивКоэф[К] > 0, МассивКоэф[К], - МассивКоэф[К]);
Если МаксЗнач < МодульЧисла Тогда
МаксЗнач = МодульЧисла;
ИндексМакс = К;
КонецЕсли;
СуммаКоэф = СуммаКоэф + МассивКоэф[К];
КонецЦикла;
Если СуммаКоэф = 0 Тогда
Возврат Неопределено;
КонецЕсли;
МассивСумм = Новый Массив(МассивКоэф.Количество());
Для К = 0 По МассивКоэф.Количество() - 1 Цикл
МассивСумм[К] = Окр(ИсхСумма * МассивКоэф[К] / СуммаКоэф, Точность, 1);
РаспрСумма = РаспрСумма + МассивСумм[К];
КонецЦикла;
// Погрешности округления отнесем на коэффиецент с максимальным весом
Если Не РаспрСумма = ИсхСумма Тогда
МассивСумм[ИндексМакс] = МассивСумм[ИндексМакс] + ИсхСумма - РаспрСумма;
КонецЕсли;
Возврат МассивСумм;
КонецФункции
Категория:
Работа с Числами Функция ЗначениеЗаполнено(Значение) для 8.0 В 8.1 есть такая встроенная функция, а в 8.0 про нее почему-то забыли, исправим это недоразумение:
Код 1C v 8.х
Функция ЗначениеЗаполнено(Значение) Экспорт
Результат = Истина;
ТипЗначения = ТипЗнч(Значение);
Если Значение = Неопределено Тогда
Результат = Ложь;
ИначеЕсли Значение = NULL Тогда
Результат = Ложь;
ИначеЕсли ТипЗначения = Тип( "Строка" ) Тогда
Если СокрЛП( Значение ) = "" Тогда
Результат = Ложь;
КонецЕсли;
ИначеЕсли ТипЗначения = Тип( "Число" ) Тогда
Если Значение = 0 Тогда
Результат = Ложь;
КонецЕсли;
ИначеЕсли ТипЗначения = Тип( "Дата" ) Тогда
Если Значение = Дата( '00010101' ) Тогда
Результат = Ложь;
КонецЕсли;
ИначеЕсли ТипЗначения = Тип( "Булево" ) Тогда
Результат = Истина;
ИначеЕсли ТипЗначения = Тип( "РежимПроведенияДокумента" ) Тогда
Результат = Истина;
Иначе
Если Значение = Новый( ТипЗначения ) Тогда
Результат = Ложь;
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции
Категория:
Полезные, Универсальные Функции Получение списка баз 1С 7.7 из реестра Ниже приведено несколько способов получения списка баз 1С 7.7 из реестра:
Код получения списка баз 1С 7.7 из 8.х
Код 1C v 8.х функция сзПолучитьСписокБаз()
попытка
олеСкрипт = новый COMОбъект( "MSScriptControl.ScriptControl" ) ;
олеСкрипт. Language = "VBScript" ;
стрКод =
"function strGetListBase()
| const RootKey = &H80000001
| set Reg = GetObject("" winmgmts:{impersonationLevel=impersonate}!\\."" &_
| "" \root\default:StdRegProv"" )
| PathKey = "" Software\1C\1Cv7\7.7\Titles""
| Reg.EnumValues RootKey, PathKey, Arr
| Answer = "" {"" "" #"" "" ,4772b3b4-f4a3-49c0-a1a5-8cb5961511a3,"" & chr(10)
| Answer = Answer & "" {3,1e512aab-1b41-4ef6-9375-f0137be9dd91,0,0,"" & chr(10)
| Answer = Answer & "" {"" & (UBound(Arr) + 1) & "" ,"" & chr(10)
| for x = LBound(Arr) to UBound(Arr)
| call Reg.GetStringValue(RootKey, PathKey, Arr(x), Value)
| Answer = Answer & "" {1e512aab-1b41-4ef6-9375-f0137be9dd91,"" & chr(10) &_
| "" {"" "" "" & replace(Value, "" "" "" "" , "" "" "" "" "" "" ) & "" "" "" ,0,"" &_
| chr(10) & "" {"" "" S"" "" ,"" "" "" & Arr(x)& "" "" "" },"" &_
| chr(10) & "" {3,0,"" & chr(10) & "" {0},"" "" "" "" ,-1,-1,0,0}"" &_
| chr(10) & "" }"" & chr(10) & "" }""
| if x <> UBound(Arr) then Answer = Answer & "" ,""
| Answer = Answer & chr(10)
| next
| Answer = Answer & "" },"" & chr(10) & "" {"" "" Pattern"" "" }"" & chr(10) &_
| "" }"" & chr(10) & "" }""
| strGetListBase = Answer
|end function" ;
олеСкрипт. AddCode( стрКод) ;
стрОтвет = олеСкрипт. Run( "strGetListBase" ) ;
Ответ = ЗначениеИзСтрокиВнутр( стрОтвет) ;
Ответ. СортироватьПоПредставлению( ) ;
исключение
Ответ = новый СписокЗначений;
Ответ. Добавить( "Базы 1С:Передприятия 7.7 не обнаруженны!" ) ;
конецпопытки ;
возврат Ответ;
конецфункции
Код для 1С 7.7
Код 1C v 7.x
Функция ПолучитьСписокБаз1()
Перем Value,arrValues;
Scr = CreateObject("MSScriptControl.ScriptControl");
Scr.Language = "vbscript";
Scr.Timeout=-1;
HKEY_CURRENT_USER = 2147483649;
strKeyPath = "Software\1C\1Cv7\7.7\Titles";
Locator=СоздатьОбъект("WbemScripting.SWbemLocator");
ServiceDef=Locator.ConnectServer(".","root\default");
oReg = ServiceDef.Get("StdRegProv");
Dict=СоздатьОбъект("Scripting.Dictionary");
Scr.AddObject("Dict",Dict);
Scr.AddObject("oReg",oReg);
Scr.ExecuteStatement("dim arrValues,Value:");
Scr.ExecuteStatement("oReg.EnumValues "+HKEY_CURRENT_USER+","""+strKeyPath+""",arrValues:");
Scr.ExecuteStatement("for i=lbound(arrValues) to ubound(arrValues):Dict.add ""pj"" & i, arrValues(i):next");
ТЗБаз=СоздатьОбъект("ТаблицаЗначений");
ТЗБаз.НоваяКолонка("Путь");
ТЗБаз.НоваяКолонка("Описание");
Для к=0 По Dict.count Цикл
Д=Dict.Item("pj"+к);
Scr.ExecuteStatement("oReg.GetStringValue "+HKEY_CURRENT_USER+","""+strKeyPath+""","""+Д+""",Value");
ТЗБаз.НоваяСтрока();
ТЗБаз.Путь = Д;
ТЗБаз.Описание = Scr.eval("Value");
КонецЦикла;
//Посмотрим что в ТЗ
//ТЗБаз.ВыбратьСтроку();
Возврат ТЗБаз;
КонецФункции
Процедура ПолучитьСписокБаз2()
Попытка
scrptCtrl=createobject("MSScriptControl.ScriptControl");
scrptCtrl.language="vbscript";
scrptCtrl.addcode("Function Get1CV77Titles()
|const HKEY_CURRENT_USER = &H80000001
|Set oReg=GetObject(""winmgmts:{impersonationLevel=impersonate}!\\."" &_
|""\root\default:StdRegProv"")
|strKeyPath = ""Software\1C\1Cv7\7.7\Titles""
|oReg.EnumValues HKEY_CURRENT_USER, strKeyPath, arrValues
|strInfo=vbNull String
|For i = LBound(arrValues) To UBound(arrValues)
| call oReg.GetStringValue(HKEY_CURRENT_USER,strKeyPath,arrValues(i),Value)
| strInfo=strInfo & arrValues(i) & ""="" & Value & vbCrLF
|Next
|Get1CV77Titles = strInfo
|End Function");
Сообщить(scrptCtrl.run("Get1CV77Titles"));
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры
<Сообщил Gloom>
Процедура ПолучитьСписокБаз3()
Ключ="HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\Titles";
ИмяКаталога=СокрЛП(КаталогПользователя());
ИмяБазы=СокрЛП(каталогИБ());
Если прав(ИмяКаталога,1)<>"\" Тогда ИмяКаталога=ИмяКаталога+"\" КонецЕсли;
Если прав(ИмяБазы,1)<>"\" Тогда ИмяБазы=ИмяБазы+"\" КонецЕсли;
ИмяБазыСтр=Симв(34)+СтрЗаменить(ИмяБазы,"\","\\")+Симв(34);
ИмяФайла="USER.TXT";
Команда="Regedit /ea "+Симв(34)+ИмяКаталога+ИмяФайла+Симв(34)+" "+Симв(34)+Ключ+Симв(34);
КомандаСистемы(Команда);
Текст=СоздатьОбъект("Текст");
Текст.КодоваяСтраница(0);
Текст.Открыть(ИмяКаталога+ИмяФайла);
Текст.Показать();
Стр=""; Нашли=0;
Для сч=1 по Текст.КоличествоСтрок() Цикл
Стр=СокрЛП(Текст.ПолучитьСтроку(сч));
Сообщить(Стр);
Если Найти(стр,ИмяБазыСтр)<>0 Тогда
Нашли=1;
прервать;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Категория:
COM-объекты, WMI, WSH Соответсвие начислений в ЗУПе и Отраженных в БУ ( Пример ОБЪЕДИНИТЬ ВСЕ ) Код 1C v 8.х
Запрос=новый Запрос;
Запрос.Текст="
|ВЫБРАТЬ
| БУОсновныеНачисления.Организация КАК Организация,
| БУОсновныеНачисления.ВидРасчета,
| БУОсновныеНачисления.ФизЛицо КАК ФизЛицо,
| БУОсновныеНачисления.ПериодРегистрации,
| БУОсновныеНачисления.Результат * -1 КАК Результат,
| ""ОсновныеБУ"" КАК ВариантНачислений,
| БУОсновныеНачисления.СчетДт,
| БУОсновныеНачисления.СчетКт
|ИЗ
| РегистрРасчета.БУОсновныеНачисления КАК БУОсновныеНачисления
|ГДЕ
| БУОсновныеНачисления.ПериодРегистрации МЕЖДУ &НужныйПериодН И &НужныйПериодК
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ОсновныеНачисленияРаботниковОрганизаций.Организация,
| ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета,
| ОсновныеНачисленияРаботниковОрганизаций.ФизЛицо,
| ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации,
| ОсновныеНачисленияРаботниковОрганизаций.Результат,
| ""Основные"",
| NULL ,
| NULL
|ИЗ
| РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисленияРаботниковОрганизаций
|ГДЕ
| ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации МЕЖДУ &НужныйПериодН И &НужныйПериодК
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДополнительныеНачисленияРаботниковОрганизаций.Организация,
| ДополнительныеНачисленияРаботниковОрганизаций.ВидРасчета,
| ДополнительныеНачисленияРаботниковОрганизаций.ФизЛицо,
| ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации,
| ДополнительныеНачисленияРаботниковОрганизаций.Результат,
| ""Дополнительные"",
| NULL ,
| NULL
|ИЗ
| РегистрРасчета.ДополнительныеНачисленияРаботниковОрганизаций КАК ДополнительныеНачисленияРаботниковОрганизаций
|ГДЕ
| ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации МЕЖДУ &НужныйПериодН И &НужныйПериодК
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| БУДополнительныеНачисления.Организация,
| БУДополнительныеНачисления.ВидРасчета,
| БУДополнительныеНачисления.ФизЛицо,
| БУДополнительныеНачисления.ПериодРегистрации,
| БУДополнительныеНачисления.Результат * -1,
| ""ДополнительныеБУ"",
| БУДополнительныеНачисления.СчетДт,
| БУДополнительныеНачисления.СчетКт
|ИЗ
| РегистрРасчета.БУДополнительныеНачисления КАК БУДополнительныеНачисления
|ГДЕ
| БУДополнительныеНачисления.ПериодРегистрации МЕЖДУ &НужныйПериодН И &НужныйПериодК
|
|УПОРЯДОЧИТЬ ПО
| ФизЛицо
|ИТОГИ
| СУММА(Результат)
|ПО
| ОБЩИЕ,
| Организация,
| ФизЛицо
|";
Запрос.УстановитьПараметр("НужныйПериодН",);
Запрос.УстановитьПараметр("НужныйПериодК",);
Результат = Запрос.Выполнить();
Результат = Результат.Выбрать();
Пока Результат.Следующий() Цикл
//Код обработки результата запроса
КонецЦикла;
Категория:
Запросы