Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
14 апр 2024, 10:52

Создание внешней обработки

Автор chesnauskis, 10 июл 2018, 09:55

0 Пользователей и 1 гость просматривают эту тему.

chesnauskis

Всем доброе утро. :btbzdb:

1С:Предприятие 8.3 (8.3.10.2699)
Зарплата и управление персоналом КОРП, редакция 3.1 (3.1.6.37)
Стоит демо база, в которой пытаюсь создать новую внешнюю обработку.
Мне необходимо, чтобы при нажатии на созданную кнопку выгружалась нужна информация по сотрудникам в текстовый документ.

Подскажите, пожалуйста, правильно ли я делаю и что нужно предпринять дальше?

Создал форму, создал в форме кнопку в которую добавляю запрос. (Расчитываю на то, что при нажатии кнопки будет происходить выгрузка сразу в документ - так ли это?) Получаю вот такие ошибки.

Собственно как двигаться дальше, подскажите, пожалуйста. :dfbsdfbsdf:

chesnauskis


&НаСервере
Процедура Команда1(Команда)
Запрос = Новый запрос();
Запрос.Текст =
"ВЫБРАТЬ
    Сотрудники.Код КАК ТабНомер,
    Сотрудники.Наименование КАК ФИО,
    ПриемНаРаботу.Дата КАК ДатаПриемаНаРаботу,
    ПодразделенияОрганизаций.Наименование КАК Поздразделение,
    Организации.Наименование КАК Организация,
    Увольнение.Дата КАК Дата,
    ШтатноеРасписание.Должность.Наименование КАК ДолжностьНаименование
ИЗ
    Документ.ПриемНаРаботу КАК ПриемНаРаботу
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Сотрудники КАК Сотрудники
            ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Организации КАК Организации
            ПО (Сотрудники.ГоловнаяОрганизация = Организации.Ссылка)
        ПО (ПриемНаРаботу.Сотрудник = Сотрудники.Ссылка)
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПодразделенияОрганизаций КАК ПодразделенияОрганизаций
        ПО (ПриемНаРаботу.Подразделение = ПодразделенияОрганизаций.Ссылка)
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ШтатноеРасписание КАК ШтатноеРасписание
        ПО (ПриемНаРаботу.ДолжностьПоШтатномуРасписанию = ШтатноеРасписание.Ссылка),
    Документ.Увольнение КАК Увольнение";   
   
Результат = Запрос.Выполнить();
   ТекДок = Новый ТекстовыйДокумент;
   ВыборкаДетальныеЗаписи = Результат.Выбрать();
   
   Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
      ТекДок.ДобавитьСтроку(Строка(Сотрудники.Код)+"    "+Строка(Сотрудники.Наименование)+"    "+Строка(ПриемНаРаботу.Дата)+"    "+Строка(ПодразделенияОрганизаций.Наименование)+"    "+Строка(Организации.Наименование)+"    "+Строка(ШтатноеРасписание.Должность.Наименование));
   КонецЦикла;

  ТекДок.Записать(C:\1.txt);   
                         
КонецПроцедуры

alex0402


&НаСервере
Процедура Команда1(Команда)
    Запрос = Новый запрос();
Запрос.Текст =
"ВЫБРАТЬ
    |Сотрудники.Код КАК ТабНомер,
    |Сотрудники.Наименование КАК ФИО,
    |ПриемНаРаботу.Дата КАК ДатаПриемаНаРаботу,
    |ПодразделенияОрганизаций.Наименование КАК Поздразделение,
    |Организации.Наименование КАК Организация,
    |Увольнение.Дата КАК Дата,
    |ШтатноеРасписание.Должность.Наименование КАК ДолжностьНаименование
|ИЗ
|   Документ.ПриемНаРаботу КАК ПриемНаРаботу
|      ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Сотрудники КАК Сотрудники
|         ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Организации КАК Организации
|        ПО (Сотрудники.ГоловнаяОрганизация = Организации.Ссылка)
|   ПО (ПриемНаРаботу.Сотрудник = Сотрудники.Ссылка)
|  ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПодразделенияОрганизаций КАК ПодразделенияОрганизаций
|  ПО (ПриемНаРаботу.Подразделение = ПодразделенияОрганизаций.Ссылка)
|  ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ШтатноеРасписание КАК ШтатноеРасписание
| ПО (ПриемНаРаботу.ДолжностьПоШтатномуРасписанию = ШтатноеРасписание.Ссылка),
|    Документ.Увольнение КАК Увольнение";   
   
Результат = Запрос.Выполнить();
   ТекДок = Новый ТекстовыйДокумент;
   ВыборкаДетальныеЗаписи = Результат.Выбрать();
   
   Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
      ТекДок.ДобавитьСтроку(Строка(Сотрудники.Код)+"    "+Строка(Сотрудники.Наименование)+"    "+Строка(ПриемНаРаботу.Дата)+"    "+Строка(ПодразделенияОрганизаций.Наименование)+"    "+Строка(Организации.Наименование)+"    "+Строка(ШтатноеРасписание.Должность.Наименование));
   КонецЦикла;

  ТекДок.Записать(C:\1.txt);   
                         
КонецПроцедуры
Спасибо за Сказать спасибо

chesnauskis

Цитата: alex0402 от 10 июл 2018, 10:05

&НаСервере
Процедура Команда1(Команда)
    Запрос = Новый запрос();
Запрос.Текст =
"ВЫБРАТЬ
    |Сотрудники.Код КАК ТабНомер,
    |Сотрудники.Наименование КАК ФИО,
    |ПриемНаРаботу.Дата КАК ДатаПриемаНаРаботу,
    |ПодразделенияОрганизаций.Наименование КАК Поздразделение,
    |Организации.Наименование КАК Организация,
    |Увольнение.Дата КАК Дата,
    |ШтатноеРасписание.Должность.Наименование КАК ДолжностьНаименование
|ИЗ
|   Документ.ПриемНаРаботу КАК ПриемНаРаботу
|      ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Сотрудники КАК Сотрудники
|         ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Организации КАК Организации
|        ПО (Сотрудники.ГоловнаяОрганизация = Организации.Ссылка)
|   ПО (ПриемНаРаботу.Сотрудник = Сотрудники.Ссылка)
|  ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПодразделенияОрганизаций КАК ПодразделенияОрганизаций
|  ПО (ПриемНаРаботу.Подразделение = ПодразделенияОрганизаций.Ссылка)
|  ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ШтатноеРасписание КАК ШтатноеРасписание
| ПО (ПриемНаРаботу.ДолжностьПоШтатномуРасписанию = ШтатноеРасписание.Ссылка),
|    Документ.Увольнение КАК Увольнение";   
   
Результат = Запрос.Выполнить();
   ТекДок = Новый ТекстовыйДокумент;
   ВыборкаДетальныеЗаписи = Результат.Выбрать();
   
   Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
      ТекДок.ДобавитьСтроку(Строка(Сотрудники.Код)+"    "+Строка(Сотрудники.Наименование)+"    "+Строка(ПриемНаРаботу.Дата)+"    "+Строка(ПодразделенияОрганизаций.Наименование)+"    "+Строка(Организации.Наименование)+"    "+Строка(ШтатноеРасписание.Должность.Наименование));
   КонецЦикла;

  ТекДок.Записать(C:\1.txt);   
                         
КонецПроцедуры



Ошибок в конфигураторе не стало, но при попытке запуска обработки уже в приложении все равно ссылается на 4 ошибку. 


Добавлено: 10 июл 2018, 11:05


У меня еще вопрос по поводу именно в общем правильности - то ли я делаю вообще? :)

wise

(3) Записать(<ИмяФайла>, <ТипФайла>, <РазделительСтрок>)
Параметры:

<ИмяФайла> (обязательный)

Тип: СТРОКА.

{ ТекДок.Записать("C:\1.txt");  }
Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают

chesnauskis

Цитата: wise от 10 июл 2018, 11:41
(3) Записать(<ИмяФайла>, <ТипФайла>, <РазделительСтрок>)
Параметры:

<ИмяФайла> (обязательный)

Тип: СТРОКА.

{ ТекДок.Записать("C:\1.txt");  }

Извиняюсь за глупые вопрос, но это в помощнике я видел, но как применить не очень понял. Можно на примере?
Добавлено: 10 июл 2018, 12:32


Видимо, что то такое должно было получиться, но все равно какие-то ошибки лезут.





[/&НаСервере
Процедура Команда1(Команда)
    Запрос = Новый запрос();
Запрос.Текст =
"ВЫБРАТЬ
| Сотрудники.Код КАК ТабНомер,
| Сотрудники.Наименование КАК ФИО,
| ПриемНаРаботу.Дата КАК ДатаПриемаНаРаботу,
| ПодразделенияОрганизаций.Наименование КАК Поздразделение,
| Организации.Наименование КАК Организация,
| Увольнение.Дата КАК Дата,
| ШтатноеРасписание.Должность.Наименование КАК ДолжностьНаименование
|ИЗ
| Документ.ПриемНаРаботу КАК ПриемНаРаботу
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Сотрудники КАК Сотрудники
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Организации КАК Организации
| ПО Сотрудники.ГоловнаяОрганизация = Организации.Ссылка
| ПО ПриемНаРаботу.Сотрудник = Сотрудники.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПодразделенияОрганизаций КАК ПодразделенияОрганизаций
| ПО ПриемНаРаботу.Подразделение = ПодразделенияОрганизаций.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ШтатноеРасписание КАК ШтатноеРасписание
| ПО ПриемНаРаботу.ДолжностьПоШтатномуРасписанию = ШтатноеРасписание.Ссылка,
| Документ.Увольнение КАК Увольнение";   
   
Результат = Запрос.Выполнить();
   ТекДок = Новый ТекстовыйДокумент;
   ВыборкаДетальныеЗаписи = Результат.Выбрать();
   
   Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
      ТекДок.ДобавитьСтроку(Строка(Сотрудники.Код)+"    "+Строка(Сотрудники.Наименование)+"    "+Строка(ПриемНаРаботу.Дата)+"    "+Строка(ПодразделенияОрганизаций.Наименование)+"    "+Строка(Организации.Наименование)+"    "+Строка(ШтатноеРасписание.Должность.Наименование));
  КонецЦикла;
 
{ТекДок.Записать("C:\1.txt", UTF8, ВК+ПК);}       
КонецПроцедуры code]

pavl_vs

{ТекДок.Записать("C:\1.txt", UTF8, ВК+ПК);}
Фигурные кавычки уберите.

chesnauskis

Цитата: pavl_vs от 10 июл 2018, 13:18
{ТекДок.Записать("C:\1.txt", UTF8, ВК+ПК);}
Фигурные кавычки уберите.

с кавычками


без кавычек

pavl_vs

Теперь лучше.
Последние две ошибки - тип файла и разделитель нужно взять по отдельности в кавычки "", либо исключить вовсе, как необязательные.

chesnauskis

Цитата: pavl_vs от 10 июл 2018, 14:31
Теперь лучше.
Последние две ошибки - тип файла и разделитель нужно взять по отдельности в кавычки "", либо исключить вовсе, как необязательные.

В этом да, вы правы, упустил.
А что с ошибками, что выше? Переменная сотрудники же присутствует... Голова уже кругом от того, что без результата происходит..

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск