|
Данные из двух справочников в Эксель (ключ - Сотрудник) | ☑ | ||
---|---|---|---|---|
0
листопад
12.05.14
✎
23:06
|
Создан справочник "Сторонние банки", ревизиты:
- Сотрудник - ЛицевойСчет - БИКБанка - НаименованиеБанка Как мне подгрузить эти данные в Эксель? Сейчас в Эксель выгружается инф-ция из спр.Сотрудники в отдельных столбцах. Мне надо добавить еще столбцы данными из спр.СторонниеБанки. В 1С8 можно было сделать два запроса и сделать связь по Сотруднику. А в 1С77 как? Вот код, как сейчас выгружаются данные (из спр.Сотрудники только): Процедура ВыгрузитьСотрудников() Попытка x=СоздатьОбъект("Excel.Application"); Исключение Сообщить(ОписаниеОшибки(),"!!!"); Сообщить("Возможно, MS Excel не установлен на этом компьютере."); Возврат; КонецПопытки; x.Workbooks.Add(); //книга x.WorkSheets(1).Cells(1,1).Value="TAB_NOMER"; x.WorkSheets(1).Cells(1,2).Value="FIO"; x.Worksheets(1).Cells(1,3).Value="ROZHD_DATA"; x.WorkSheets(1).Cells(1,4).Value="POL"; x.WorkSheets(1).Cells(1,7).Value="INN"; x.WorkSheets(1).Cells(1,8).Value="PFR"; x.WorkSheets(1).Cells(1,9).Value="LIC_SCHET"; x.Worksheets(1).Name = ИмяФайла; Сотрудники = СоздатьОбъект("Справочник.Сотрудники"); Сотрудники.ВыбратьЭлементы(1); ИтераторСотр = 1; Пока Сотрудники.ПолучитьЭлемент() = 1 Цикл Если Сотрудники.ЭтоГруппа() + Сотрудники.ПометкаУдаления() <> 0 тогда Продолжить; КонецЕсли; ИтераторСотр = ИтераторСотр + 1; x.WorkSheets(ИмяФайла).Cells(ИтераторСотр,1).Value = "'"+Сотрудники.Код; x.WorkSheets(ИмяФайла).Cells(ИтераторСотр,2).Value = "'"+Сотрудники.Наименование; x.WorkSheets(ИмяФайла).Cells(ИтераторСотр,3).Value = "'"+Формат(Сотрудники.ДатаРождения,"ДФ=dd.MM.yyyy"); x.WorkSheets(ИмяФайла).Cells(ИтераторСотр,4).Value = "'"+Сотрудники.Пол; x.WorkSheets(ИмяФайла).Cells(ИтераторСотр,7).Value = "'"+Сотрудники.ИНН; x.WorkSheets(ИмяФайла).Cells(ИтераторСотр,8).Value = "'"+Сотрудники.СтраховойНомерПФР; x.WorkSheets(ИмяФайла).Cells(ИтераторСотр,9).Value = "'"+Сотрудники.НомерЗарплатногоСчета; КонецЦикла; x.Quit(); Сообщить("Выгрузка завершена", "!"); КонецПроцедуры |
|||
1
листопад
12.05.14
✎
23:14
|
Ап!
|
|||
2
kobzon
12.05.14
✎
23:20
|
Через реквизит который на справочник Сторонние банки ссылается.
|
|||
3
листопад
12.05.14
✎
23:25
|
(2) Нет такого реквизита. В спр.СторонниеБанки есть реквизит "Сотрудники" (ссылка на спр.Сотрудники). И вот как мне их тепрь связать в Экселе?
|
|||
4
листопад
12.05.14
✎
23:28
|
Модераторы, исправьте, пож-та в заголовке с v8 на v7.
|
|||
5
kobzon
12.05.14
✎
23:34
|
Хм, ну тогда наверное как-нибудь через Сотрудники.Владелец.
|
|||
6
Мигало
12.05.14
✎
23:52
|
(0) Прям специалист-многостаночник )))
|
|||
7
листопад
12.05.14
✎
23:54
|
(5) спр.СторонниеБанки независимый. Он не является подчиненным никакому справочнику.
|
|||
8
листопад
12.05.14
✎
23:54
|
(6) Стараюсь )))
|
|||
9
листопад
13.05.14
✎
00:02
|
Я так думаю, надо выгружать в ТабЗначений спр.Сотрудники. А затем если ФИО сотрудника совпадает в двух справочниках, то добавлять колонки в ТЗ с данными уже из Спр.СторонниеБанки. Только как это реализовать в 1С77???
|
|||
10
листопад
13.05.14
✎
00:06
|
Или как вариант: набрать одну таблицу по справочнику, а второй по циклу сверить, и недостающие элементы набрать в список. Только как это теперь написать...
|
|||
11
kobzon
13.05.14
✎
00:08
|
(9) А как из ТЗ в Эксцель выгрузить знаешь?
|
|||
12
kobzon
13.05.14
✎
00:15
|
Перебирай первый справочник, добавляй строки в ТЗ.НоваяСтрока(), перебирай второй справочник, так же добавляй строки реквизитов. Потом свернуть ТЗ по сотруднику.
|
|||
13
Фокусник
13.05.14
✎
00:19
|
(7) если в справочнике СторонниеБанки несколько элементов по данному сотруднику, какой нужно выбирать для выгрузки в Эксель?
|
|||
14
листопад
13.05.14
✎
00:23
|
(13) такого точно не будет. Сотрудник в этом справочнике - один.
|
|||
15
листопад
13.05.14
✎
00:24
|
(11) Незнаю... Замкнутый круг, блин...
|
|||
16
kobzon
13.05.14
✎
00:28
|
(15) Да там все просто)
Но как то странно что связи нет. |
|||
17
Фокусник
13.05.14
✎
00:31
|
(14) варианты: если для реквизита Сотрудник справочника СторонниеБанки включён признак отбора по реквизиту (см.в конфигураторе свойства этого реквизита), то можно воспользоваться НайтиПоРеквизиту()
Другой вариант: Собрать в ТЗ все значения Сотрудник, СторонниеБанки. А потом делать ТЗ.НайтиЗначение() по сотруднику: находить номер строки этой ТЗ и получать из найденной строки значение СторонниеБанки для искомого Сотрудника |
|||
18
листопад
13.05.14
✎
00:59
|
(17) Спасибо. А пример не напишите, а то боюсь, что всю ночь мне сидеть придется...
|
|||
19
листопад
13.05.14
✎
01:01
|
(17) признак отбора по реквизиту - включен.
|
|||
20
Фокусник
13.05.14
✎
08:09
|
(18) Если еще актуально:
создаем объект (перед циклом) "Пока Сотрудники.ПолучитьЭлемент() = 1 Цикл":
//делаем поиск по справочнику СторонниеБанки в теле цикла:
Далее работаем с переменными: ЛицевойСчет, БИКБанка, НаименованиеБанка |
|||
21
Torquader
13.05.14
✎
20:33
|
Как странно - вас ещё отсюда не выгнали.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |